<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://entangledbits.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>Entangled Bits - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://entangledbits.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/Special:Contributions/Admin"/>
	<updated>2026-08-19T13:50:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=20</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=20"/>
		<updated>2026-08-18T14:41:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: With all the Fixin&amp;#039;s (v0.48.5)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
### If an export operation (save or print) fails because the configured font doesn&#039;t support the more esoteric Unicode characters (e.g. the embedded Helvetica font), switch to one of the system-supplied fonts (NotoSan, LiberationSans) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; (offered only when available on the host).  This may occur when &#039;&#039;recipe&#039;&#039; data originates via a website scrape.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Initiation =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation (e.g. zip and certain deb installations) to a new version (that may include a database schema change) and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#As a backup precaution, you may wish to manually perform a &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all&amp;lt;/span&amp;gt; operation to a safe, backup directory on your host machine.&lt;br /&gt;
#Check for an available update via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;help &amp;gt; Check for update&amp;lt;/span&amp;gt;.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and bundle extraction has completed, the application will automatically export all of the its data into its export directory as XML files whose names are tagged with the current version. Please wait for this to finish.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated. Once the database has been recreated, the tagged, exported XML files (from the previous step) will automatically be imported to restore any of your custom / additional data that was not part of the original application package. Please wait for this step to finish.&lt;br /&gt;
#If there&#039;s ever any need to manually import any highly-cherished, previously-exported XML files (i.e. those from the first step, the backup precaution step, if you get where I&#039;m going with this), use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; import&amp;lt;/span&amp;gt; operation to repopulate the database (for each file in the following ordered sequence). One may also use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; import all&amp;lt;/span&amp;gt; operation which automates this effort.   If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Food&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automation =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Quick Start ===&lt;br /&gt;
&lt;br /&gt;
# The application can be deployed to a personal computer via a Windows installation bundle (i.e. a *.msi file), a Debian installation bundle (i.e. a *.deb file for Debian-based Linux hosts), or via a compressed zip file (runnable on any host that supports Java, fingers crossed). All contain the fileset required to run the application: a jar, launch scripts, any control files, and a README. The README_START_CuttingBoard.txt file contains hints that might resolve some of the typical gotchas.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFont&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the font that is used for PDF document generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the forms: &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;java -jar cuttingboard.jar&amp;lt;/span&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;java -Dorg.entangledbits.cuttingboard.preferencesFile=preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;application state&amp;lt;/span&amp;gt; appears in the control bar at the top of the panel to indicate the current processing state of lengthy operations.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## Just as one may export or import a particular set of managed objects via a given XML file, the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; import all&amp;lt;/span&amp;gt; options may be used to automatically export or import all application-managed objects via the complete set of XML files (and in the proper sequence). The import all action prompts for selection of a directory that contains all of the required files.&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per recipe nutrient amount matches or exceeds the desired nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
### Via the context menu of a &#039;&#039;note&#039;&#039; you can view or copy the whole table&#039;s content.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is. All the &#039;&#039;tag&#039;&#039; combo boxes in this section are searchable (one may enter filtering text to limit what&#039;s shown) and multi-selection (one may check multiple items per each combo box).&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
## Hover the mouse over column headers to view tool tips and information pertinent for that column.&lt;br /&gt;
## &#039;&#039;Yield factors&#039;&#039; and &#039;&#039;retention factors&#039;&#039; may be applied to modify the values in their respective columns in accordance with how the &#039;&#039;recipe&#039;&#039; and its &#039;&#039;ingredients&#039;&#039; are prepared / cooked.&lt;br /&gt;
### Greyed-out table cell text indicates that the values may be ambiguous (i.e. sketchy, inaccurate, or just not applicable).&lt;br /&gt;
### Column values are greyed-out when supporting factors are not applied (as observed in the factor table at the bottom of the panel).&lt;br /&gt;
### When both factor types are not present, only the total column is interesting and typically represents values for an unprepared / raw scenario (i.e. the selected &#039;&#039;food&#039;&#039; products, unchanged).&lt;br /&gt;
### The retention, yield, and all-factors cells in the Atwater General / Specific Factors nutrient rows are always greyed-out since they currently only reflect their total values irrespective of any applied &#039;&#039;yield factors&#039;&#039; or &#039;&#039;retention factors&#039;&#039; (i.e. further implementation work required).&lt;br /&gt;
### The energy (both as KCAL and KJ) nutrient rows:&lt;br /&gt;
#### Are always made available irrespective of whether a &#039;&#039;retention factor&#039;&#039; is applied or when only AGF/ASF energy nutrient rows are available for the selected &#039;&#039;food&#039;&#039; products.&lt;br /&gt;
#### The all-factors cells display the total energy of all &#039;&#039;food&#039;&#039; products selected for the &#039;&#039;recipe ingredients&#039;&#039; as calculated using protein, fat, carbohydrate, fiber, alcohol, and organicAcid values. Their yield and retention cell values are always greyed-out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AGF&amp;quot;&amp;gt;AGF - [https://fdc.nal.usda.gov/Foundation_Foods_Documentation Atwater General Factor]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;ASF&amp;quot;&amp;gt;ASF - [https://fdc.nal.usda.gov/Foundation_Foods_Documentation Atwater Specific Factor]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;KCAL&amp;quot;&amp;gt;KCAL - [https://en.wikipedia.org/wiki/Calorie KiloCalorie (the amount of energy needed to raise the temperature of 1 kg of water by 1 celcius degree (1°C))]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;KJ&amp;quot;&amp;gt;KJ - [https://en.wikipedia.org/wiki/Joule&#039; KiloJoule]&amp;lt;/span&amp;gt; &lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/DmitriiShamrikov/mslinks MSLinks] || Runtime || [https://github.com/DmitriiShamrikov/mslinks?tab=WTFPL-1-ov-file WTFPL] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=19</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=19"/>
		<updated>2026-02-14T00:27:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: Protected &amp;quot;User&amp;#039;s Manual&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
### If an export operation (save or print) fails because the configured font doesn&#039;t support the more esoteric Unicode characters (e.g. the embedded Helvetica font), switch to one of the system-supplied fonts (NotoSan, LiberationSans) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; (offered only when available on the host).  This may occur when &#039;&#039;recipe&#039;&#039; data originates via a website scrape.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Quick Start ===&lt;br /&gt;
&lt;br /&gt;
# The application can be deployed to a personal computer via a windows installation executable (i.e. a *.msi file) or via a compressed zip file.  Both contain the same fileset: a jar, launch scripts, and a README. The README_START_CuttingBoard.txt file contains hints that might resolve some of the typical gotchas.  &lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFont&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the font that is used for PDF document generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per recipe nutrient amount matches or exceeds the desired nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
### Via the context menu of a &#039;&#039;note&#039;&#039; you can view or copy the whole table&#039;s content.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is. All the &#039;&#039;tag&#039;&#039; combo boxes in this section are searchable (one may enter filtering text to limit what&#039;s shown) and multi-selection (one may check multiple items per each combo box).&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
## Hover the mouse over column headers to view tool tips and information pertinent for that column.&lt;br /&gt;
## &#039;&#039;Yield factors&#039;&#039; and &#039;&#039;retention factors&#039;&#039; may be applied to modify the values in their respective columns in accordance with how the &#039;&#039;recipe&#039;&#039; and its &#039;&#039;ingredients&#039;&#039; are prepared / cooked.&lt;br /&gt;
### Greyed-out table cell text indicates that the values may be ambiguous (i.e. sketchy, inaccurate, or just not applicable).&lt;br /&gt;
### Column values are greyed-out when supporting factors are not applied (as observed in the factor table at the bottom of the panel).&lt;br /&gt;
### When both factor types are not present, only the total column is interesting and typically represents values for an unprepared / raw scenario (i.e. the selected &#039;&#039;food&#039;&#039; products, unchanged).&lt;br /&gt;
### The retention, yield, and all-factors cells in the Atwater General / Specific Factors nutrient rows are always greyed-out since they currently only reflect their total values irrespective of any applied &#039;&#039;yield factors&#039;&#039; or &#039;&#039;retention factors&#039;&#039; (i.e. further implementation work required).&lt;br /&gt;
### The energy (both as KCAL and KJ) nutrient rows:&lt;br /&gt;
#### Are always made available irrespective of whether a &#039;&#039;retention factor&#039;&#039; is applied or when only AGF/ASF energy nutrient rows are available for the selected &#039;&#039;food&#039;&#039; products.&lt;br /&gt;
#### The all-factors cells display the total energy of all &#039;&#039;food&#039;&#039; products selected for the &#039;&#039;recipe ingredients&#039;&#039; as calculated using protein, fat, carbohydrate, fiber, alcohol, and organicAcid values. Their yield and retention cell values are always greyed-out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AGF&amp;quot;&amp;gt;AGF - [https://fdc.nal.usda.gov/Foundation_Foods_Documentation Atwater General Factor]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;ASF&amp;quot;&amp;gt;ASF - [https://fdc.nal.usda.gov/Foundation_Foods_Documentation Atwater Specific Factor]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;KCAL&amp;quot;&amp;gt;KCAL - [https://en.wikipedia.org/wiki/Calorie KiloCalorie (the amount of energy needed to raise the temperature of 1 kg of water by 1 celcius degree (1°C))]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;KJ&amp;quot;&amp;gt;KJ - [https://en.wikipedia.org/wiki/Joule&#039; KiloJoule]&amp;lt;/span&amp;gt; &lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 23 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25.0.2 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20251114-142114.b424a8f || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.20.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.15.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.21.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.6 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20251224 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.21.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || 1.22.1 || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.7.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.2 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.25.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.6 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 12.0.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.5 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.3 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.9.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/DmitriiShamrikov/mslinks MSLinks] || 1.1.0 || Runtime || [https://github.com/DmitriiShamrikov/mslinks?tab=WTFPL-1-ov-file WTFPL] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 78.2 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 6.0.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=18</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=18"/>
		<updated>2026-02-14T00:27:14Z</updated>

		<summary type="html">&lt;p&gt;Admin: Framework release with bug fixes (v0.48.3)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
### If an export operation (save or print) fails because the configured font doesn&#039;t support the more esoteric Unicode characters (e.g. the embedded Helvetica font), switch to one of the system-supplied fonts (NotoSan, LiberationSans) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; (offered only when available on the host).  This may occur when &#039;&#039;recipe&#039;&#039; data originates via a website scrape.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Quick Start ===&lt;br /&gt;
&lt;br /&gt;
# The application can be deployed to a personal computer via a windows installation executable (i.e. a *.msi file) or via a compressed zip file.  Both contain the same fileset: a jar, launch scripts, and a README. The README_START_CuttingBoard.txt file contains hints that might resolve some of the typical gotchas.  &lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFont&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the font that is used for PDF document generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per recipe nutrient amount matches or exceeds the desired nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
### Via the context menu of a &#039;&#039;note&#039;&#039; you can view or copy the whole table&#039;s content.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is. All the &#039;&#039;tag&#039;&#039; combo boxes in this section are searchable (one may enter filtering text to limit what&#039;s shown) and multi-selection (one may check multiple items per each combo box).&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
## Hover the mouse over column headers to view tool tips and information pertinent for that column.&lt;br /&gt;
## &#039;&#039;Yield factors&#039;&#039; and &#039;&#039;retention factors&#039;&#039; may be applied to modify the values in their respective columns in accordance with how the &#039;&#039;recipe&#039;&#039; and its &#039;&#039;ingredients&#039;&#039; are prepared / cooked.&lt;br /&gt;
### Greyed-out table cell text indicates that the values may be ambiguous (i.e. sketchy, inaccurate, or just not applicable).&lt;br /&gt;
### Column values are greyed-out when supporting factors are not applied (as observed in the factor table at the bottom of the panel).&lt;br /&gt;
### When both factor types are not present, only the total column is interesting and typically represents values for an unprepared / raw scenario (i.e. the selected &#039;&#039;food&#039;&#039; products, unchanged).&lt;br /&gt;
### The retention, yield, and all-factors cells in the Atwater General / Specific Factors nutrient rows are always greyed-out since they currently only reflect their total values irrespective of any applied &#039;&#039;yield factors&#039;&#039; or &#039;&#039;retention factors&#039;&#039; (i.e. further implementation work required).&lt;br /&gt;
### The energy (both as KCAL and KJ) nutrient rows:&lt;br /&gt;
#### Are always made available irrespective of whether a &#039;&#039;retention factor&#039;&#039; is applied or when only AGF/ASF energy nutrient rows are available for the selected &#039;&#039;food&#039;&#039; products.&lt;br /&gt;
#### The all-factors cells display the total energy of all &#039;&#039;food&#039;&#039; products selected for the &#039;&#039;recipe ingredients&#039;&#039; as calculated using protein, fat, carbohydrate, fiber, alcohol, and organicAcid values. Their yield and retention cell values are always greyed-out.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AGF&amp;quot;&amp;gt;AGF - [https://fdc.nal.usda.gov/Foundation_Foods_Documentation Atwater General Factor]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;ASF&amp;quot;&amp;gt;ASF - [https://fdc.nal.usda.gov/Foundation_Foods_Documentation Atwater Specific Factor]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;KCAL&amp;quot;&amp;gt;KCAL - [https://en.wikipedia.org/wiki/Calorie KiloCalorie (the amount of energy needed to raise the temperature of 1 kg of water by 1 celcius degree (1°C))]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;KJ&amp;quot;&amp;gt;KJ - [https://en.wikipedia.org/wiki/Joule&#039; KiloJoule]&amp;lt;/span&amp;gt; &lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 23 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25.0.2 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20251114-142114.b424a8f || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.20.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.15.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.21.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.6 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20251224 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.21.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || 1.22.1 || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.7.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.2 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.25.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.6 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 12.0.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.5 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.3 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.9.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/DmitriiShamrikov/mslinks MSLinks] || 1.1.0 || Runtime || [https://github.com/DmitriiShamrikov/mslinks?tab=WTFPL-1-ov-file WTFPL] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 78.2 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 6.0.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=17</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=17"/>
		<updated>2026-02-14T00:21:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: Removed protection from &amp;quot;User&amp;#039;s Manual&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
### If an export operation (save or print) fails because the configured font doesn&#039;t support the more esoteric Unicode characters (e.g. the embedded Helvetica font), switch to one of the system-supplied fonts (NotoSan, LiberationSans) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; (offered only when available on the host).  This may occur when &#039;&#039;recipe&#039;&#039; data originates via a website scrape.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFont&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the font that is used for PDF document generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
### Via the context menu of a &#039;&#039;note&#039;&#039; you can view or copy the whole table&#039;s content.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is. All the &#039;&#039;tag&#039;&#039; combo boxes in this section are searchable (one may enter filtering text to limit what&#039;s shown) and multi-selection (one may check multiple items per each combo box).&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 23 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25-ea+24 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20250812-182757.f621a1c || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.14.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20250517 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.19.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || 1.21.1 || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.5.12 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.25.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.2 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.9.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.13.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=16</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=16"/>
		<updated>2026-02-14T00:20:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: Changed protection settings for &amp;quot;User&amp;#039;s Manual&amp;quot; ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
### If an export operation (save or print) fails because the configured font doesn&#039;t support the more esoteric Unicode characters (e.g. the embedded Helvetica font), switch to one of the system-supplied fonts (NotoSan, LiberationSans) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; (offered only when available on the host).  This may occur when &#039;&#039;recipe&#039;&#039; data originates via a website scrape.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFont&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the font that is used for PDF document generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
### Via the context menu of a &#039;&#039;note&#039;&#039; you can view or copy the whole table&#039;s content.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is. All the &#039;&#039;tag&#039;&#039; combo boxes in this section are searchable (one may enter filtering text to limit what&#039;s shown) and multi-selection (one may check multiple items per each combo box).&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 23 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25-ea+24 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20250812-182757.f621a1c || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.14.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20250517 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.19.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || 1.21.1 || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.5.12 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.25.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.2 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.9.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.13.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=15</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=15"/>
		<updated>2026-02-14T00:17:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: Protected &amp;quot;User&amp;#039;s Manual&amp;quot; ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
