📄️ Advanced Settings
An advanced setting is one that has a reasonable default value that would not need to be changed in a normal deployment. As a result, Fig will hide this setting by default to allow those configuring the application to focus on the settings that do need to be changed. An example might be a timeout value. In most cases, the developer will have chosen a reasonable default but the setting is still included incase it needs to be changed for debugging for when the application is deployed in a specific environment.
📄️ Category
It is possible to display an association between different settings using the category feature. When a setting is assigned a category, it is assigned a category name and a color which will visually indicate that it is related to other settings with the same color and category name.
📄️ Classifications
Classifications are a way of limiting access to certain settings to certain users.
📄️ Configuration Section
Fig is a configuration provider which means it sets values when are then made available for consumption within the application. When configuring settings for an application, it makes sense for all configuration items to reside within one class (or at least be referenced from that class). However, there are some use cases where you would like Fig to set values for different configuration sections.
📄️ Data Grids
Fig supports data grids for displaying complex settings.
📄️ Default Values
Fig allows clients to specify a default value for each setting. Default values are specified in the normal way for modern dotnet applications.
📄️ Dependent Settings
Sometimes there are settings that enable other settings. For example an application might be able to work both with and without authentication. If authentication is selected then a username and password must be supplied. In this case, we can add an attribute to the authentication switch to hide the irrelevant settings when disabled.
📄️ Display Scripts
Display scripts a javascript code snippets that allow for automated actions related to the display of settings within the Fig Web application. They can be added to any setting and will be executed when the web application is loaded or when the setting value is changed.
📄️ Environment Specific
The EnvironmentSpecificAttribute is used to mark settings that are likely specific to a particular environment. These settings can be excluded from value-only exports to make it easier to transfer configurations between different environments (development, staging, production, etc.).
📄️ Groups
Fig has the capability to group settings from multiple setting clients so they can be edited in one place. This is useful when multiple applications require the same configuration such as a database connection string. With the groups feature this can be set once and applied to all requesting clients simultaneously.
📄️ Live Update
Fig supports live setting update by default. This means that when a setting value is updated within the Fig web client and saved, any connected clients will be informed of this change on their next poll interval and then request the updated values and apply them. This can be tracked under connected clients within the web client.
📄️ Multi-Line Strings
Multi-line string settings are supported in Fig by adding an attribute to the string setting.
📄️ Nested Settings
This feature was introduced in Fig v0.11.
📄️ Ordering
Settings are ordered in the same sequence as they appear within the settings class file.
📄️ Secret Settings
Fig supports protecting the values of some settings. Secret settings are treated as passwords within the web client and are not shown to the configuring user.
📄️ Setting Constants
Fig supports substituting live values with pre-defined constants in string settings so they are available to the using services.
📄️ Setting Descriptions
Descriptions should be supplied with each setting to explain what the setting does and any potential implications of changing it. Descriptions are provided within the [Setting] attribute.
📄️ Supported Types
Fig supports most c# property types out of the box with customized editors for each type. More complex types are supported using data grids or JSON.
📄️ Valid Values (Dropdowns)
In many cases, settings may have a limited set of valid values. In these scenarios, it will assist those configuring the application to provide a dropdown list of valid values to choose from. One example might be the selection of log levels or setting an enum value.
📄️ Validation
String, integer or long type settings can have custom regular expression that will be used to validate the setting. If a value is entered that does not match the regex then a custom message will be shown to the person configuring the setting and saving will not be allowed.
📄️ Value History
Every value change that occurs in Fig is recorded in the database and is available from within the setting card.