### If an export operation (save or print) fails because the configured font doesn&#039;t support the more esoteric Unicode characters (e.g. the embedded Helvetica font), switch to one of the system-supplied fonts (NotoSan, LiberationSans) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; (offered only when available on the host).  This may occur when &#039;&#039;recipe&#039;&#039; data originates via a website scrape.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFont&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the font that is used for PDF document generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
### Via the context menu of a &#039;&#039;note&#039;&#039; you can view or copy the whole table&#039;s content.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is. All the &#039;&#039;tag&#039;&#039; combo boxes in this section are searchable (one may enter filtering text to limit what&#039;s shown) and multi-selection (one may check multiple items per each combo box).&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 23 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25-ea+24 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20250812-182757.f621a1c || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.14.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20250517 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.19.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || 1.21.1 || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.5.12 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.25.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.2 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.9.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.13.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=14</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=14"/>
		<updated>2025-08-13T16:22:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: Searchable, multi-selection combo boxes (v0.48.2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
### If an export operation (save or print) fails because the configured font doesn&#039;t support the more esoteric Unicode characters (e.g. the embedded Helvetica font), switch to one of the system-supplied fonts (NotoSan, LiberationSans) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; (offered only when available on the host).  This may occur when &#039;&#039;recipe&#039;&#039; data originates via a website scrape.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFont&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the font that is used for PDF document generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
### Via the context menu of a &#039;&#039;note&#039;&#039; you can view or copy the whole table&#039;s content.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is. All the &#039;&#039;tag&#039;&#039; combo boxes in this section are searchable (one may enter filtering text to limit what&#039;s shown) and multi-selection (one may check multiple items per each combo box).&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 23 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25-ea+24 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20250812-182757.f621a1c || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.14.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20250517 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.19.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || 1.21.1 || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.5.12 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.25.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.2 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.9.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.13.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=13</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=13"/>
		<updated>2025-07-05T19:06:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: Maintenance release consisting of bug and annoyance fixes (v0.48.1).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update. The application anonymously informs the home site concerning the disposition of the update&#039;s download (controllable via the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt; preference).&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogToServer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Enables minimal, anonymous, application-to-server, metric logging (as feedback for devOps to gauge application efficacy).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 22 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25-ea+23 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20250608-090535.869f248 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.132.0.27.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20250517 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.19.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [https://jsoup.org/ jsoup] || 1.21.1 || Runtime || [https://github.com/jhy/jsoup/blob/master/LICENSE MIT] || HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.4.7 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.25.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.2 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.9.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.13.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=12</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=12"/>
		<updated>2025-06-06T21:19:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: Updated PDF output (printer and file) for Recipe, Meal, Food, Substitute and Profile objects. (V0.48.0)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# The application has multiple actions that may be performed upon its data.&lt;br /&gt;
#* The save operation is used to persist data within the application&#039;s database or preferences file.&lt;br /&gt;
#* The print operation is used to transmit application data to a printer (as PDF).&lt;br /&gt;
#* The export operation is used to save application data to a file (as PDF or XML).&lt;br /&gt;
# Formats currently supported for application data.&lt;br /&gt;
#* [[&#039;#PDF&#039;|PDF]]-based files are used to export application data. For quick access, paste your favorite recipes on your refridgerator or affix them to your children&#039;s foreheads.&lt;br /&gt;
### You can output your data to PDF files or the printer to gift.&lt;br /&gt;
#* [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
### You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
### You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update.&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FoodData Central internet server from which food product and nutrition data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputAllData&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all object data (vs. a minimal subset) is output during PDF generation.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputDefaultFormat&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the default document format to be presented for an export operation (alternatives may be subsequently chosen).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether each object starts on a new page during PDF generation into a single document.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedPdfFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during PDF generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputConsolidatedXmlFile&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether all objects are consolidated into a single document during XML generation (vs. each to a separate document).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;OutputFileSelection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether the file chooser prompt (for location and filename) is enabled.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Substitutes || 2 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputSinglePdfFile&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;OutputPerPage&amp;lt;/span&amp;gt; options are enabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active system properties tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted application preferences tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;PDF&amp;quot;&amp;gt;PDF - [https://en.wikipedia.org/wiki/PDF Portable Data Format]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 22 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25-ea+18 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20250509-104313.02c1bcb || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.132.0.27.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20250517 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.19.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.4.7 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.24.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 3.0.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vandeseer/easytable easytable] || 1.0.2 || Runtime || MIT || Library providing PDF table layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.2 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.7.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.4.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.13.0 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=9</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=9"/>
		<updated>2025-02-21T19:35:33Z</updated>

		<summary type="html">&lt;p&gt;Admin: Component Query panel and robustness (v0.47.0)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
## You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
## You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update.&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcFoodsUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet food server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcNutritionUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet nutrition server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Component Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Component Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to identify &#039;&#039;food&#039;&#039; products that contain a desired component (e.g. a &#039;&#039;nutrient&#039;&#039;) per various portions.  The table of results allow comparisons to be made.&lt;br /&gt;
### The product listing is the result of a database query to an internet site that allows the user to select the best &#039;&#039;food&#039;&#039; per need. The FDC is the only data provider for the panel at this time.&lt;br /&gt;
### Then, when one or more &#039;&#039;food&#039;&#039; products are selected, component concentration per additional, pre-defined portions can be retrieved via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query Portions button&amp;lt;/span&amp;gt;.&lt;br /&gt;
### The  &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Desired Portion control&amp;lt;/span&amp;gt; logic allows a custom amount of &#039;&#039;food&#039;&#039; to be specified to determine how much of the component is available in that portion.&lt;br /&gt;
# Controls&lt;br /&gt;
## When set (enabled), the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt; allows a data request to be immediately initiated for any change made to any of the input controls (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category, Descriptors, Description-only / Data Type&amp;lt;/span&amp;gt;).  If you&#039;d prefer to enter data in several of the controls, but not kick-off a data request until you finally make a selection via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box, then first unset (disable) the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Query On Change radio button&amp;lt;/span&amp;gt;. The data request will then be initiated when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Component&amp;lt;/span&amp;gt; combo box selection is changed (at the end of your typing flurry).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Category combo box&amp;lt;/span&amp;gt; can be used to query for &#039;&#039;foods&#039;&#039; associated with a selected category.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Descriptors text box&amp;lt;/span&amp;gt; can be used to query for those &#039;&#039;foods&#039;&#039; that have any of the specified words located in (possibly) multiple fields of the &#039;&#039;food&#039;s&#039;&#039; data record. If the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Description-only&amp;lt;/span&amp;gt; radio button is set (enabled), then the word search is limited to only the description field in the &#039;&#039;food&#039;s&#039;&#039; data record.&lt;br /&gt;
## By default, when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits radio button&amp;lt;/span&amp;gt; is not set (disabled), the number of &#039;&#039;food&#039;&#039; products retrieved by the component search is limited  to a predetermined maximum (so as not to make the internet huff and puff).  If you see that a bigger result set count is available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Disposition label&amp;lt;/span&amp;gt; text, and you want it in a really bad way, then enable that radio button to re-query for all of those puppies.  For large result sets, &amp;quot;smoke &#039;em if you got &#039;em&amp;quot;. If you&#039;re agast  at the number of cycles you&#039;ve mischievously initiated, you can always hit that little X thingy in the upper right-hand corner to exit the panel. This cancels the message storm  which would have finished eventually you gutless oaf.		  &lt;br /&gt;
# Tips	 &lt;br /&gt;
## While those of a wily nature would expect the capability to simultaneously specify multiple input values to narrowly filter a result set down to a minimual number of &#039;&#039;foods&#039;&#039; where each would have all of the targetted characteristics (e.g. an intersection in set theory), that&#039;s not the way this game works, my bucko. The underlying paradigm here is more additive (e.g. a union in set theory) with respect to the &#039;&#039;foods&#039;&#039; that have been snared in that gnarly net you&#039;ve cast. Heavy sigh.&lt;br /&gt;
## The rest should be self-explanatory. Play with the panel a bit. You&#039;ll get it. Eventually.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### The text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### Toy with either of the two require options:&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require All Words&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have all of the words (in no particular order in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data record.  When disabled, &#039;&#039;food&#039;&#039; products are requested that have any of the words specified in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; in their data record.&lt;br /&gt;
#### When enabled, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Require Exact Match&amp;lt;/span&amp;gt; option requests only those &#039;&#039;food&#039;&#039; products that have the complete phrase (ordered as-is in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;) in their data.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active property values tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted preferences values tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 22 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 25-ea+2 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.2.0-20250219-143145.6c030f7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.13.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.18.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.4.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20250107 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.18.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.4.5 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.24.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 2.0.27 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ralfstuckert/pdfbox-layout Pdfbox2 Layout] || 1.0.1 || Runtime || MIT || Library providing PDF text layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.1 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.7.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.11.4 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=8</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=8"/>
		<updated>2024-12-31T22:47:21Z</updated>

		<summary type="html">&lt;p&gt;Admin: Staged ingredients, fractional compound units, XML changes (v0.46.2)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
## You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
## You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# For those panels based upon the included web engine (e.g. web browser and help), the search functionality works best on static web page content. Dynamically-generated web pages (i.e. pages that have content generated via script execution) can be unparsable by the application.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those managed objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated in any way.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If not all of the desired managed objects are imported, you can change the log level setting to TRACE (via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;), launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;console panel&amp;lt;/span&amp;gt;, re-import your XML file, and wade through the application trace logs to identify which XML tag(s) or value(s) may be causing you grief. Then correct said irritant and try again, Finnegan.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update.&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff. WRT searchable combo boxes whose selections aggregate into a set (as displayed in an adjacent text area): in addition to selecting an entry via mouse-click or a keyboard&#039;s enter key, in a few cases one also selects multiple entries just by using the up / down arrow keys to meander to a final entry. If you don&#039;t wish those extra entries, either remove them from the text area before saving, or limit the size of the filtered items that are displayed by entering a more accurate character sequence.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcFoodsUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet food server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcNutritionUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet nutrition server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
## After selecting one or more rows in the &#039;&#039;ingredient&#039;&#039; table, you may assign color-coded stages via the context menu that&#039;s available via a secondary button-click of the mouse. Grouping the &#039;&#039;ingredients&#039;&#039; under a common stage (and color) allows you to more easily reference different stages from the directions section of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## To reposition one or more &#039;&#039;ingredient&#039;&#039; rows within the table, first select those desired, and then apply the up / down arrow key while the control key is depressed.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### the text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### change the &amp;amp;quot;Require All Words&amp;amp;quot; or &amp;amp;quot;Require Exact Match&amp;amp;quot; options.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection (i.e. the less severe), the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Browser Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Browser Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active property values tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted preferences values tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 22 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 24-ea+15 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.1.1-20241116-021934.5be16ea || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.13.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.4.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20240303 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.18.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.4.5 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.23.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 2.0.27 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ralfstuckert/pdfbox-layout Pdfbox2 Layout] || 1.0.1 || Runtime || MIT || Library providing PDF text layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.1 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.7.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 76.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.11.3 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=7</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=7"/>
		<updated>2024-09-12T00:10:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: Webscrape capability (v0.46.0) - add Schema.org citation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
## You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
## You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update.&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcFoodsUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet food server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcNutritionUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet nutrition server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### the text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### change the &amp;amp;quot;Require All Words&amp;amp;quot; or &amp;amp;quot;Require Exact Match&amp;amp;quot; options.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection, the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active property values tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted preferences values tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 22 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 24-ea+5 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.1.0-20240829-135020.8bbac7f || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.11.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.15.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20240303 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.4.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.23.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 2.0.27 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ralfstuckert/pdfbox-layout Pdfbox2 Layout] || 1.0.1 || Runtime || MIT || Library providing PDF text layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.1 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.6.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 75.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.11.0 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government License v3.0&lt;br /&gt;
|-&lt;br /&gt;
| [https://schema.org/Recipe Schema.org Recipe type (and all supporting types)] || Version 27.02, without change || [https://creativecommons.org/licenses/by-sa/3.0/ CC BY-SA 3.0] || [https://schema.org/docs/about.html About Schema.org]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=6</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=6"/>
		<updated>2024-09-11T15:27:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: Webscrape capability (v0.46.0)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
## You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
## You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update.&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcFoodsUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet food server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcNutritionUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet nutrition server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; attempts to import (scrape) a &#039;&#039;recipe&#039;&#039; from a web-page&#039;s URL or from a file&#039;s HTML content (when that page defines or that file contains the &#039;&#039;recipe&#039;&#039; as a [https://schema.org/Recipe schema.org/Recipe] type).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Upon the first selection of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, initialization is started that may take a few tens of seconds to complete (as shown via its progress bar). Scrape requests may only be initiated after the completion of the scrape initialization, which prepares the deserialization (i.e. parsing) algorithm to interpret downloaded &#039;&#039;recipe&#039;&#039; datasets.&lt;br /&gt;
## A scrape request may take several seconds to complete. When successful, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; is launched with the parsed data. You should inspect the values and correct or adjust anything as desired before hitting the save button since issues may occur due to improper data entry at the origin or even due to the application&#039;s interpretation of this free-range data. This is especially true of the &#039;&#039;recipe&#039;&#039; instruction text which may be bizarrely crafted.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&#039;s character set combo box&amp;lt;/span&amp;gt; specifies how the retrieved data is decoded. The latest HTML specification uses UTF-8; however, some sites may still have remnants based upon ISO-8859-1. If you observe strange characters in the text or unexpected amounts in the &#039;&#039;recipe ingredients&#039;&#039;, a new scrape attempt after another character set has been selected may improve your results. You’ve gotta ask yourself one question: “Do I feel lucky?”&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt;, for scraped &#039;&#039;recipes&#039;&#039;, &#039;&#039;keywords&#039;&#039; that are not predefined will not automatically be imported and applied (since you could end up with a swarm of different &#039;&#039;keywords&#039;&#039; that all pertain to the same concept). In this case it&#039;s more manageable to predefine the ones you desire and add any of those that haven&#039;t been automatically matched (during the scrape) via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s edit panel&amp;lt;/span&amp;gt; that appears after a successful scrape.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;scrape tab&amp;lt;/span&amp;gt; (during a &#039;&#039;recipe&#039;&#039; URL scrape), the application may encounter obfuscated HTML (i.e. purposely encrypted to disallow automated scraping). As a workaround, sometimes, using your favorite browser, you can select a &amp;quot;view source&amp;quot; option and copy and paste the unobfuscated HTML into a file on your computer and scrape that file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### the text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### change the &amp;amp;quot;Require All Words&amp;amp;quot; or &amp;amp;quot;Require Exact Match&amp;amp;quot; options.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection, the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active property values tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted preferences values tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 22 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 24-ea+5 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.1.0-20240829-135020.8bbac7f || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.11.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.15.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20240303 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 4.4.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.23.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 2.0.27 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ralfstuckert/pdfbox-layout Pdfbox2 Layout] || 1.0.1 || Runtime || MIT || Library providing PDF text layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.7 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.1 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Kobee1203/schema-org-java Schema-org-java] || 0.6.0 || Runtime || [https://github.com/Kobee1203/schema-org-java/blob/main/LICENSE Apache 2.0] || Commons and serializer libraries and maven plugin generator for [https://Schema.org Schema.org] types.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 75.1 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.11.0 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government Licence v3.0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=5</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=5"/>
		<updated>2024-07-11T21:14:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly-functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
==== Architecture ====&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
## You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
## You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
##* Once &#039;&#039;nutrition&#039;&#039; has been compiled for all of a &#039;&#039;recipe&#039;s ingredients&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the preparation or cooking methods required weren&#039;t already accounted for in the selected &#039;&#039;food&#039;s nutrition&#039;&#039;.&lt;br /&gt;
##** For example, for a dish of fried potatoes, where the ingredient is raw, whole potatoes, and the selected nutrition from the source is for raw, whole potatoes, then one may wish to apply two &#039;&#039;yield factors&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;: a) one for raw, whole potato where the prepartion method is pared, and b) one for pared potato where the cooking method is fried.  This has the effect of adjusting the amount of the final dish (the yield) due to loss (or gain) of food mass as a function of the preparation and cooking methods.&lt;br /&gt;
##** Loss (or gain) of &#039;&#039;nutrients&#039;&#039; (e.g. minerals and vitamins) may also occur as a function of the cooking methods utilized. &#039;&#039;Retention factors&#039;&#039; may be applied to improve the accuracy of the composite nutrition when the selected &#039;&#039;nutrition&#039;&#039; compiled for the dish doesn&#039;t already incorporate the cooking methods utilized.&lt;br /&gt;
##** In summary:&lt;br /&gt;
##*** Application of a &#039;&#039;yield factor&#039;&#039; is typically useful when volume adjustment is required for a dish given a loss / gain of a liquid (e.g. water):&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# a preparation method is applied (paring, coring, skinning) that sheads unwanted portions,&lt;br /&gt;
##***# when one is calculating &#039;&#039;nutrient&#039;&#039; amount per 100 g sample in conjunction with &#039;&#039;nutrient retention factors&#039;&#039; and preparation/cooking method(s). The &#039;&#039;nutrient&#039;&#039; aggregation that the application performs in the Nutrition Construction panel is for the final dish as a whole (and not &amp;quot;per sample&amp;quot;).&lt;br /&gt;
##*** Application of a &#039;&#039;retention factor&#039;&#039; is typically useful to incorporate the loss / gain of a &#039;&#039;nutrient&#039;&#039; (other than water) that occurs given:&lt;br /&gt;
##***# a cooking method is applied (e.g. baking, frying),&lt;br /&gt;
##***# in theory, some chemical reaction that occurs during a preparation method (ingredient mixing, oxidation).&lt;br /&gt;
##*** Note that &#039;&#039;nutrition&#039;&#039; data derived from lab analysis of a sample provides the most accurate summation of the &#039;&#039;nutrients&#039;&#039; available from a &#039;&#039;food&#039;&#039;. But given the prohibitive nature  of using that process (time, expense, &#039;&#039;recipe&#039;&#039; and &#039;&#039;ingredient&#039;&#039; variability), this application&#039;s &#039;&#039;nutrition&#039;&#039; construction (even with judicious application of &#039;&#039;retention&#039;&#039; and / or  &#039;&#039;yield factors&#039;&#039;) provides only an approximation of what &#039;&#039;nutrient&#039;&#039; amounts are available from your latest pièce de résistance.  Better the knowledge of an approximation of truth, rather  than the deliberate practice of cluelessness.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
==== Usability ====&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Retention and Yield Factors ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Retention and yield factors&#039;&#039; may be applied during &#039;&#039;nutrition&#039;&#039; construction to adjust the edible&#039;s &#039;&#039;nutrient&#039;&#039; values as a function of any preparation and/or cooking methods applied. The following table identifies allowed behavior.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Retention and Yield Factor Behavior&lt;br /&gt;
|-&lt;br /&gt;
! Rule !! Retention Factor (applied at ingredient level) !! Yield Factor (applied at recipe level) &lt;br /&gt;
|-&lt;br /&gt;
|Multiple factors allowed || y || y&lt;br /&gt;
|-&lt;br /&gt;
|No factor is allowed || y || y (when factor not available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|When last factor removed, default used || n/a || y (when factor is available at recipe)&lt;br /&gt;
|-&lt;br /&gt;
|Factors can be per ingredient || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Add/remove order is irrelevant || y (all applied per nutrient per ingredient level) || y (all applied per nutrient total per recipe level)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##RetentionFactor&lt;br /&gt;
##YieldFactor&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update.&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Cooking Reference&amp;quot;&amp;gt;A &#039;&#039;cooking reference&#039;&#039; is a set of data (e.g. &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039;) that may be applied to more accurately calculate &#039;&#039;nutrition&#039;&#039; for a &#039;&#039;food&#039;&#039; or &#039;&#039;recipe&#039;&#039; that undergoes some series of preparation and / or cooking methods.&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcFoodsUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet food server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcNutritionUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet nutrition server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|RetentionFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|YieldFactors || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s nutrition&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &#039;&#039;meal&#039;s servings&#039;&#039;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &#039;&#039;meal&#039;&#039; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &#039;&#039;serving&#039;&#039; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &#039;&#039;meal&#039;&#039; and the day&#039;s aggregate &#039;&#039;nutrition&#039;&#039; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &#039;&#039;nutrition&#039;&#039; for that day&#039;s set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
##	Allows a &#039;&#039;yield factor&#039;&#039; to be automatically calculated for a &#039;&#039;recipe&#039;&#039; when an &#039;&#039;ingredient&#039;&#039; unit is not compatible with either a gram or liter unit.&lt;br /&gt;
##  Can greatly improve accuracy during &#039;&#039;nutrition&#039;&#039; construction.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
## Imported &#039;&#039;conversion profiles&#039;&#039; will automatically be assigned to a &#039;&#039;food&#039;&#039; with the same name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &#039;&#039;food&#039;&#039; or &#039;&#039;nutrition profile&#039;&#039; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Cooking Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Cooking Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;cooking reference&#039;&#039; data sourced from various government-sponsored agencies. Two types of information are available:&lt;br /&gt;
##* &#039;&#039;Yield factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to its initial state and the preparation and / or cooking methods applied, and represent a percentage change in yield (i.e. a loss or gain in mass) that occurs as a result of the treatment.&lt;br /&gt;
##* &#039;&#039;Retention factors&#039;&#039; are uniquely-defined per &#039;&#039;food&#039;&#039;, according to the cooking method applied, and represent a percentage change in retention (typically a loss) of a vitamin or mineral that occurs as a result of the treatment.  Come-on now. Did ya really think that all of that bourbon just baked out of that cake before you gave it to little Billy?&lt;br /&gt;
# Actions&lt;br /&gt;
## When compiling nutrition via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (and only then), one may select (i.e. apply) any set of &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; to the set of chosen food products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The footnotes at the bottom of each tab provide hyperlinks to access source material for further enlightenment.&lt;br /&gt;
# Tips&lt;br /&gt;
## Remember the garbage-in, garbage-out rule of computers. The application does not yet possess super-human, AI capabilities to ensure that your selections don&#039;t strand you in some misguided, calculation-falacy hell. Choose wisely.&lt;br /&gt;
## Three of the most common cooking methods are: pan-fried (fat, water), cooked by dry heat (air, fat, radiation, conduction), cooked by moist heat (water, steam). Still reading then?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### the text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### change the &amp;amp;quot;Require All Words&amp;amp;quot; or &amp;amp;quot;Require Exact Match&amp;amp;quot; options.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
## The retention column shows source-applied retention (i.e. the mixed or Y values) only for &#039;&#039;foods&#039;&#039; of the SR Legacy data type since only that data type has that information available via the food products response message used to populate this panel&#039;s data.  For Survey (FNDDS) foods, indication of source-applied retention is only available when the specific food&#039;s &#039;&#039;nutrition&#039;&#039; data is retrieved via a food nutrition response message. The other data types specify no indication of source-applied retention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products. The panel information is presented via two tables:&lt;br /&gt;
### The compiled nutrition table shows nutrient meta data on the leftmost portion and nutrient quantity (for the selected &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039; amounts) in the rightmost portion. The rightmost portion is further delineated into the following four aggregated columns (where the remaining columns each reflect the &#039;&#039;nutrition&#039;&#039; for a single &#039;&#039;food&#039;&#039; or &#039;&#039;ingredient&#039;&#039;):&lt;br /&gt;
#### The total column displays the quantity of the nutrient summed across all &#039;&#039;foods/ingredients&#039;&#039; selected.&lt;br /&gt;
#### The retention column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; (if any) that are pertinent to the nutrient.&lt;br /&gt;
#### The yield column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The two nutrients, Energy (KCAL) and Energy (KJ), are recalculated according to the Energy Conversion Factors specified in ANNEX XIV of Regulation (EU) No. 1169/2011 (see the [[&#039;#Data Sources&#039;|Data Sources]] reference below).&lt;br /&gt;
#### The all-factored column shows the total quantity for the nutrient adjusted for those selected &#039;&#039;retention factors&#039;&#039; and &#039;&#039;yield factors&#039;&#039; (if any) that are pertinent. The Energy (KCAL) and Energy (KJ) nutrient values are carried over from the yield column.&lt;br /&gt;
### The factors table (at the panel&#039;s bottom) lists all active (i.e. selected) &#039;&#039;retention&#039;&#039; and &#039;&#039;yield factors&#039;&#039; that are applied for the &#039;&#039;food(s)&#039;&#039; or &#039;&#039;recipe ingredients&#039;&#039;. Their impact may be further limited to only those columns desired by editing the column assignment cell with the applicable column number(s).&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Factor table utilization:&lt;br /&gt;
### When compiling &#039;&#039;nutrition&#039;&#039;, &#039;&#039;retention&#039;&#039; and / or &#039;&#039;yield factor&#039;&#039; application are only desirable when the selected &#039;&#039;food&#039;&#039; products don&#039;t already account for some intended series of preparation or cooking methods (e.g. baking a cake from raw &#039;&#039;ingredients&#039;&#039;).  If you compile &#039;&#039;nutrition&#039;&#039; for a raw apple that you&#039;re going to eat as is (&amp;quot;you&#039;re going to wash that right?&amp;quot;), then there&#039;s no need to utilize a treatment factor to adjust the &#039;&#039;nutrient&#039;&#039; quantities.&lt;br /&gt;
### By default, all factors apply to all &#039;&#039;foods/ingredients&#039;&#039; in the compiled nutrition table. Only those nutrients in the compiled nutrition table that are listed in a &#039;&#039;retention factor&#039;s&#039;&#039; set of nutrients are adjusted (assuming a column assignment of &amp;quot;all&amp;quot;).&lt;br /&gt;
### Any factor may be selected and deleted to remove its impact upon the final calculated nutrition; however, if a default &#039;&#039;yield factor&#039;&#039; exists for the recipe (i.e. a &#039;&#039;yield factor&#039;&#039; is displayed in the &#039;&#039;recipe&#039;s&#039;&#039; edit pane next to the yield control), it will automatically be reinserted in the factor table.&lt;br /&gt;
### To limit the a factor&#039;s impact to only a particular &#039;&#039;food/ingredient&#039;&#039;, edit the column assignment cell accordingly.  For example, use &amp;quot;1,3&amp;quot; rather than &amp;quot;all&amp;quot; to only apply the factor to &#039;&#039;food/ingredient&#039;&#039; columns 1 and 3 (as identified at the top of the amount food amount column).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is deselected, a simplier panel is presented by removing the &#039;&#039;yield&#039;&#039; and &#039;&#039;retention factor&#039;&#039; UI widgets. In this mode, the &#039;&#039;nutrition&#039;&#039; listed under the total column may be saved (&#039;&#039;yield&#039;&#039; and &#039;&#039;retention factors&#039;&#039; are disregared) and proves useful when no additional preparation or cooking methods need to be taken into account.&lt;br /&gt;
##	When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is selected, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt; may be used to specify which of the four columns should be saved as &#039;&#039;nutrition&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-nutrition button&amp;lt;/span&amp;gt;.  When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;retention radio button&amp;lt;/span&amp;gt; is not selected, only the total column may be saved as &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;. When retention is disabled, only the values in the total column may be saved as &#039;&#039;nutrition&#039;&#039;. When retention is enabled, either the total column values or the yield column values may be saved as &#039;&#039;nutrition&#039;&#039; per the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition-column-to-save combo box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
## For only the SR Legacy or Survey (FNDDS)-sourced &#039;&#039;foods&#039;&#039;, an &amp;quot;R&amp;quot; after the &#039;&#039;ingredient&#039;&#039; index in the table column header indicates that the retrieved &#039;&#039;nutrient&#039;&#039; data for that &#039;&#039;food&#039;&#039; already has source-applied &#039;&#039;retention factors&#039;&#039; used in its derivation.  Depending upon your use case, you may wish to consider whether any additional &#039;&#039;retention factor&#039;&#039; application is necessary given the desire for accuracy.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection, the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active property values tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted preferences values tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 22 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 22 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.1.0-20240314-143324.cd91c52 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.14.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.11.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.15.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20240303 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 3.14.5 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.23.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 2.0.27 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ralfstuckert/pdfbox-layout Pdfbox2 Layout] || 1.0.1 || Runtime || MIT || Library providing PDF text layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.6 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.17.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.2.1 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 73.2 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.10.2 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv Nutrient Recommendations: Daily Values] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri Nutrient Recommendations: Dietary Reference Intakes] || - || - || U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] || ISBN: 9780160955990 || - || U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490&lt;br /&gt;
|-&lt;br /&gt;
| [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] || FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 || - || U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.fao.org/uploads/media/bognar_bfe-r-02-03.pdf Tables on weight yield of food and retention factors of food constituents for the calculation of nutrient composition of cooked foods (dishes)] || A. Bognár; ISSN 0933 - 5463; Berichte der Bundesforschungsanstalt für Ernährung (BFE); 2002 || - || Federal Nutrition Research Centre, Germany&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/ah102.pdf USDA ARS Agriculture Handbook No. 102: Food Yields Summarized by Different Stages of Preparation] || Matthews and Garrison; September 1975 || - || U.S. Department of Agriculture; Agricultural Research Service&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/ARSUserFiles/80400535/Data/retn/USDA_CookingYields_MeatPoultry02.pdf USDA Table of Cooking Yields for Meat and Poultry] || Roseland, et al.; Release 2; September 2014 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.langual.org/Download/RecipeCalculation/Bell%20et%20al%20-%20Report%20on%20Nutrient%20Losses%20and%20Gains%20Factors%20used%20in%20European%20Food%20Composition%20Databases.pdf Report on Nutrient Losses and Gains Factors used in European Food Composition Databases] || Federal Research Centre for Nutrition and Food (BfEL), Karlsruhe, Germany; April 2006 || - || European Food Information Resource Network (EuroFIR)&lt;br /&gt;
|-&lt;br /&gt;
| [https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ%3AL%3A2011%3A304%3A0018%3A0063%3AEN%3APDF REGULATION (EU) No 1169/2011 OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL of 25 October 2011 on the provision of food information to consumers] || Official Journal of the European Union, L304, 22.11.2011, p. 18 || - || European Union&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/nutrient-retention-factors/ USDA Table of Nutrient Retention Factors] || USDA Table of Nutrient Retention Factors, Release 6, Dec 2007 || - || U.S. Department of Agriculture; Agricultural Research Service; Beltsville Human Nutrition Research Center; Nutrient Data Laboratory&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.gov.uk/government/publications/composition-of-foods-integrated-dataset-cofid The Composition of Foods] || Sixth summary edition. Cambridge: Royal Society of Chemistry. Food Standards Agency, UK, 2004 || - || Public Health England: contains public sector information licensed under the Open Government Licence v3.0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=4</id>
		<title>User&#039;s Manual</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=User%27s_Manual&amp;diff=4"/>
		<updated>2024-03-04T19:33:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: Initial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Application&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The CuttingBoard Application =&lt;br /&gt;
&lt;br /&gt;
The CuttingBoard application is a recipe manager, nutrition tracker, and meal planner (think food, brewing, mixed-drink, ...) that offers:&lt;br /&gt;
&lt;br /&gt;
# Storage of your recipe collection under your control on your equipment preserving your privacy (no cloud-based links that can change, disappear, or fall behind a pay-wall at some inopportune time),&lt;br /&gt;
# Data entry via text entry and XML file import,&lt;br /&gt;
# Convenience: the ability to search through your collection via foods and keywords to quickly find what you need,&lt;br /&gt;
# Portability: the ability to save your recipes and other data in XML-formatted files for migration and backup,&lt;br /&gt;
# Definition and remote retrieval of nutrition information on a food / food product basis (that can then be applied to recipes, meals, and average nutrition per time span),&lt;br /&gt;
# Calendar-based meal-planning,&lt;br /&gt;
# Creation of a knowledge base of notes per topic organized via a user-definable hierarchy,&lt;br /&gt;
# The ability to entertain and motivate not only via a user-customizable greeting-quote-at-launch capability, but also via a few remaining bugs that await you since this highly functional piece of artwork is still a prototype under construction.&lt;br /&gt;
&lt;br /&gt;
== Theory ==&lt;br /&gt;
&lt;br /&gt;
A word concerning this help document format.&lt;br /&gt;
&lt;br /&gt;
# Objects internally managed by the application, and changable by the user, are &#039;&#039;italicized&#039;&#039; for emphasis: &#039;&#039;Recipe&#039;&#039;, &#039;&#039;nutrition&#039;&#039;, &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Modifiable attributes (think managed object properties) are of the form: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Category, descriptor&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Named GUI widgets (e.g. a particular combo box, panel) and GUI option names or values are of the form: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Recipe edit panel&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Vegan&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Navigation is presented as a stepped format: &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;amp;gt; export all&amp;lt;/span&amp;gt;.&lt;br /&gt;
# User input requiring strict adherence to a predefined format or order: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1.0 recipe Nigel&#039;s Scones&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Application output is represented as: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;Please don&#039;t ever do that again&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Concepts ===&lt;br /&gt;
&lt;br /&gt;
# All [[&#039;#Internal%20Objects&#039;|internal objects]] must have a unique [[&#039;#Descriptor&#039;|descriptor]] that it shall be known by for purposes such as expedient database lookup and no-hassle car maintenance.&lt;br /&gt;
# Don&#039;t forget to hit the &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; save button at the end of an edit session for a particular internal object. Otherwise Liza, you&#039;re just practicing for the show.&lt;br /&gt;
# When the user focuses on a recipe or unit combo box control, the user may type-in filter characters that will limit the number of drop-down entries shown. Once the desired entry is observed, it may be selected.&lt;br /&gt;
# The application internally defines certain collections of words (or phrases) as &#039;&#039;keywords&#039;&#039;.&lt;br /&gt;
## &#039;&#039;Keywords&#039;&#039; support:&lt;br /&gt;
##* user actions (e.g. search),&lt;br /&gt;
##* accurate parsing of human text (e.g. &#039;&#039;ingredient&#039;&#039;-line interpretation),&lt;br /&gt;
##* efficient database lookup via reference-links that may exist between internal objects.&lt;br /&gt;
## &#039;&#039;Keyword&#039;&#039; values are grouped per type (or class). Here are a few examples &#039;&#039;keyword&#039;&#039; class applicability.&lt;br /&gt;
##; • &#039;&#039;Recipes&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food Unit, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (one user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Ingredients&#039;&#039; use:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Food, Food Unit&amp;lt;/span&amp;gt;.&lt;br /&gt;
##; • The application uses:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Food, Food Unit, Nutrient, Source&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Quite a few &#039;&#039;keywords&#039;&#039; are pre-defined by the application. The user may add new &#039;&#039;keywords&#039;&#039; and modify existing ones. Certain pre-defined &#039;&#039;keywords&#039;&#039; that are critical to proper operation are labelled as system-defined and may not be deleted (and some of their properties may not be modified by the user).&lt;br /&gt;
## &#039;&#039;Tags&#039;&#039; are descriptive values that can be assigned to a &#039;&#039;recipe&#039;&#039; or &#039;&#039;ingredient&#039;&#039; to help describe your collection.&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; values are available from the following &#039;&#039;keyword&#039;&#039; classifications:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Attribute, Category, Cooking Style, Course, Cuisine, Diet, Dish Type, Effect, Occasion, Rating, Seasonal, and Custom&amp;lt;/span&amp;gt; (a user-customizable class).&lt;br /&gt;
##; • &#039;&#039;Tag&#039;&#039; examples:&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dinner, Dairy, Vegan, Birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
##; Look at the combo box values in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe edit panel&amp;lt;/span&amp;gt; for more examples.&lt;br /&gt;
# [[&#039;#XML&#039;|XML]]-based files are used to import and export application data. Trade them with your friends (like baseball cards).&lt;br /&gt;
## You can export your data to XML files and store them in a safe place as a backup. Like at Gringott&#039;s.&lt;br /&gt;
## You can use your backup XML files to repopulate a fresh database (e.g. if you decide to change or reinstall the hosting machine).&lt;br /&gt;
# An entry in a collection of internal objects (displayed in tables, hierarchical trees) has a context menu (accessible via a secondary mouse button single-click) allowing quick access to frequently used actions.&lt;br /&gt;
# &#039;&#039;Conversion profiles&#039;&#039; may be defined that list equivalent amounts of a foodstuff (among dissimilar units) that can be used to perform conversions (think &#039;&#039;meal&#039;&#039; portion vs &#039;&#039;recipe&#039;&#039; yield). More on this topic can be found later in this opus.&lt;br /&gt;
# A compound &#039;&#039;recipe&#039;&#039; references another &#039;&#039;recipe&#039;&#039; as at least one of its &#039;&#039;ingredients&#039;&#039;. Whereas, a simple &#039;&#039;recipe&#039;&#039; has only &#039;&#039;foods&#039;&#039; specified for its &#039;&#039;ingredients&#039;&#039;.&lt;br /&gt;
# &#039;&#039;Nutrition&#039;&#039;&lt;br /&gt;
## Displayed &#039;&#039;nutrition&#039;&#039; shows both an absolute amount and the [[&#039;#DRI&#039;|DRI]] percent for available &#039;&#039;nutrients&#039;&#039;. The DRI percent is based upon the user&#039;s default characteristics (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;age, group, activity level&amp;lt;/span&amp;gt;) that are specified at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. A &#039;&#039;nutrition summary&#039;&#039; displays only six common &#039;&#039;nutrients&#039;&#039; (Calories, Fat, Cholesterol, Sodium, Carbohydrates, Protein).&lt;br /&gt;
## With respect to &#039;&#039;recipe&#039;&#039; &#039;&#039;nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;recipe&#039;s nutrition&#039;&#039; data:&lt;br /&gt;
##** is displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; and provides nutrient, mineral, and vitamin amounts on a per serving basis,&lt;br /&gt;
##** is only available after &#039;&#039;nutrition&#039;&#039; construction is performed per &#039;&#039;ingredient&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
##** is displayed as a &#039;&#039;nutrition summary&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##* Three different sources of &#039;&#039;nutrition&#039;&#039; data may be used and applied to &#039;&#039;recipes&#039;&#039; for meal-planning purposes:&lt;br /&gt;
##** user-defined for a specific &#039;&#039;food&#039;&#039;,&lt;br /&gt;
##** user-defined for a &#039;&#039;nutrition profile&#039;&#039; for a given type or product of a &#039;&#039;food&#039;&#039; (e.g. general flour, Biff&#039;s ketchup),&lt;br /&gt;
##** dynamically retrieved from a source (e.g. USDA FoodData Central web site) via application-generated, on-demand HTTP requests.&lt;br /&gt;
## With respect to &#039;&#039;meal nutrition&#039;&#039;:&lt;br /&gt;
##* A &#039;&#039;meal&#039;s nutrition summary&#039;&#039;, as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar, meals, and meal edit panels&amp;lt;/span&amp;gt;, is updated when:&lt;br /&gt;
##** changes to any of the &#039;&#039;meal&#039;s&#039;&#039; &#039;&#039;servings&#039;&#039; are saved (e.g. a &#039;&#039;serving&#039;s&#039;&#039; &#039;&#039;recipe&#039;&#039; or portion),&lt;br /&gt;
##** changes to any of the following &#039;&#039;recipe&#039;&#039; attributes are saved: yield, serving size, new &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
##* A &#039;&#039;meal&#039;s&#039;&#039; complete &#039;&#039;nutrition&#039;&#039; (not a summary), or the &#039;&#039;nutrition&#039;&#039; of a whole day&#039;s worth of meals, is available as a pop-up accessed via the corresponding calendar entry.&lt;br /&gt;
# A &#039;&#039;note&#039;&#039; system is provided (for those of us who have the memory of a goldfish) allowing for food-, nutrition-, health-related information to be stored and quickly accessed, where each &#039;&#039;note&#039;&#039; is represented in a customizable table form and organized per topic in a hierarchical fashion.&lt;br /&gt;
&lt;br /&gt;
=== Behavior ===&lt;br /&gt;
&lt;br /&gt;
==== XML Importation ====&lt;br /&gt;
&lt;br /&gt;
# When importing internal objects from XML files:&lt;br /&gt;
## You may import from the same filename any number of times, but only those objects which are not already present in the application (per their unique descriptor) will be assimilated. Those already present in the application are not updated.&lt;br /&gt;
## All objects that are successfully parsed from the XML file are automatically saved in the database and are immediately available within the application with the exception of &#039;&#039;recipes&#039;&#039;.&lt;br /&gt;
## Imported &#039;&#039;recipes&#039;&#039; are listed in the import tab (a staging area) where the following actions may be performed.&lt;br /&gt;
### Once those selected are saved to the application via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save-imported-recipes button&amp;lt;/span&amp;gt;, they are removed from the import tab and are listed in the browse tab.&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; can be viewed via its recipe card or edited (e.g. renamed) before being saved. So if you&#039;re not pleased with, say, the resultant &#039;&#039;ingredient&#039;&#039; dissection, you may realign the result to better fit your personal worldview.&lt;br /&gt;
### Any &#039;&#039;recipes&#039;&#039; not saved from the import tab are discarded upon application exit.&lt;br /&gt;
### The error column lists the number of parsing errors found for a &#039;&#039;recipe&#039;&#039; when the XML file was processed. You may wish to pursue corrective action such as:&lt;br /&gt;
###* Delete the &#039;&#039;recipe&#039;&#039;, fix its data in the XML file, and import that file again, or&lt;br /&gt;
###* Import another XML file that contains any missing recipes referenced as &#039;&#039;ingredients&#039;&#039; by the impaired &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* Selecting multiple &#039;&#039;recipes&#039;&#039; that reference each other as &#039;&#039;ingredients&#039;&#039; and performing a save (sometimes more than once) can work since the application attempts to save what it can during each successive iteration. Just no circular references, please, because that&#039;s just malicious.&lt;br /&gt;
###* If the number of &#039;&#039;recipes&#039;&#039; in the import tab doesn&#039;t diminish after a save or two, then there&#039;s no more air in the tires, Axel.&lt;br /&gt;
### Deleting a &#039;&#039;recipe&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; will also automatically delete any other &#039;&#039;recipes&#039;&#039; in the import tab that use that recipe as an ingredient.&lt;br /&gt;
## If editing XML files before an import, please use full words rather than abbreviations for any type of unit (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fluid ounce&amp;lt;/span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;fl oz&amp;lt;span&amp;gt;; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ounce&amp;lt;span&amp;gt;, not &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;oz&amp;lt;span&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Updates ====&lt;br /&gt;
&lt;br /&gt;
During an automatic upgrade (where the user-initiated update check was started via &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;gt; Check for update menu item&amp;lt;/span&amp;gt;), the following steps will occur (in sequence) when an  &lt;br /&gt;
available update is detected and the user selects &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#The zipped file is downloaded from the application server to the client&#039;s host and its content is extracted to the {ArtifactDirectory}/update directory. This may take many seconds to complete.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#The user exits the application.&lt;br /&gt;
#The user may delete the [[&#039;#database&#039;|database]] directory (and nothing else) if a fresh start is desired (with a corresponding loss of any preexisting user data).&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and begin their execution.&lt;br /&gt;
#If, upon restart, no existing database is detected, a fresh one is generated with its initial system data (typically requiring many 10s of seconds). Otherwise, the old database will be gleefully used (without any loss of user data) when no database schema change has occurred between the previous and new versions.&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the upgrade.&lt;br /&gt;
&lt;br /&gt;
==== Database Regeneration ====&lt;br /&gt;
&lt;br /&gt;
A database regeneration is required when a database schema change has occurred between the application&#039;s current installation version and a new version. The user is made aware of this condition either by:&lt;br /&gt;
*Reading the release notes at the application server for the version of interest, or&lt;br /&gt;
*After performing a check for update at the application, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*This process is only required when the database schema has changed for the new version and the existing data has to be migrated into the new paradigm. If no database schema change is required by the new version, the upgrade only consists of the download, extraction, and executable copy during the application restart.&lt;br /&gt;
*The &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference may be disabled by the user via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; when the user wishes to manually enact any migration necessary (see the following section) to support an application update that documents a schema change; otherwise, when the preference is true an automatic regeneration is enacted. This automatic regeneration capability only becomes available when, at least, release v0.42.8 is already installed.&lt;br /&gt;
*The re-importation step may take many minutes to complete if the host is slow and / or a large amount of user data exist.&lt;br /&gt;
*The process does not migrate user modifications made to system objects that were part of the application&#039;s initial installation. Therefore, the user must reapply those customizations. This is a current annoyance that may be rectified in a future release.&lt;br /&gt;
&lt;br /&gt;
===== Manual =====&lt;br /&gt;
&lt;br /&gt;
If one wishes to upgrade an existing installation to a new version that includes a database schema change and preserve their existing user data, do the following steps (in order):&lt;br /&gt;
#Perform any favorite superstitious rituals to the technology gods.&lt;br /&gt;
#Check for an available update.&lt;br /&gt;
#Select &amp;quot;yes&amp;quot; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert panel.&lt;br /&gt;
#After the download and extraction has completed, DO NOT yet exit the application unless you&#039;ve already performed the next step to export your data.&lt;br /&gt;
#Select the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; export all menu item&amp;lt;/span&amp;gt; to export all data from the application into XML files located in the export directory.&lt;br /&gt;
#Exit the application.&lt;br /&gt;
#You MUST delete the [[&#039;#database&#039;|database]] directory (and nothing else).&lt;br /&gt;
#Restart the application and patiently wait for the database to be recreated.&lt;br /&gt;
#In the following sequence, import any highly-cherished, previously-exported XML files (i.e. those from the first step, if you get were I&#039;m going with this).  If you haven&#039;t added any new objects to a particular class since the initial installation, there&#039;s no need to import that XML file. During an import, an object whose descriptor (i.e. name) already exists within the database is considered a duplicate and is skipped.&lt;br /&gt;
##LanguageReference&lt;br /&gt;
##FoodUnit&lt;br /&gt;
##Tag&lt;br /&gt;
##DietaryReference&lt;br /&gt;
##NutrientReference&lt;br /&gt;
##Nutrient&lt;br /&gt;
##Food&lt;br /&gt;
##ConversionProfile&lt;br /&gt;
##NutritionProfile&lt;br /&gt;
##Note&lt;br /&gt;
##Quote&lt;br /&gt;
##Recipe&lt;br /&gt;
##Meal&lt;br /&gt;
&lt;br /&gt;
===== Automatic =====&lt;br /&gt;
&lt;br /&gt;
The goal of an automatic database regeneration during upgrade is a new database with an improved data schema and a lossless migration of the user&#039;s pre-existing data without (ahem) the typical user interaction (and distress).&lt;br /&gt;
&lt;br /&gt;
During an upgrade, the following steps will occur (in sequence) when the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt; preference is true, a &amp;quot;Regeneration Required!&amp;quot; phrase is observed in the text of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Proceed with update?&amp;lt;/span&amp;gt; alert, and the user selects &amp;quot;yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
#The zipped file is downloaded to the client&#039;s host and extracted.&amp;lt;/li&amp;gt;&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, that the upgrade will occur once the application is restarted.&lt;br /&gt;
#Upon exit, an XML export of all system and user data from the existing database automatically occurs to files of the form, {name}_vX.Y.Z.xml, in the {ArtifactDirectory}/export directory where vX.Y.Z represents the application version currently active.&lt;br /&gt;
#Also upon exit, the existing database directory is renamed to {ArtifactDirectory}/database_vX.Y.Z.&lt;br /&gt;
#Upon next application start, the new executables are copied from the {ArtifactDirectory}/update directory to the installation directory and since no existing database is detected, a fresh one is generated (patience young grasshopper).&lt;br /&gt;
#The user&#039;s {name}_vX.Y.Z.xml data files are automatically imported (a process that may take at least 30 seconds).&lt;br /&gt;
#The user is notified, via a note within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar, concerning the resolution of the regeneration.&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
&lt;br /&gt;
==== Internet ====&lt;br /&gt;
&lt;br /&gt;
# Communication with the USDA&#039;s FoodData Central web site, via HTTP requests, is performed to gather &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;food&#039;&#039; products per user request only when enabled by the user (see [[&#039;#Configuration&#039;|Configuration]]).&lt;br /&gt;
# An embedded web browser is made available for user entertainment and is only used by the application to display help.&lt;br /&gt;
# A user-initiated update request (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;) will query the home site of the application to determine if a newer version exists. Only if requested by the user, will the application download that newer version to the user&#039;s computer and attempt an update.&lt;br /&gt;
# Other than what&#039;s described in the previous points, no other data is retrieved from nor sent to any other Internet site by the application for any purpose, because I&#039;m just nice that way. Your data is your data. The application does not &amp;quot;phone home&amp;quot; any information from your computer. Those without faith can peruse the publicly-available source code at the home site of the application.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
# Certain application operating parameters may be modified via a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to align the tool with your expectations.&lt;br /&gt;
# If you&#039;d like to retrieve nutrition information for &#039;&#039;food&#039;&#039; products used in &#039;&#039;recipe ingredients&#039;&#039;:&lt;br /&gt;
#* Request your free personal FDC API KEY from the USDA FoodData Central web site: [https://fdc.nal.usda.gov/api-key-signup.html USDA FDC sign-up site],&lt;br /&gt;
#* When the app&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition menu item&amp;lt;/span&amp;gt; is selected and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; is first pressed for a &#039;&#039;food&#039;&#039;, you&#039;re prompted to enter this FDC API KEY key if it wasn&#039;t previously defined. A first-time configuration thingy that the application thereafter remembers. Forevermore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;beware.-here-be-dragons&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Beware. Here Be Dragons ===&lt;br /&gt;
&lt;br /&gt;
# At this time (note the version number on the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;), this application, although highly functional, should be treated as a prototype. As such:&lt;br /&gt;
## It may inadvertently fall over and wheeze.&lt;br /&gt;
## It may offer erroneous data (although the Author is extraordinarily diligent at verifying the integrity of the data and calculations).&lt;br /&gt;
## It does not imply applicability to any insidious purpose you may conjure up in that warped mind of yours.&lt;br /&gt;
## NO WARRANTY, EXPRESS OR IMPLIED. EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT OR IN THE CONVEYANCE, CONVEYANCE OF THE WORKING INTEREST SHALL BE WITHOUT REPRESENTATION OR WARRANTY WHATSOEVER, EXPRESS, STATUTORY, OR IMPLIED, INCLUDING, BUT WITHOUT LIMITATION, AS TO TITLE, DESCRIPTION, PHYSICAL AND ENVIRONMENTAL CONDITION OF THE WORKED INTEREST, QUALITY, VALUE, FITNESS FOR PURPOSE, MERCHANTABILITY, OR OTHERWISE.&lt;br /&gt;
## When updating to a new application version that has a database schema modification, you may wish to consider an XML-export of your data from the old version in order to have data to import into the new version as a migration policy. This may be required when the Author shamelessly changes the database schema used to save data of the application&#039;s internal objects. But if the Author really decides to flood the world and start over, said Author may even smite the XML schema used in which case you&#039;re SOL. So keep those eyes, fingers and toes nimble, boys and girls. Read the change log to be aware of feature changes. The Author intends to automatically handle said changes gracefully during an application upgrade but, ya know, stuff sometimes happens.&lt;br /&gt;
# Inherent limitations&lt;br /&gt;
## My artwork.&lt;br /&gt;
## My patience with unhelpful, nonconstructive feedback.&lt;br /&gt;
## If you&#039;re sloppy with units, don&#039;t expect the application to take up the slack. To be accurate, use weight units for dry foodstuffs and volume units for liquids. This not only makes your chemistry experiment more reproduceable and tasty, but also results in less unit conversion aerobatics at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; when you&#039;re fishing for &#039;&#039;nutrition&#039;&#039;. Put another way, if you specify a cup of sugar and switch the recipe card measurement system to metric, don&#039;t be surprised if you&#039;re shown a value in milliliters. You asked for it, Aristotle.&lt;br /&gt;
## Effort has been expended with respect to dynamically updating active panels with new data that has been saved via other concurrently active panels. Having said that, we may not be there yet in all cases. Don&#039;t see what you&#039;re looking for? Exit the panel (with perhaps a save, wink) and reenter the panel to view the latest stuff.&lt;br /&gt;
## XML imports currently do not migrate user modifications made to an object that is already defined within the database (e.g. were part of the application&#039;s initial installation). An object that has the same descriptor (name) is considered a duplicate and is skipped during re-importation. The user must manually reapply any customizations made to pre-existing objects.&lt;br /&gt;
# Features currently under consideration, but not yet available due to Author&#039;s penchant for first picking the low-hanging fruit.&lt;br /&gt;
## Importation of various file formats (e.g. PDF).&lt;br /&gt;
## An XML import that updates pre-existing database objects with any user modifications that exist within the XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nuts and Bolts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuts and Bolts ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Widgets&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Widgets ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Internal Objects&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Internal Objects ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages a few different types of objects.&lt;br /&gt;
&lt;br /&gt;
# Managed Objects (MOs) are persistent (i.e., stored in a database located on your computer) and have properties (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor, variety, abbreviation, amount&amp;lt;/span&amp;gt;) that are modifiable by the user via the application&#039;s &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;. These MOs are defined and categorized as follows:&lt;br /&gt;
## Measurement&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Conversion Profile&amp;quot;&amp;gt;A &#039;&#039;conversion profile&#039;&#039; defines one or more conversions between two or more equivalent [[&#039;#Portion&#039;|portions]], that are unique to a specified &#039;&#039;food&#039;&#039; or &#039;&#039;food&#039;&#039;-type.&amp;lt;/span&amp;gt;&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;s&#039;&#039; portions have units of dissimilar dimension, such as:&lt;br /&gt;
####* weight vs. volume (e.g. 200 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt; and 1 &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* where there&#039;s an arbitrary relationship to be made (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;batch&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;squares&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;loaf&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;slices&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### The application inherently knows how to convert between different units of similar dimension, such as:&lt;br /&gt;
####* weight-to-weight (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;pounds&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;grams&amp;lt;/span&amp;gt;), or&lt;br /&gt;
####* volume-to-volume (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;liters&amp;lt;/span&amp;gt; to &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;gallons&amp;lt;/span&amp;gt;).&lt;br /&gt;
#### A &#039;&#039;conversion profile&#039;&#039; is required by the application for conversion between dissimilar units (unless you enjoy angry status messages / pop-up notifications).&lt;br /&gt;
### &amp;lt;span id=&amp;quot;FoodUnit&amp;quot;&amp;gt;A &#039;&#039;food unit&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a unit of measure applicable to &#039;&#039;food&#039;&#039; (e.g. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;cup&amp;lt;/span&amp;gt;, not parsec)&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Measurement&amp;quot;&amp;gt;A &#039;&#039;measurement&#039;&#039; is an amount of something. Akin to portion.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Nutrition&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Dietary Reference&amp;quot;&amp;gt;A &#039;&#039;dietary reference&#039;&#039; is a set of data (typically daily recommended intake levels of general food components, calories, vitamins, and minerals) that may be used as a comparison with your frenzied feeding habits.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrient&amp;quot;&amp;gt;A &#039;&#039;nutrient&#039;&#039; is a substance (e.g. chemical elements, minerals, vitamins) required by organisms for health. The application can track &#039;&#039;nutrient&#039;&#039; content per &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, &#039;&#039;meal&#039;&#039;, or per a day&#039;s &#039;&#039;meals&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition&amp;quot;&amp;gt;A &#039;&#039;nutrition&#039;&#039; (aka, a nutrition catalog) is a potentially large set of nutrition data (e.g. an amount of calories, minerals, vitamins, macro-nutrients, micro-nutrients) that is applicable for a specific portion of a &#039;&#039;food&#039;&#039;, &#039;&#039;recipe&#039;&#039;, or &#039;&#039;nutrition profile&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Profile&amp;quot;&amp;gt;A &#039;&#039;nutrition profile&#039;&#039; defines food product meta data (IDs, production, components, analysis) for the one, unique &#039;&#039;nutrition&#039;&#039; that it references.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Nutrition Summary&amp;quot;&amp;gt;A &#039;&#039;nutrition summary&#039;&#039; is a summary set of nutrition data (i.e. an amount of calories, fat, cholesterol, sodium, carbohydrates, protein) that is applicable for a &#039;&#039;serving&#039;&#039; or &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Organization&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Keyword&amp;quot;&amp;gt;&#039;&#039;Keywords&#039;&#039; are sets of words assigned into a classification, used to describe other objects, and to support certain user actions.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Tag&amp;quot;&amp;gt;A &#039;&#039;tag&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is a word assigned to another managed object to label it (i.e. to describe something notable about that managed object).&amp;lt;/span&amp;gt;&lt;br /&gt;
## Planning&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Meal&amp;quot;&amp;gt;A &#039;&#039;meal&#039;&#039; is a composed of one or more &#039;&#039;servings&#039;&#039; that has its own &#039;&#039;nutrition summary&#039;&#039; and scheduling information.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Serving&amp;quot;&amp;gt;A &#039;&#039;serving&#039;&#039; is a portion of a &#039;&#039;recipe&#039;&#039;, that has its own &#039;&#039;nutrition summary&#039;&#039; and that is assignable to a &#039;&#039;meal&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Recipe&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Food&amp;quot;&amp;gt;A &#039;&#039;food&#039;&#039; (a &#039;&#039;keyword&#039;&#039;) is an edible plant, animal, or chemical compound that is independent of producer, manufacturer, or packaging. A &#039;&#039;food&#039;&#039; may have one or more &#039;&#039;substitutes&#039;&#039;, where each has it&#039;s own set of &#039;&#039;ingredients&#039;&#039; and may be qualified with attributes or be applicable to a particular cooking style.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Ingedient&amp;quot;&amp;gt;An &#039;&#039;ingredient&#039;&#039; defines a portion of an edible (i.e. a &#039;&#039;food&#039;&#039; or another &#039;&#039;recipe&#039;&#039;) that can have defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Recipe&amp;quot;&amp;gt;A &#039;&#039;recipe&#039;&#039; is a collection of &#039;&#039;ingredients&#039;&#039; and / or other &#039;&#039;recipes&#039;&#039; with preparation instructions with defined characteristics.&amp;lt;/span&amp;gt;&lt;br /&gt;
## Supplemental&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Note&amp;quot;&amp;gt;A &#039;&#039;note&#039;&#039; is a collection of textual points (nested under a parent topic) that can be saved in a table as a variable number of rows and user-definable columns. A topic (which has no textual points) is a parent to any number of other topics or &#039;&#039;notes&#039;&#039;, all arranged in a user-definable hierarchy.&amp;lt;/span&amp;gt;&lt;br /&gt;
### &amp;lt;span id=&amp;quot;Quote&amp;quot;&amp;gt;A &#039;&#039;quote&#039;&#039; capability is provided to display a random, user-definable quote in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&#039;s&amp;lt;/span&amp;gt; status bar (at the bottom) upon application start to inspire.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Transient Objects (TOs) are not explicitly saved and are created as needed:&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar&amp;quot;&amp;gt;The meal-planning &#039;&#039;calendar&#039;&#039; allows &#039;&#039;meals&#039;&#039; to be created and allocated across one or more days per scheduling rules.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Calendar Entry&amp;quot;&amp;gt;A &#039;&#039;calendar entry&#039;&#039; can be a &#039;&#039;meal entry&#039;&#039; or a &#039;&#039;day aggregator entry&#039;&#039;.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Meal Entry&amp;quot;&amp;gt;A &#039;&#039;meal entry&#039;&#039; represents a &#039;&#039;meal&#039;&#039; scheduled on a day or recurring across several, possibly nonconsecutive, days.&amp;lt;/span&amp;gt;&lt;br /&gt;
## &amp;lt;span id=&amp;quot;Day Aggregator Entry&amp;quot;&amp;gt;A read-only &#039;&#039;day aggregator entry&#039;&#039;, automatically defined in the aggregate &#039;&#039;calendar&#039;&#039;, displays the &#039;&#039;nutrition summary&#039;&#039; for &#039;&#039;&#039;all&#039;&#039;&#039; &#039;&#039;meals&#039;&#039; scheduled for that day.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;External Artifacts&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== External Artifacts ====&lt;br /&gt;
&lt;br /&gt;
The application defines and manages the following external artifacts which are located on the host&#039;s file system: directories, files, database.&lt;br /&gt;
&lt;br /&gt;
===== Directories =====&lt;br /&gt;
&lt;br /&gt;
The application automatically creates and requires the following directories to properly function:&lt;br /&gt;
&lt;br /&gt;
# The &#039;CuttingBoard&#039; directory, also referenced as the [[&#039;#ArtifactDirectory&#039;|Artifact Directory]], contains the data that the application operates upon. That data is organized within the following sub-directories:&lt;br /&gt;
#; &#039;&#039;configuration&#039;&#039;&lt;br /&gt;
#: Contains the database configuration file(s) required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;database&#039;&#039;&lt;br /&gt;
#: Contains the database required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;export&#039;&#039;&lt;br /&gt;
#: Contains the XML and PDF data files (e.g. *.xml, *.pdf) exported from the application.&lt;br /&gt;
#; &#039;&#039;help&#039;&#039;&lt;br /&gt;
#: Contains help files required by the application to properly function.&lt;br /&gt;
#; &#039;&#039;import&#039;&#039;&lt;br /&gt;
#: Default directory that contains the XML data files (of the form *.xml) that may be imported into the application.&lt;br /&gt;
#; &#039;&#039;log&#039;&#039;&lt;br /&gt;
#: Directory that contains application log files (e.g. app.log and app-yyyy-mm-dd.log).&lt;br /&gt;
#; &#039;&#039;update&#039;&#039;&lt;br /&gt;
#: Transient installation directory, where the zip file content was extracted to during an update, contains the files required for application execution: a Java jar file, preferences.xml file, and any launch-support scripts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Configuration Files&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Configuration Files =====&lt;br /&gt;
&lt;br /&gt;
While active, the application maintains a &#039;&#039;cuttingboard.lock&#039;&#039; file in the user&#039;s home directory to prohibit a user from launching multiple application instances. Just how many bullets ya need there, Tex?&lt;br /&gt;
&lt;br /&gt;
The application&#039;s configuration file, preferences.xml, is automatically created (located in the directory from where the application was launched), when the application doesn&#039;t find the file already there. The file contains settings that may be subsequently changed either via text editor (when the application is not active) or via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. These settings are categorized as follows:&lt;br /&gt;
&lt;br /&gt;
# Core&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ArtifactDirectory&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies a user-configurable location, where the application&#039;s main data directory resides within which its data is persistently kept.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DatabaseCachePercent&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies how much of the java virtual machine memory space should be used as database cache.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Developer&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter that activates developer mode for, not to put to fine a point on it, developer functionality. Not intended for normal users.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DownloadUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: From whence the application beams new incarnations of itself (but only when directed by the user).&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the level of logging produced during execution. More detailed logging equates to a slower application.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;LogRetention&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the number of days to keep daily log files. Those beyond this expiration are automatically deleted.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Restart&amp;lt;/span&amp;gt;&lt;br /&gt;
#: A parameter required by the application to properly function (and which shouldn&#039;t be mucked with by us muppets).&lt;br /&gt;
# Food Data Central Communication&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcApiKey&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the [[&#039;#USDA%20FDC&#039;|USDA FDC API KEY]] that is used to uniquely identify the user of the FDC service,&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcFoodsUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet food server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;FdcNutritionUrl&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the FDC&#039;s internet nutrition server from which food product data may be retrieved.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConnectionTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) to establish a connection with a remote server.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;SocketTimeout&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time to wait (in seconds) for a response from a remote server.&lt;br /&gt;
# User-Interface&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ConversionNotification&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies whether notification pop-ups occur during nutrition construction that describe the seriousness of any unit conversion issue encountered for the selected food product and what resolutions exist.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Select number representation: Decimal vs Fractional.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies which system of units are used within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;: Native, Metric, or US.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Salutation&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the name that the application will use to ingratiate itself to you.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ServerDirection&amp;lt;/span&amp;gt;&lt;br /&gt;
#: When enabled, allows devops personnel to force certain upgrade behavior during a client&#039;s update (e.g. to force a database regeneration).&lt;br /&gt;
# Meal Calendar Recurrence Limits&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceDaily&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of days the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceMonthly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of months the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceWeekly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of weeks the event may be scheduled to repeat.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;CalendarRecurrenceYearly&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the maximum number of years the event may be scheduled to repeat.&lt;br /&gt;
# Identifies the default recommended dietary intake records that apply to you in the Dietary Reference&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;ActivityLevel&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your physical activity level.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Age&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;AgeUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the time unit used for your age.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Group&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the group that best describes your sex / condition.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Weight&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies your weight.&lt;br /&gt;
#; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;WeightUnit&amp;lt;/span&amp;gt;&lt;br /&gt;
#: Specifies the unit used for your weight.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Media Types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Media Types =====&lt;br /&gt;
&lt;br /&gt;
The following table defines the support for the managed objects given a media type for the current application version. File names are of the form &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Base Filename.extension&amp;lt;/span&amp;gt; where extension is either &amp;amp;quot;xml&amp;amp;quot; or &amp;amp;quot;pdf&amp;amp;quot; as applicable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Managed Object Media Type Support&lt;br /&gt;
|-&lt;br /&gt;
! Base Filename !! Footnotes !! Printer !! XML file Import !! XML file Export !! PDF file Export &lt;br /&gt;
|-&lt;br /&gt;
| Per a group of managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|ConversionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Foods || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|FoodUnits || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|LanguageReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Meals || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Notes || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutrientReference || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Nutrients || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|NutritionProfiles || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Quotes || 2 || n || y || y || n || &lt;br /&gt;
|-&lt;br /&gt;
|Recipes || 2,3 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Tags || 2 || n || y || y || n&lt;br /&gt;
|-&lt;br /&gt;
|Per a single instance of a managed object:&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;meal descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;quot;recipe descriptor&amp;amp;quot; || 1,7 || y || y || y || y&lt;br /&gt;
|-&lt;br /&gt;
|Available templates for these managed objects:&lt;br /&gt;
|-&lt;br /&gt;
|DietaryReferenceTemplate || 4,5 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|MealTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|-&lt;br /&gt;
|RecipeTemplate || 4,6 || n/a || y || n/a || n/a&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
# Available for a single &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; export once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application.&lt;br /&gt;
# Available for XML import or export of a group of those managed objects defined in the application.&lt;br /&gt;
# That is, available once &#039;&#039;meals&#039;&#039; or &#039;&#039;recipes&#039;&#039; are defined in the application :-).&lt;br /&gt;
# These XML-based template files are available in the import directory and may be modified to bulk-XML-import new managed object data. The files not only provide the valid syntax and format that is required for importation, but contain examples of valid sample data.&lt;br /&gt;
# Available for one or more custom population groups and their dietary reference data.&lt;br /&gt;
# It&#039;s suggested that you first create a few &#039;&#039;recipes&#039;&#039; / &#039;&#039;meals&#039;&#039; via the application GUI and export the result to gain familiarity with the value and dependency rules that &#039;&#039;&#039;must&#039;&#039;&#039; be followed to be successful. Otherwise, woe to you.&lt;br /&gt;
# Each &#039;&#039;meal&#039;&#039; or &#039;&#039;recipe&#039;&#039; starts a new page when exported as PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
===== Database =====&lt;br /&gt;
&lt;br /&gt;
The storage mechanism the application uses to persistently save the vast bulk of its data is a database. The database is configured out-of-the-box to not be bound by any sizing constraints. If the disk runs out of free space during usage, data corruption can occur. Freshly installed, the database consumes approximately 10 megabytes. The database property file (which should not be mucked with by mere mortals):&lt;br /&gt;
&lt;br /&gt;
# is located at {ArtifactDirectory}/database/janusgraph/je.properties, and&lt;br /&gt;
# may be edited to customize behavior, per its [https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/EnvironmentConfig.html Configuration] in accordance with its own product documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Command-line&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Command-line Invocation ===&lt;br /&gt;
&lt;br /&gt;
# Command-line invocation may be of the form (on a Windows OS): &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;&amp;quot;%JAVA_HOME%\bin\java&amp;quot; -Djava.util.logging.config.file=%CUTTINGBOARD_SUPPORT%\logging.properties -Dorg.entangledbits.cuttingboard.preferencesFile=%CUTTINGBOARD_SUPPORT%\preferences.xml -jar cuttingboard.jar &amp;gt;&amp;gt;%CUTTINGBOARD_SUPPORT%\output.log 2&amp;gt;&amp;amp;1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Application Panels ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;General Tips&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== General Tips ===&lt;br /&gt;
&lt;br /&gt;
# The application, being nothing more than a mindless mass of entangled bits, uses color-coding in a select few instances to aid in communication with its human overlord as noted in select spots of this magnum opus.&lt;br /&gt;
# When editing an object (e.g. &#039;&#039;recipe&#039;&#039;, &#039;&#039;profile&#039;&#039;, &#039;&#039;meal&#039;&#039;, &#039;&#039;keyword&#039;&#039;, &#039;&#039;nutrition&#039;&#039;) via its panel, the save button turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; upon modification to remind those easily confused that you actually have the ability to save the item when done. Because a panel exit without a save, is ... well, just futile.&lt;br /&gt;
# Almost all combo boxes (i.e. drop-downs) are searchable (when characters are typed into the widget) to allow filtering of the data set when a large number of items are available.&lt;br /&gt;
# User-entered data (via &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panels&amp;lt;/span&amp;gt;, XML file input) is generally allowed to pass into the application unmodified but in the following case, we make an exception (to preserve the Author&#039;s sanity):&lt;br /&gt;
#* A backslash character, &#039;\&#039;, is automatically removed from the text of the following Managed Object properties: abbreviation, alternate, attribute, variety, tag. Within all other properties (e.g. instruction), is it allowed.&lt;br /&gt;
# The backslash character may be used in a comma-delimited query field of a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; to indicate that the subsequent comma is actually part of the string to be searched upon. For instance, for a &#039;&#039;recipe&#039;&#039; search, to define that two strings be used in the search: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Calorie\, Low, Anti-inflammatory&amp;lt;/span&amp;gt;&lt;br /&gt;
# With regard to keyboard navigation within a panel:&lt;br /&gt;
#* The tab key may be used to meander between widgets (e.g. a text field, a drop-down, a table),&lt;br /&gt;
#* Within a panel&#039;s non-trivial widget (e.g. a table), the arrow keys are available for navigation between subcomponents (e.g. table cells).&lt;br /&gt;
# With regard to searchable combo boxes (i.e. drop-downs that allow a text field for filtering):&lt;br /&gt;
#* To enter the text-input mode of a searchable combo box, use these methods:&lt;br /&gt;
#** Perform two slow primary-mouse-button clicks, or&lt;br /&gt;
#** Within a table, arrow-key to the desired combo box (achieve combo box focus) and perform the following (not simultaneous) keystroke sequence: enter, tab, down arrow.&lt;br /&gt;
#** When not within a table, tab to the desired combo box (achieve combo box focus) and perform a down arrow keystroke.&lt;br /&gt;
#* To navigate within the drop-down list of a searchable combo box, use these methods:&lt;br /&gt;
#** You can always use the ctrl-up/ctrl-down arrow keys and the enter key will then select.&lt;br /&gt;
#** If the list is simple and not alphabetized, you can use just the up/down arrow keys and the enter key will select.&lt;br /&gt;
#** In the case of some alphabetized lists that have very similar entries (e.g. &#039;&#039;nutrients&#039;&#039;), if you don&#039;t simultaneously use the control key with an arrow key, you&#039;ll achieve some wondrous auto-magical selection that you may not want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Collection Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Collection Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that show collections of objects that are managed by the application. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; is the main panel of the application and the launch point for all other panels.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;CuttingBoard Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== CuttingBoard Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;recipes&#039;&#039; and &#039;&#039;notes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose descriptor, classifiers, and / or source contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt; supports searches for &#039;&#039;recipes&#039;&#039; whose &#039;&#039;nutrition&#039;&#039; matches user-defined &#039;&#039;nutrient&#039;&#039; amounts.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browser tab&amp;lt;/span&amp;gt; lists all &#039;&#039;recipes&#039;&#039; that may be used / modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt; lists imported &#039;&#039;recipes&#039;&#039; that may be selected and saved, if desired.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt; supports hierarchical display and management of &#039;&#039;notes&#039;&#039;, presumedly related to &#039;&#039;food&#039;&#039;-like musings.&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; at the bottom provides feedback to the user concerning disposition of actions taken. Usually. If it ever turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; with a portion of an exception trace, you should swear (since your last bit of work may not have been saved) and send bags of gold to the Author. Better yet, a support email (see the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;) beginning, &amp;amp;quot;Please fix ...&amp;amp;quot;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;status bar&amp;lt;/span&amp;gt; background is color-coded with respect to message severity as follows: &amp;lt;span&amp;gt;Hello  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;Debug  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;Note  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;Warning  &amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;Error  &amp;lt;/span&amp;gt;&lt;br /&gt;
## You can initiate an update request via the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Help &amp;amp;gt; Check for update menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Tips&lt;br /&gt;
## From any table of recipes, you can primary mouse button double-click to see a summary of the &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited tags to search for those recipes that are labeled with those tags.&lt;br /&gt;
### Enter any number of comma-delimited words / phrases (that are not tags) to search for those recipes that include the word / phrase within either the recipe&#039;s descriptor, description, or source.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;recipe&#039;&#039; has all specified tokens (rather than at least one of the tokens when the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; is not selected, you hockey puck).&lt;br /&gt;
### Any text entered between commas is considered a stand-alone search token. When searching via a &#039;&#039;food&#039;&#039; represented by a space-delimited words (e.g. almond extract), enter those words (without intervening commas).&lt;br /&gt;
### Entered text with no commas is considered a single search token.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search &#039;&#039;nutrition&#039;&#039; tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### For whatever collection of nutrients are of interest, enter a quantity (greater than zero) in accordance with the default unit and right-mouse-click to select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Search for Recipes menu item&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipes that match all of the criteria are listed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Listed recipes are those that have &#039;&#039;nutrition&#039;&#039; defined where the per serving nutrient amount matches or exceeds the specified nutrient amount.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;browse tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### View a summary of some of the more-notable properties of each &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
###* The &#039;&#039;nutrition&#039;&#039; column shows &amp;amp;quot;Y&amp;amp;quot; if a &#039;&#039;recipe&#039;&#039; has &#039;&#039;nutrition&#039;&#039; defined and may have an appended &amp;amp;quot;o&amp;amp;quot; if that &#039;&#039;nutrition&#039;&#039; is outdated. Changes made to a &#039;&#039;recipe&#039;s&#039;&#039; properties (e.g. yield, or ingredient count, amount, or edible) since the last &#039;&#039;nutrition&#039;&#039; construction result in this outdated state. It&#039;s an indication that the user may wish to reconstruct and save a new &#039;&#039;nutrition&#039;&#039; data set per the latest &#039;&#039;recipe&#039;&#039; property values.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;import tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Select any or all of the &#039;&#039;recipes&#039; listed in the table and permanently save them in the database via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;save imported button&amp;lt;/span&amp;gt;. Those not chosen are not worthy and will be forgotten, like some bad, fever-induced dream, when the application is closed.&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;notes tab&amp;lt;/span&amp;gt;, anywhere in the hierarchy under the &#039;&#039;Library&#039;&#039; topic, you can:&lt;br /&gt;
### Create a &#039;&#039;note&#039;&#039; with a unique descriptor and add salient points to a variable row table with any number of user-defined columns. There are three flavors of &#039;&#039;notes&#039;&#039;:&lt;br /&gt;
###* An unsourced &#039;&#039;note&#039;&#039; has a paper with pencil icon with no attribution.&lt;br /&gt;
###* A sourced &#039;&#039;note&#039;&#039; has a magnifying glass icon indicating that a source was added (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Add Source menu item&amp;lt;/span&amp;gt;). A view source action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; View Source menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) if the attribution was a URL (vs. a Wikipedia page for non-URL text).&lt;br /&gt;
###* Create a &#039;&#039;note&#039;&#039; with a unique descriptor (having no underlying table of data), and use it as a topic (i.e. folder) under which you can organize other topics or &#039;&#039;notes&#039;&#039;. A topic has a folder with pencil icon.&lt;br /&gt;
### Move the little buggers around the hierarchy as you see fit.&lt;br /&gt;
### The &#039;&#039;Library&#039;&#039; and &#039;&#039;Orphan&#039;&#039; topics cannot be removed and are required by the application for proper function.&lt;br /&gt;
### Imported &#039;&#039;notes&#039;&#039; that the application can&#039;t find / define a parent for, are located under the &#039;&#039;Orphan&#039;&#039; topic. The kind user will find these cute puppies a proper home.&lt;br /&gt;
### To delete a &#039;&#039;note&#039;s&#039;&#039; row or column, select a cell in that row or column, right-mouse click to display the context menu, and select the desired operation. If the selected cell&#039;s text is a properly formatted URL, a follow-link action (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Follow Hyperlink menu item&amp;lt;/span&amp;gt;) will launch the relevant host application (e.g. web page) with that text.&lt;br /&gt;
### The title of a new or changed &#039;&#039;note&#039;&#039; will remain &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until the note is saved (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-click &amp;amp;gt; Save menu item&amp;lt;/span&amp;gt;). For the &#039;&#039;notes&#039;&#039; functionality, the application will currently throw any unsaved changes out the airlock when the user closes the application. There&#039;s no &amp;amp;quot;unsaved changes&amp;amp;quot; notification (unlike the other managed objects). Because, in space, no one can hear you scream.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Calendar Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Calendar Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## The &#039;&#039;meal calendar&#039;&#039; displays and allows time-management of &#039;&#039;meal&#039;&#039; entries to support meal-planning. A &#039;&#039;meal&#039;&#039; entry presents its &#039;&#039;nutrition&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;aggregator calendar&#039;&#039; provides read-only display of &#039;&#039;day aggregator entries&#039;&#039;. Each day&#039;s aggregator entry presents the collective &#039;&#039;nutrition&#039;&#039; for that day&#039;s &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
## A &#039;&#039;nutrition summary&#039;&#039; is displayed in the calendar entry whereas all available &#039;&#039;nutrition&#039;&#039; is available via its context menu.&lt;br /&gt;
## The &#039;&#039;agenda view&#039;&#039; provides a look-ahead and look-behind list of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## To add a &#039;&#039;meal&#039;&#039;, primary mouse button double-click in the &#039;&#039;meal calendar&#039;&#039; at the desired start time.&lt;br /&gt;
## To remove a &#039;&#039;meal&#039;&#039;, select it and depress the delete key.&lt;br /&gt;
## By right-clicking on a &#039;&#039;meal&#039;&#039;, you can select the following options:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; displays a read-only summary view of the &amp;lt;i&amp;gt;meal&#039;s nutrition&amp;lt;/i&amp;gt;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View servings&amp;lt;/span&amp;gt; displays a read-only summary view of the &amp;lt;i&amp;gt;meal&#039;s servings&amp;lt;/i&amp;gt;.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit schedule&amp;lt;/span&amp;gt; displays a scheduling edit view where &amp;lt;i&amp;gt;meal&amp;lt;/i&amp;gt; scheduling data may be modified (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;starting date and / or time, location&amp;lt;/span&amp;gt;). A &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; can also be applied or modified. The rule defines multiple calendar entries that repeat on specified days across various time spans.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Edit meal&amp;lt;/span&amp;gt; launches the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt; to allow its &amp;lt;i&amp;gt;serving&amp;lt;/i&amp;gt; data to modified.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Print meal&amp;lt;/span&amp;gt; prints the meal. Doh!&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Delete Meal&amp;lt;/span&amp;gt; permanently removes the &amp;lt;i&amp;gt;meal&amp;lt;/i&amp;gt; and the day&#039;s aggregate &amp;lt;i&amp;gt;nutrition&amp;lt;/i&amp;gt; is automatically updated as a result.&lt;br /&gt;
## Only the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View nutrition&amp;lt;/span&amp;gt; option is available for an aggregator entry. It displays a read-only summary view of the &amp;lt;i&amp;gt;nutrition&amp;lt;/i&amp;gt; for that day&#039;s set of &amp;lt;i&amp;gt;meals&amp;lt;/i&amp;gt;.&lt;br /&gt;
## To change the look-ahead / look-behind time span for the &#039;&#039;agenda view&#039;&#039;, right-click and follow your instincts.&lt;br /&gt;
# Controls&lt;br /&gt;
## A &#039;&#039;meal&#039;&#039; entry created at the &#039;&#039;meal calendar&#039;&#039; is also displayed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; where it can have its name changed and &#039;&#039;servings&#039;&#039; added.&lt;br /&gt;
## If you&#039;re easily amused, launch both the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar&amp;lt;/span&amp;gt; and the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panels&amp;lt;/span&amp;gt; for a given &#039;&#039;meal&#039;&#039; and observe how changes to the &#039;&#039;meal&#039;s servings&#039;&#039; and &#039;&#039;nutrition&#039;&#039; are reflected in the &#039;&#039;nutrition summary&#039;&#039; of its corresponding calendar entry even before the data is saved.  Note that all other &#039;&#039;serving / nutrition&#039;&#039; data in the calendar that is based off the &#039;&#039;meal&#039;&#039; always reflects what is actually saved in the database.&lt;br /&gt;
## &#039;&#039;meal&#039;&#039; entries are viewable for a given day, week, month, or year time period.&lt;br /&gt;
## When a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt; is enacted for a &#039;&#039;meal&#039;&#039;, the calendar&#039;s day view (and only its day view) will display each entry&#039;s &#039;&#039;meal&#039;&#039; name with an instance number (e.g. #1, #2, ...) appended. Because all snowflakes are unique.&lt;br /&gt;
## Concerning calendar entries:&lt;br /&gt;
### The application only saves entry data from the &#039;&#039;meal calendar&#039;&#039;.&lt;br /&gt;
### &#039;&#039;Aggregator calendar&#039;&#039; entries are auto-magically created when at least one &#039;&#039;meal&#039;&#039; entry exists for that day.&lt;br /&gt;
# Tips&lt;br /&gt;
## Scheduling&lt;br /&gt;
### The non-custom selections (&amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;right-mouse-click &amp;amp;gt; Edit schedule &amp;amp;gt; Repeat combo box&amp;lt;/span&amp;gt;) have, by default, the following number of repetitions: Every Day (7), Every Week (52), Every Month (12), Every Year (10).&lt;br /&gt;
### When crafting a custom &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;, don&#039;t forget to specify some form of time span termination (e.g. an &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;end date, maximum number of occurrences&amp;lt;/span&amp;gt;). If not specified, the application automatically enforces its own maximum limit for number of repetitions as defined in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. Otherwise, you&#039;d regret it. Mwahahahaha.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foods Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Foods Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new, user-defined &#039;&#039;foods&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food&#039;&#039; to edit its characteristics.&lt;br /&gt;
## Secondary mouse button single-click an existing &#039;&#039;food&#039;&#039; and choose the construct &#039;&#039;nutrition&#039;&#039; option to search for and apply a particular &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; to the &#039;&#039;food&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Saving &#039;&#039;nutrition&#039;&#039; for a particular &#039;&#039;food&#039;&#039; allows that &#039;&#039;nutrition&#039;&#039; to be selectable when building a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Substitutes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Substitutes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of all &#039;&#039;substitutes&#039;&#039; that exist for all &#039;&#039;foods&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;substitute&#039;&#039; for a new &#039;&#039;food&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click an existing &#039;&#039;food substitute&#039;&#039; to edit its characteristics.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Keep your cake moist by eating it in one sitting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tags Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tags Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of both pre-defined and any new user-defined &#039;&#039;tags&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; to define a new &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## Primary mouse button double-click to edit the characteristics of a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click and select an option to add, edit, or delete a particular &#039;&#039;tag&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;foods panel&amp;lt;/span&amp;gt; for &#039;&#039;foods&#039;&#039; management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Tree Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Tree Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays all &#039;&#039;nutrients&#039;&#039; or &#039;&#039;food units&#039;&#039; as a hierarchical tree where the selected item&#039;s data is presented via table.&lt;br /&gt;
# Actions&lt;br /&gt;
## Define a new &#039;&#039;keyword&#039;&#039; via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Search for a case-sensitive word or fragment via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Open or close the entire tree hierarchy via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;expand / collapse radio button&amp;lt;/span&amp;gt;.&lt;br /&gt;
# Controls&lt;br /&gt;
## A primary mouse button double-click will open / close the selected branch.&lt;br /&gt;
# Tips&lt;br /&gt;
## If no one comes from the future to stop you from doing it, then how bad of a decision can it really be?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meals Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meals Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports searches for any &#039;&#039;meal&#039;&#039; whose descriptor contain the specified tags and / or whose start date falls between any specified start / end dates(s).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal tab&amp;lt;/span&amp;gt; lists all &#039;&#039;meals&#039;&#039; that are available.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
## Secondary mouse button single-click to access a context menu providing per &#039;&#039;meal&#039;&#039; actions.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
### Select the match all specified words option to require that a &#039;&#039;meal&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
## Concerning a &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;recurrence rule&amp;lt;/span&amp;gt;:&lt;br /&gt;
### They are read-only at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meals panel&amp;lt;/span&amp;gt; and are not changeable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### They may only be changed at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;calendar panel&amp;lt;/span&amp;gt; (which is used for meal-planning).&lt;br /&gt;
### The initial value for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;start date&amp;lt;/span&amp;gt; is the time of &#039;&#039;meal&#039;&#039; creation allowing for quick access to the entry at the meal-planning calendar (from whence it may be changed).&lt;br /&gt;
## The &#039;&#039;meal&#039;s&#039;&#039; displayed &#039;&#039;nutrition&#039;&#039; is read-only and remains zero-valued until &#039;&#039;servings&#039;&#039; are added with assigned &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portions&amp;lt;/span&amp;gt; and &#039;&#039;recipes&#039;&#039; that have their own &#039;&#039;nutrition&#039;&#039; defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Profiles Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Profiles Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, search, and management of user-defined &#039;&#039;conversion profiles&#039;&#039; and &#039;&#039;nutrition profiles&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt; supports lookup of profiles of any type whose descriptor contain the specified tags.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;conversion tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;conversion profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition tab&amp;lt;/span&amp;gt; lists all available &#039;&#039;nutrition profiles&#039;&#039; that may be applied or modified.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;shopping tab&amp;lt;/span&amp;gt; will, one day, whisk into existence in a bang reminiscent of the big one.&lt;br /&gt;
## Primary mouse button double-click to modify the characteristics of a particular &#039;&#039;profile&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## From the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;search tab&amp;lt;/span&amp;gt;, you can:&lt;br /&gt;
### Enter any number of comma-delimited words to search for a set of &#039;&#039;profiles&#039;&#039;.&lt;br /&gt;
### Select the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;match all option&amp;lt;/span&amp;gt; to require that a &#039;&#039;profile&#039;&#039; must match all specified words (rather than just any combination of the words when not selected).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Quotes Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Quotes Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display and management of any user-defined &#039;&#039;quotes&#039;&#039;&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add menu item&amp;lt;/span&amp;gt;, or a well-placed primary mouse button double-click will add a placeholder row at the beginning of the unsorted table to support the new &#039;&#039;quote&#039;s&#039;&#039; data.&lt;br /&gt;
## There can be only one placeholder row (identified by the quip, &amp;amp;quot;Please enter a quote ...&amp;amp;quot;) defined at a time. Once the quip portion of the &#039;&#039;quote&#039;&#039; is uniquely defined, you may add another placeholder.&lt;br /&gt;
## When a row is selected, a single-click places a table cell into edit mode to support a change. When the cell is exited, the &#039;&#039;quote&#039;&#039; is automatically saved.&lt;br /&gt;
## A delete permanently removes the selected &#039;&#039;quote&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## No color change hints for edits are provided since updated &#039;&#039;quote&#039;&#039; fields are automatically saved.&lt;br /&gt;
## A child of five could understand this. Send someone to fetch a child of five -- Groucho Marx.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Editor Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Editor Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to edit an object managed by the application. &#039;&#039;Notes&#039;&#039; and &#039;&#039;quotes&#039;&#039; may only be edited in-place via their dedicated tabs in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of conversion data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used to convert units used by &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add equivalent portions (with dissimilar units), with a unique descriptor, to define accurate conversions for the specified &#039;&#039;food&#039;&#039; type or product.&lt;br /&gt;
## Copy the equivalent portions from another &#039;&#039;conversion profile&#039;&#039; and update as desired.&lt;br /&gt;
## Attribute your conversion data to its source if your nicking it from some other world.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;conversion profile&#039;&#039; must:&lt;br /&gt;
### be unique, and&lt;br /&gt;
### exactly match a &#039;&#039;food&#039;&#039; type or product descriptor that is used in recipes.&lt;br /&gt;
## To remove, highlight one or more portions and depress the delete key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Keyword Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Keyword Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of any single &#039;&#039;CuttingBoard&#039;&#039; &#039;&#039;keyword&#039;&#039;.  The type of &#039;&#039;keyword&#039;&#039; (&#039;&#039;food, food unit, nutrient,&#039;&#039; or &#039;&#039;tag&#039;&#039;) is identified by the title of the panel.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add, edit the characteristics of, or delete a &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
## The characteristics defined and available for change are a function of the classification (type) of &#039;&#039;keyword&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## When modifying a &#039;&#039;food&#039;&#039;:&lt;br /&gt;
### You can add nutrition data which can later be used as a source during construction of nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
### You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
## &#039;&#039;Food units&#039;&#039; and &#039;&#039;nutrients&#039;&#039; are partitioned as either user-defined or system-defined with the following limitations:&lt;br /&gt;
### System-defined keywords are not deletable (given their mission critical nature)&lt;br /&gt;
### Properties that cannot be modified have their supporting GUI widgets (e.g. combo-box, text field) disabled.&lt;br /&gt;
### Once a &#039;&#039;food unit&#039;&#039; is created, whether user- or system-defined, its descriptor and derivation properties cannot be modified. To change a property of a user-defined &#039;&#039;food unit&#039;&#039;, delete and re-create the &#039;&#039;food unit&#039;&#039; with the desired property values.&lt;br /&gt;
### Specify derivation values only when the new &#039;&#039;food unit&#039;&#039; should be based upon another, pre-existing &#039;&#039;food unit&#039;&#039; (e.g. a cup is 1/16 of a gallon). For stand-alone &#039;&#039;food units&#039;&#039; (e.g. loaf, stalk, rack), no derivation should be specified.&lt;br /&gt;
### Pay particular attention to specifying the correct derivation values at creation (i.e. before using the unit as a amount or portion in any managed object), since managed objects use a copy of the &#039;&#039;food unit&#039;&#039; (not a reference). Any change of derivation value by the user (via a delete and re-create action) doesn&#039;t change the continued usage of the old version of the &#039;&#039;food unit&#039;&#039; previously assigned in managed objects (e.g. &#039;&#039;recipes, ingredients, conversion profiles, nutrition&#039;&#039;) and requires the user to re-assign the new unit to the affected managed objects (and possibly recalculate any downstream nutrition).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Meal Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Meal Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;meal&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add a &#039;&#039;serving&#039;&#039;, with a meal-unique descriptor for a specified &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; of a selected &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Copy the &#039;&#039;serving&#039;&#039; entries from another &#039;&#039;meal&#039;&#039; and update any &#039;&#039;serving&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt;, &#039;&#039;recipe&#039;&#039;, &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;portion&amp;lt;/span&amp;gt; as desired.&lt;br /&gt;
# Controls&lt;br /&gt;
## Via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;copy meal servings&amp;lt;/span&amp;gt; combo box, you can copy another &#039;&#039;meal&#039;s&#039;&#039; set of &#039;&#039;servings&#039;&#039; into the &#039;&#039;meal&#039;&#039; you&#039;re currently modifying and update as desired.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;meal&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; is defaulted to a unique name of the form &#039;Meal @ date time&#039; and may be changed to another, more descriptive, unique name.&lt;br /&gt;
## As each &#039;&#039;serving&#039;&#039; (of a &#039;&#039;recipe&#039;&#039; that has defined &#039;&#039;nutrition&#039;&#039;) is added,&lt;br /&gt;
### A &#039;&#039;nutrition summary&#039;&#039; is displayed for the &#039;&#039;serving&#039;s portion&#039;&#039;. Change the &#039;&#039;portion&#039;&#039;, and you change the &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
### The &#039;&#039;meal&#039;s nutrition summary&#039;&#039; at the top of the panel always reflects the total summed over the &#039;&#039;nutrition&#039;&#039; data of all assigned &#039;&#039;servings&#039;&#039;.&lt;br /&gt;
## The &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039; &#039;&#039;nutrition&#039;&#039; data columns are read-only. They can only be modified by specifying a &#039;&#039;serving&#039;s portion&#039;&#039; and / or selecting a &#039;&#039;recipe&#039;&#039; (that should have &#039;&#039;nutrition&#039;&#039; defined).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Profile Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Profile Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Allows definition of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; type or product that is saved as a named profile and may be used as a source to compile &#039;&#039;nutrition&#039;&#039; data for &#039;&#039;recipes&#039;&#039; and &#039;&#039;meals&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Add at least one portion (or more with dissimilar units), with a unique descriptor, to define how much of a &#039;&#039;food&#039;&#039; type or product is required to achieve the specified &#039;&#039;nutrition&#039;&#039; values.&lt;br /&gt;
## Add a &#039;&#039;nutrient&#039;&#039; entry and update the quantity for the default unit.&lt;br /&gt;
## Copy the &#039;&#039;nutrient&#039;&#039; entries from another &#039;&#039;nutrition profile&#039;&#039; and update the quantities for the default unit.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## The &#039;&#039;descriptor&#039;&#039; of a &#039;&#039;nutrition profile&#039;&#039; should be unique to be available and easily choosable at the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; when compiling nutrition data for a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may copy the &#039;&#039;nutrient&#039;&#039; entries from multiple &#039;&#039;nutrition profiles&#039;&#039; as long as no &#039;&#039;nutrient&#039;&#039; is duplicated across any of those profiles. When a duplicate is detected, none of the &#039;&#039;nutrient&#039;&#039; entries for the offending profile are copied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides definition and management of a &#039;&#039;recipe&#039;&#039;. Doh!&lt;br /&gt;
# Actions&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; supports definition and updates for the characteristics and classifications of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients tab&amp;lt;/span&amp;gt; lists and supports definition and updates for &#039;&#039;recipe&#039;&#039; ingredients.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;directions tab&amp;lt;/span&amp;gt; supports definition and updates for instructions, modifications, and notes for the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card button&amp;lt;/span&amp;gt; to peruse a summary of the &#039;&#039;recipe&#039;&#039; data you have saved.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts button&amp;lt;/span&amp;gt; to peruse, wait for it ..., the nutrition facts that you&#039;ve previously retrieved and saved for your &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Controls&lt;br /&gt;
## Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;&#039;&#039;conversion profile&#039;&#039; menu item&amp;lt;/span&amp;gt; to create a new or edit the &#039;&#039;recipe&#039;s&#039;&#039; currently-assigned &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Tips&lt;br /&gt;
## A &#039;&#039;recipe&#039;&#039; must have a least a title, one or more &#039;&#039;ingredients&#039;&#039;, and non-empty instructions to be saved. Otherwise, whaddya really got there, Abraham? Furthermore, the following rules apply:&lt;br /&gt;
### If the serving size unit is &#039;Serving&#039;, then the serving size quantity must be &#039;1&#039;,&lt;br /&gt;
### If the yield and serving size units are incompatible, a conversion profile must be selected that defines how the conversion can be calculated between the units. A bit critical when constructed &#039;&#039;nutrition&#039;&#039;, defined for the &#039;&#039;recipe&#039;&#039; as a whole, has to be factored for meal portions and serving sizes.&lt;br /&gt;
## The more tags you select in the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;Description &amp;amp;gt; Classy&amp;lt;/span&amp;gt; section of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt;, the more searchable the &#039;&#039;recipe&#039;&#039; is.&lt;br /&gt;
## Within the &#039;&#039;ingredient&#039;&#039; textbox, one may specify a &#039;&#039;recipe&#039;&#039; as an &#039;&#039;ingredient&#039;&#039; via the following form: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;quantity recipe descriptor&amp;lt;/span&amp;gt;. Note the keyword, &amp;amp;quot;recipe&amp;amp;quot;, must be used. Example: 0.5 recipe Mom&#039;s Flambéd Okra.&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;custom combo box&amp;lt;/span&amp;gt; allows you to define unique tag values (I see Ritchie, and Jimmy, and Janis, ...) to categorize and search recipes in accordance with any misguided personal convention you may adhere to.&lt;br /&gt;
## You can attribute your saved &#039;&#039;recipe&#039;&#039; to its source (e.g. originator&#039;s name, a business), or add any relevant reference link (as a URL) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;description tab&amp;lt;/span&amp;gt; reference section. A reference link can be launched directly from the tool for convenience given you already have the supporting application setup on your host (e.g. image viewer, web browser). Examples: &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;http://www.example.com&amp;lt;/span&amp;gt; (for a web site) or &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;file://C:/path/imageFilename&amp;lt;/span&amp;gt; (for an image on the host&#039;s file system). If you&#039;re not the attributing type: Bad dog, no biscuit!&lt;br /&gt;
## For you ingenious types, you could cut and paste a whole slew of ingredient lines from your source material and paste the lot into the add textbox to have it auto-processed. You may still have to depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;add button&amp;lt;/span&amp;gt; for the last line (if it doesn&#039;t have a return character at the end).&lt;br /&gt;
## Once an &#039;&#039;ingredient&#039;&#039; has been entered into the table, you can futz with its data in the table cells. This, since the Author does not yet have Skynet on contract to properly parse all human babble into its proper place in the universe. But soon. Very soon.&lt;br /&gt;
## If a compound ingredient unit didn&#039;t properly parse, then perhaps the compound unit needs to be defined first via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;keyword panel&amp;lt;/span&amp;gt; (or it was just poorly formed upon entry). Examples of proper form for entering compound units are:&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fluid ounce bottle vodka&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 12 fl oz bottle rum&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle,12 fluid ounce whiskey&amp;lt;/span&amp;gt;&lt;br /&gt;
##* &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;1 bottle, 12 fl oz tequila&amp;lt;/span&amp;gt;&lt;br /&gt;
##* Are ya starting to see a pattern here?&lt;br /&gt;
##* In contrast, an example of a simple ingredient unit (i.e. not compound) is of the form:&lt;br /&gt;
##** &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;3 fluid ounces gin&amp;lt;/span&amp;gt;&lt;br /&gt;
## &#039;&#039;Ingredients&#039;&#039; entered with the form, &amp;amp;quot;1 egg&amp;amp;quot;, where the unit is also the name of the food, results in that name used for both the &#039;&#039;food&#039;&#039; and the unit in the &#039;&#039;ingredient&#039;&#039; table row. This is normal. Do not attempt to adjust the picture. We are in control.&lt;br /&gt;
## If a &#039;&#039;recipe&#039;&#039; that&#039;s used in a &#039;&#039;serving&#039;s&#039;&#039; portion of a &#039;&#039;meal&#039;&#039; has its yield or &#039;&#039;nutrition&#039;&#039; data changed, the &#039;&#039;meal&#039;s nutrition&#039;&#039; data is also, automatically, updated. Be sure to use compatible unit names between the &#039;&#039;recipe&#039;s&#039;&#039; yield and any &#039;&#039;serving&#039;&#039; portions that reference the &#039;&#039;recipe&#039;&#039;; otherwise the &#039;&#039;serving&#039;s nutrition&#039;&#039; values all go to zero.&lt;br /&gt;
## If there&#039;s a change in a &#039;&#039;recipe&#039;s&#039;&#039; yield or &#039;&#039;ingredient&#039;&#039; data (e.g. amount, edible, total count), the &#039;&#039;nutrition&#039;&#039; data previously constructed is very probably out-of-date and should be reconstructed to again be accurate for the &#039;&#039;recipe&#039;&#039;. This is decidedly a manual process that must be performed by the user to maintain accurate &#039;&#039;nutrition&#039;&#039; for that &#039;&#039;recipe&#039;&#039;. The &#039;&#039;meal&#039;&#039; logic will continue to use the &#039;&#039;nutrition&#039;&#039; data whether it&#039;s out-of-date or not.&lt;br /&gt;
## After a &#039;&#039;recipe&#039;&#039; is saved, you can return to the main application panel (i.e. the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt;), select the recipe, and via either the menu item or the context menu option, construct and save &#039;&#039;nutrition&#039;&#039; for the &#039;&#039;recipe&#039;&#039;. You can replace a &#039;&#039;recipe&#039;s nutrition&#039;&#039; as many times as desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Summary Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Summary Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view summary data of an object that is managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Recipe Card Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Recipe Card Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides an, at-a-glance, read-only summary of the &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## The yield may be changed to linearly scale the ingredient amounts accordingly when you&#039;re lovingly envisioning a quadruple batch of brownies. If &#039;&#039;nutrition&#039;&#039; has been constructed, a summary is displayed that&#039;s also adjusted as a function of the recipe yield (so you get to see the caloric price of that batch of brownies).&lt;br /&gt;
# Controls&lt;br /&gt;
## Captain, the engines cannae take much more.&lt;br /&gt;
# Tips&lt;br /&gt;
## Not all things in this world scale linearly.&lt;br /&gt;
## You can always add a link to an image of your creation (perhaps on your host&#039;s file system) that would be clickable via this panel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Facts Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Facts Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data (on a per &#039;&#039;serving&#039;&#039; basis) for the &#039;&#039;recipe&#039;&#039;. For each nutrient, both the absolute amount and the percent daily value are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
## When incompatible units exist for the &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; and the &#039;&#039;recipe&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; (the servings per recipe line), the amount displayed for &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;serving size&amp;lt;/span&amp;gt; turns &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; to indicate that an unreliable guess was made with respect to how many servings are in the &#039;&#039;recipe&#039;&#039;. This is a warning that the nutrient amounts provided are probably wrong. To correct this condition, make sure a &#039;&#039;conversion profile&#039;&#039; is assigned to the &#039;&#039;recipe&#039;&#039; that defines the desired ratio between the two units to ensure an accurate calculation.&lt;br /&gt;
# Tips&lt;br /&gt;
## Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## If you don&#039;t wish to see zero-valued data, select the &#039;&#039;recipe&#039;&#039; then the construct nutrition option to build and save a &#039;&#039;nutrition&#039;&#039; data set based upon the &#039;&#039;recipe ingredients&#039;&#039;.&lt;br /&gt;
## The calories value displayed represents the sum of the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (Atwater Specific)&amp;lt;/span&amp;gt; entry values (from the &#039;&#039;nutrients&#039;&#039; section) as summed over all &#039;&#039;recipe ingredients&#039;&#039; per &#039;&#039;serving&#039;&#039; size based upon the assumption that the individual &#039;&#039;nutrient&#039;&#039; data source only supplies one or the other on a per &#039;&#039;food&#039;&#039; product (i.e. &#039;&#039;recipe ingredient&#039;&#039;) basis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Tally Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Tally Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
##Available from the calendar&#039;s week-day and month views, provides a read-only view of the &#039;&#039;nutrition&#039;&#039; data aggregated over several &#039;&#039;meals&#039;&#039; (possibly averaged over several days) on a per day basis. For each &#039;&#039;nutrient&#039;&#039;, both the absolute amount and the percent daily value (when it exists) are provided.&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
##Context menu options applicable to one or more &#039;&#039;meal&#039;&#039; entries in the week-day and month views of the calendar are:&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of more than one calendar entry on a single day produces an aggregated &#039;&#039;nutrition&#039;&#039; data of just those entries for that day.&lt;br /&gt;
####When used for a selection of an aggregate &#039;&#039;meal&#039;&#039; implies selection of all &#039;&#039;meals&#039;&#039; for that day.&lt;br /&gt;
####When used for a selection of more than one calendar entry across multiple days produces an aggregated &#039;&#039;nutrition&#039;&#039; data that is averaged across that number of days.&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that week&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in the week (from Sunday through Saturday).&lt;br /&gt;
###&amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;View average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;&lt;br /&gt;
####When used for a selection of any one or more calendar entries produces aggregated &#039;&#039;nutrition&#039;&#039; data for that month&#039;s &#039;&#039;meals&#039;&#039; that is averaged by the number of days in that month.&lt;br /&gt;
##The following warnings may be presented within the panel:&lt;br /&gt;
###At the top-left section of the panel, a red &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt; may be presented when at least one included &#039;&#039;meal&#039;s&#039;&#039; serving is empty (i.e. has no &#039;&#039;recipe&#039;&#039;, or has an amount with a zero quantity or unit that is incompatible with the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt;)&lt;br /&gt;
##Numbers in the percent daily value column are based upon the DRI data as published by the US government. The applicable DRI data is selected per the user&#039;s default population segment (e.g. gender, age, activity level) as noted in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt;. The user&#039;s default population segment is configurable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
##A question mark, &amp;quot;?&amp;quot;, that precedes a &#039;&#039;nutrient&#039;s&#039;&#039; amount indicates an incomplete sum.  That is, at least one of the included &#039;&#039;meal servings&#039;&#039; didn&#039;t have the &#039;&#039;nutrient&#039;&#039; defined in its &#039;&#039;nutrition&#039;&#039; data where that &#039;&#039;nutrient&#039;&#039; should be pertinent to any set of &#039;&#039;nutrition&#039;&#039; data.  Only &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;calories&amp;lt;/span&amp;gt; falls into this category at this time; the other &#039;&#039;nutrient&#039;s&#039;&#039; may simply not be present in a &#039;&#039;serving&#039;&#039; and so are not listed.&lt;br /&gt;
# Tips    &lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for selected&amp;lt;/span&amp;gt;:&lt;br /&gt;
###The selected meal entry set must be homogeneous (i.e. either all aggregate entries or all meal entries),&lt;br /&gt;
###If no entries are explicitly selected, then the entry used is that entry over which the mouse was hovering upon the secondary button-click.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for week&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple weeks is used to determine the week used.&lt;br /&gt;
##For the option, &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;view average &#039;&#039;nutrition&#039;&#039; for month&amp;lt;/span&amp;gt;:&lt;br /&gt;
###Only the last selected entry of multiple selected entries that span multiple months is used to determine the month used.&lt;br /&gt;
##For the incomplete sum warning:&lt;br /&gt;
###One may add the &amp;lt;span class=&amp;quot;code&amp;quot;&amp;gt;Energy (KCAL)&amp;lt;/span&amp;gt; nutrient with a value of &amp;quot;0&amp;quot; to the nutrition of a &amp;lt;i&amp;gt;food&amp;lt;/i&amp;gt; or &amp;lt;i&amp;gt;nutrition profile&amp;lt;/i&amp;gt; to suppress the warning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Definition Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Nutrition Definition Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view and to define nutritional data for those applicable objects that are managed by the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Dietary Reference Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Dietary Reference Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays &#039;&#039;dietary reference&#039;&#039; data sourced from the US government (as referenced from the source URL(s) at the bottom of the panel). Daily recommended intake levels (DRIs) of major food components (macro-nutrients), calories, minerals, vitamins, and select amino acids are displayed per population group within the respective nutrient group&#039;s tab. The daily values (DVs) shown may either be a Recommended Dietary Allowance (RDA), or, if the RDA is not established, an Adequate Intake (AI). If defined, Lower Limits (LLs) and Tolerable Upper Limits (ULs) are shown.&lt;br /&gt;
# Actions&lt;br /&gt;
## The data in the row identified as &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;default&amp;lt;/span&amp;gt; (i.e. the user&#039;s population) is used by the application when calculating the daily value percentages that are presented in various nutrition views.&lt;br /&gt;
# Controls&lt;br /&gt;
## To delete a population group (and its daily values across all four tabs), select a row and depress the delete key. The application&#039;s original groups and the group currently labelled as the user&#039;s default (defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;) are not deleteable.&lt;br /&gt;
## One can update any of the daily values by just re-importing the XML file with the desired values (unlike the other managed objects which require the original object to first be deleted from the application).&lt;br /&gt;
##A nutrient&#039;s daily value data for a given population (and for a given weight for amino acids) is specified via the following formats, where DV represents a daily value that is either a RDA or an AI:&lt;br /&gt;
;&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;&lt;br /&gt;
:Only the daily value is defined / available. The daily value is always &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt;.&lt;br /&gt;
;LL,&amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;DV&amp;lt;/span&amp;gt;,UL&lt;br /&gt;
:All three numbers are defined.&lt;br /&gt;
;LL-UL&lt;br /&gt;
:Only a range of daily values, as defined by a lower and upper limit, is available (no single daily value is applicable).&lt;br /&gt;
;&amp;amp;gt;LL or &amp;amp;lt;UL&lt;br /&gt;
:Only one limit is available implying that a reasonable daily value is either greater than the lower limit or less than the upper limit.&lt;br /&gt;
# Tips&lt;br /&gt;
## The default population row is identified by the default tag in the population column of each tab.&lt;br /&gt;
## Rather than accepting the application&#039;s default population, you should specify your group (Male, Female, ...), age, and physical activity level via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; to identify the population to which you belong.&lt;br /&gt;
## You may update and import the dietary reference template XML file with one or more custom population groups and their corresponding dietary reference nutrient data values. The group value can be any name as long as it is unique WRT the other group values in the application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Food Query Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Food Query Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Used to obtain and apply &#039;&#039;nutrition&#039;&#039; data for a particular &#039;&#039;food&#039;&#039; (whether standalone or as a series of &#039;&#039;recipe ingredients&#039;&#039;). The &#039;&#039;nutrition&#039;&#039; data can be available via three options (the first two described are available via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection):&lt;br /&gt;
### A product listing can be the result of a database query to an internet site (e.g. FDC) that allows the user to select the best fit per need,&lt;br /&gt;
### A list of &#039;&#039;NutritionProfile&#039;s&#039;&#039;, that allows the user to select from any pre-defined, locally-hosted &#039;&#039;nutrition&#039;&#039; data, or&lt;br /&gt;
### If the &#039;&#039;food&#039;&#039; has its own &#039;&#039;nutrition&#039;&#039; data defined, a use-nutrition button is displayed that allows the user to apply the &#039;&#039;food&#039;s&#039;&#039; default &#039;&#039;nutrition&#039;&#039; (in lieu of any listed item).&lt;br /&gt;
## When either a &#039;&#039;food&#039;&#039; product from a list or the &#039;&#039;food&#039;s&#039;&#039; own &#039;&#039;nutrition&#039;&#039; is selected, that &#039;&#039;nutrition&#039;&#039; data is added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Compiled / constructed &#039;&#039;nutrition&#039;&#039; values may be displayed for:&lt;br /&gt;
### A &#039;&#039;food&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food&#039;s edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
### A &#039;&#039;recipe&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe&#039;s card panel&amp;lt;/span&amp;gt; or its nutritional facts panel,&lt;br /&gt;
### A &#039;&#039;meal&#039;&#039; and its &#039;&#039;servings&#039;&#039; in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;meal&#039;s edit panel&amp;lt;/span&amp;gt;, and&lt;br /&gt;
### The &#039;&#039;calendar&#039;&#039; entries (both per &#039;&#039;meal&#039;&#039; and the per day &#039;&#039;meal aggregations&#039;&#039;).&lt;br /&gt;
# Controls&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;aggregate nutrition radio button&amp;lt;/span&amp;gt; option allows &#039;&#039;nutrition&#039;&#039; data for multiple &#039;&#039;food&#039;&#039; products to be aggregated within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; resulting in per nutrient totals:&lt;br /&gt;
### When enabled, each selected &#039;&#039;food&#039;&#039; product&#039;s &#039;&#039;nutrition&#039;&#039; data is added as a separate column within the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; and summed into the total column (typically used in recipe-driven mode).&lt;br /&gt;
### When disabled, a general &#039;&#039;food&#039;&#039; may be queried for applicable &#039;&#039;food&#039;&#039; products. The selected product has its &#039;&#039;nutrition&#039;&#039; data added to the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (with only a single column ever defined) and may be saved to that &#039;&#039;food&#039;&#039; for future &#039;&#039;nutrition&#039;&#039; calculations.&lt;br /&gt;
## Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to cycle to the next &#039;&#039;ingredient&#039;&#039; of a &#039;&#039;recipe&#039;&#039;.&lt;br /&gt;
## You may select from multiple sources of &#039;&#039;nutrition&#039;&#039; data:&lt;br /&gt;
### Two sources of &#039;&#039;nutrition&#039;&#039; data are selectable via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt;:&lt;br /&gt;
###* The default is the [[&#039;#USDA%20FDC&#039;|USDA&#039;s FDC]] web site, and the application uses HTTP requests to query the site&#039;s database for &#039;&#039;food&#039;&#039; products and for a &#039;&#039;food&#039;&#039; product&#039;s nutrition data.&lt;br /&gt;
###** For this source, you may limit the search to any combination of the following data types: Foundation, Survey (FNDDS), Branded, or SR Legacy. Use the aforementioned FDC site to look up the meaning of these FDC terms.&lt;br /&gt;
###** When &#039;&#039;food&#039;&#039; product result sets are large enough, the source may limit the number of products that it responds with to only those that best matched the queried food. If you desire a full set of results (which can be quite large and take longer to retrieve), enable the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Show All Hits&amp;lt;/span&amp;gt; option (and pay attention to the in-progress bar).&lt;br /&gt;
###** Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; to submit a lookup request to the FDC site for all &#039;&#039;food&#039;&#039; products that may be applicable for that &#039;&#039;food&#039;&#039;.&lt;br /&gt;
###* An alternate source is the collection of user-defined &#039;&#039;nutrition profiles&#039;&#039; which is not dependent upon any external source. These profiles are defined via the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition profile panel&amp;lt;/span&amp;gt; and saved in the application database when the desired &#039;&#039;nutrition&#039;&#039; data is not available from any other source.&lt;br /&gt;
### &#039;&#039;Recipes&#039;&#039; and &#039;&#039;foods&#039;&#039; may have their own custom &#039;&#039;nutrition&#039;&#039; data previously-defined and saved.&lt;br /&gt;
###* When compiling &#039;&#039;nutrition&#039;&#039; for a recipe and cycling through each &#039;&#039;ingredient&#039;&#039;, if that &#039;&#039;ingredient&#039;s&#039;&#039;&#039; foodstuff already has &#039;&#039;nutrition&#039;&#039; defined, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;use nutrition button&amp;lt;/span&amp;gt; will appear (independent of the nutrition &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;source combo box&amp;lt;/span&amp;gt; selection) and may be used to apply that nutrition to the aggregate that is being compiled in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## The query status line provides information concerning the query&#039;s disposition (e.g. for remote queries: HTTP status code, number retrieved vs. number available).&lt;br /&gt;
## Double-click on a &#039;&#039;food&#039;&#039; product to add its &#039;&#039;nutrition&#039;&#039; data into the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; (which is launched upon the first selection).&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;ingredients-to-go status&amp;lt;/span&amp;gt; line indicates the number of &#039;&#039;ingredients&#039;&#039; that still require &#039;&#039;nutrition&#039;&#039; information from a selected food product and remains &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; until all are processed.&lt;br /&gt;
# Tips&lt;br /&gt;
## The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; can be launched in one of two modes:&lt;br /&gt;
### Free form: When no &#039;&#039;recipe&#039;&#039; has been selected before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, you are free to query for anything you enter in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt;.&lt;br /&gt;
### Recipe-driven: When a &#039;&#039;recipe&#039;&#039; has been selected on the main &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CuttingBoard panel&amp;lt;/span&amp;gt; before the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; is launched, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; is automatically pre-loaded with the &#039;&#039;food&#039;&#039; of each &#039;&#039;recipe&#039;&#039; ingredient (with any variety and / or attributes defined). Depress the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;next button&amp;lt;/span&amp;gt; to successively move on to the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; next ingredient.&lt;br /&gt;
## If the &#039;&#039;food&#039;&#039; products result is unfulfilling, you can modify any of the following and re-query to retrieve a new set of &#039;&#039;food&#039;&#039; products:&lt;br /&gt;
### the text in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query text box&amp;lt;/span&amp;gt; (add or remove characteristics of the food),&lt;br /&gt;
### change the &amp;amp;quot;Require All Words&amp;amp;quot; or &amp;amp;quot;Require Exact Match&amp;amp;quot; options.&lt;br /&gt;
## Given the complexity of aggregating &#039;&#039;nutrition&#039;&#039; from each of a &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredients&#039;&#039;, the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;query button&amp;lt;/span&amp;gt; stays &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;green&amp;lt;/span&amp;gt; until all &#039;&#039;ingredients&#039;&#039; have been processed to provide a cue that it is central to the process. Pick me ... pick me!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Nutrition Construction Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Nutrition Construction Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides display, management, and optionally aggregation, of &#039;&#039;nutrition&#039;&#039; data for one or more &#039;&#039;food&#039;&#039; products.&lt;br /&gt;
# Controls&lt;br /&gt;
## The displayed amount (quantity and unit) used to calculate the displayed &#039;&#039;nutrition&#039;&#039; data for a selected &#039;&#039;food&#039;&#039; product may be changed (thus changing the displayed &#039;&#039;nutrition&#039;&#039; data). If changed when in recipe-driven mode and the result is saved, you must also explicitly update the &#039;&#039;recipe&#039;s ingredient&#039;&#039; amount to ensure the &#039;&#039;nutrition&#039;&#039; data matches the &#039;&#039;recipe&#039;&#039;. Yes Virginia, this could be automated.&lt;br /&gt;
## A column may be deleted by selecting any cell in the column and depressing the delete key.&lt;br /&gt;
## Column header color indicates the accuracy of the initial unit conversion, if any was required, for the displayed the &#039;&#039;nutrition&#039;&#039; data.&lt;br /&gt;
### When collecting &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;food&#039;&#039; (either from a &#039;&#039;food&#039;s&#039;&#039; pre-defined &#039;&#039;nutrition&#039;&#039;, one of the application&#039;s pre-defined &#039;&#039;nutrition profiles&#039;&#039;, or &#039;&#039;nutrition&#039;&#039; retrieved via the application&#039;s USDA FoodData Central interface), the data displayed in the &#039;&#039;food&#039;s&#039;&#039; column in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; may have any of the following background colors to indicate accuracy of the data as a result of any unit conversion (e.g. 1/4 cup &amp;amp;lt;=&amp;amp;gt; 25 grams) required between the &#039;&#039;ingredient&#039;s&#039;&#039; portion and the sample portion of the &#039;&#039;food&#039;s nutrition&#039;&#039;. In order of decreasing accuracy:&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #d4d4d4;&amp;quot;&amp;gt;Grey&amp;lt;/span&amp;gt; (excellent accuracy):&lt;br /&gt;
###: Either the units matched or any unit conversion was between completely compatible units.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fffacd;&amp;quot;&amp;gt;Yellow&amp;lt;/span&amp;gt; (good accuracy):&lt;br /&gt;
###: FoodData Central can have portions (e.g. &#039;&#039;quantity not specified&#039;&#039;) that are used as a fallback and which still allow for valid results.&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #ffe4c4;&amp;quot;&amp;gt;Orange&amp;lt;/span&amp;gt; (ballpark accuracy):&lt;br /&gt;
###: A straight-forward portion/unit conversion could not be performed, so an estimated, less accurate one was performed: 1 gram == 1 milliliter (which is only true for water). Is your &#039;&#039;food&#039;&#039; product mostly water?&lt;br /&gt;
###; &amp;lt;span style=&amp;quot;background-color: #fdbcb4;&amp;quot;&amp;gt;Red&amp;lt;/span&amp;gt; (game over, man!):&lt;br /&gt;
###: You got goose eggs for data in that column. Either there&#039;s no way to convert the incompatible units (e.g. bolts to light-years) or the embedded machine intelligence is again sleeping on the job. To rectify, either:&lt;br /&gt;
###: • choose the most applicable unit from those available in the combo box, or&lt;br /&gt;
###: • delete the column and either pick another &#039;&#039;food&#039;&#039; product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;, or&lt;br /&gt;
###: • select an applicable &#039;&#039;nutrition profile&#039;&#039; from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When the retrieved &#039;&#039;nutrition&#039;&#039; data of a &#039;&#039;food&#039;&#039; product&#039;s record has zero &#039;&#039;nutrients&#039;&#039;, a &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;prior button&amp;lt;/span&amp;gt; is available that may be used to query the &#039;&#039;food&#039;&#039; product&#039;s previous record. This may be used to find a past record, possibly several versions back, that has &#039;&#039;nutrients&#039;&#039; specified.&lt;br /&gt;
## At any time, the panel&#039;s unit (and/or quantity) may be changed to more closely align with your &#039;&#039;food&#039;&#039; / &#039;&#039;ingredient&#039;&#039; goal and the column&#039;s &#039;&#039;nutrition&#039;&#039; data will be updated per the new amount.&lt;br /&gt;
## The unit conversion notification that pops-up to indicate a potential accuracy issue outlines a multi-option hint for handling the condition. This alert allows you to disable future conversion notifications (via a configuration preference) when you believe you&#039;ve grasped the concept and become irritated by the repeated nagging. Thereafter, once the arrogance has faded, and your enfeebled mind no longer retains the fundamental cause of the pretty colors on the column headers, you can revisit the hint, reproduced here, so you may revel in these words of wisdom.&lt;br /&gt;
##: &amp;lt;span class=&amp;quot;snippet&amp;quot;&amp;gt;If the converted data looks unreasonable:&amp;lt;br /&amp;gt;1) delete the food&#039;s nutrition column and try another food product from the Food Query Panel,&amp;lt;br /&amp;gt;2) change / save the unit of the recipe&#039;s ingredient to match one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;3) define an accurate conversion (via the food&#039;s keyword panel or the Conversion Profile Panel), to act as a bridge between the ingredient unit and at least one of the portion units available from the nutrition response,&amp;lt;br /&amp;gt;4) define a &#039;&#039;nutrition profile&#039;&#039; for the &#039;&#039;food&#039;&#039; and select it as a source at the Food Query Panel.&amp;lt;br /&amp;gt;A restart of the Food Query Panel is required for options 2 through 4.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Tips&lt;br /&gt;
# Pay close attention to the amount (especially the unit) that is proposed for each &#039;&#039;recipe ingredient&#039;&#039; to ensure it&#039;s what you want. When the &#039;&#039;ingredient&#039;s&#039;&#039; unit is not available in the retrieved &#039;&#039;nutrition&#039;&#039; data set, the application attempts a best-effort guess to slavishly ingratiate itself to you. Machines can be so cloying.&lt;br /&gt;
## Once &#039;&#039;nutrition&#039;&#039; is constructed for the &#039;&#039;recipe&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;recipe&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## When saving to a &#039;&#039;food&#039;&#039; &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is not already present in the database, choose a &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;descriptor&amp;lt;/span&amp;gt; that is no more than three words long. Once &#039;&#039;nutrition&#039;&#039; is retrieved for a &#039;&#039;food&#039;&#039; and saved, the data is viewable by accessing the &#039;&#039;food&#039;s&#039;&#039; &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
## Limitation: the application currently only allows an existing &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;nutrition&#039;&#039; data to be overwritten with a new set of &#039;&#039;nutrition&#039;&#039; data (modification of any given portion is not yet available).&lt;br /&gt;
## When the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition construction panel&amp;lt;/span&amp;gt; is launched from its parent (hint: the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt;), the parent&#039;s mode is inherited:&lt;br /&gt;
### Free form: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the default portion of the selected &#039;&#039;food&#039;&#039; product or &#039;&#039;nutrition profile&#039;&#039;.&lt;br /&gt;
### Recipe-driven: the &#039;&#039;nutrition&#039;&#039; data displayed is applicable to (calculated from) the amount specified for the &#039;&#039;food&#039;&#039; of the &#039;&#039;recipe&#039;s&#039;&#039; &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may delete a &#039;&#039;food&#039;&#039; product&#039;s nutrition column and choose another product from the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;food query panel&amp;lt;/span&amp;gt; for the corresponding &#039;&#039;ingredient&#039;&#039;.&lt;br /&gt;
## You may adjust the portion amount to observe the change in &#039;&#039;nutrition&#039;&#039; data for any selected food product, but when it comes time to save the set of &#039;&#039;nutrition&#039;&#039; data for a &#039;&#039;recipe&#039;&#039;:&lt;br /&gt;
### A validity check is performed to ensure that each non-optional &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;&#039; has &#039;&#039;nutrition&#039;&#039; data for one and only one &#039;&#039;food&#039;&#039; product.&lt;br /&gt;
### For any column header with a grey background color: the portion data must match the &#039;&#039;ingredient&#039;&#039; portion (to assure overall nutritional accuracy for the &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
### For any column header with a yellow, orange, or red background color: the portion data may be changed for the &#039;&#039;food&#039;&#039; product to better approximate the &#039;&#039;recipe&#039;&#039; &#039;&#039;ingredient&#039;s&#039;&#039; portion. In this case, the validity check bypasses the portion check assuming that the user knows best. So choose wisely.&lt;br /&gt;
### The validity check will fail a save attempt for any column header with a red background color that has not had it&#039;s portion changed by the user.&lt;br /&gt;
## A &#039;&#039;food&#039;&#039; product&#039;s nutrition column header will always retain it&#039;s original background color (event after a portion change) to remind you of the original state of the application&#039;s unit conversion accuracy.&lt;br /&gt;
## If an FDC-supplied portion conversion can&#039;t be made, then:&lt;br /&gt;
### A &#039;&#039;conversion profile&#039;&#039; entry is used when defined (which can be brand-specific).&lt;br /&gt;
## If you&#039;d like to minimize the chance that you&#039;ll incur a conversion between an &#039;&#039;ingredient&#039;s&#039;&#039; unit and a selected food product&#039;s unit (a good thing):&lt;br /&gt;
### Make sure that &#039;&#039;ingredient&#039;&#039; units are a weight unit for dry edibles and a volume unit for liquids.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Viewer Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Viewer Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application operation or to browse internet sites.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Console Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Console Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays application processing traces (logs) for those who wish to gaze inside the application as it does its thing.&lt;br /&gt;
# Actions&lt;br /&gt;
## The traces displayed are a function of the log level setting in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt;. The more detailed the log level selection, the greater the number of traces produced (and the slower the application executes).&lt;br /&gt;
# Controls&lt;br /&gt;
## Clear the log in anticipation of obtaining traces for only a particular sequence of application actions.&lt;br /&gt;
## Select and copy those traces that you wish to relay into, say, a support email.&lt;br /&gt;
# Tips&lt;br /&gt;
## To ease your journey through the storied history of application events past, log entry level severity is color-coded as follows (in order of severity): TRACE, &amp;lt;span class=&amp;quot;blueish&amp;quot;&amp;gt;DEBUG&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;greenish&amp;quot;&amp;gt;INFO&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;orangeish&amp;quot;&amp;gt;WARN&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;redish&amp;quot;&amp;gt;ERROR&amp;lt;/span&amp;gt;. You do see the helpful hint here, no?&lt;br /&gt;
## While the console&#039;s logs are updated immediately with the latest log events, those same events are buffered when it comes to writing them to the corresponding disk file. Use the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;tools &amp;gt; flush log menu item&amp;lt;/span&amp;gt; to flush any buffered log events to the log file on disk.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Conversion Calculator Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Conversion Calculator Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Displays calculated conversions between units and &#039;&#039;attributes&#039;&#039; for a &#039;&#039;food&#039;&#039; that has a &#039;&#039;conversion profile&#039;&#039;.&lt;br /&gt;
# Actions&lt;br /&gt;
## Enter a desired quantity and select a desired unit / attribute to watch the fireworks.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## At least 20%, please.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Graph Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Graph Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a graphical view of the application&#039;s managed object population, structure, and data via two modes of graph operation:&lt;br /&gt;
### The normal graph mode provides a top-down hierarchical structure of the application&#039;s managed object population allowing drill-down navigation to locate a desired object.&lt;br /&gt;
### The walkabout graph mode (g&#039;day, mate) provides a connected, directed graph viewpoint of a managed object&#039;s linkage to other managed objects in the database (where some objects may be uninteresting, intermediate placeholders).&lt;br /&gt;
# Actions&lt;br /&gt;
## Go &#039;n&#039; play. Are you not entertained?&lt;br /&gt;
## When a graph is created, its nodes attempt to self-organize to provide a view that is optimally readable.&lt;br /&gt;
## Connection labels are displayed only for the initial (normal-mode) &#039;&#039;CuttingBoard&#039;&#039; graph and for all walkabout graphs. For other (normal-mode) graphs, the labels tend to inhibit readability and so are suppressed (much like unwelcome memories of traumatic events). Arrow direction indicates how the link name should be applied between the two nodes.&lt;br /&gt;
## The graph transitions to normal mode when:&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; is first launched,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;home button&amp;lt;/span&amp;gt; is selected,&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in normal mode, or&lt;br /&gt;
### a primary mouse button double-click is used on a node.&lt;br /&gt;
## The graph transitions to walkabout mode when:&lt;br /&gt;
### a single-click of the mouse&#039;s secondary button is used on a node that represents a managed object, or&lt;br /&gt;
### the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back/forward button&amp;lt;/span&amp;gt; transitions to a previous graph that was presented in walkabout mode.&lt;br /&gt;
# Controls&lt;br /&gt;
## The bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;graph panel&amp;lt;/span&amp;gt; shows the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;breadcrumb trail&amp;lt;/span&amp;gt; that brought you to the current root node and identifies where the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;back / forward buttons&amp;lt;/span&amp;gt; navigate to (if you dare select them).&lt;br /&gt;
## Drag a node to a position more to your liking, if you require, but note well that a node will drag itself back to a place in this universe that it has an affinity for. You see, they&#039;re working things out.&lt;br /&gt;
## Zoom in to a section of the graph by selecting a node and working that mouse wheel like there&#039;s no tomorrow.&lt;br /&gt;
## A node&#039;s appearence hints at its potential (much like a &amp;amp;quot;come hither&amp;amp;quot; look):&lt;br /&gt;
### a blue node represents a grouping node, and when it presents a thick boundary, is pregnant with children nodes:&lt;br /&gt;
###* a primary mouse button double-click to drill down into its data sprimary mouse button double-clickcases).&lt;br /&gt;
### a brown node represents a managed object that, in most cases, will respond to:&lt;br /&gt;
###* a primary mouse button double-click to enter its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;edit panel&amp;lt;/span&amp;gt;,&lt;br /&gt;
###* a secondary mouse button single-click to open its walkabout graph (showing its connections to other managed objects) or, in the case of a &#039;&#039;recipe&#039;&#039;, open its &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;recipe card panel&amp;lt;/span&amp;gt;.&lt;br /&gt;
### a gold-with-redish-boundary node is the root node for that graph (i.e. point of origin for those easily confused WRT WTF is going on).&lt;br /&gt;
## Drill down into a node&#039;s data set by double-clicking the primary mouse button.&lt;br /&gt;
## Certain graph nodes (e.g. &#039;&#039;keyword&#039;&#039; and &#039;&#039;ingredient&#039;&#039; nodes in the &#039;&#039;CuttingBoard&#039;&#039; graph) are purposely only placeholders. Although they may show thick boundaries (indicating underlying populations), the display of these populations as a whole in a normal-mode graph are not permitted because, well, they can be fracking huge and non-helpful in a mind-numbing sort of fashion. Look, the Author is trying to protect you from the vastness of the universe (lookin&#039; at you Cthulhu). They&#039;ll still pop-up in the walkabout graphs, but in a much more manageable quantity per graph.&lt;br /&gt;
# Tips&lt;br /&gt;
## Buy low, sell high. After all, it&#039;s not a profit if you don&#039;t sell.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Statistics Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Statistics Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides application metrics (e.g. how many objects exist in the database).&lt;br /&gt;
# Actions&lt;br /&gt;
## Refresh the metrics after adding stuff if you&#039;re in that &#039;bored with it all&#039; mood and would rather be playing Mahjong.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## One unique &#039;&#039;nutrition summary&#039;&#039; exists for each &#039;&#039;meal&#039;&#039; and &#039;&#039;serving&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Web Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Web Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides a minimal, in-application web browser&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Do you &#039;&#039;&#039;really&#039;&#039;&#039; need any by this point, or have the machines not yet taken over in your neighborhood?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Application Panels&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Application Panels ===&lt;br /&gt;
&lt;br /&gt;
This section describes those panels that are available to view application metadata or to control application behavior.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;About Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== About Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Identifies some of the application&#039;s more prosaic information: version, author, support email, license.&lt;br /&gt;
# Actions&lt;br /&gt;
## Access the Author&#039;s web-site.&lt;br /&gt;
## Launch an email to the support staff relaying praise, bewilderment, rage, bugs. But no trolling ... I have a delete key and I know how to use it.&lt;br /&gt;
## Access the application license or the third-party package licenses.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Really? For an &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;about panel&amp;lt;/span&amp;gt;?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Help Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Help Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## Provides mildly-helpful, somewhat-abusive documentation concerning the application&#039;s usage and function (or lack thereof).&lt;br /&gt;
# Actions&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## For further help, see the Red Cross.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Preferences Panel&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Preferences Panel ====&lt;br /&gt;
&lt;br /&gt;
# Purpose&lt;br /&gt;
## It&#039;s here that the application pretends to care that your delicate user sensibilities will be taken into account / honored.&lt;br /&gt;
### The accepted &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference values tab&amp;lt;/span&amp;gt; lists those preference values currently available to the application. Preference management is supported by two different points of view:&lt;br /&gt;
###* The initial &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides an operational view of what preference values are accepted and are either currently operational or will be operational after the application is restarted.&lt;br /&gt;
###* A second &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preferences panel&amp;lt;/span&amp;gt; provides a configuration view that allows the selection of new values for each of the preferences.&lt;br /&gt;
### The active property values tab lists those property values used by the application. The application obtains these values either from the host&#039;s environment variables or via the options specified on the application&#039;s command-line.&lt;br /&gt;
# Actions&lt;br /&gt;
## From the operational view:&lt;br /&gt;
### To launch the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;preference configuration panel&amp;lt;/span&amp;gt;, left-click the accepted preferences values tab, then the &amp;lt;span class=&amp;quot;step&amp;quot;&amp;gt;edit&amp;amp;gt;preferences menu items&amp;lt;/span&amp;gt;,&lt;br /&gt;
### Admire the preference values that have been accepted by the application and are, therefore, currently in-effect or about to be upon restart.&lt;br /&gt;
## From the configuration view:&lt;br /&gt;
### Enter a portion of a preference name or section in the search box to locate a desired preference,&lt;br /&gt;
### Navigate the sections via either the tree view or the bread-crumb bar (to the right of the search box, respectively).&lt;br /&gt;
### Manipulate the preference values as needed: either the changes are accepted immediately or will require depressing the OK / APPLY buttons.&lt;br /&gt;
# Controls&lt;br /&gt;
# Tips&lt;br /&gt;
## Most of the preference fields have tool tips available (for those patient enough to hover their mouse over the desired field).&lt;br /&gt;
## Before a change is accepted, a preference&#039;s value may undergo a validation check to ensure consistent application behavior (when dependencies exist among multiple preferences).&lt;br /&gt;
## No color change hints are provided on this panel, so don&#039;t forget to depress the OK / APPLY buttons if you really wish to save your well-thought-out changes.&lt;br /&gt;
## Most of these preferences have their function described in the configuration files section of this help document. Additional preference setting insight:&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Relocate Active Artifact Directory&amp;lt;/span&amp;gt;: When chosen after a new location for the artifact directory is specified, the application will migrate the entire artifact directory content (including the database) to the new artifact directory upon application exit. The new path is automatically used when the application is next started.&lt;br /&gt;
### &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Remove Active Database On Exit&amp;lt;/span&amp;gt;: By performing this action, you will lose any custom data (e.g. &#039;&#039;keyword, recipe&#039;&#039;) that you&#039;ve entered in the database unless you&#039;ve exported said data to XML files at a safe location (which may then be imported into a new database). All non-database artifacts are moved and preserved. If the relocate artifact directory option is also chosen in conjunction with this remove database option, upon exit the application will move everything and then remove the database at the new location.&lt;br /&gt;
### If the application doesn&#039;t detect an existing database upon startup, it will recreate the default database (that was available upon initial installation).&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayUnits&amp;lt;/span&amp;gt; and &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;DisplayNumberRepresentation&amp;lt;/span&amp;gt; values are used as the defaults for recipe card amount scaling and representation (and may be overridden on a per recipe card basis). During recipe yield scaling, the native setting will retain the unit of the original amount, whereas, for the other two settings, the unit will morph into what&#039;s most appropriate in order to keep the quantity magnitude manageable.&lt;br /&gt;
### The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;CalendarRecurrence...&amp;lt;/span&amp;gt; set of preferences place an upper limit on the number of times that a meal may be scheduled to repeat for the given period. Setting these values too high can result in slow calendar processing. So none of this &amp;amp;quot;to infinity and beyond&amp;amp;quot; stuff, OK?&lt;br /&gt;
### The population segment preferences (i.e. &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Age, AgeUnit, Group, ActivityLevel&amp;lt;/span&amp;gt;) are used to identify your default daily recommended intake row (and calorie column) in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;dietary reference panel&amp;lt;/span&amp;gt; and thus which daily values are used in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;nutrition facts panel&amp;lt;/span&amp;gt; calculation for a &#039;&#039;recipe&#039;&#039;. The &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Weight, WeightUnit&amp;lt;/span&amp;gt; preferences are used to identify your daily recommended intake amounts for amino acids. Personalize for a custom fit!&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Terms ===&lt;br /&gt;
&lt;br /&gt;
Definitions:&lt;br /&gt;
&lt;br /&gt;
; Classifier&lt;br /&gt;
: A type of attribute tag that can be given to an Application Object (e.g. &amp;lt;span class=&amp;quot;property&amp;quot;&amp;gt;Cuisine&amp;lt;/span&amp;gt; for a &#039;&#039;recipe&#039;&#039;).&lt;br /&gt;
; Descriptor&lt;br /&gt;
: The name (or a very short descriptive phrase that acts like a name), of an object. Not to be confused with a description of a thing, which can go on, and on, ...&lt;br /&gt;
; Portion&lt;br /&gt;
: An amount of &#039;&#039;food&#039;&#039; composed of a quantity and a unit.&lt;br /&gt;
&lt;br /&gt;
=== Abbreviations ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AI&amp;quot;&amp;gt;AI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Adequate Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;AMDR&amp;quot;&amp;gt;AMDR - [https://med.libretexts.org/Bookshelves/Nutrition/Book%3A_Nutrition_Science_and_Everyday_Application_(Callahan_Leonard_and_Powell)/01%3A_Designing_A_Healthy_Diet/1.05%3A_Defining_Nutrient_Requirements-_Dietary_Reference_Intakes/ Acceptable Macronutrient Distribution Range]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;DRI&amp;quot;&amp;gt;DRI - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Daily Recommended Intake]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;RDA&amp;quot;&amp;gt;RDA - [https://ods.od.nih.gov/HealthInformation/dailyvalues.aspx/ Recommended Dietary Allowance]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;USDA FDC&amp;quot;&amp;gt;USDA FDC - [https://fdc.nal.usda.gov/ US Department of Agriculture&#039;s FoodData Central web site]&amp;lt;/span&amp;gt;&lt;br /&gt;
* &amp;lt;span id=&amp;quot;XML&amp;quot;&amp;gt;XML - [https://en.wikipedia.org/wiki/XML Extensible Markup Language]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;FAQs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Frequently Asked Questions ===&lt;br /&gt;
&lt;br /&gt;
Some random thoughts that may provide, for the impatient, insightful answers to those questions that the Author is darn tired of getting.&lt;br /&gt;
&lt;br /&gt;
#How are the daily value percentages calculated in the nutrition views?&lt;br /&gt;
##*The daily value percentages shown in the various nutrition views indicate how much of a nutrient&#039;s [[&#039;#RDA&#039;|RDA]] or [[&#039;#AI&#039;|AI]], as displayed in the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt;, is available in the editable (e.g. &#039;&#039;food, recipe, meal&#039;&#039;) given its portion.&lt;br /&gt;
##*Note that the general population (i.e. the one-size-fits-all) RDA / AI values that are used for typical food product nutrition fact labels are not used by this application. Rather, in an attempt to provide data that is better customized to the user, the application uses the user-selected population group (and weight) to select those specific values as published in the documents referenced at the bottom of the &amp;lt;span class=&amp;quot;widget&amp;quot;&amp;gt;Dietary Reference panel&amp;lt;/span&amp;gt; and also listed in the [[&#039;#Data Sources&#039;|Data Sources]] section of this online help. The general population values, in contrast, are noted in the document [[&#039;https://www.fda.gov/media/134505/download|Food Labeling: Revision of the Nutrition and Supplement Facts Labels: Guidance for Industry Small Entity Compliance Guide]] which is produced by the Office of Nutrition and Food Labeling in the Center for Food Safety and Applied Nutrition at the USDA FDA.&lt;br /&gt;
##*While some of the nutrition views loosely follow the structure of the FDA&#039;s label guidance to provide information in a familiar guise, no claims of format or content adherence are made.&lt;br /&gt;
# What voodoo must I invoke to achieve selection of table item(s)?&lt;br /&gt;
##* To select multiple items: shift + primary-mouse-button-click&lt;br /&gt;
##* To deselect an item: ctrl + primary-mouse-button-click&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Infrastructure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Infrastructure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Open Source Components&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Open Source Components ====&lt;br /&gt;
&lt;br /&gt;
# This product was built using, and includes software developed by, multiple, independent open source projects as noted below. Thanks, all. Really.&lt;br /&gt;
# Mark well (as noted below) that all third-party code libraries utilized are covered under their own licenses and that the &#039;&#039;CuttingBoard&#039;&#039; application code is covered under its own, separate license (and copyright).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Open Source Components&lt;br /&gt;
|-&lt;br /&gt;
! Component !! Version !! Role !! License !! Comment&lt;br /&gt;
|-&lt;br /&gt;
| [https://entangledbits.org/gitea/EntangledBits/CuttingBoard/ CuttingBoard] || Latest || Runtime || [https://www.gnu.org/licenses/gpl-3.0.html GPL-3.0] || The tortured, entangled bits that are the soul of the CuttingBoard application&lt;br /&gt;
|-&lt;br /&gt;
| [https://jdk.java.net/19/ OpenJDK] || 19 || Runtime || [https://openjdk.java.net/legal/gplv2+ce.html GPL-2.0+CE] || Java Development Kit.&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjfx.io/ OpenJFX] || 20 || Runtime || [https://opensource.org/licenses/gpl-2.0.php GPL-2.0] || Java client application graphics platform.&lt;br /&gt;
|-&lt;br /&gt;
| [https://git.qoto.org/Ferma/Ferma.git Ferma] || 3.3.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || An ORM / OGM for the TinkerPop graph stack.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org TinkerPop] || 3.5.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph computing framework for graph databases and graph analytic systems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://janusgraph.org/ JanusGraph] || 1.0.0-20231021-144322.55d7454 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || A graph database.&lt;br /&gt;
|-&lt;br /&gt;
| [https://tinkerpop.apache.org/gremlin.html Gremlin] || 3.7.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Gremlin is the graph traversal language of Apache TinkerPop.&lt;br /&gt;
|-&lt;br /&gt;
| [https://lucene.apache.org Lucene] || 8.9.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.html Apache 2.0] || Library providing indexing and search features.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.oracle.com/database/nosql/technologies/nosql/ Oracle NoSQL DB Server] || 5.18.3.12 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0.txt Apache 2.0] || Berkeley Database Java Edition - build and runtime support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Lang3] || 3.13.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of Java utility classes for the classes that are in / or should be in java.lang&#039;s hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons Text] || 1.10.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library focused on algorithms working on strings.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/proper/commons-math/ Apache Commons Math] || 3.6.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems.&lt;br /&gt;
|-&lt;br /&gt;
| [https://commons.apache.org/ Apache Commons IO] || 2.14.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing utility classes, stream implementations, file filters, file comparators, endian transformation classes, ...&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient5] || 5.2.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HTTP/1.1 compliant HTTP agent implementation providing components for client-side authentication, HTTP state management, and HTTP connection management.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpAsyncClient] || 4.1.5 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library implementing the client side of the latest HTTP standards and recommendations for an application based upon an asynchronous, event driven I/O model.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpClient Mime] || 4.5.14 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents HttpClient - MIME coded entities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://hc.apache.org/ Apache HttpCore NIO] || 4.4.16 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || HttpComponents Core (non-blocking I/O).&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.JSON.org/ JSON In Java] || 20231013 || Runtime || [https://www.json.org/license.html JSON] || A reference implementation of a JSON package in Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FasterXML/jackson-databind Jackson Databind] || 2.15.3 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || General data-binding functionality for Jackson: works on core streaming API.&lt;br /&gt;
|-&lt;br /&gt;
| [http://unirest.io/ Unirest Java] || 3.14.5 || Runtime || [https://opensource.org/licenses/MIT MIT] || Simplified, lightweight HTTP client library.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version/ Dorkbox Version] || 3.1 || Runtime || [https://github.com/dorkbox/Version/blob/master/LICENSE MIT] || Java Semantic Versioning, relaxed.&lt;br /&gt;
|-&lt;br /&gt;
| [https://logging.apache.org/log4j/2.x/manual/api.html Apache Log4j API] || 2.21.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library containing Java-based logging utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://pdfbox.apache.org/ Apache PDFBox] || 2.0.27 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Library providing utilities to create, manipulate, and extract content from PDF documents.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ralfstuckert/pdfbox-layout Pdfbox2 Layout] || 1.0.1 || Runtime || MIT || Library providing PDF text layout utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dorkbox/Version Version] || 2.4 || Runtime || [https://opensource.org/licenses/MIT MIT] || Java library for semantic versioning.&lt;br /&gt;
|-&lt;br /&gt;
| [http://jscience.org/ JScience] || 4.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for the scientific community: units of measurement.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFX] || 11.12.6 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/CalendarFX CalendarFXRecurrence] || 11.6.4 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating calendar views (contains the RFC 2445 support).&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/dlsc-software-consulting-gmbh/PreferencesFX PreferencesFX] || 11.16.0 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java framework for creating a UI for application settings / preferences.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/FXMisc/RichTextFX/#richtextfx RichTextFX] || 0.11.2 || Runtime || [https://github.com/FXMisc/RichTextFX/blob/master/LICENSE BSD 2-Clause &amp;amp;quot;Simplified&amp;amp;quot; License] || Rich-text area for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/brunomnsilva/JavaFXSmartGraph/ JavaFXSmartGraph] || 0.9.4 || Runtime || [https://github.com/brunomnsilva/JavaFXSmartGraph/blob/master/LICENSE.txt MIT] || Directed-graph visualization for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/controlsfx/controlsfx ControlsFX] || 11.1.2 || Runtime || [https://github.com/controlsfx/controlsfx/blob/master/license.txt BSD 3-Clause &amp;amp;quot;New&amp;amp;quot; or &amp;amp;quot;Revised&amp;amp;quot; License] || UI controls for JavaFX.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/vatbub/mslinks FOKProjects MSLinks] || 1.0.6.2 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Java library for parsing and creating Windows shortcut files.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/kordamp/ikonli kordamp.ikonli] || 12.3.1 || Runtime || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Icon packs for Java applications.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.iconfinder.com/search/?q=cutting+board&amp;amp;iconset=food-and-cook-1 Cutting Board Icon] || || Runtime || [https://creativecommons.org/licenses/by/3.0/ Creative Common Attribution 3.0] || Icon template by Irfan Setiawan. Icon subsequently colorized by CuttingBoard application author and remains under Creative Common license.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/saasquatch/forge-inflector-standalone/blob/master/src/main/java/com/saasquatch/forge_inflector_standalone/Inflector.java Inflector] || || Runtime || [http://www.eclipse.org/legal/epl-v10.html Eclipse Public License version 1.0] || File containing language utilities.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/unicode-org/icu ICU4J] || 73.2 || Runtime || [https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE Unicode® Copyright] || Set of Java libraries providing Unicode and Globalization support.&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/api-guide.html FoodData Central API] || 1.0.0 || REST API || [https://creativecommons.org/publicdomain/zero/1.0/ Creative Commons 0 1.0 Universal] || USDA web server API that provides query and extraction capability for food product nutrition.&lt;br /&gt;
|-&lt;br /&gt;
| [https://www.eclipse.org/ Eclipse IDE] || 2022-09 (4.25.0) || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Integrated Development Environment for Java Developers.&lt;br /&gt;
|-&lt;br /&gt;
| [https://junit.org/junit5/ JUnit Jupiter API/Engine] || 5.9.1 || Build || [https://www.eclipse.org/legal/epl-2.0/ EPL 2.0] || Testing framework for Java.&lt;br /&gt;
|-&lt;br /&gt;
| [https://maven.apache.org/ Maven] || POM version 4.0.0 || Build || [https://www.apache.org/licenses/LICENSE-2.0 Apache 2.0] || Software project management and comprehension tool.&lt;br /&gt;
|-&lt;br /&gt;
| [https://gluonhq.com/products/scene-builder SceneBuilder] || 18 || Build || [https://gluonhq.com/products/scene-builder/ BSD license], via Gluon || Drag and drop user interface design tool.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Data Sources&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==== Data Sources ====&lt;br /&gt;
&lt;br /&gt;
# Mark well that all third-party data sources that are utilized are covered under their own licenses as noted in the citations below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Incorporated Data Sources&lt;br /&gt;
|-&lt;br /&gt;
! Data Source !! Identification !! Copyright !! Citation&lt;br /&gt;
|-&lt;br /&gt;
| [https://fdc.nal.usda.gov/download-datasets.html USDA FoodData Central Composition Data] || April 2023 || Public Domain (not copyrighted) || U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2020. fdc.nal.usda.gov.&lt;br /&gt;
|-&lt;br /&gt;
! [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dv/ Nutrient Recommendations: Daily Values] !! - !! - !! U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
! [https://ods.od.nih.gov/HealthInformation/nutrientrecommendations.aspx#dri/ Nutrient Recommendations: Dietary Reference Intakes] !! - !! - !! U.S. Office of Dietary Supplements, National Institutes of Health&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.dietaryguidelines.gov/sites/default/files/2021-03/Dietary_Guidelines_for_Americans-2020-2025.pdf Dietary Guidelines for Americans, 2020-2025, Appendix 2] !! ISBN: 9780160955990 !! - !! U.S. Department of Agriculture and U.S. Department of Health and Human Services. Dietary Guidelines for Americans, 2020-2025. 9th Edition. December 2020. Available at DietaryGuidelines.gov.&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/11537/dietary-reference-intakes-the-essential-guide-to-nutrient-requirements/ Dietary Reference Intakes: The Essential Guide to Nutrient Requirements] || ISBN 978-0-309-10091-5 | DOI 10.17226/11537 || National Academy of Sciences || Institute of Medicine 2006. Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. Washington, DC: The National Academies Press. https://doi.org/10.17226/11537.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [https://nap.nationalacademies.org/catalog/10490/dietary-reference-intakes-for-energy-carbohydrate-fiber-fat-fatty-acids-cholesterol-protein-and-amino-acids/ Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids] || ISBN 978-0-309-08537-3 | DOI 10.17226/10490 || National Academy of Sciences || Institute of Medicine 2005. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. Washington, DC: The National Academies Press. https://doi.org/10.17226/10490.&lt;br /&gt;
|-&lt;br /&gt;
! [https://public-inspection.federalregister.gov/2016-11867.pdf Food Labeling Revision of the Nutrition and Supplement Facts Labels (p. 905)] !! FR Doc. 2016-11867 Filed: 5/20/2016 8:45 am; Publication Date: 5/27/2016 !! - !! U.S. Food and Drug Administration, Health and Human Services&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=Main_Page&amp;diff=3</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=Main_Page&amp;diff=3"/>
		<updated>2024-03-04T19:31:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: Initial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;Entangled Bits Wiki&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= The Entangled Bits Wiki =&lt;br /&gt;
&lt;br /&gt;
This wiki documents the open source project work I do in my spare time under the entangled bits domain.  &lt;br /&gt;
&lt;br /&gt;
These projects (and their artifacts) currently exist:&lt;br /&gt;
&lt;br /&gt;
* The CuttingBoard application&lt;br /&gt;
** [https://entangledbits.org/mediawiki/User%27s_Manual User&#039;s Manual]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://entangledbits.org/mediawiki/index.php?title=MediaWiki:Common.css&amp;diff=2</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://entangledbits.org/mediawiki/index.php?title=MediaWiki:Common.css&amp;diff=2"/>
		<updated>2024-03-04T19:29:50Z</updated>

		<summary type="html">&lt;p&gt;Admin: Initial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.property {&lt;br /&gt;
  font-family: System;&lt;br /&gt;
  color: maroon;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.widget {&lt;br /&gt;
  font-family: System;&lt;br /&gt;
  color: purple;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.step {&lt;br /&gt;
  font-family: System;&lt;br /&gt;
  color: crimson;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.code {&lt;br /&gt;
  font-family: System;&lt;br /&gt;
  color: crimson;&lt;br /&gt;
  background-color: #f1f1f1;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  font-size: 90%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.snippet {&lt;br /&gt;
  font-family: System;&lt;br /&gt;
  color: black;&lt;br /&gt;
  background-color: #f1f1f1;&lt;br /&gt;
  padding: 2px;&lt;br /&gt;
  font-size: 95%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.greenish { color: green; }&lt;br /&gt;
.blueish { color: blue; }&lt;br /&gt;
.orangeish { color: #F87431; }&lt;br /&gt;
.redish { color: red; }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>