You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2020/09/28 14:55:31 UTC

[incubator-superset-site] 20/46: New doc version 0.36.0

This is an automated email from the ASF dual-hosted git repository.

villebro pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-superset-site.git

commit 5070c5aab0b14ed22333c85f20dbb322a3d3ba51
Author: Ville Brofeldt <vi...@gmail.com>
AuthorDate: Fri Apr 17 20:03:46 2020 +0300

    New doc version 0.36.0
---
 _modules/superset/jinja_context.html |  27 ++---
 _sources/admintutorial.rst.txt       | 210 +++++++++++++++++------------------
 _sources/druid.rst.txt               |   2 +-
 _sources/gallery.rst.txt             |  95 ++++++++--------
 _sources/index.rst.txt               |  15 ++-
 _sources/installation.rst.txt        |  47 +++++---
 _sources/security.rst.txt            |  25 ++++-
 _sources/sqllab.rst.txt              |   2 +-
 _sources/usertutorial.rst.txt        |  61 +++++-----
 _sources/visualization.rst.txt       |  24 ++--
 admintutorial.html                   |  76 ++++++-------
 druid.html                           |   2 +-
 gallery.html                         |  94 ++++++++--------
 index.html                           |  14 ++-
 installation.html                    |  95 ++++++++++------
 searchindex.js                       |   2 +-
 security.html                        |  22 +++-
 sqllab.html                          |   6 +-
 usertutorial.html                    |  56 +++++-----
 visualization.html                   |   4 +-
 20 files changed, 485 insertions(+), 394 deletions(-)

diff --git a/_modules/superset/jinja_context.html b/_modules/superset/jinja_context.html
index 2bbfac0..b772532 100644
--- a/_modules/superset/jinja_context.html
+++ b/_modules/superset/jinja_context.html
@@ -166,16 +166,15 @@
 <span class="c1"># KIND, either express or implied.  See the License for the</span>
 <span class="c1"># specific language governing permissions and limitations</span>
 <span class="c1"># under the License.</span>
-<span class="c1"># pylint: disable=C,R,W</span>
 <span class="sd">&quot;&quot;&quot;Defines the templating context for SQL Lab&quot;&quot;&quot;</span>
 <span class="kn">import</span> <span class="nn">inspect</span>
 <span class="kn">import</span> <span class="nn">json</span>
-<span class="kn">from</span> <span class="nn">typing</span> <span class="k">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span>
+<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Tuple</span>
 
-<span class="kn">from</span> <span class="nn">flask</span> <span class="k">import</span> <span class="n">g</span><span class="p">,</span> <span class="n">request</span>
-<span class="kn">from</span> <span class="nn">jinja2.sandbox</span> <span class="k">import</span> <span class="n">SandboxedEnvironment</span>
+<span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">g</span><span class="p">,</span> <span class="n">request</span>
+<span class="kn">from</span> <span class="nn">jinja2.sandbox</span> <span class="kn">import</span> <span class="n">SandboxedEnvironment</span>
 
-<span class="kn">from</span> <span class="nn">superset</span> <span class="k">import</span> <span class="n">jinja_base_context</span>
+<span class="kn">from</span> <span class="nn">superset</span> <span class="kn">import</span> <span class="n">jinja_base_context</span>
 
 
 <div class="viewcode-block" id="url_param"><a class="viewcode-back" href="../../sqllab.html#superset.jinja_context.url_param">[docs]</a><span class="k">def</span> <span class="nf">url_param</span><span class="p">(</span><span class="n">param</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span [...]
@@ -264,15 +263,15 @@
 
     <span class="k">if</span> <span class="n">default</span><span class="p">:</span>
         <span class="k">return</span> <span class="p">[</span><span class="n">default</span><span class="p">]</span>
-    <span class="k">else</span><span class="p">:</span>
-        <span class="k">return</span> <span class="p">[]</span></div>
 
+    <span class="k">return</span> <span class="p">[]</span></div>
 
-<span class="k">class</span> <span class="nc">CacheKeyWrapper</span><span class="p">:</span>
+
+<span class="k">class</span> <span class="nc">CacheKeyWrapper</span><span class="p">:</span>  <span class="c1"># pylint: disable=too-few-public-methods</span>
     <span class="sd">&quot;&quot;&quot; Dummy class that exposes a method used to store additional values used in</span>
 <span class="sd">     calculation of query object cache keys&quot;&quot;&quot;</span>
 
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">extra_cache_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">extra_cache_keys</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
         <span class="bp">self</span><span class="o">.</span><span class="n">extra_cache_keys</span> <span class="o">=</span> <span class="n">extra_cache_keys</span>
 
     <span class="k">def</span> <span class="nf">cache_key_wrapper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
@@ -304,7 +303,7 @@
         <span class="k">return</span> <span class="n">key</span>
 
 
-<span class="k">class</span> <span class="nc">BaseTemplateProcessor</span><span class="p">:</span>
+<span class="k">class</span> <span class="nc">BaseTemplateProcessor</span><span class="p">:</span>  <span class="c1"># pylint: disable=too-few-public-methods</span>
     <span class="sd">&quot;&quot;&quot;Base class for database-specific jinja context</span>
 
 <span class="sd">    There&#39;s this bit of magic in ``process_template`` that instantiates only</span>
@@ -321,7 +320,7 @@
 
     <span class="n">engine</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
 
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
         <span class="bp">self</span><span class="p">,</span>
         <span class="n">database</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
         <span class="n">query</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
@@ -425,8 +424,10 @@
 
 
 <span class="k">def</span> <span class="nf">get_template_processor</span><span class="p">(</span><span class="n">database</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
-    <span class="n">TP</span> <span class="o">=</span> <span class="n">template_processors</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">database</span><span class="o">.</span><span class="n">backend</span><span class="p">,</span> <span class="n">BaseTemplateProcessor</span><span class="p">)</span>
-    <span class="k">return</span> <span class="n">TP</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="n">database</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+    <span class="n">template_processor</span> <span class="o">=</span> <span class="n">template_processors</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
+        <span class="n">database</span><span class="o">.</span><span class="n">backend</span><span class="p">,</span> <span class="n">BaseTemplateProcessor</span>
+    <span class="p">)</span>
+    <span class="k">return</span> <span class="n">template_processor</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="n">database</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
 </pre></div>
 
            </div>
diff --git a/_sources/admintutorial.rst.txt b/_sources/admintutorial.rst.txt
index ebae59f..87490b4 100644
--- a/_sources/admintutorial.rst.txt
+++ b/_sources/admintutorial.rst.txt
@@ -27,7 +27,7 @@ so that you get a feel for the end-to-end user experience.
 Connecting to a new database
 ----------------------------
 
-We assume you already have a database configured and can connect to it from the 
+We assume you already have a database configured and can connect to it from the
 instance on which you’re running Superset. If you’re just testing Superset and
 want to explore sample data, you can load some
 `sample PostgreSQL datasets <https://wiki.postgresql.org/wiki/Sample_Databases>`_
@@ -37,289 +37,289 @@ we use here.
 
 Under the **Sources** menu, select the *Databases* option:
 
-.. image:: images/tutorial/tutorial_01_sources_database.png
+.. image:: _static/images/tutorial/tutorial_01_sources_database.png
    :scale: 70%
 
 On the resulting page, click on the green plus sign, near the top right:
 
-.. image:: images/tutorial/tutorial_02_add_database.png
+.. image:: _static/images/tutorial/tutorial_02_add_database.png
    :scale: 70%
 
-You can configure a number of advanced options on this page, but for 
+You can configure a number of advanced options on this page, but for
 this walkthrough, you’ll only need to do **two things**:
 
 1. Name your database connection:
 
-.. image:: images/tutorial/tutorial_03_database_name.png
+.. image:: _static/images/tutorial/tutorial_03_database_name.png
    :scale: 70%
 
 2. Provide the SQLAlchemy Connection URI and test the connection:
 
-.. image:: images/tutorial/tutorial_04_sqlalchemy_connection_string.png
+.. image:: _static/images/tutorial/tutorial_04_sqlalchemy_connection_string.png
    :scale: 70%
 
-This example shows the connection string for our test weather database. 
-As noted in the text below the URI, you should refer to the SQLAlchemy 
-documentation on 
+This example shows the connection string for our test weather database.
+As noted in the text below the URI, you should refer to the SQLAlchemy
+documentation on
 `creating new connection URIs <https://docs.sqlalchemy.org/en/rel_1_2/core/engines.html#database-urls>`_
 for your target database.
 
-Click the **Test Connection** button to confirm things work end to end. 
-Once Superset can successfully connect and authenticate, you should see 
+Click the **Test Connection** button to confirm things work end to end.
+Once Superset can successfully connect and authenticate, you should see
 a popup like this:
 
-.. image:: images/tutorial/tutorial_05_connection_popup.png
+.. image:: _static/images/tutorial/tutorial_05_connection_popup.png
    :scale: 50%
 
-Moreover, you should also see the list of tables Superset can read from 
+Moreover, you should also see the list of tables Superset can read from
 the schema you’re connected to, at the bottom of the page:
 
-.. image:: images/tutorial/tutorial_06_list_of_tables.png
+.. image:: _static/images/tutorial/tutorial_06_list_of_tables.png
    :scale: 70%
 
-If the connection looks good, save the configuration by clicking the **Save** 
+If the connection looks good, save the configuration by clicking the **Save**
 button at the bottom of the page:
 
-.. image:: images/tutorial/tutorial_07_save_button.png
+.. image:: _static/images/tutorial/tutorial_07_save_button.png
    :scale: 70%
 
 Adding a new table
 ------------------
 
-Now that you’ve configured a database, you’ll need to add specific tables 
+Now that you’ve configured a database, you’ll need to add specific tables
 to Superset that you’d like to query.
 
 Under the **Sources** menu, select the *Tables* option:
 
-.. image:: images/tutorial/tutorial_08_sources_tables.png
+.. image:: _static/images/tutorial/tutorial_08_sources_tables.png
    :scale: 70%
 
 On the resulting page, click on the green plus sign, near the top left:
 
-.. image:: images/tutorial/tutorial_09_add_new_table.png
+.. image:: _static/images/tutorial/tutorial_09_add_new_table.png
    :scale: 70%
 
 You only need a few pieces of information to add a new table to Superset:
 
 * The name of the table
 
-.. image:: images/tutorial/tutorial_10_table_name.png
+.. image:: _static/images/tutorial/tutorial_10_table_name.png
    :scale: 70%
 
-* The target database from the **Database** drop-down menu (i.e. the one 
+* The target database from the **Database** drop-down menu (i.e. the one
   you just added above)
 
-.. image:: images/tutorial/tutorial_11_choose_db.png
+.. image:: _static/images/tutorial/tutorial_11_choose_db.png
    :scale: 70%
 
-* Optionally, the database schema. If the table exists in the “default” schema 
-  (e.g. the *public* schema in PostgreSQL or Redshift), you can leave the schema 
+* Optionally, the database schema. If the table exists in the “default” schema
+  (e.g. the *public* schema in PostgreSQL or Redshift), you can leave the schema
   field blank.
 
 Click on the **Save** button to save the configuration:
 
-.. image:: images/tutorial/tutorial_07_save_button.png
+.. image:: _static/images/tutorial/tutorial_07_save_button.png
    :scale: 70%
 
-When redirected back to the list of tables, you should see a message indicating 
+When redirected back to the list of tables, you should see a message indicating
 that your table was created:
 
-.. image:: images/tutorial/tutorial_12_table_creation_success_msg.png
+.. image:: _static/images/tutorial/tutorial_12_table_creation_success_msg.png
    :scale: 70%
 
-This message also directs you to edit the table configuration. We’ll edit a limited 
-portion of the configuration now - just to get you started - and leave the rest for 
+This message also directs you to edit the table configuration. We’ll edit a limited
+portion of the configuration now - just to get you started - and leave the rest for
 a more advanced tutorial.
 
 Click on the edit button next to the table you’ve created:
 
-.. image:: images/tutorial/tutorial_13_edit_table_config.png
+.. image:: _static/images/tutorial/tutorial_13_edit_table_config.png
    :scale: 70%
 
-On the resulting page, click on the **List Table Column** tab. Here, you’ll define the 
-way you can use specific columns of your table when exploring your data. We’ll run 
+On the resulting page, click on the **List Table Column** tab. Here, you’ll define the
+way you can use specific columns of your table when exploring your data. We’ll run
 through these options to describe their purpose:
 
 * If you want users to group metrics by a specific field, mark it as **Groupable**.
 * If you need to filter on a specific field, mark it as **Filterable**.
-* Is this field something you’d like to get the distinct count of? Check the **Count 
+* Is this field something you’d like to get the distinct count of? Check the **Count
   Distinct** box.
-* Is this a metric you want to sum, or get basic summary statistics for? The **Sum**, 
+* Is this a metric you want to sum, or get basic summary statistics for? The **Sum**,
   **Min**, and **Max** columns will help.
-* The **is temporal** field should be checked for any date or time fields. We’ll cover 
+* The **is temporal** field should be checked for any date or time fields. We’ll cover
   how this manifests itself in analyses in a moment.
 
-Here’s how we’ve configured fields for the weather data. Even for measures like the 
-weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter 
+Here’s how we’ve configured fields for the weather data. Even for measures like the
+weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
 by these values:
 
-.. image:: images/tutorial/tutorial_14_field_config.png
+.. image:: _static/images/tutorial/tutorial_14_field_config.png
 
 As with the configurations above, click the **Save** button to save these settings.
 
 Exploring your data
 -------------------
 
-To start exploring your data, simply click on the table name you just created in 
+To start exploring your data, simply click on the table name you just created in
 the list of available tables:
 
-.. image:: images/tutorial/tutorial_15_click_table_name.png
+.. image:: _static/images/tutorial/tutorial_15_click_table_name.png
 
 By default, you’ll be presented with a Table View:
 
-.. image:: images/tutorial/tutorial_16_datasource_chart_type.png
+.. image:: _static/images/tutorial/tutorial_16_datasource_chart_type.png
 
-Let’s walk through a basic query to get the count of all records in our table. 
-First, we’ll need to change the **Since** filter to capture the range of our data. 
+Let’s walk through a basic query to get the count of all records in our table.
+First, we’ll need to change the **Since** filter to capture the range of our data.
 You can use simple phrases to apply these filters, like "3 years ago":
 
-.. image:: images/tutorial/tutorial_17_choose_time_range.png
+.. image:: _static/images/tutorial/tutorial_17_choose_time_range.png
 
-The upper limit for time, the **Until** filter, defaults to "now", which may or may 
+The upper limit for time, the **Until** filter, defaults to "now", which may or may
 not be what you want.
 
-Look for the Metrics section under the **GROUP BY** header, and start typing "Count" 
+Look for the Metrics section under the **GROUP BY** header, and start typing "Count"
 - you’ll see a list of metrics matching what you type:
 
-.. image:: images/tutorial/tutorial_18_choose_metric.png
+.. image:: _static/images/tutorial/tutorial_18_choose_metric.png
 
-Select the *COUNT(\*)* metric, then click the green **Query** button near the top 
+Select the *COUNT(\*)* metric, then click the green **Query** button near the top
 of the explore:
 
-.. image:: images/tutorial/tutorial_19_click_query.png
+.. image:: _static/images/tutorial/tutorial_19_click_query.png
 
 You’ll see your results in the table:
 
-.. image:: images/tutorial/tutorial_20_count_star_result.png
+.. image:: _static/images/tutorial/tutorial_20_count_star_result.png
 
-Let’s group this by the *weather_description* field to get the count of records by 
+Let’s group this by the *weather_description* field to get the count of records by
 the type of weather recorded by adding it to the *Group by* section:
 
-.. image:: images/tutorial/tutorial_21_group_by.png
+.. image:: _static/images/tutorial/tutorial_21_group_by.png
 
 and run the query:
 
-.. image:: images/tutorial/tutorial_22_group_by_result.png
+.. image:: _static/images/tutorial/tutorial_22_group_by_result.png
 
-Let’s find a more useful data point: the top 10 times and places that recorded the 
+Let’s find a more useful data point: the top 10 times and places that recorded the
 highest temperature in 2015.
 
-We replace *weather_description* with *latitude*, *longitude* and *measurement_date* in the 
+We replace *weather_description* with *latitude*, *longitude* and *measurement_date* in the
 *Group by* section:
 
-.. image:: images/tutorial/tutorial_23_group_by_more_dimensions.png
+.. image:: _static/images/tutorial/tutorial_23_group_by_more_dimensions.png
 
 And replace *COUNT(\*)* with *max__measurement_flag*:
 
-.. image:: images/tutorial/tutorial_24_max_metric.png
+.. image:: _static/images/tutorial/tutorial_24_max_metric.png
 
-The *max__measurement_flag* metric was created when we checked the box under **Max** and 
-next to the *measurement_flag* field, indicating that this field was numeric and that 
+The *max__measurement_flag* metric was created when we checked the box under **Max** and
+next to the *measurement_flag* field, indicating that this field was numeric and that
 we wanted to find its maximum value when grouped by specific fields.
 
-In our case, *measurement_flag* is the value of the measurement taken, which clearly 
-depends on the type of measurement (the researchers recorded different values for 
-precipitation and temperature). Therefore, we must filter our query only on records 
-where the *weather_description* is equal to "Maximum temperature", which we do in 
+In our case, *measurement_flag* is the value of the measurement taken, which clearly
+depends on the type of measurement (the researchers recorded different values for
+precipitation and temperature). Therefore, we must filter our query only on records
+where the *weather_description* is equal to "Maximum temperature", which we do in
 the **Filters** section at the bottom of the explore:
 
-.. image:: images/tutorial/tutorial_25_max_temp_filter.png
+.. image:: _static/images/tutorial/tutorial_25_max_temp_filter.png
 
-Finally, since we only care about the top 10 measurements, we limit our results to 
+Finally, since we only care about the top 10 measurements, we limit our results to
 10 records using the *Row limit* option under the **Options** header:
 
-.. image:: images/tutorial/tutorial_26_row_limit.png
+.. image:: _static/images/tutorial/tutorial_26_row_limit.png
 
 We click **Query** and get the following results:
 
-.. image:: images/tutorial/tutorial_27_top_10_max_temps.png
+.. image:: _static/images/tutorial/tutorial_27_top_10_max_temps.png
 
-In this dataset, the maximum temperature is recorded in tenths of a degree Celsius. 
-The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly 
-278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able 
-to investigate some outliers with Superset, but this just scratches the surface of what 
+In this dataset, the maximum temperature is recorded in tenths of a degree Celsius.
+The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly
+278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able
+to investigate some outliers with Superset, but this just scratches the surface of what
 we can do.
 
 You may want to do a couple more things with this measure:
 
-* The default formatting shows values like 1.37k, which may be difficult for some 
-  users to read. It’s likely you may want to see the full, comma-separated value. 
-  You can change the formatting of any measure by editing its config (*Edit Table 
+* The default formatting shows values like 1.37k, which may be difficult for some
+  users to read. It’s likely you may want to see the full, comma-separated value.
+  You can change the formatting of any measure by editing its config (*Edit Table
   Config > List Sql Metric > Edit Metric > D3Format*)
-* Moreover, you may want to see the temperature measurements in plain degrees C, 
-  not tenths of a degree. Or you may want to convert the temperature to degrees 
-  Fahrenheit. You can change the SQL that gets executed against the database, baking 
-  the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit 
+* Moreover, you may want to see the temperature measurements in plain degrees C,
+  not tenths of a degree. Or you may want to convert the temperature to degrees
+  Fahrenheit. You can change the SQL that gets executed against the database, baking
+  the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit
   Metric > SQL Expression*)
 
-For now, though, let’s create a better visualization of these data and add it to 
+For now, though, let’s create a better visualization of these data and add it to
 a dashboard.
 
 We change the Chart Type to "Distribution - Bar Chart":
 
-.. image:: images/tutorial/tutorial_28_bar_chart.png
+.. image:: _static/images/tutorial/tutorial_28_bar_chart.png
 
-Our filter on Maximum temperature measurements was retained, but the query and 
-formatting options are dependent on the chart type, so you’ll have to set the 
+Our filter on Maximum temperature measurements was retained, but the query and
+formatting options are dependent on the chart type, so you’ll have to set the
 values again:
 
-.. image:: images/tutorial/tutorial_29_bar_chart_series_metrics.png
+.. image:: _static/images/tutorial/tutorial_29_bar_chart_series_metrics.png
 
-You should note the extensive formatting options for this chart: the ability to 
-set axis labels, margins, ticks, etc. To make the data presentable to a broad 
-audience, you’ll want to apply many of these to slices that end up in dashboards. 
+You should note the extensive formatting options for this chart: the ability to
+set axis labels, margins, ticks, etc. To make the data presentable to a broad
+audience, you’ll want to apply many of these to slices that end up in dashboards.
 For now, though, we run our query and get the following chart:
 
-.. image:: images/tutorial/tutorial_30_bar_chart_results.png
+.. image:: _static/images/tutorial/tutorial_30_bar_chart_results.png
    :scale: 70%
 
 Creating a slice and dashboard
 ------------------------------
 
-This view might be interesting to researchers, so let’s save it. In Superset, 
-a saved query is called a **Slice**. 
+This view might be interesting to researchers, so let’s save it. In Superset,
+a saved query is called a **Slice**.
 
-To create a slice, click the **Save as** button near the top-left of the 
+To create a slice, click the **Save as** button near the top-left of the
 explore:
 
-.. image:: images/tutorial/tutorial_19_click_query.png
+.. image:: _static/images/tutorial/tutorial_19_click_query.png
 
-A popup should appear, asking you to name the slice, and optionally add it to a 
-dashboard. Since we haven’t yet created any dashboards, we can create one and 
+A popup should appear, asking you to name the slice, and optionally add it to a
+dashboard. Since we haven’t yet created any dashboards, we can create one and
 immediately add our slice to it. Let’s do it:
 
-.. image:: images/tutorial/tutorial_31_save_slice_to_dashboard.png
+.. image:: _static/images/tutorial/tutorial_31_save_slice_to_dashboard.png
    :scale: 70%
 
-Click Save, which will direct you back to your original query. We see that 
+Click Save, which will direct you back to your original query. We see that
 our slice and dashboard were successfully created:
 
-.. image:: images/tutorial/tutorial_32_save_slice_confirmation.png
+.. image:: _static/images/tutorial/tutorial_32_save_slice_confirmation.png
    :scale: 70%
 
 Let’s check out our new dashboard. We click on the **Dashboards** menu:
 
-.. image:: images/tutorial/tutorial_33_dashboard.png
+.. image:: _static/images/tutorial/tutorial_33_dashboard.png
 
 and find the dashboard we just created:
 
-.. image:: images/tutorial/tutorial_34_weather_dashboard.png
+.. image:: _static/images/tutorial/tutorial_34_weather_dashboard.png
 
 Things seemed to have worked - our slice is here!
 
-.. image:: images/tutorial/tutorial_35_slice_on_dashboard.png
+.. image:: _static/images/tutorial/tutorial_35_slice_on_dashboard.png
    :scale: 70%
 
-But it’s a bit smaller than we might like. Luckily, you can adjust the size 
-of slices in a dashboard by clicking, holding and dragging the bottom-right 
+But it’s a bit smaller than we might like. Luckily, you can adjust the size
+of slices in a dashboard by clicking, holding and dragging the bottom-right
 corner to your desired dimensions:
 
-.. image:: images/tutorial/tutorial_36_adjust_dimensions.gif
+.. image:: _static/images/tutorial/tutorial_36_adjust_dimensions.gif
    :scale: 120%
 
-After adjusting the size, you’ll be asked to click on the icon near the 
+After adjusting the size, you’ll be asked to click on the icon near the
 top-right of the dashboard to save the new configuration.
 
-Congrats! You’ve successfully linked, analyzed, and visualized data in Superset. 
-There are a wealth of other table configuration and visualization options, so 
+Congrats! You’ve successfully linked, analyzed, and visualized data in Superset.
+There are a wealth of other table configuration and visualization options, so
 please start exploring and creating slices and dashboards of your own.
diff --git a/_sources/druid.rst.txt b/_sources/druid.rst.txt
index 74139d6..cfbb67f 100644
--- a/_sources/druid.rst.txt
+++ b/_sources/druid.rst.txt
@@ -43,7 +43,7 @@ element corresponds to Druid aggregation definition. You can create your own
 aggregations manually from the ``List Druid Metric`` tab following Druid
 documentation.
 
-.. image:: images/druid_agg.png
+.. image:: _static/images/druid_agg.png
    :scale: 50 %
 
 Post-Aggregations
diff --git a/_sources/gallery.rst.txt b/_sources/gallery.rst.txt
index 27b9c2a..4009af4 100644
--- a/_sources/gallery.rst.txt
+++ b/_sources/gallery.rst.txt
@@ -18,190 +18,189 @@
 Visualizations Gallery
 ======================
 
-.. image:: images/viz_thumbnails/area.png
+.. image:: _static/images/viz_thumbnails/area.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/bar.png
+.. image:: _static/images/viz_thumbnails/bar.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/big_number.png
+.. image:: _static/images/viz_thumbnails/big_number.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/big_number_total.png
+.. image:: _static/images/viz_thumbnails/big_number_total.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/box_plot.png
+.. image:: _static/images/viz_thumbnails/box_plot.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/bubble.png
+.. image:: _static/images/viz_thumbnails/bubble.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/bullet.png
+.. image:: _static/images/viz_thumbnails/bullet.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/cal_heatmap.png
+.. image:: _static/images/viz_thumbnails/cal_heatmap.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/chord.png
+.. image:: _static/images/viz_thumbnails/chord.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/compare.png
+.. image:: _static/images/viz_thumbnails/compare.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/country_map.png
+.. image:: _static/images/viz_thumbnails/country_map.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_arc.png
+.. image:: _static/images/viz_thumbnails/deck_arc.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_geojson.png
+.. image:: _static/images/viz_thumbnails/deck_geojson.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_grid.png
+.. image:: _static/images/viz_thumbnails/deck_grid.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_hex.png
+.. image:: _static/images/viz_thumbnails/deck_hex.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_multi.png
+.. image:: _static/images/viz_thumbnails/deck_multi.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_path.png
+.. image:: _static/images/viz_thumbnails/deck_path.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_polygon.png
+.. image:: _static/images/viz_thumbnails/deck_polygon.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_scatter.png
+.. image:: _static/images/viz_thumbnails/deck_scatter.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/deck_screengrid.png
+.. image:: _static/images/viz_thumbnails/deck_screengrid.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/directed_force.png
+.. image:: _static/images/viz_thumbnails/directed_force.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/dist_bar.png
+.. image:: _static/images/viz_thumbnails/dist_bar.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/dual_line.png
+.. image:: _static/images/viz_thumbnails/dual_line.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/event_flow.png
+.. image:: _static/images/viz_thumbnails/event_flow.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/filter_box.png
+.. image:: _static/images/viz_thumbnails/filter_box.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/heatmap.png
+.. image:: _static/images/viz_thumbnails/heatmap.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/histogram.png
+.. image:: _static/images/viz_thumbnails/histogram.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/horizon.png
+.. image:: _static/images/viz_thumbnails/horizon.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/iframe.png
+.. image:: _static/images/viz_thumbnails/iframe.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/line.png
+.. image:: _static/images/viz_thumbnails/line.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/mapbox.png
+.. image:: _static/images/viz_thumbnails/mapbox.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/markup.png
+.. image:: _static/images/viz_thumbnails/markup.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/paired_ttest.png
+.. image:: _static/images/viz_thumbnails/paired_ttest.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/para.png
+.. image:: _static/images/viz_thumbnails/para.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/partition.png
+.. image:: _static/images/viz_thumbnails/partition.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/pie.png
+.. image:: _static/images/viz_thumbnails/pie.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/pivot_table.png
+.. image:: _static/images/viz_thumbnails/pivot_table.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/rose.png
+.. image:: _static/images/viz_thumbnails/rose.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/sankey.png
+.. image:: _static/images/viz_thumbnails/sankey.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/separator.png
+.. image:: _static/images/viz_thumbnails/separator.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/sunburst.png
+.. image:: _static/images/viz_thumbnails/sunburst.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/table.png
+.. image:: _static/images/viz_thumbnails/table.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/time_pivot.png
+.. image:: _static/images/viz_thumbnails/time_pivot.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/time_table.png
+.. image:: _static/images/viz_thumbnails/time_table.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/treemap.png
+.. image:: _static/images/viz_thumbnails/treemap.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/word_cloud.png
+.. image:: _static/images/viz_thumbnails/word_cloud.png
    :scale: 25 %
 
 
-.. image:: images/viz_thumbnails/world_map.png
+.. image:: _static/images/viz_thumbnails/world_map.png
    :scale: 25 %
-
diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt
index 7727ff4..049885f 100644
--- a/_sources/index.rst.txt
+++ b/_sources/index.rst.txt
@@ -17,12 +17,12 @@
 
 |apache_img| |superset_img|
 
-.. |apache_img| image:: images/apache_feather.png
+.. |apache_img| image:: _static/images/apache_feather.png
    :width: 7%
    :target: http://www.apache.org/
    :alt: The Apache Software Foundation
 
-.. |superset_img| image:: images/s.png
+.. |superset_img| image:: _static/images/s.png
    :width: 25%
 
 Apache Superset (incubating)
@@ -53,6 +53,7 @@ intelligence web application
 
 Superset Resources
 ==================
+- Versioned versions of this documentation: https://readthedocs.org/projects/apache-superset/
 - `Superset's Github <https://github.com/apache/incubator-superset>`_, note
   that `we use Github for issue tracking <https://github.com/apache/incubator-superset/issues>`_
 - Superset's
@@ -109,6 +110,8 @@ The following RDBMS are currently supported:
 - `Apache Spark SQL <https://spark.apache.org/sql/>`_
 - `BigQuery <https://cloud.google.com/bigquery/>`_
 - `ClickHouse <https://clickhouse.yandex/>`_
+- `CockroachDB <https://www.cockroachlabs.com/>`_
+- `Dremio <https://dremio.com/>`_
 - `Elasticsearch <https://www.elastic.co/products/elasticsearch/>`_
 - `Exasol <https://www.exasol.com/>`_
 - `Google Sheets <https://www.google.com/sheets/about/>`_
@@ -131,19 +134,19 @@ be supported as well.
 Screenshots
 -----------
 
-.. image:: images/screenshots/bank_dash.png
+.. image:: _static/images/screenshots/bank_dash.png
 
 ------
 
-.. image:: images/screenshots/explore.png
+.. image:: _static/images/screenshots/explore.png
 
 ------
 
-.. image:: images/screenshots/sqllab.png
+.. image:: _static/images/screenshots/sqllab.png
 
 ------
 
-.. image:: images/screenshots/deckgl_dash.png
+.. image:: _static/images/screenshots/deckgl_dash.png
 
 ------
 
diff --git a/_sources/installation.rst.txt b/_sources/installation.rst.txt
index 2199494..c08dab1 100644
--- a/_sources/installation.rst.txt
+++ b/_sources/installation.rst.txt
@@ -70,7 +70,10 @@ initialize development environment: ::
     docker-compose up
 
 After several minutes for superset initialization to finish, you can open
-a browser and view `http://localhost:8088` to start your journey.
+a browser and view `http://localhost:8088` to start your journey. By default
+the system configures an admin user with the username of `admin` and a password
+of `admin` - if you are in a non-local environment it is highly recommended to
+change this username and password at your earliest convenience.
 
 From there, the container server will reload on modification of the superset python
 and javascript source code.
@@ -178,7 +181,7 @@ Follow these few simple steps to install Superset.::
 
     # Create an admin user (you will be prompted to set a username, first and last name before setting a password)
     $ export FLASK_APP=superset
-    flask fab create-admin
+    superset fab create-admin
 
     # Load some data to play with
     superset load_examples
@@ -372,6 +375,10 @@ Here's a list of some of the recommended packages.
 +------------------+---------------------------------------+-------------------------------------------------+
 | ClickHouse       | ``pip install sqlalchemy-clickhouse`` |                                                 |
 +------------------+---------------------------------------+-------------------------------------------------+
+| CockroachDB      | ``pip install cockroachdb``           | ``cockroachdb://``                              |
++------------------+---------------------------------------+-------------------------------------------------+
+| Dremio           | ``pip install sqlalchemy_dremio``     | ``dremio://user:pwd@host:31010/``               |
++------------------+---------------------------------------+-------------------------------------------------+
 | Elasticsearch    | ``pip install elasticsearch-dbapi``   | ``elasticsearch+http://``                       |
 +------------------+---------------------------------------+-------------------------------------------------+
 | Exasol           | ``pip install sqlalchemy-exasol``     | ``exa+pyodbc://``                               |
@@ -400,7 +407,8 @@ Here's a list of some of the recommended packages.
 |                  | sqlalchemy-vertica-python``           |                                                 |
 +------------------+---------------------------------------+-------------------------------------------------+
 | Hana             | ``pip install hdbcli sqlalchemy-hana``|  ``hana://``                                    |
-|                  | or ``pip install superset[hana]``     |                                                 |
+|                  | or                                    |                                                 |
+|                  | ``pip install apache-superset[hana]`` |                                                 |
 +------------------+---------------------------------------+-------------------------------------------------+
 
 
@@ -521,7 +529,11 @@ The role and warehouse can be omitted if defaults are defined for the user, i.e.
 
 Make sure the user has privileges to access and use all required
 databases/schemas/tables/views/warehouses, as the Snowflake SQLAlchemy engine does
-not test for user rights during engine creation.
+not test for user/role rights during engine creation by default. However, when
+pressing the "Test Connection" button in the Create or Edit Database dialog,
+user/role credentials are validated by passing `"validate_default_parameters": True`
+to the `connect()` method during engine creation. If the user/role is not authorized
+to access the database, an error is recorded in the Superset logs.
 
 See `Snowflake SQLAlchemy <https://github.com/snowflakedb/snowflake-sqlalchemy>`_.
 
@@ -643,7 +655,7 @@ It is possible to tweak the database connection information using the
 parameters exposed by SQLAlchemy. In the ``Database`` edit view, you will
 find an ``extra`` field as a ``JSON`` blob.
 
-.. image:: images/tutorial/add_db.png
+.. image:: _static/images/tutorial/add_db.png
    :scale: 30 %
 
 This JSON string contains extra configuration elements. The ``engine_params``
@@ -713,17 +725,25 @@ parameter ::
 Druid
 -----
 
-* From the UI, enter the information about your clusters in the
-  `Sources -> Druid Clusters` menu by hitting the + sign.
+The native Druid connector (behind the ``DRUID_IS_ACTIVE`` feature flag)
+is slowly getting deprecated in favor of the SQLAlchemy/DBAPI connector made
+available in the ``pydruid`` library.
 
-* Once the Druid cluster connection information is entered, hit the
-  `Sources -> Refresh Druid Metadata` menu item to populate
+To use a custom SSL certificate to validate HTTPS requests, the certificate
+contents can be entered in the ``Root Certificate`` field in the Database
+dialog. When using a custom certificate, ``pydruid`` will automatically use
+``https`` scheme. To disable SSL verification add the following to extras:
+``engine_params": {"connect_args": {"scheme": "https", "ssl_verify_cert": false}}``
+
+Dremio
+------
 
-* Navigate to your datasources
+Install the following dependencies to connect to Dremio:
 
-Note that you can run the ``superset refresh_druid`` command to refresh the
-metadata from your Druid cluster(s)
+* Dremio SQLAlchemy: ``pip install sqlalchemy_dremio``
+* Dremio's ODBC driver: https://www.dremio.com/drivers/
 
+Example SQLAlchemy URI: ``dremio://dremio:dremio123@localhost:31010/dremio``
 
 Presto
 ------
@@ -761,8 +781,9 @@ CORS
 
 The extra CORS Dependency must be installed:
 
-    superset[cors]
+.. code-block:: text
 
+    pip install apache-superset[cors]
 
 The following keys in `superset_config.py` can be specified to configure CORS:
 
diff --git a/_sources/security.rst.txt b/_sources/security.rst.txt
index 0e796e3..911aabe 100644
--- a/_sources/security.rst.txt
+++ b/_sources/security.rst.txt
@@ -87,7 +87,7 @@ sure the users with limited access have [only] the Gamma role assigned to
 them. Second, create a new role (``Menu -> Security -> List Roles``) and
 click the ``+`` sign.
 
-.. image:: images/create_role.png
+.. image:: _static/images/create_role.png
    :scale: 50 %
 
 This new window allows you to give this new role a name, attribute it to users
@@ -153,3 +153,26 @@ a set of data sources that power dashboards only made available to executives.
 When looking at its dashboard list, this user will only see the
 list of dashboards it has access to, based on the roles and
 permissions that were attributed.
+
+
+Restricting access to a subset of a particular table
+""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+Using ``Row level security filters`` (under the ``Security`` menu) you can create 
+filters that are assigned to a particular table, as well as a set of roles. 
+Say people in your finance department should only have access to rows where 
+``department = "finance"``.  You could create a ``Row level security filter`` 
+with that clause, and assign it to your ``Finance`` role, as well as the 
+applicable table.
+
+The ``clause`` field can contain arbitrary text which is then added to the generated 
+SQL statement's ``WHERE`` clause.  So you could even do something like create a 
+filter for the last 30 days and apply it to a specific role, with a clause like 
+``date_field > DATE_SUB(NOW(), INTERVAL 30 DAY)``.  It can also support multiple 
+conditions: ``client_id = 6 AND advertiser="foo"``, etc. 
+
+All relevant ``Row level security filters`` will be ANDed together, so it's 
+possible to create a situation where two roles conflict in such a way as to 
+limit a table subset to empty.  For example, the filters ``client_id=4`` and 
+and ``client_id=5``, applied to a role, will result in users of that role having 
+``client_id=4 AND client_id=5`` added to their query, which can never be true.
\ No newline at end of file
diff --git a/_sources/sqllab.rst.txt b/_sources/sqllab.rst.txt
index 6060726..992a689 100644
--- a/_sources/sqllab.rst.txt
+++ b/_sources/sqllab.rst.txt
@@ -23,7 +23,7 @@ SQL Lab is a modern, feature-rich SQL IDE written in
 
 ------
 
-.. image:: images/screenshots/sqllab.png
+.. image:: _static/images/screenshots/sqllab.png
 
 ------
 
diff --git a/_sources/usertutorial.rst.txt b/_sources/usertutorial.rst.txt
index 096a229..9c69262 100644
--- a/_sources/usertutorial.rst.txt
+++ b/_sources/usertutorial.rst.txt
@@ -44,7 +44,7 @@ In the top menu, select :menuselection:`Sources --> Databases`. Find the
 :guilabel:`examples` database in the list and select the edit record
 button.
 
-.. image:: images/usertutorial/edit-record.png
+.. image:: _static/images/usertutorial/edit-record.png
 
 Within the :guilabel:`Edit Database` page, check the
 :guilabel:`Allow Csv Upload` checkbox.
@@ -59,17 +59,17 @@ Download the data for this tutorial to your computer from
 
 In the top menu, select :menuselection:`Sources --> Upload a CSV`.
 
-.. image:: images/usertutorial/upload_a_csv.png
+.. image:: _static/images/usertutorial/upload_a_csv.png
 
 Then, enter the :guilabel:`Table name` as `tutorial_flights`
 and select the :guilabel:`CSV file` from your computer.
 
-.. image:: images/usertutorial/csv_to_database_configuration.png
+.. image:: _static/images/usertutorial/csv_to_database_configuration.png
 
 Next enter the text `Travel Date` into the
 :guilabel:`Parse Dates` field.
 
-.. image:: images/usertutorial/parse_dates_column.png
+.. image:: _static/images/usertutorial/parse_dates_column.png
 
 Leaving all the other options in their default settings, select
 :guilabel:`Save` at the bottom of the page.
@@ -82,17 +82,17 @@ the number of flights and cost per travel class.
 
 To create a new chart, select the :menuselection:`New --> Chart`.
 
-.. image:: images/usertutorial/add_new_chart.png
+.. image:: _static/images/usertutorial/add_new_chart.png
 
 Once in the :guilabel:`Create a new chart` dialogue, select
 :guilabel:`tutorial_flights` from the :guilabel:`Chose a datasource`
 dropdown.
 
-.. image:: images/usertutorial/chose_a_datasource.png
+.. image:: _static/images/usertutorial/chose_a_datasource.png
 
 Next, select the visualization type as :guilabel:`Table`.
 
-.. image:: images/usertutorial/select_table_visualization_type.png
+.. image:: _static/images/usertutorial/select_table_visualization_type.png
 
 Then, select :guilabel:`Create new chart` to go into the chart view.
 
@@ -103,7 +103,7 @@ within the :guilabel:`Time` section, remove the filter on
 changing the selection to :guilabel:`No filter`, with a final
 :guilabel:`OK` to confirm your selection.
 
-.. image:: images/usertutorial/no_filter_on_time_filter.png
+.. image:: _static/images/usertutorial/no_filter_on_time_filter.png
 
 Now, we want to specify the rows in our table by using the
 :guilabel:`Group by` option. Since in this example, we want to
@@ -117,11 +117,11 @@ since we have a row per flight), is already there. To add cost, within
 :guilabel:`Metrics`, select :guilabel:`Cost`. :guilabel:`Save` the
 default aggregation option, which is to sum the column.
 
-.. image:: images/usertutorial/sum_cost_column.png
+.. image:: _static/images/usertutorial/sum_cost_column.png
 
 Finally, select :guilabel:`Run Query` to see the results of the table.
 
-.. image:: images/usertutorial/tutorial_table.png
+.. image:: _static/images/usertutorial/tutorial_table.png
 
 Congratulations, you have created your first visualization in Apache
 Superset!
@@ -133,7 +133,7 @@ name as Tutorial Table (you will be able to find it again through the
 select :guilabel:`Add to new dashboard` and enter `Tutorial Dashboard`.
 Finally, select :guilabel:`Save & go to dashboard`.
 
-.. image:: images/usertutorial/save_tutorial_table.png
+.. image:: _static/images/usertutorial/save_tutorial_table.png
 
 Dashboard basics
 ----------------
@@ -149,7 +149,7 @@ section. Select :guilabel:`Edit dashboard` and then hover over the
 table. By selecting the bottom right hand corner of the table (the
 cursor will change too), you can resize it by dragging and dropping.
 
-.. image:: images/usertutorial/resize_tutorial_table_on_dashboard.png
+.. image:: _static/images/usertutorial/resize_tutorial_table_on_dashboard.png
 
 Finally, save your changes by selecting :guilabel:`Save changes` in the
 top right.
@@ -180,7 +180,7 @@ June 2011 respectively by either entering directly the dates or using
 the calendar widget (by selecting the month name and then the year, you
 can move more quickly to far away dates).
 
-.. image:: images/usertutorial/select_dates_pivot_table.png
+.. image:: _static/images/usertutorial/select_dates_pivot_table.png
 
 Next, within the :guilabel:`Query` section, remove the default COUNT(*)
 and add Cost, keeping the default SUM aggregate. Note that Apache
@@ -196,12 +196,12 @@ Within :guilabel:`Columns`, select first :guilabel:`Department` and then
 :guilabel:`Travel Class`. All set – let’s :guilabel:`Run Query` to see
 some data!
 
-.. image:: images/usertutorial/tutorial_pivot_table.png
+.. image:: _static/images/usertutorial/tutorial_pivot_table.png
 
 You should see months in the rows and Department and Travel Class in the
 columns. To get this in our dashboard, select :guilabel:`Save`, name the
 chart Tutorial Pivot and using
-:guilabel:`Add chart to existing dashboard` select 
+:guilabel:`Add chart to existing dashboard` select
 :guilabel:`Tutorial Dashboard`, and then finally
 :guilabel:`Save & go to dashboard`.
 
@@ -224,7 +224,7 @@ add :guilabel:`Cost`. This time, we want to change how this column is
 aggregated to show the mean value: we can do this by selecting
 :guilabel:`AVG` in the :guilabel:`aggregate` dropdown.
 
-.. image:: images/usertutorial/average_aggregate_for_cost.png
+.. image:: _static/images/usertutorial/average_aggregate_for_cost.png
 
 Next, select :guilabel:`Run Query` to show the data on the chart.
 
@@ -245,7 +245,7 @@ filter by selecting No in the :guilabel:`Show Range Filter` drop down
 and adding some labels using :guilabel:`X Axis Label` and
 :guilabel:`Y Axis Label`.
 
-.. image:: images/usertutorial/tutorial_line_chart.png
+.. image:: _static/images/usertutorial/tutorial_line_chart.png
 
 Once you’re done, :guilabel:`Save` as Tutorial Line Chart, use
 :guilabel:`Add chart to
@@ -265,7 +265,7 @@ Within the Insert components pane, drag and drop a :guilabel:`Markdown`
 box on the dashboard. Look for the blue lines which indicate the anchor
 where the box will go.
 
-.. image:: images/usertutorial/blue_bar_insert_component.png
+.. image:: _static/images/usertutorial/blue_bar_insert_component.png
 
 Now, to edit the text, select the box. You can enter text, in markdown
 format (see `this Markdown
@@ -274,7 +274,7 @@ for more information about this format). You can toggle between
 :guilabel:`Edit` and :guilabel:`Preview` using the menu on the top of
 the box.
 
-.. image:: images/usertutorial/markdown.png
+.. image:: _static/images/usertutorial/markdown.png
 
 To exit, select any other part of the dashboard. Finally, don’t forget
 to keep your changes using :guilabel:`Save changes`.
@@ -307,7 +307,7 @@ select :guilabel:`Run Query`. This gives us a preview of our filter.
 Next, remove the date filter by unchecking the :guilabel:`Date Filter`
 checkbox.
 
-.. image:: images/usertutorial/filter_on_origin_country.png
+.. image:: _static/images/usertutorial/filter_on_origin_country.png
 
 Finally, select :guilabel:`Save`, name the chart as Tutorial Filter, add
 the chart to our existing Tutorial Dashboard and then
@@ -329,7 +329,7 @@ simply select :guilabel:`Draft` next to the title of your dashboard on
 the top left to change your dashboard to be in :guilabel:`Published`
 state. You can also favorite this dashboard by selecting the star.
 
-.. image:: images/usertutorial/publish_dashboard.png
+.. image:: _static/images/usertutorial/publish_dashboard.png
 
 Taking your dashboard further
 -----------------------------
@@ -358,7 +358,7 @@ by selecting the green plus sign. Then, select the
 :guilabel:`Volcanic Eruptions` layer, add a short description Grímsvötn
 and the eruption dates (23-25 May 2011) before finally saving.
 
-.. image:: images/usertutorial/edit_annotation.png
+.. image:: _static/images/usertutorial/edit_annotation.png
 
 Then, navigate to the line chart by going to :guilabel:`Charts` then
 selecting :guilabel:`Tutorial
@@ -368,14 +368,14 @@ Line Chart` from the list. Next, go to the
 
 - name the layer as `Volcanic Eruptions`
 - change the :guilabel:`Annotation Layer Type` to :guilabel:`Event`
-- set the :guilabel:`Annotation Source` as :guilabel:`Superset annotation` 
+- set the :guilabel:`Annotation Source` as :guilabel:`Superset annotation`
 - specify the :guilabel:`Annotation Layer` as :guilabel:`Volcanic Eruptions`
 
-.. image:: images/usertutorial/annotation_settings.png
+.. image:: _static/images/usertutorial/annotation_settings.png
 
 Select :guilabel:`Apply` to see your annotation shown on the chart.
 
-.. image:: images/usertutorial/annotation.png
+.. image:: _static/images/usertutorial/annotation.png
 
 If you wish, you can change how your annotation looks by changing the
 settings in the :guilabel:`Display configuration` section. Otherwise,
@@ -418,7 +418,7 @@ Next, in the query section, change the :guilabel:`Metrics` to the sum of
 :guilabel:`Cost`. Select :guilabel:`Run Query` to show the chart. You
 should see the total cost per day for each month in October 2011.
 
-.. image:: images/usertutorial/advanced_analytics_base.png
+.. image:: _static/images/usertutorial/advanced_analytics_base.png
 
 Finally, save the visualization as Tutorial Advanced Analytics Base,
 adding it to the Tutorial Dashboard.
@@ -443,7 +443,7 @@ After displaying the chart by selecting :guilabel:`Run Query` you will
 see that the data is less variable and that the series starts later as
 the ramp up period is excluded.
 
-.. image:: images/usertutorial/rolling_mean.png
+.. image:: _static/images/usertutorial/rolling_mean.png
 
 Save the chart as Tutorial Rolling Mean and add it to the Tutorial
 Dashboard.
@@ -464,14 +464,14 @@ typing in "minus 1 week" (note this box accepts input in natural
 language). :guilabel:`Run Query` to see the new chart, which has an
 additional series with the same values, shifted a week back in time.
 
-.. image:: images/usertutorial/time_comparison_two_series.png
+.. image:: _static/images/usertutorial/time_comparison_two_series.png
 
 Then, change the :guilabel:`Calculation type` to
 :guilabel:`Absolute difference` and select :guilabel:`Run
 Query`. We can now see only one series again, this time showing the
 difference between the two series we saw previously.
 
-.. image:: images/usertutorial/time_comparison_absolute_difference.png
+.. image:: _static/images/usertutorial/time_comparison_absolute_difference.png
 
 Save the chart as Tutorial Time Comparison and add it to the Tutorial
 Dashboard.
@@ -488,7 +488,7 @@ Next, in the :guilabel:`Python Functions` subsection of
 in the :guilabel:`Rule` and median as the :guilabel:`Method` and show
 the chart by selecting :guilabel:`Run Query`.
 
-.. image:: images/usertutorial/resample.png
+.. image:: _static/images/usertutorial/resample.png
 
 Note that now we have a single data point every 7 days. In our case, the
 value showed corresponds to the median value within the seven daily data
@@ -505,4 +505,3 @@ side and compare the different outputs.
 .. [#f1] See the Pandas `rolling method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html>`_ for more information.
 .. [#f2] See the Pandas `cumsum method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.cumsum.html>`_ for more information.
 .. [#f3] See the Pandas `resample method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html>`_ for more information.
-
diff --git a/_sources/visualization.rst.txt b/_sources/visualization.rst.txt
index 6351847..b56a979 100644
--- a/_sources/visualization.rst.txt
+++ b/_sources/visualization.rst.txt
@@ -95,7 +95,7 @@ List of Countries
 +----------+-----------------------+
 |  BR-MS   | Mato Grosso do Sul    |
 +----------+-----------------------+
-|  BR-MT   | Mato Grosso           | 
+|  BR-MT   | Mato Grosso           |
 +----------+-----------------------+
 |  BR-MG   | Minas Gerais          |
 +----------+-----------------------+
@@ -105,11 +105,11 @@ List of Countries
 +----------+-----------------------+
 |  BR-PR   | Paraná                |
 +----------+-----------------------+
-|  BR-PE   | Pernambuco            |  
+|  BR-PE   | Pernambuco            |
 +----------+-----------------------+
-|  BR-PI   | Piauí                 |  
+|  BR-PI   | Piauí                 |
 +----------+-----------------------+
-|  BR-RJ   | Rio de Janeiro        |  
+|  BR-RJ   | Rio de Janeiro        |
 +----------+-----------------------+
 |  BR-RN   | Rio Grande do Norte   |
 +----------+-----------------------+
@@ -1789,7 +1789,7 @@ List of Countries
 +------+------------------------------+
 |ISO   | Name of region               |
 +======+==============================+
-|UA-71 |           Cherkasy           |  
+|UA-71 |           Cherkasy           |
 +------+------------------------------+
 |UA-74 |         Chernihiv            |
 +------+------------------------------+
@@ -1815,7 +1815,7 @@ List of Countries
 +------+------------------------------+
 |UA-35 |         Kirovohrad           |
 +------+------------------------------+
-|UA-46 |         L'viv                | 
+|UA-46 |         L'viv                |
 +------+------------------------------+
 |UA-09 |         Luhans'k             |
 +------+------------------------------+
@@ -1823,7 +1823,7 @@ List of Countries
 +------+------------------------------+
 |UA-51 |         Odessa               |
 +------+------------------------------+
-|UA-53 |         Poltava              | 
+|UA-53 |         Poltava              |
 +------+------------------------------+
 |UA-56 |         Rivne                |
 +------+------------------------------+
@@ -1964,17 +1964,17 @@ To add a new country in country map tools, we need to follow the following steps
 1. You need shapefiles which contain data of your map.
    You can get this file on this site: https://www.diva-gis.org/gdata
 
-2. You need to add ISO 3166-2 with column name ISO for all record in your file. 
+2. You need to add ISO 3166-2 with column name ISO for all record in your file.
    It's important because it's a norm for mapping your data with geojson file
 
 3. You need to convert shapefile to geojson file.
    This action can make with ogr2ogr tools: https://www.gdal.org/ogr2ogr.html
 
-4. Put your geojson file in next folder : superset/assets/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson
+4. Put your geojson file in next folder : superset-frontend/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson
 
 5. You can to reduce size of geojson file on this site: https://mapshaper.org/
 
-6. Go in file superset/assets/src/explore/controls.jsx
+6. Go in file superset-frontend/src/explore/controls.jsx
 
 7. Add your country in component 'select_country'
    Example :
@@ -2005,7 +2005,3 @@ To add a new country in country map tools, we need to follow the following steps
         ].map(s => [s, s]),
         description: 'The name of country that Superset should display',
     },
-       
-
-
-
diff --git a/admintutorial.html b/admintutorial.html
index b342a0a..3dcfb0f 100644
--- a/admintutorial.html
+++ b/admintutorial.html
@@ -180,19 +180,19 @@ into a fresh DB, or configure the
 <a class="reference external" href="https://github.com/dylburger/noaa-ghcn-weather-data">example weather data</a>
 we use here.</p>
 <p>Under the <strong>Sources</strong> menu, select the <em>Databases</em> option:</p>
-<a class="reference internal image-reference" href="_images/tutorial_01_sources_database.png"><img alt="_images/tutorial_01_sources_database.png" src="_images/tutorial_01_sources_database.png" style="width: 316.4px; height: 187.6px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_01_sources_database.png"><img alt="_static/images/tutorial/tutorial_01_sources_database.png" src="_static/images/tutorial/tutorial_01_sources_database.png" /></a>
 <p>On the resulting page, click on the green plus sign, near the top right:</p>
-<a class="reference internal image-reference" href="_images/tutorial_02_add_database.png"><img alt="_images/tutorial_02_add_database.png" src="_images/tutorial_02_add_database.png" style="width: 359.79999999999995px; height: 270.2px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_02_add_database.png"><img alt="_static/images/tutorial/tutorial_02_add_database.png" src="_static/images/tutorial/tutorial_02_add_database.png" /></a>
 <p>You can configure a number of advanced options on this page, but for
 this walkthrough, you’ll only need to do <strong>two things</strong>:</p>
 <ol class="arabic simple">
 <li><p>Name your database connection:</p></li>
 </ol>
-<a class="reference internal image-reference" href="_images/tutorial_03_database_name.png"><img alt="_images/tutorial_03_database_name.png" src="_images/tutorial_03_database_name.png" style="width: 554.4px; height: 98.0px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_03_database_name.png"><img alt="_static/images/tutorial/tutorial_03_database_name.png" src="_static/images/tutorial/tutorial_03_database_name.png" /></a>
 <ol class="arabic simple" start="2">
 <li><p>Provide the SQLAlchemy Connection URI and test the connection:</p></li>
 </ol>
-<a class="reference internal image-reference" href="_images/tutorial_04_sqlalchemy_connection_string.png"><img alt="_images/tutorial_04_sqlalchemy_connection_string.png" src="_images/tutorial_04_sqlalchemy_connection_string.png" style="width: 1071.0px; height: 196.0px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_04_sqlalchemy_connection_string.png"><img alt="_static/images/tutorial/tutorial_04_sqlalchemy_connection_string.png" src="_static/images/tutorial/tutorial_04_sqlalchemy_connection_string.png" /></a>
 <p>This example shows the connection string for our test weather database.
 As noted in the text below the URI, you should refer to the SQLAlchemy
 documentation on
@@ -201,47 +201,47 @@ for your target database.</p>
 <p>Click the <strong>Test Connection</strong> button to confirm things work end to end.
 Once Superset can successfully connect and authenticate, you should see
 a popup like this:</p>
-<a class="reference internal image-reference" href="_images/tutorial_05_connection_popup.png"><img alt="_images/tutorial_05_connection_popup.png" src="_images/tutorial_05_connection_popup.png" style="width: 562.0px; height: 277.0px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_05_connection_popup.png"><img alt="_static/images/tutorial/tutorial_05_connection_popup.png" src="_static/images/tutorial/tutorial_05_connection_popup.png" /></a>
 <p>Moreover, you should also see the list of tables Superset can read from
 the schema you’re connected to, at the bottom of the page:</p>
-<a class="reference internal image-reference" href="_images/tutorial_06_list_of_tables.png"><img alt="_images/tutorial_06_list_of_tables.png" src="_images/tutorial_06_list_of_tables.png" style="width: 963.1999999999999px; height: 127.39999999999999px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_06_list_of_tables.png"><img alt="_static/images/tutorial/tutorial_06_list_of_tables.png" src="_static/images/tutorial/tutorial_06_list_of_tables.png" /></a>
 <p>If the connection looks good, save the configuration by clicking the <strong>Save</strong>
 button at the bottom of the page:</p>
-<a class="reference internal image-reference" href="_images/tutorial_07_save_button.png"><img alt="_images/tutorial_07_save_button.png" src="_images/tutorial_07_save_button.png" style="width: 187.6px; height: 85.39999999999999px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_07_save_button.png"><img alt="_static/images/tutorial/tutorial_07_save_button.png" src="_static/images/tutorial/tutorial_07_save_button.png" /></a>
 </div>
 <div class="section" id="adding-a-new-table">
 <h2>Adding a new table<a class="headerlink" href="#adding-a-new-table" title="Permalink to this headline">¶</a></h2>
 <p>Now that you’ve configured a database, you’ll need to add specific tables
 to Superset that you’d like to query.</p>
 <p>Under the <strong>Sources</strong> menu, select the <em>Tables</em> option:</p>
-<a class="reference internal image-reference" href="_images/tutorial_08_sources_tables.png"><img alt="_images/tutorial_08_sources_tables.png" src="_images/tutorial_08_sources_tables.png" style="width: 315.0px; height: 187.6px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_08_sources_tables.png"><img alt="_static/images/tutorial/tutorial_08_sources_tables.png" src="_static/images/tutorial/tutorial_08_sources_tables.png" /></a>
 <p>On the resulting page, click on the green plus sign, near the top left:</p>
-<a class="reference internal image-reference" href="_images/tutorial_09_add_new_table.png"><img alt="_images/tutorial_09_add_new_table.png" src="_images/tutorial_09_add_new_table.png" style="width: 322.0px; height: 232.39999999999998px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_09_add_new_table.png"><img alt="_static/images/tutorial/tutorial_09_add_new_table.png" src="_static/images/tutorial/tutorial_09_add_new_table.png" /></a>
 <p>You only need a few pieces of information to add a new table to Superset:</p>
 <ul class="simple">
 <li><p>The name of the table</p></li>
 </ul>
-<a class="reference internal image-reference" href="_images/tutorial_10_table_name.png"><img alt="_images/tutorial_10_table_name.png" src="_images/tutorial_10_table_name.png" style="width: 772.8px; height: 130.2px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_10_table_name.png"><img alt="_static/images/tutorial/tutorial_10_table_name.png" src="_static/images/tutorial/tutorial_10_table_name.png" /></a>
 <ul class="simple">
 <li><p>The target database from the <strong>Database</strong> drop-down menu (i.e. the one
 you just added above)</p></li>
 </ul>
-<a class="reference internal image-reference" href="_images/tutorial_11_choose_db.png"><img alt="_images/tutorial_11_choose_db.png" src="_images/tutorial_11_choose_db.png" style="width: 387.79999999999995px; height: 229.6px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_11_choose_db.png"><img alt="_static/images/tutorial/tutorial_11_choose_db.png" src="_static/images/tutorial/tutorial_11_choose_db.png" /></a>
 <ul class="simple">
 <li><p>Optionally, the database schema. If the table exists in the “default” schema
 (e.g. the <em>public</em> schema in PostgreSQL or Redshift), you can leave the schema
 field blank.</p></li>
 </ul>
 <p>Click on the <strong>Save</strong> button to save the configuration:</p>
-<a class="reference internal image-reference" href="_images/tutorial_07_save_button.png"><img alt="_images/tutorial_07_save_button.png" src="_images/tutorial_07_save_button.png" style="width: 187.6px; height: 85.39999999999999px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_07_save_button.png"><img alt="_static/images/tutorial/tutorial_07_save_button.png" src="_static/images/tutorial/tutorial_07_save_button.png" /></a>
 <p>When redirected back to the list of tables, you should see a message indicating
 that your table was created:</p>
-<a class="reference internal image-reference" href="_images/tutorial_12_table_creation_success_msg.png"><img alt="_images/tutorial_12_table_creation_success_msg.png" src="_images/tutorial_12_table_creation_success_msg.png" style="width: 1260.0px; height: 89.6px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_12_table_creation_success_msg.png"><img alt="_static/images/tutorial/tutorial_12_table_creation_success_msg.png" src="_static/images/tutorial/tutorial_12_table_creation_success_msg.png" /></a>
 <p>This message also directs you to edit the table configuration. We’ll edit a limited
 portion of the configuration now - just to get you started - and leave the rest for
 a more advanced tutorial.</p>
 <p>Click on the edit button next to the table you’ve created:</p>
-<a class="reference internal image-reference" href="_images/tutorial_13_edit_table_config.png"><img alt="_images/tutorial_13_edit_table_config.png" src="_images/tutorial_13_edit_table_config.png" style="width: 509.59999999999997px; height: 180.6px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_13_edit_table_config.png"><img alt="_static/images/tutorial/tutorial_13_edit_table_config.png" src="_static/images/tutorial/tutorial_13_edit_table_config.png" /></a>
 <p>On the resulting page, click on the <strong>List Table Column</strong> tab. Here, you’ll define the
 way you can use specific columns of your table when exploring your data. We’ll run
 through these options to describe their purpose:</p>
@@ -258,42 +258,42 @@ how this manifests itself in analyses in a moment.</p></li>
 <p>Here’s how we’ve configured fields for the weather data. Even for measures like the
 weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
 by these values:</p>
-<img alt="_images/tutorial_14_field_config.png" src="_images/tutorial_14_field_config.png" />
+<img alt="_static/images/tutorial/tutorial_14_field_config.png" src="_static/images/tutorial/tutorial_14_field_config.png" />
 <p>As with the configurations above, click the <strong>Save</strong> button to save these settings.</p>
 </div>
 <div class="section" id="exploring-your-data">
 <h2>Exploring your data<a class="headerlink" href="#exploring-your-data" title="Permalink to this headline">¶</a></h2>
 <p>To start exploring your data, simply click on the table name you just created in
 the list of available tables:</p>
-<img alt="_images/tutorial_15_click_table_name.png" src="_images/tutorial_15_click_table_name.png" />
+<img alt="_static/images/tutorial/tutorial_15_click_table_name.png" src="_static/images/tutorial/tutorial_15_click_table_name.png" />
 <p>By default, you’ll be presented with a Table View:</p>
-<img alt="_images/tutorial_16_datasource_chart_type.png" src="_images/tutorial_16_datasource_chart_type.png" />
+<img alt="_static/images/tutorial/tutorial_16_datasource_chart_type.png" src="_static/images/tutorial/tutorial_16_datasource_chart_type.png" />
 <p>Let’s walk through a basic query to get the count of all records in our table.
 First, we’ll need to change the <strong>Since</strong> filter to capture the range of our data.
 You can use simple phrases to apply these filters, like “3 years ago”:</p>
-<img alt="_images/tutorial_17_choose_time_range.png" src="_images/tutorial_17_choose_time_range.png" />
+<img alt="_static/images/tutorial/tutorial_17_choose_time_range.png" src="_static/images/tutorial/tutorial_17_choose_time_range.png" />
 <p>The upper limit for time, the <strong>Until</strong> filter, defaults to “now”, which may or may
 not be what you want.</p>
 <p>Look for the Metrics section under the <strong>GROUP BY</strong> header, and start typing “Count”
 - you’ll see a list of metrics matching what you type:</p>
-<img alt="_images/tutorial_18_choose_metric.png" src="_images/tutorial_18_choose_metric.png" />
+<img alt="_static/images/tutorial/tutorial_18_choose_metric.png" src="_static/images/tutorial/tutorial_18_choose_metric.png" />
 <p>Select the <em>COUNT(*)</em> metric, then click the green <strong>Query</strong> button near the top
 of the explore:</p>
-<img alt="_images/tutorial_19_click_query.png" src="_images/tutorial_19_click_query.png" />
+<img alt="_static/images/tutorial/tutorial_19_click_query.png" src="_static/images/tutorial/tutorial_19_click_query.png" />
 <p>You’ll see your results in the table:</p>
-<img alt="_images/tutorial_20_count_star_result.png" src="_images/tutorial_20_count_star_result.png" />
+<img alt="_static/images/tutorial/tutorial_20_count_star_result.png" src="_static/images/tutorial/tutorial_20_count_star_result.png" />
 <p>Let’s group this by the <em>weather_description</em> field to get the count of records by
 the type of weather recorded by adding it to the <em>Group by</em> section:</p>
-<img alt="_images/tutorial_21_group_by.png" src="_images/tutorial_21_group_by.png" />
+<img alt="_static/images/tutorial/tutorial_21_group_by.png" src="_static/images/tutorial/tutorial_21_group_by.png" />
 <p>and run the query:</p>
-<img alt="_images/tutorial_22_group_by_result.png" src="_images/tutorial_22_group_by_result.png" />
+<img alt="_static/images/tutorial/tutorial_22_group_by_result.png" src="_static/images/tutorial/tutorial_22_group_by_result.png" />
 <p>Let’s find a more useful data point: the top 10 times and places that recorded the
 highest temperature in 2015.</p>
 <p>We replace <em>weather_description</em> with <em>latitude</em>, <em>longitude</em> and <em>measurement_date</em> in the
 <em>Group by</em> section:</p>
-<img alt="_images/tutorial_23_group_by_more_dimensions.png" src="_images/tutorial_23_group_by_more_dimensions.png" />
+<img alt="_static/images/tutorial/tutorial_23_group_by_more_dimensions.png" src="_static/images/tutorial/tutorial_23_group_by_more_dimensions.png" />
 <p>And replace <em>COUNT(*)</em> with <em>max__measurement_flag</em>:</p>
-<img alt="_images/tutorial_24_max_metric.png" src="_images/tutorial_24_max_metric.png" />
+<img alt="_static/images/tutorial/tutorial_24_max_metric.png" src="_static/images/tutorial/tutorial_24_max_metric.png" />
 <p>The <em>max__measurement_flag</em> metric was created when we checked the box under <strong>Max</strong> and
 next to the <em>measurement_flag</em> field, indicating that this field was numeric and that
 we wanted to find its maximum value when grouped by specific fields.</p>
@@ -302,12 +302,12 @@ depends on the type of measurement (the researchers recorded different values fo
 precipitation and temperature). Therefore, we must filter our query only on records
 where the <em>weather_description</em> is equal to “Maximum temperature”, which we do in
 the <strong>Filters</strong> section at the bottom of the explore:</p>
-<img alt="_images/tutorial_25_max_temp_filter.png" src="_images/tutorial_25_max_temp_filter.png" />
+<img alt="_static/images/tutorial/tutorial_25_max_temp_filter.png" src="_static/images/tutorial/tutorial_25_max_temp_filter.png" />
 <p>Finally, since we only care about the top 10 measurements, we limit our results to
 10 records using the <em>Row limit</em> option under the <strong>Options</strong> header:</p>
-<img alt="_images/tutorial_26_row_limit.png" src="_images/tutorial_26_row_limit.png" />
+<img alt="_static/images/tutorial/tutorial_26_row_limit.png" src="_static/images/tutorial/tutorial_26_row_limit.png" />
 <p>We click <strong>Query</strong> and get the following results:</p>
-<img alt="_images/tutorial_27_top_10_max_temps.png" src="_images/tutorial_27_top_10_max_temps.png" />
+<img alt="_static/images/tutorial/tutorial_27_top_10_max_temps.png" src="_static/images/tutorial/tutorial_27_top_10_max_temps.png" />
 <p>In this dataset, the maximum temperature is recorded in tenths of a degree Celsius.
 The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly
 278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able
@@ -328,16 +328,16 @@ Metric &gt; SQL Expression</em>)</p></li>
 <p>For now, though, let’s create a better visualization of these data and add it to
 a dashboard.</p>
 <p>We change the Chart Type to “Distribution - Bar Chart”:</p>
-<img alt="_images/tutorial_28_bar_chart.png" src="_images/tutorial_28_bar_chart.png" />
+<img alt="_static/images/tutorial/tutorial_28_bar_chart.png" src="_static/images/tutorial/tutorial_28_bar_chart.png" />
 <p>Our filter on Maximum temperature measurements was retained, but the query and
 formatting options are dependent on the chart type, so you’ll have to set the
 values again:</p>
-<img alt="_images/tutorial_29_bar_chart_series_metrics.png" src="_images/tutorial_29_bar_chart_series_metrics.png" />
+<img alt="_static/images/tutorial/tutorial_29_bar_chart_series_metrics.png" src="_static/images/tutorial/tutorial_29_bar_chart_series_metrics.png" />
 <p>You should note the extensive formatting options for this chart: the ability to
 set axis labels, margins, ticks, etc. To make the data presentable to a broad
 audience, you’ll want to apply many of these to slices that end up in dashboards.
 For now, though, we run our query and get the following chart:</p>
-<a class="reference internal image-reference" href="_images/tutorial_30_bar_chart_results.png"><img alt="_images/tutorial_30_bar_chart_results.png" src="_images/tutorial_30_bar_chart_results.png" style="width: 956.9px; height: 435.4px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_30_bar_chart_results.png"><img alt="_static/images/tutorial/tutorial_30_bar_chart_results.png" src="_static/images/tutorial/tutorial_30_bar_chart_results.png" /></a>
 </div>
 <div class="section" id="creating-a-slice-and-dashboard">
 <h2>Creating a slice and dashboard<a class="headerlink" href="#creating-a-slice-and-dashboard" title="Permalink to this headline">¶</a></h2>
@@ -345,24 +345,24 @@ For now, though, we run our query and get the following chart:</p>
 a saved query is called a <strong>Slice</strong>.</p>
 <p>To create a slice, click the <strong>Save as</strong> button near the top-left of the
 explore:</p>
-<img alt="_images/tutorial_19_click_query.png" src="_images/tutorial_19_click_query.png" />
+<img alt="_static/images/tutorial/tutorial_19_click_query.png" src="_static/images/tutorial/tutorial_19_click_query.png" />
 <p>A popup should appear, asking you to name the slice, and optionally add it to a
 dashboard. Since we haven’t yet created any dashboards, we can create one and
 immediately add our slice to it. Let’s do it:</p>
-<a class="reference internal image-reference" href="_images/tutorial_31_save_slice_to_dashboard.png"><img alt="_images/tutorial_31_save_slice_to_dashboard.png" src="_images/tutorial_31_save_slice_to_dashboard.png" style="width: 432.59999999999997px; height: 268.79999999999995px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_31_save_slice_to_dashboard.png"><img alt="_static/images/tutorial/tutorial_31_save_slice_to_dashboard.png" src="_static/images/tutorial/tutorial_31_save_slice_to_dashboard.png" /></a>
 <p>Click Save, which will direct you back to your original query. We see that
 our slice and dashboard were successfully created:</p>
-<a class="reference internal image-reference" href="_images/tutorial_32_save_slice_confirmation.png"><img alt="_images/tutorial_32_save_slice_confirmation.png" src="_images/tutorial_32_save_slice_confirmation.png" style="width: 611.8px; height: 105.69999999999999px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_32_save_slice_confirmation.png"><img alt="_static/images/tutorial/tutorial_32_save_slice_confirmation.png" src="_static/images/tutorial/tutorial_32_save_slice_confirmation.png" /></a>
 <p>Let’s check out our new dashboard. We click on the <strong>Dashboards</strong> menu:</p>
-<img alt="_images/tutorial_33_dashboard.png" src="_images/tutorial_33_dashboard.png" />
+<img alt="_static/images/tutorial/tutorial_33_dashboard.png" src="_static/images/tutorial/tutorial_33_dashboard.png" />
 <p>and find the dashboard we just created:</p>
-<img alt="_images/tutorial_34_weather_dashboard.png" src="_images/tutorial_34_weather_dashboard.png" />
+<img alt="_static/images/tutorial/tutorial_34_weather_dashboard.png" src="_static/images/tutorial/tutorial_34_weather_dashboard.png" />
 <p>Things seemed to have worked - our slice is here!</p>
-<a class="reference internal image-reference" href="_images/tutorial_35_slice_on_dashboard.png"><img alt="_images/tutorial_35_slice_on_dashboard.png" src="_images/tutorial_35_slice_on_dashboard.png" style="width: 464.79999999999995px; height: 397.59999999999997px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_35_slice_on_dashboard.png"><img alt="_static/images/tutorial/tutorial_35_slice_on_dashboard.png" src="_static/images/tutorial/tutorial_35_slice_on_dashboard.png" /></a>
 <p>But it’s a bit smaller than we might like. Luckily, you can adjust the size
 of slices in a dashboard by clicking, holding and dragging the bottom-right
 corner to your desired dimensions:</p>
-<a class="reference internal image-reference" href="_images/tutorial_36_adjust_dimensions.gif"><img alt="_images/tutorial_36_adjust_dimensions.gif" src="_images/tutorial_36_adjust_dimensions.gif" style="width: 576.0px; height: 297.59999999999997px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/tutorial_36_adjust_dimensions.gif"><img alt="_static/images/tutorial/tutorial_36_adjust_dimensions.gif" src="_static/images/tutorial/tutorial_36_adjust_dimensions.gif" /></a>
 <p>After adjusting the size, you’ll be asked to click on the icon near the
 top-right of the dashboard to save the new configuration.</p>
 <p>Congrats! You’ve successfully linked, analyzed, and visualized data in Superset.
diff --git a/druid.html b/druid.html
index 6e534cd..3d59fcc 100644
--- a/druid.html
+++ b/druid.html
@@ -181,7 +181,7 @@ datasource. By editing these metrics, you’ll notice that their <code class="do
 element corresponds to Druid aggregation definition. You can create your own
 aggregations manually from the <code class="docutils literal notranslate"><span class="pre">List</span> <span class="pre">Druid</span> <span class="pre">Metric</span></code> tab following Druid
 documentation.</p>
-<a class="reference internal image-reference" href="_images/druid_agg.png"><img alt="_images/druid_agg.png" src="_images/druid_agg.png" style="width: 894.0px; height: 564.0px;" /></a>
+<a class="reference internal image-reference" href="_static/images/druid_agg.png"><img alt="_static/images/druid_agg.png" src="_static/images/druid_agg.png" /></a>
 </div>
 <div class="section" id="post-aggregations">
 <h2>Post-Aggregations<a class="headerlink" href="#post-aggregations" title="Permalink to this headline">¶</a></h2>
diff --git a/gallery.html b/gallery.html
index b47d4bc..b0e89dd 100644
--- a/gallery.html
+++ b/gallery.html
@@ -153,53 +153,53 @@
             
   <div class="section" id="visualizations-gallery">
 <h1>Visualizations Gallery<a class="headerlink" href="#visualizations-gallery" title="Permalink to this headline">¶</a></h1>
-<a class="reference internal image-reference" href="_images/area.png"><img alt="_images/area.png" src="_images/area.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/bar.png"><img alt="_images/bar.png" src="_images/bar.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/big_number.png"><img alt="_images/big_number.png" src="_images/big_number.png" style="width: 270.0px; height: 270.0px;" /></a>
-<a class="reference internal image-reference" href="_images/big_number_total.png"><img alt="_images/big_number_total.png" src="_images/big_number_total.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/box_plot.png"><img alt="_images/box_plot.png" src="_images/box_plot.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/bubble.png"><img alt="_images/bubble.png" src="_images/bubble.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/bullet.png"><img alt="_images/bullet.png" src="_images/bullet.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/cal_heatmap.png"><img alt="_images/cal_heatmap.png" src="_images/cal_heatmap.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/chord.png"><img alt="_images/chord.png" src="_images/chord.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/compare.png"><img alt="_images/compare.png" src="_images/compare.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/country_map.png"><img alt="_images/country_map.png" src="_images/country_map.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_arc.png"><img alt="_images/deck_arc.png" src="_images/deck_arc.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_geojson.png"><img alt="_images/deck_geojson.png" src="_images/deck_geojson.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_grid.png"><img alt="_images/deck_grid.png" src="_images/deck_grid.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_hex.png"><img alt="_images/deck_hex.png" src="_images/deck_hex.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_multi.png"><img alt="_images/deck_multi.png" src="_images/deck_multi.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_path.png"><img alt="_images/deck_path.png" src="_images/deck_path.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_polygon.png"><img alt="_images/deck_polygon.png" src="_images/deck_polygon.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_scatter.png"><img alt="_images/deck_scatter.png" src="_images/deck_scatter.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/deck_screengrid.png"><img alt="_images/deck_screengrid.png" src="_images/deck_screengrid.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/directed_force.png"><img alt="_images/directed_force.png" src="_images/directed_force.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/dist_bar.png"><img alt="_images/dist_bar.png" src="_images/dist_bar.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/dual_line.png"><img alt="_images/dual_line.png" src="_images/dual_line.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/event_flow.png"><img alt="_images/event_flow.png" src="_images/event_flow.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/filter_box.png"><img alt="_images/filter_box.png" src="_images/filter_box.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/heatmap.png"><img alt="_images/heatmap.png" src="_images/heatmap.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/histogram.png"><img alt="_images/histogram.png" src="_images/histogram.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/horizon.png"><img alt="_images/horizon.png" src="_images/horizon.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/iframe.png"><img alt="_images/iframe.png" src="_images/iframe.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/line.png"><img alt="_images/line.png" src="_images/line.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/mapbox.png"><img alt="_images/mapbox.png" src="_images/mapbox.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/markup.png"><img alt="_images/markup.png" src="_images/markup.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/paired_ttest.png"><img alt="_images/paired_ttest.png" src="_images/paired_ttest.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/para.png"><img alt="_images/para.png" src="_images/para.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/partition.png"><img alt="_images/partition.png" src="_images/partition.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/pie.png"><img alt="_images/pie.png" src="_images/pie.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/pivot_table.png"><img alt="_images/pivot_table.png" src="_images/pivot_table.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/rose.png"><img alt="_images/rose.png" src="_images/rose.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/sankey.png"><img alt="_images/sankey.png" src="_images/sankey.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/separator.png"><img alt="_images/separator.png" src="_images/separator.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/sunburst.png"><img alt="_images/sunburst.png" src="_images/sunburst.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/table.png"><img alt="_images/table.png" src="_images/table.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/time_pivot.png"><img alt="_images/time_pivot.png" src="_images/time_pivot.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/time_table.png"><img alt="_images/time_table.png" src="_images/time_table.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/treemap.png"><img alt="_images/treemap.png" src="_images/treemap.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/word_cloud.png"><img alt="_images/word_cloud.png" src="_images/word_cloud.png" style="width: 128.0px; height: 128.0px;" /></a>
-<a class="reference internal image-reference" href="_images/world_map.png"><img alt="_images/world_map.png" src="_images/world_map.png" style="width: 128.0px; height: 128.0px;" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/area.png"><img alt="_static/images/viz_thumbnails/area.png" src="_static/images/viz_thumbnails/area.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/bar.png"><img alt="_static/images/viz_thumbnails/bar.png" src="_static/images/viz_thumbnails/bar.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/big_number.png"><img alt="_static/images/viz_thumbnails/big_number.png" src="_static/images/viz_thumbnails/big_number.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/big_number_total.png"><img alt="_static/images/viz_thumbnails/big_number_total.png" src="_static/images/viz_thumbnails/big_number_total.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/box_plot.png"><img alt="_static/images/viz_thumbnails/box_plot.png" src="_static/images/viz_thumbnails/box_plot.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/bubble.png"><img alt="_static/images/viz_thumbnails/bubble.png" src="_static/images/viz_thumbnails/bubble.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/bullet.png"><img alt="_static/images/viz_thumbnails/bullet.png" src="_static/images/viz_thumbnails/bullet.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/cal_heatmap.png"><img alt="_static/images/viz_thumbnails/cal_heatmap.png" src="_static/images/viz_thumbnails/cal_heatmap.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/chord.png"><img alt="_static/images/viz_thumbnails/chord.png" src="_static/images/viz_thumbnails/chord.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/compare.png"><img alt="_static/images/viz_thumbnails/compare.png" src="_static/images/viz_thumbnails/compare.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/country_map.png"><img alt="_static/images/viz_thumbnails/country_map.png" src="_static/images/viz_thumbnails/country_map.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_arc.png"><img alt="_static/images/viz_thumbnails/deck_arc.png" src="_static/images/viz_thumbnails/deck_arc.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_geojson.png"><img alt="_static/images/viz_thumbnails/deck_geojson.png" src="_static/images/viz_thumbnails/deck_geojson.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_grid.png"><img alt="_static/images/viz_thumbnails/deck_grid.png" src="_static/images/viz_thumbnails/deck_grid.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_hex.png"><img alt="_static/images/viz_thumbnails/deck_hex.png" src="_static/images/viz_thumbnails/deck_hex.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_multi.png"><img alt="_static/images/viz_thumbnails/deck_multi.png" src="_static/images/viz_thumbnails/deck_multi.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_path.png"><img alt="_static/images/viz_thumbnails/deck_path.png" src="_static/images/viz_thumbnails/deck_path.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_polygon.png"><img alt="_static/images/viz_thumbnails/deck_polygon.png" src="_static/images/viz_thumbnails/deck_polygon.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_scatter.png"><img alt="_static/images/viz_thumbnails/deck_scatter.png" src="_static/images/viz_thumbnails/deck_scatter.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/deck_screengrid.png"><img alt="_static/images/viz_thumbnails/deck_screengrid.png" src="_static/images/viz_thumbnails/deck_screengrid.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/directed_force.png"><img alt="_static/images/viz_thumbnails/directed_force.png" src="_static/images/viz_thumbnails/directed_force.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/dist_bar.png"><img alt="_static/images/viz_thumbnails/dist_bar.png" src="_static/images/viz_thumbnails/dist_bar.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/dual_line.png"><img alt="_static/images/viz_thumbnails/dual_line.png" src="_static/images/viz_thumbnails/dual_line.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/event_flow.png"><img alt="_static/images/viz_thumbnails/event_flow.png" src="_static/images/viz_thumbnails/event_flow.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/filter_box.png"><img alt="_static/images/viz_thumbnails/filter_box.png" src="_static/images/viz_thumbnails/filter_box.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/heatmap.png"><img alt="_static/images/viz_thumbnails/heatmap.png" src="_static/images/viz_thumbnails/heatmap.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/histogram.png"><img alt="_static/images/viz_thumbnails/histogram.png" src="_static/images/viz_thumbnails/histogram.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/horizon.png"><img alt="_static/images/viz_thumbnails/horizon.png" src="_static/images/viz_thumbnails/horizon.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/iframe.png"><img alt="_static/images/viz_thumbnails/iframe.png" src="_static/images/viz_thumbnails/iframe.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/line.png"><img alt="_static/images/viz_thumbnails/line.png" src="_static/images/viz_thumbnails/line.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/mapbox.png"><img alt="_static/images/viz_thumbnails/mapbox.png" src="_static/images/viz_thumbnails/mapbox.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/markup.png"><img alt="_static/images/viz_thumbnails/markup.png" src="_static/images/viz_thumbnails/markup.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/paired_ttest.png"><img alt="_static/images/viz_thumbnails/paired_ttest.png" src="_static/images/viz_thumbnails/paired_ttest.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/para.png"><img alt="_static/images/viz_thumbnails/para.png" src="_static/images/viz_thumbnails/para.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/partition.png"><img alt="_static/images/viz_thumbnails/partition.png" src="_static/images/viz_thumbnails/partition.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/pie.png"><img alt="_static/images/viz_thumbnails/pie.png" src="_static/images/viz_thumbnails/pie.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/pivot_table.png"><img alt="_static/images/viz_thumbnails/pivot_table.png" src="_static/images/viz_thumbnails/pivot_table.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/rose.png"><img alt="_static/images/viz_thumbnails/rose.png" src="_static/images/viz_thumbnails/rose.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/sankey.png"><img alt="_static/images/viz_thumbnails/sankey.png" src="_static/images/viz_thumbnails/sankey.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/separator.png"><img alt="_static/images/viz_thumbnails/separator.png" src="_static/images/viz_thumbnails/separator.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/sunburst.png"><img alt="_static/images/viz_thumbnails/sunburst.png" src="_static/images/viz_thumbnails/sunburst.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/table.png"><img alt="_static/images/viz_thumbnails/table.png" src="_static/images/viz_thumbnails/table.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/time_pivot.png"><img alt="_static/images/viz_thumbnails/time_pivot.png" src="_static/images/viz_thumbnails/time_pivot.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/time_table.png"><img alt="_static/images/viz_thumbnails/time_table.png" src="_static/images/viz_thumbnails/time_table.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/treemap.png"><img alt="_static/images/viz_thumbnails/treemap.png" src="_static/images/viz_thumbnails/treemap.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/word_cloud.png"><img alt="_static/images/viz_thumbnails/word_cloud.png" src="_static/images/viz_thumbnails/word_cloud.png" /></a>
+<a class="reference internal image-reference" href="_static/images/viz_thumbnails/world_map.png"><img alt="_static/images/viz_thumbnails/world_map.png" src="_static/images/viz_thumbnails/world_map.png" /></a>
 </div>
 
 
diff --git a/index.html b/index.html
index 0f07dca..89d290f 100644
--- a/index.html
+++ b/index.html
@@ -150,7 +150,7 @@
           <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
            <div itemprop="articleBody">
             
-  <p><a class="reference external" href="http://www.apache.org/"><img alt="The Apache Software Foundation" src="_images/apache_feather.png" style="width: 7%;" /></a> <a class="reference internal" href="_images/s.png"><img alt="superset_img" src="_images/s.png" style="width: 25%;" /></a></p>
+  <p><a class="reference external" href="http://www.apache.org/"><img alt="The Apache Software Foundation" src="_static/images/apache_feather.png" style="width: 7%;" /></a> <a class="reference internal" href="_static/images/s.png"><img alt="superset_img" src="_static/images/s.png" style="width: 25%;" /></a></p>
 <div class="section" id="apache-superset-incubating">
 <h1>Apache Superset (incubating)<a class="headerlink" href="#apache-superset-incubating" title="Permalink to this headline">¶</a></h1>
 <p>Apache Superset (incubating) is a modern, enterprise-ready business
@@ -178,6 +178,7 @@ and other countries.</p>
 <div class="section" id="superset-resources">
 <h2>Superset Resources<a class="headerlink" href="#superset-resources" title="Permalink to this headline">¶</a></h2>
 <ul class="simple">
+<li><p>Versioned versions of this documentation: <a class="reference external" href="https://readthedocs.org/projects/apache-superset/">https://readthedocs.org/projects/apache-superset/</a></p></li>
 <li><p><a class="reference external" href="https://github.com/apache/incubator-superset">Superset’s Github</a>, note
 that <a class="reference external" href="https://github.com/apache/incubator-superset/issues">we use Github for issue tracking</a></p></li>
 <li><p>Superset’s
@@ -236,6 +237,8 @@ to the user</p></li>
 <li><p><a class="reference external" href="https://spark.apache.org/sql/">Apache Spark SQL</a></p></li>
 <li><p><a class="reference external" href="https://cloud.google.com/bigquery/">BigQuery</a></p></li>
 <li><p><a class="reference external" href="https://clickhouse.yandex/">ClickHouse</a></p></li>
+<li><p><a class="reference external" href="https://www.cockroachlabs.com/">CockroachDB</a></p></li>
+<li><p><a class="reference external" href="https://dremio.com/">Dremio</a></p></li>
 <li><p><a class="reference external" href="https://www.elastic.co/products/elasticsearch/">Elasticsearch</a></p></li>
 <li><p><a class="reference external" href="https://www.exasol.com/">Exasol</a></p></li>
 <li><p><a class="reference external" href="https://www.google.com/sheets/about/">Google Sheets</a></p></li>
@@ -257,13 +260,13 @@ be supported as well.</p>
 </div>
 <div class="section" id="screenshots">
 <h3>Screenshots<a class="headerlink" href="#screenshots" title="Permalink to this headline">¶</a></h3>
-<img alt="_images/bank_dash.png" src="_images/bank_dash.png" />
+<img alt="_static/images/screenshots/bank_dash.png" src="_static/images/screenshots/bank_dash.png" />
 <hr class="docutils" />
-<img alt="_images/explore.png" src="_images/explore.png" />
+<img alt="_static/images/screenshots/explore.png" src="_static/images/screenshots/explore.png" />
 <hr class="docutils" />
-<img alt="_images/sqllab.png" src="_images/sqllab.png" />
+<img alt="_static/images/screenshots/sqllab.png" src="_static/images/screenshots/sqllab.png" />
 <hr class="docutils" />
-<img alt="_images/deckgl_dash.png" src="_images/deckgl_dash.png" />
+<img alt="_static/images/screenshots/deckgl_dash.png" src="_static/images/screenshots/deckgl_dash.png" />
 </div>
 <hr class="docutils" />
 <div class="section" id="contents">
@@ -296,6 +299,7 @@ be supported as well.</p>
 <li class="toctree-l2"><a class="reference internal" href="installation.html#external-password-store-for-sqlalchemy-connections">External Password store for SQLAlchemy connections</a></li>
 <li class="toctree-l2"><a class="reference internal" href="installation.html#ssl-access-to-databases">SSL Access to databases</a></li>
 <li class="toctree-l2"><a class="reference internal" href="installation.html#druid">Druid</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#dremio">Dremio</a></li>
 <li class="toctree-l2"><a class="reference internal" href="installation.html#presto">Presto</a></li>
 <li class="toctree-l2"><a class="reference internal" href="installation.html#exasol">Exasol</a></li>
 <li class="toctree-l2"><a class="reference internal" href="installation.html#cors">CORS</a></li>
diff --git a/installation.html b/installation.html
index bb6dfc6..f00a11f 100644
--- a/installation.html
+++ b/installation.html
@@ -107,6 +107,7 @@
 <li class="toctree-l2"><a class="reference internal" href="#external-password-store-for-sqlalchemy-connections">External Password store for SQLAlchemy connections</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#ssl-access-to-databases">SSL Access to databases</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#druid">Druid</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#dremio">Dremio</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#presto">Presto</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#exasol">Exasol</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#cors">CORS</a></li>
@@ -246,7 +247,10 @@ initialize development environment:</p>
 </pre></div>
 </div>
 <p>After several minutes for superset initialization to finish, you can open
-a browser and view <cite>http://localhost:8088</cite> to start your journey.</p>
+a browser and view <cite>http://localhost:8088</cite> to start your journey. By default
+the system configures an admin user with the username of <cite>admin</cite> and a password
+of <cite>admin</cite> - if you are in a non-local environment it is highly recommended to
+change this username and password at your earliest convenience.</p>
 <p>From there, the container server will reload on modification of the superset python
 and javascript source code.
 Don’t forget to reload the page to take the new frontend into account though.</p>
@@ -344,7 +348,7 @@ superset db upgrade
 
 # Create an admin user (you will be prompted to set a username, first and last name before setting a password)
 $ export FLASK_APP=superset
-flask fab create-admin
+superset fab create-admin
 
 # Load some data to play with
 superset load_examples
@@ -557,6 +561,14 @@ For JDBC
 <td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy-clickhouse</span></code></p></td>
 <td></td>
 </tr>
+<tr class="row-even"><td><p>CockroachDB</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">cockroachdb</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">cockroachdb://</span></code></p></td>
+</tr>
+<tr class="row-odd"><td><p>Dremio</p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy_dremio</span></code></p></td>
+<td><p><code class="docutils literal notranslate"><span class="pre">dremio://user:pwd&#64;host:31010/</span></code></p></td>
+</tr>
 <tr class="row-even"><td><p>Elasticsearch</p></td>
 <td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">elasticsearch-dbapi</span></code></p></td>
 <td><p><code class="docutils literal notranslate"><span class="pre">elasticsearch+http://</span></code></p></td>
@@ -612,7 +624,8 @@ For JDBC
 </tr>
 <tr class="row-odd"><td><p>Hana</p></td>
 <td><p><code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">hdbcli</span> <span class="pre">sqlalchemy-hana</span></code>
-or <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">superset[hana]</span></code></p></td>
+or
+<code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">apache-superset[hana]</span></code></p></td>
 <td><p><code class="docutils literal notranslate"><span class="pre">hana://</span></code></p></td>
 </tr>
 </tbody>
@@ -726,7 +739,11 @@ The role and warehouse can be omitted if defaults are defined for the user, i.e.
 </div></blockquote>
 <p>Make sure the user has privileges to access and use all required
 databases/schemas/tables/views/warehouses, as the Snowflake SQLAlchemy engine does
-not test for user rights during engine creation.</p>
+not test for user/role rights during engine creation by default. However, when
+pressing the “Test Connection” button in the Create or Edit Database dialog,
+user/role credentials are validated by passing <cite>“validate_default_parameters”: True</cite>
+to the <cite>connect()</cite> method during engine creation. If the user/role is not authorized
+to access the database, an error is recorded in the Superset logs.</p>
 <p>See <a class="reference external" href="https://github.com/snowflakedb/snowflake-sqlalchemy">Snowflake SQLAlchemy</a>.</p>
 </div>
 <div class="section" id="teradata">
@@ -832,7 +849,7 @@ For other strategies, check the <cite>superset/tasks/cache.py</cite> file.</p>
 <p>It is possible to tweak the database connection information using the
 parameters exposed by SQLAlchemy. In the <code class="docutils literal notranslate"><span class="pre">Database</span></code> edit view, you will
 find an <code class="docutils literal notranslate"><span class="pre">extra</span></code> field as a <code class="docutils literal notranslate"><span class="pre">JSON</span></code> blob.</p>
-<a class="reference internal image-reference" href="_images/add_db.png"><img alt="_images/add_db.png" src="_images/add_db.png" style="width: 534.0px; height: 370.8px;" /></a>
+<a class="reference internal image-reference" href="_static/images/tutorial/add_db.png"><img alt="_static/images/tutorial/add_db.png" src="_static/images/tutorial/add_db.png" /></a>
 <p>This JSON string contains extra configuration elements. The <code class="docutils literal notranslate"><span class="pre">engine_params</span></code>
 object gets unpacked into the
 <a class="reference external" href="https://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine">sqlalchemy.create_engine</a> call,
@@ -897,15 +914,23 @@ parameter</p>
 </div>
 <div class="section" id="druid">
 <h2>Druid<a class="headerlink" href="#druid" title="Permalink to this headline">¶</a></h2>
+<p>The native Druid connector (behind the <code class="docutils literal notranslate"><span class="pre">DRUID_IS_ACTIVE</span></code> feature flag)
+is slowly getting deprecated in favor of the SQLAlchemy/DBAPI connector made
+available in the <code class="docutils literal notranslate"><span class="pre">pydruid</span></code> library.</p>
+<p>To use a custom SSL certificate to validate HTTPS requests, the certificate
+contents can be entered in the <code class="docutils literal notranslate"><span class="pre">Root</span> <span class="pre">Certificate</span></code> field in the Database
+dialog. When using a custom certificate, <code class="docutils literal notranslate"><span class="pre">pydruid</span></code> will automatically use
+<code class="docutils literal notranslate"><span class="pre">https</span></code> scheme. To disable SSL verification add the following to extras:
+<code class="docutils literal notranslate"><span class="pre">engine_params&quot;:</span> <span class="pre">{&quot;connect_args&quot;:</span> <span class="pre">{&quot;scheme&quot;:</span> <span class="pre">&quot;https&quot;,</span> <span class="pre">&quot;ssl_verify_cert&quot;:</span> <span class="pre">false}}</span></code></p>
+</div>
+<div class="section" id="dremio">
+<h2>Dremio<a class="headerlink" href="#dremio" title="Permalink to this headline">¶</a></h2>
+<p>Install the following dependencies to connect to Dremio:</p>
 <ul class="simple">
-<li><p>From the UI, enter the information about your clusters in the
-<cite>Sources -&gt; Druid Clusters</cite> menu by hitting the + sign.</p></li>
-<li><p>Once the Druid cluster connection information is entered, hit the
-<cite>Sources -&gt; Refresh Druid Metadata</cite> menu item to populate</p></li>
-<li><p>Navigate to your datasources</p></li>
+<li><p>Dremio SQLAlchemy: <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy_dremio</span></code></p></li>
+<li><p>Dremio’s ODBC driver: <a class="reference external" href="https://www.dremio.com/drivers/">https://www.dremio.com/drivers/</a></p></li>
 </ul>
-<p>Note that you can run the <code class="docutils literal notranslate"><span class="pre">superset</span> <span class="pre">refresh_druid</span></code> command to refresh the
-metadata from your Druid cluster(s)</p>
+<p>Example SQLAlchemy URI: <code class="docutils literal notranslate"><span class="pre">dremio://dremio:dremio123&#64;localhost:31010/dremio</span></code></p>
 </div>
 <div class="section" id="presto">
 <h2>Presto<a class="headerlink" href="#presto" title="Permalink to this headline">¶</a></h2>
@@ -938,9 +963,9 @@ EXASCHEMA = main
 <div class="section" id="cors">
 <h2>CORS<a class="headerlink" href="#cors" title="Permalink to this headline">¶</a></h2>
 <p>The extra CORS Dependency must be installed:</p>
-<blockquote>
-<div><p>superset[cors]</p>
-</div></blockquote>
+<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pip install apache-superset[cors]
+</pre></div>
+</div>
 <p>The following keys in <cite>superset_config.py</cite> can be specified to configure CORS:</p>
 <ul class="simple">
 <li><p><code class="docutils literal notranslate"><span class="pre">ENABLE_CORS</span></code>: Must be set to True in order to enable CORS</p></li>
@@ -966,9 +991,9 @@ your <cite>superset_config.py</cite>. <code class="docutils literal notranslate"
 add the value of <code class="docutils literal notranslate"><span class="pre">HTTP_X_PROXY_REMOTE_USER</span></code> (or any other custom header from the proxy) to Gunicorn’s <code class="docutils literal notranslate"><span class="pre">REMOTE_USER</span></code>
 environment variable:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">RemoteUserMiddleware</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
-    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">app</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">app</span><span class="p">):</span>
         <span class="bp">self</span><span class="o">.</span><span class="n">app</span> <span class="o">=</span> <span class="n">app</span>
-    <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">environ</span><span class="p">,</span> <span class="n">start_response</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">environ</span><span class="p">,</span> <span class="n">start_response</span><span class="p">):</span>
         <span class="n">user</span> <span class="o">=</span> <span class="n">environ</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">&#39;HTTP_X_PROXY_REMOTE_USER&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
         <span class="n">environ</span><span class="p">[</span><span class="s1">&#39;REMOTE_USER&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">user</span>
         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">start_response</span><span class="p">)</span>
@@ -1058,7 +1083,7 @@ have the same configuration.</p>
     <span class="n">CELERY_RESULT_BACKEND</span> <span class="o">=</span> <span class="s1">&#39;redis://localhost:6379/0&#39;</span>
     <span class="n">CELERYD_LOG_LEVEL</span> <span class="o">=</span> <span class="s1">&#39;DEBUG&#39;</span>
     <span class="n">CELERYD_PREFETCH_MULTIPLIER</span> <span class="o">=</span> <span class="mi">10</span>
-    <span class="n">CELERY_ACKS_LATE</span> <span class="o">=</span> <span class="bp">True</span>
+    <span class="n">CELERY_ACKS_LATE</span> <span class="o">=</span> <span class="kc">True</span>
     <span class="n">CELERY_ANNOTATIONS</span> <span class="o">=</span> <span class="p">{</span>
         <span class="s1">&#39;sql_lab.get_sql_results&#39;</span><span class="p">:</span> <span class="p">{</span>
             <span class="s1">&#39;rate_limit&#39;</span><span class="p">:</span> <span class="s1">&#39;100/s&#39;</span><span class="p">,</span>
@@ -1067,7 +1092,7 @@ have the same configuration.</p>
             <span class="s1">&#39;rate_limit&#39;</span><span class="p">:</span> <span class="s1">&#39;1/s&#39;</span><span class="p">,</span>
             <span class="s1">&#39;time_limit&#39;</span><span class="p">:</span> <span class="mi">120</span><span class="p">,</span>
             <span class="s1">&#39;soft_time_limit&#39;</span><span class="p">:</span> <span class="mi">150</span><span class="p">,</span>
-            <span class="s1">&#39;ignore_result&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
+            <span class="s1">&#39;ignore_result&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
         <span class="p">},</span>
     <span class="p">}</span>
     <span class="n">CELERYBEAT_SCHEDULE</span> <span class="o">=</span> <span class="p">{</span>
@@ -1140,7 +1165,7 @@ higher than expected load / traffic etc.</p></li>
 </ul>
 <p><strong>Setup</strong></p>
 <p>Make sure you enable email reports in your configuration file</p>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">ENABLE_SCHEDULED_EMAIL_REPORTS</span> <span class="o">=</span> <span class="bp">True</span>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">ENABLE_SCHEDULED_EMAIL_REPORTS</span> <span class="o">=</span> <span class="kc">True</span>
 </pre></div>
 </div>
 <p>Now you will find two new items in the navigation bar that allow you to schedule email
@@ -1157,11 +1182,11 @@ mandatory bcc.</p>
 (see section above “Celery Tasks”). Your celery configuration also
 needs an entry <code class="docutils literal notranslate"><span class="pre">email_reports.schedule_hourly</span></code> for <code class="docutils literal notranslate"><span class="pre">CELERYBEAT_SCHEDULE</span></code>.</p>
 <p>To send emails you need to configure SMTP settings in your configuration file. e.g.</p>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">EMAIL_NOTIFICATIONS</span> <span class="o">=</span> <span class="bp">True</span>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">EMAIL_NOTIFICATIONS</span> <span class="o">=</span> <span class="kc">True</span>
 
 <span class="n">SMTP_HOST</span> <span class="o">=</span> <span class="s2">&quot;email-smtp.eu-west-1.amazonaws.com&quot;</span>
-<span class="n">SMTP_STARTTLS</span> <span class="o">=</span> <span class="bp">True</span>
-<span class="n">SMTP_SSL</span> <span class="o">=</span> <span class="bp">False</span>
+<span class="n">SMTP_STARTTLS</span> <span class="o">=</span> <span class="kc">True</span>
+<span class="n">SMTP_SSL</span> <span class="o">=</span> <span class="kc">False</span>
 <span class="n">SMTP_USER</span> <span class="o">=</span> <span class="s2">&quot;smtp_username&quot;</span>
 <span class="n">SMTP_PORT</span> <span class="o">=</span> <span class="mi">25</span>
 <span class="n">SMTP_PASSWORD</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;SMTP_PASSWORD&quot;</span><span class="p">)</span>
@@ -1310,7 +1335,7 @@ up by an external scheduled (like [Apache Airflow](<a class="reference external"
         <span class="c1"># that uses the query id and the output table as its name</span>
         <span class="s1">&#39;linkback&#39;</span><span class="p">:</span> <span class="p">(</span>
             <span class="s1">&#39;https://airflow.example.com/admin/airflow/tree?&#39;</span>
-            <span class="s1">&#39;dag_id=query_${id}_${extra_json.schedule_info.output_table}&#39;</span>
+            <span class="s1">&#39;dag_id=query_$</span><span class="si">{id}</span><span class="s1">_$</span><span class="si">{extra_json.schedule_info.output_table}</span><span class="s1">&#39;</span>
         <span class="p">),</span>
     <span class="p">},</span>
 <span class="p">}</span>
@@ -1356,8 +1381,8 @@ same server.</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">Blueprint</span>
 <span class="n">simple_page</span> <span class="o">=</span> <span class="n">Blueprint</span><span class="p">(</span><span class="s1">&#39;simple_page&#39;</span><span class="p">,</span> <span class="vm">__name__</span><span class="p">,</span>
                                 <span class="n">template_folder</span><span class="o">=</span><span class="s1">&#39;templates&#39;</span><span class="p">)</span>
-<span class="nd">@simple_page.route</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="n">defaults</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;page&#39;</span><span class="p">:</span> <span class="s1">&#39;index&#39;</span><span class="p">})</span>
-<span class="nd">@simple_page.route</span><span class="p">(</span><span class="s1">&#39;/&lt;page&gt;&#39;</span><span class="p">)</span>
+<span class="nd">@simple_page</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="n">defaults</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;page&#39;</span><span class="p">:</span> <span class="s1">&#39;index&#39;</span><span class="p">})</span>
+<span class="nd">@simple_page</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">&#39;/&lt;page&gt;&#39;</span><span class="p">)</span>
 <span class="k">def</span> <span class="nf">show</span><span class="p">(</span><span class="n">page</span><span class="p">):</span>
     <span class="k">return</span> <span class="s2">&quot;Ok&quot;</span>
 
@@ -1418,7 +1443,7 @@ located in <code class="docutils literal notranslate"><span class="pre">install/
 <span class="p">]</span>
 
 <span class="c1"># Will allow user self registration, allowing to create Flask users from Authorized User</span>
-<span class="n">AUTH_USER_REGISTRATION</span> <span class="o">=</span> <span class="bp">True</span>
+<span class="n">AUTH_USER_REGISTRATION</span> <span class="o">=</span> <span class="kc">True</span>
 
 <span class="c1"># The default user self registration role</span>
 <span class="n">AUTH_USER_REGISTRATION_ROLE</span> <span class="o">=</span> <span class="s2">&quot;Public&quot;</span>
@@ -1429,13 +1454,13 @@ located in <code class="docutils literal notranslate"><span class="pre">install/
 
 <span class="k">class</span> <span class="nc">CustomSsoSecurityManager</span><span class="p">(</span><span class="n">SupersetSecurityManager</span><span class="p">):</span>
 
-    <span class="k">def</span> <span class="nf">oauth_user_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">provider</span><span class="p">,</span> <span class="n">response</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
-        <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Oauth2 provider: {0}.&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">provider</span><span class="p">))</span>
+    <span class="k">def</span> <span class="nf">oauth_user_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">provider</span><span class="p">,</span> <span class="n">response</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+        <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Oauth2 provider: </span><span class="si">{0}</span><span class="s2">.&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">provider</span><span class="p">))</span>
         <span class="k">if</span> <span class="n">provider</span> <span class="o">==</span> <span class="s1">&#39;egaSSO&#39;</span><span class="p">:</span>
             <span class="c1"># As example, this line request a GET to base_url + &#39;/&#39; + userDetails with Bearer  Authentication,</span>
     <span class="c1"># and expects that authorization server checks the token, and response with user details</span>
             <span class="n">me</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">appbuilder</span><span class="o">.</span><span class="n">sm</span><span class="o">.</span><span class="n">oauth_remotes</span><span class="p">[</span><span class="n">provider</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;userDetails&#39;</span><span class="p">)</span><span class=" [...]
-            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;user_data: {0}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">me</span><span class="p">))</span>
+            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;user_data: </span><span class="si">{0}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">me</span><span class="p">))</span>
             <span class="k">return</span> <span class="p">{</span> <span class="s1">&#39;name&#39;</span> <span class="p">:</span> <span class="n">me</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">],</span> <span class="s1">&#39;email&#39;</span> <span class="p">:</span> <span class="n">me</span><span class="p">[</span><span class="s1">&#39;email&#39;</span><span class="p">],</span> <span class="s1">&#39;id&#39;</span> <span class="p">:</span> <span c [...]
     <span class="o">...</span>
 </pre></div>
@@ -1452,9 +1477,9 @@ located in <code class="docutils literal notranslate"><span class="pre">install/
 <p>Because of a wide variety of users, Superset has some features that are not enabled by default. For example, some users have stronger security restrictions, while some others may not. So Superset allow users to enable or disable some features by config. For feature owners, you can add optional functionalities in Superset, but will be only affected by a subset of users.</p>
 <p>You can enable or disable features with flag from <code class="docutils literal notranslate"><span class="pre">superset_config.py</span></code>:</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">DEFAULT_FEATURE_FLAGS</span> <span class="o">=</span> <span class="p">{</span>
-    <span class="s1">&#39;CLIENT_CACHE&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
-    <span class="s1">&#39;ENABLE_EXPLORE_JSON_CSRF_PROTECTION&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
-    <span class="s1">&#39;PRESTO_EXPAND_DATA&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
+    <span class="s1">&#39;CLIENT_CACHE&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
+    <span class="s1">&#39;ENABLE_EXPLORE_JSON_CSRF_PROTECTION&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
+    <span class="s1">&#39;PRESTO_EXPAND_DATA&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
 <span class="p">}</span>
 </pre></div>
 </div>
@@ -1487,7 +1512,7 @@ located in <code class="docutils literal notranslate"><span class="pre">install/
 </div>
 <p><strong>New deployments</strong></p>
 <p>All new Superset deployments should enable SIP-15 via,</p>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">SIP_15_ENABLED</span> <span class="o">=</span> <span class="bp">True</span>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">SIP_15_ENABLED</span> <span class="o">=</span> <span class="kc">True</span>
 </pre></div>
 </div>
 <p><strong>Existing deployments</strong></p>
@@ -1495,7 +1520,7 @@ located in <code class="docutils literal notranslate"><span class="pre">install/
 <p>Prior to enabling SIP-15 existing deployments should communicate to their users the impact of the change and define a grace period end date (exclusive of course) after which all charts will conform to the [start, end) interval, i.e.,</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">dateime</span> <span class="kn">import</span> <span class="n">date</span>
 
-<span class="n">SIP_15_ENABLED</span> <span class="o">=</span> <span class="bp">True</span>
+<span class="n">SIP_15_ENABLED</span> <span class="o">=</span> <span class="kc">True</span>
 <span class="n">SIP_15_GRACE_PERIOD_END</span> <span class="o">=</span> <span class="n">date</span><span class="p">(</span><span class="o">&lt;</span><span class="n">YYYY</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">MM</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">DD</span><span class="o">&gt;</span><span class="p">)</span>
 </pre></div>
 </div>
diff --git a/searchindex.js b/searchindex.js
index c08b816..90d20a0 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["admintutorial","druid","faq","gallery","import_export_datasources","index","installation","misc","security","sqllab","tutorials","usertutorial","videos","visualization"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["admintut [...]
\ No newline at end of file
+Search.setIndex({docnames:["admintutorial","druid","faq","gallery","import_export_datasources","index","installation","misc","security","sqllab","tutorials","usertutorial","videos","visualization"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["admintut [...]
\ No newline at end of file
diff --git a/security.html b/security.html
index 56fa288..ea5e08c 100644
--- a/security.html
+++ b/security.html
@@ -96,6 +96,7 @@
 <li class="toctree-l2"><a class="reference internal" href="#customizing">Customizing</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#permissions">Permissions</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#restricting-access-to-a-subset-of-data-sources">Restricting access to a subset of data sources</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#restricting-access-to-a-subset-of-a-particular-table">Restricting access to a subset of a particular table</a></li>
 </ul>
 </li>
 </ul>
@@ -232,7 +233,7 @@ to the role manually.</p>
 sure the users with limited access have [only] the Gamma role assigned to
 them. Second, create a new role (<code class="docutils literal notranslate"><span class="pre">Menu</span> <span class="pre">-&gt;</span> <span class="pre">Security</span> <span class="pre">-&gt;</span> <span class="pre">List</span> <span class="pre">Roles</span></code>) and
 click the <code class="docutils literal notranslate"><span class="pre">+</span></code> sign.</p>
-<a class="reference internal image-reference" href="_images/create_role.png"><img alt="_images/create_role.png" src="_images/create_role.png" style="width: 591.5px; height: 309.5px;" /></a>
+<a class="reference internal image-reference" href="_static/images/create_role.png"><img alt="_static/images/create_role.png" src="_static/images/create_role.png" /></a>
 <p>This new window allows you to give this new role a name, attribute it to users
 and select the tables in the <code class="docutils literal notranslate"><span class="pre">Permissions</span></code> dropdown. To select the data
 sources you want to associate with this role, simply click on the dropdown
@@ -289,6 +290,25 @@ When looking at its dashboard list, this user will only see the
 list of dashboards it has access to, based on the roles and
 permissions that were attributed.</p>
 </div>
+<div class="section" id="restricting-access-to-a-subset-of-a-particular-table">
+<h3>Restricting access to a subset of a particular table<a class="headerlink" href="#restricting-access-to-a-subset-of-a-particular-table" title="Permalink to this headline">¶</a></h3>
+<p>Using <code class="docutils literal notranslate"><span class="pre">Row</span> <span class="pre">level</span> <span class="pre">security</span> <span class="pre">filters</span></code> (under the <code class="docutils literal notranslate"><span class="pre">Security</span></code> menu) you can create
+filters that are assigned to a particular table, as well as a set of roles.
+Say people in your finance department should only have access to rows where
+<code class="docutils literal notranslate"><span class="pre">department</span> <span class="pre">=</span> <span class="pre">&quot;finance&quot;</span></code>.  You could create a <code class="docutils literal notranslate"><span class="pre">Row</span> <span class="pre">level</span> <span class="pre">security</span> <span class="pre">filter</span></code>
+with that clause, and assign it to your <code class="docutils literal notranslate"><span class="pre">Finance</span></code> role, as well as the
+applicable table.</p>
+<p>The <code class="docutils literal notranslate"><span class="pre">clause</span></code> field can contain arbitrary text which is then added to the generated
+SQL statement’s <code class="docutils literal notranslate"><span class="pre">WHERE</span></code> clause.  So you could even do something like create a
+filter for the last 30 days and apply it to a specific role, with a clause like
+<code class="docutils literal notranslate"><span class="pre">date_field</span> <span class="pre">&gt;</span> <span class="pre">DATE_SUB(NOW(),</span> <span class="pre">INTERVAL</span> <span class="pre">30</span> <span class="pre">DAY)</span></code>.  It can also support multiple
+conditions: <code class="docutils literal notranslate"><span class="pre">client_id</span> <span class="pre">=</span> <span class="pre">6</span> <span class="pre">AND</span> <span class="pre">advertiser=&quot;foo&quot;</span></code>, etc.</p>
+<p>All relevant <code class="docutils literal notranslate"><span class="pre">Row</span> <span class="pre">level</span> <span class="pre">security</span> <span class="pre">filters</span></code> will be ANDed together, so it’s
+possible to create a situation where two roles conflict in such a way as to
+limit a table subset to empty.  For example, the filters <code class="docutils literal notranslate"><span class="pre">client_id=4</span></code> and
+and <code class="docutils literal notranslate"><span class="pre">client_id=5</span></code>, applied to a role, will result in users of that role having
+<code class="docutils literal notranslate"><span class="pre">client_id=4</span> <span class="pre">AND</span> <span class="pre">client_id=5</span></code> added to their query, which can never be true.</p>
+</div>
 </div>
 </div>
 
diff --git a/sqllab.html b/sqllab.html
index 3304ff5..a0b6bb1 100644
--- a/sqllab.html
+++ b/sqllab.html
@@ -167,7 +167,7 @@
 <p>SQL Lab is a modern, feature-rich SQL IDE written in
 <a class="reference external" href="https://facebook.github.io/react/">React</a>.</p>
 <hr class="docutils" />
-<img alt="_images/sqllab.png" src="_images/sqllab.png" />
+<img alt="_static/images/screenshots/sqllab.png" src="_static/images/screenshots/sqllab.png" />
 <hr class="docutils" />
 <div class="section" id="feature-overview">
 <h2>Feature Overview<a class="headerlink" href="#feature-overview" title="Permalink to this headline">¶</a></h2>
@@ -456,11 +456,11 @@ can optionally specify a custom formatter. Eg:</p>
         <span class="n">cost</span> <span class="o">+=</span> <span class="n">row</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;cpuCost&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">*</span> <span class="n">cpu_coefficient</span>
         <span class="n">cost</span> <span class="o">+=</span> <span class="n">row</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;networkCost&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">*</span> <span class="n">network_coefficient</span>
 
-    <span class="k">return</span> <span class="p">[{</span><span class="s2">&quot;Cost&quot;</span><span class="p">:</span> <span class="n">f</span><span class="s2">&quot;US$ {cost:.2f}&quot;</span><span class="p">}]</span>
+    <span class="k">return</span> <span class="p">[{</span><span class="s2">&quot;Cost&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;US$ </span><span class="si">{</span><span class="n">cost</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}]</span>
 
 
 <span class="n">DEFAULT_FEATURE_FLAGS</span> <span class="o">=</span> <span class="p">{</span>
-    <span class="s2">&quot;ESTIMATE_QUERY_COST&quot;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
+    <span class="s2">&quot;ESTIMATE_QUERY_COST&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
     <span class="s2">&quot;QUERY_COST_FORMATTERS_BY_ENGINE&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&quot;presto&quot;</span><span class="p">:</span> <span class="n">presto_query_cost_formatter</span><span class="p">},</span>
 <span class="p">}</span>
 </pre></div>
diff --git a/usertutorial.html b/usertutorial.html
index dbe5716..d06c90b 100644
--- a/usertutorial.html
+++ b/usertutorial.html
@@ -202,7 +202,7 @@ functionality for the examples database.</p>
 <p>In the top menu, select <span class="menuselection">Sources ‣ Databases</span>. Find the
 <span class="guilabel">examples</span> database in the list and select the edit record
 button.</p>
-<img alt="_images/edit-record.png" src="_images/edit-record.png" />
+<img alt="_static/images/usertutorial/edit-record.png" src="_static/images/usertutorial/edit-record.png" />
 <p>Within the <span class="guilabel">Edit Database</span> page, check the
 <span class="guilabel">Allow Csv Upload</span> checkbox.</p>
 <p>Finally, save by selecting <span class="guilabel">Save</span> at the bottom of the page.</p>
@@ -212,13 +212,13 @@ button.</p>
 <p>Download the data for this tutorial to your computer from
 <a class="reference external" href="https://raw.githubusercontent.com/apache-superset/examples-data/master/tutorial_flights.csv">Github</a>.</p>
 <p>In the top menu, select <span class="menuselection">Sources ‣ Upload a CSV</span>.</p>
-<img alt="_images/upload_a_csv.png" src="_images/upload_a_csv.png" />
+<img alt="_static/images/usertutorial/upload_a_csv.png" src="_static/images/usertutorial/upload_a_csv.png" />
 <p>Then, enter the <span class="guilabel">Table name</span> as <cite>tutorial_flights</cite>
 and select the <span class="guilabel">CSV file</span> from your computer.</p>
-<img alt="_images/csv_to_database_configuration.png" src="_images/csv_to_database_configuration.png" />
+<img alt="_static/images/usertutorial/csv_to_database_configuration.png" src="_static/images/usertutorial/csv_to_database_configuration.png" />
 <p>Next enter the text <cite>Travel Date</cite> into the
 <span class="guilabel">Parse Dates</span> field.</p>
-<img alt="_images/parse_dates_column.png" src="_images/parse_dates_column.png" />
+<img alt="_static/images/usertutorial/parse_dates_column.png" src="_static/images/usertutorial/parse_dates_column.png" />
 <p>Leaving all the other options in their default settings, select
 <span class="guilabel">Save</span> at the bottom of the page.</p>
 </div>
@@ -227,13 +227,13 @@ and select the <span class="guilabel">CSV file</span> from your computer.</p>
 <p>In this section, we’ll create our first visualization: a table to show
 the number of flights and cost per travel class.</p>
 <p>To create a new chart, select the <span class="menuselection">New ‣ Chart</span>.</p>
-<img alt="_images/add_new_chart.png" src="_images/add_new_chart.png" />
+<img alt="_static/images/usertutorial/add_new_chart.png" src="_static/images/usertutorial/add_new_chart.png" />
 <p>Once in the <span class="guilabel">Create a new chart</span> dialogue, select
 <span class="guilabel">tutorial_flights</span> from the <span class="guilabel">Chose a datasource</span>
 dropdown.</p>
-<img alt="_images/chose_a_datasource.png" src="_images/chose_a_datasource.png" />
+<img alt="_static/images/usertutorial/chose_a_datasource.png" src="_static/images/usertutorial/chose_a_datasource.png" />
 <p>Next, select the visualization type as <span class="guilabel">Table</span>.</p>
-<img alt="_images/select_table_visualization_type.png" src="_images/select_table_visualization_type.png" />
+<img alt="_static/images/usertutorial/select_table_visualization_type.png" src="_static/images/usertutorial/select_table_visualization_type.png" />
 <p>Then, select <span class="guilabel">Create new chart</span> to go into the chart view.</p>
 <p>By default, Apache Superset only shows the last week of data: in our
 example, we want to look at all the data in the dataset. No problem -
@@ -241,7 +241,7 @@ within the <span class="guilabel">Time</span> section, remove the filter on
 <span class="guilabel">Time range</span> by selecting on <span class="guilabel">Last week</span> then
 changing the selection to <span class="guilabel">No filter</span>, with a final
 <span class="guilabel">OK</span> to confirm your selection.</p>
-<img alt="_images/no_filter_on_time_filter.png" src="_images/no_filter_on_time_filter.png" />
+<img alt="_static/images/usertutorial/no_filter_on_time_filter.png" src="_static/images/usertutorial/no_filter_on_time_filter.png" />
 <p>Now, we want to specify the rows in our table by using the
 <span class="guilabel">Group by</span> option. Since in this example, we want to
 understand different Travel Classes, we select <span class="guilabel">Travel Class</span>
@@ -252,9 +252,9 @@ rows in the table (in this case corresponding to the number of flights
 since we have a row per flight), is already there. To add cost, within
 <span class="guilabel">Metrics</span>, select <span class="guilabel">Cost</span>. <span class="guilabel">Save</span> the
 default aggregation option, which is to sum the column.</p>
-<img alt="_images/sum_cost_column.png" src="_images/sum_cost_column.png" />
+<img alt="_static/images/usertutorial/sum_cost_column.png" src="_static/images/usertutorial/sum_cost_column.png" />
 <p>Finally, select <span class="guilabel">Run Query</span> to see the results of the table.</p>
-<img alt="_images/tutorial_table.png" src="_images/tutorial_table.png" />
+<img alt="_static/images/usertutorial/tutorial_table.png" src="_static/images/usertutorial/tutorial_table.png" />
 <p>Congratulations, you have created your first visualization in Apache
 Superset!</p>
 <p>To save the visualization, click on <span class="guilabel">Save</span> in the top left of
@@ -263,7 +263,7 @@ name as Tutorial Table (you will be able to find it again through the
 <span class="guilabel">Charts</span> screen, accessible in the top menu). Similarly,
 select <span class="guilabel">Add to new dashboard</span> and enter <cite>Tutorial Dashboard</cite>.
 Finally, select <span class="guilabel">Save &amp; go to dashboard</span>.</p>
-<img alt="_images/save_tutorial_table.png" src="_images/save_tutorial_table.png" />
+<img alt="_static/images/usertutorial/save_tutorial_table.png" src="_static/images/usertutorial/save_tutorial_table.png" />
 </div>
 <div class="section" id="dashboard-basics">
 <h2>Dashboard basics<a class="headerlink" href="#dashboard-basics" title="Permalink to this headline">¶</a></h2>
@@ -276,7 +276,7 @@ from the list of dashboards.</p>
 section. Select <span class="guilabel">Edit dashboard</span> and then hover over the
 table. By selecting the bottom right hand corner of the table (the
 cursor will change too), you can resize it by dragging and dropping.</p>
-<img alt="_images/resize_tutorial_table_on_dashboard.png" src="_images/resize_tutorial_table_on_dashboard.png" />
+<img alt="_static/images/usertutorial/resize_tutorial_table_on_dashboard.png" src="_static/images/usertutorial/resize_tutorial_table_on_dashboard.png" />
 <p>Finally, save your changes by selecting <span class="guilabel">Save changes</span> in the
 top right.</p>
 </div>
@@ -302,7 +302,7 @@ range to be the first six months of 2011 by click on Last week in the
 June 2011 respectively by either entering directly the dates or using
 the calendar widget (by selecting the month name and then the year, you
 can move more quickly to far away dates).</p>
-<img alt="_images/select_dates_pivot_table.png" src="_images/select_dates_pivot_table.png" />
+<img alt="_static/images/usertutorial/select_dates_pivot_table.png" src="_static/images/usertutorial/select_dates_pivot_table.png" />
 <p>Next, within the <span class="guilabel">Query</span> section, remove the default COUNT(*)
 and add Cost, keeping the default SUM aggregate. Note that Apache
 Superset will indicate the type of the metric by the symbol on the left
@@ -314,7 +314,7 @@ section.</p>
 <p>Within <span class="guilabel">Columns</span>, select first <span class="guilabel">Department</span> and then
 <span class="guilabel">Travel Class</span>. All set – let’s <span class="guilabel">Run Query</span> to see
 some data!</p>
-<img alt="_images/tutorial_pivot_table.png" src="_images/tutorial_pivot_table.png" />
+<img alt="_static/images/usertutorial/tutorial_pivot_table.png" src="_static/images/usertutorial/tutorial_pivot_table.png" />
 <p>You should see months in the rows and Department and Travel Class in the
 columns. To get this in our dashboard, select <span class="guilabel">Save</span>, name the
 chart Tutorial Pivot and using
@@ -337,7 +337,7 @@ at entire dataset.</p>
 add <span class="guilabel">Cost</span>. This time, we want to change how this column is
 aggregated to show the mean value: we can do this by selecting
 <span class="guilabel">AVG</span> in the <span class="guilabel">aggregate</span> dropdown.</p>
-<img alt="_images/average_aggregate_for_cost.png" src="_images/average_aggregate_for_cost.png" />
+<img alt="_static/images/usertutorial/average_aggregate_for_cost.png" src="_static/images/usertutorial/average_aggregate_for_cost.png" />
 <p>Next, select <span class="guilabel">Run Query</span> to show the data on the chart.</p>
 <p>How does this look? Well, we can see that the average cost goes up in
 December. However, perhaps it doesn’t make sense to combine both single
@@ -353,7 +353,7 @@ this pane, try changing the <span class="guilabel">Color Scheme</span>, removing
 filter by selecting No in the <span class="guilabel">Show Range Filter</span> drop down
 and adding some labels using <span class="guilabel">X Axis Label</span> and
 <span class="guilabel">Y Axis Label</span>.</p>
-<img alt="_images/tutorial_line_chart.png" src="_images/tutorial_line_chart.png" />
+<img alt="_static/images/usertutorial/tutorial_line_chart.png" src="_static/images/usertutorial/tutorial_line_chart.png" />
 <p>Once you’re done, <span class="guilabel">Save</span> as Tutorial Line Chart, use
 <span class="guilabel">Add chart to
 existing dashboard</span> to add this chart to the previous ones on the
@@ -369,14 +369,14 @@ edit mode by selecting <span class="guilabel">Edit dashboard</span>.</p>
 <p>Within the Insert components pane, drag and drop a <span class="guilabel">Markdown</span>
 box on the dashboard. Look for the blue lines which indicate the anchor
 where the box will go.</p>
-<img alt="_images/blue_bar_insert_component.png" src="_images/blue_bar_insert_component.png" />
+<img alt="_static/images/usertutorial/blue_bar_insert_component.png" src="_static/images/usertutorial/blue_bar_insert_component.png" />
 <p>Now, to edit the text, select the box. You can enter text, in markdown
 format (see <a class="reference external" href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet">this Markdown
 Cheatsheet</a>
 for more information about this format). You can toggle between
 <span class="guilabel">Edit</span> and <span class="guilabel">Preview</span> using the menu on the top of
 the box.</p>
-<img alt="_images/markdown.png" src="_images/markdown.png" />
+<img alt="_static/images/usertutorial/markdown.png" src="_static/images/usertutorial/markdown.png" />
 <p>To exit, select any other part of the dashboard. Finally, don’t forget
 to keep your changes using <span class="guilabel">Save changes</span>.</p>
 </div>
@@ -401,7 +401,7 @@ alphabetical order. First, enter the column as
 select <span class="guilabel">Run Query</span>. This gives us a preview of our filter.</p>
 <p>Next, remove the date filter by unchecking the <span class="guilabel">Date Filter</span>
 checkbox.</p>
-<img alt="_images/filter_on_origin_country.png" src="_images/filter_on_origin_country.png" />
+<img alt="_static/images/usertutorial/filter_on_origin_country.png" src="_static/images/usertutorial/filter_on_origin_country.png" />
 <p>Finally, select <span class="guilabel">Save</span>, name the chart as Tutorial Filter, add
 the chart to our existing Tutorial Dashboard and then
 <span class="guilabel">Save &amp; go to
@@ -419,7 +419,7 @@ like, you can rearrange the elements of the dashboard by selecting
 simply select <span class="guilabel">Draft</span> next to the title of your dashboard on
 the top left to change your dashboard to be in <span class="guilabel">Published</span>
 state. You can also favorite this dashboard by selecting the star.</p>
-<img alt="_images/publish_dashboard.png" src="_images/publish_dashboard.png" />
+<img alt="_static/images/usertutorial/publish_dashboard.png" src="_static/images/usertutorial/publish_dashboard.png" />
 </div>
 <div class="section" id="taking-your-dashboard-further">
 <h2>Taking your dashboard further<a class="headerlink" href="#taking-your-dashboard-further" title="Permalink to this headline">¶</a></h2>
@@ -443,7 +443,7 @@ number of different annotations.</p>
 by selecting the green plus sign. Then, select the
 <span class="guilabel">Volcanic Eruptions</span> layer, add a short description Grímsvötn
 and the eruption dates (23-25 May 2011) before finally saving.</p>
-<img alt="_images/edit_annotation.png" src="_images/edit_annotation.png" />
+<img alt="_static/images/usertutorial/edit_annotation.png" src="_static/images/usertutorial/edit_annotation.png" />
 <p>Then, navigate to the line chart by going to <span class="guilabel">Charts</span> then
 selecting <span class="guilabel">Tutorial
 Line Chart</span> from the list. Next, go to the
@@ -455,9 +455,9 @@ Line Chart</span> from the list. Next, go to the
 <li><p>set the <span class="guilabel">Annotation Source</span> as <span class="guilabel">Superset annotation</span></p></li>
 <li><p>specify the <span class="guilabel">Annotation Layer</span> as <span class="guilabel">Volcanic Eruptions</span></p></li>
 </ul>
-<img alt="_images/annotation_settings.png" src="_images/annotation_settings.png" />
+<img alt="_static/images/usertutorial/annotation_settings.png" src="_static/images/usertutorial/annotation_settings.png" />
 <p>Select <span class="guilabel">Apply</span> to see your annotation shown on the chart.</p>
-<img alt="_images/annotation.png" src="_images/annotation.png" />
+<img alt="_static/images/usertutorial/annotation.png" src="_static/images/usertutorial/annotation.png" />
 <p>If you wish, you can change how your annotation looks by changing the
 settings in the <span class="guilabel">Display configuration</span> section. Otherwise,
 select <span class="guilabel">OK</span> and finally <span class="guilabel">Save</span> to save your chart.
@@ -493,7 +493,7 @@ Time section, set the <span class="guilabel">Time Range</span> as 1<sup>st</sup>
 <p>Next, in the query section, change the <span class="guilabel">Metrics</span> to the sum of
 <span class="guilabel">Cost</span>. Select <span class="guilabel">Run Query</span> to show the chart. You
 should see the total cost per day for each month in October 2011.</p>
-<img alt="_images/advanced_analytics_base.png" src="_images/advanced_analytics_base.png" />
+<img alt="_static/images/usertutorial/advanced_analytics_base.png" src="_static/images/usertutorial/advanced_analytics_base.png" />
 <p>Finally, save the visualization as Tutorial Advanced Analytics Base,
 adding it to the Tutorial Dashboard.</p>
 </div>
@@ -514,7 +514,7 @@ calculated on 7 days and we avoid any ramp up period.</p>
 <p>After displaying the chart by selecting <span class="guilabel">Run Query</span> you will
 see that the data is less variable and that the series starts later as
 the ramp up period is excluded.</p>
-<img alt="_images/rolling_mean.png" src="_images/rolling_mean.png" />
+<img alt="_static/images/usertutorial/rolling_mean.png" src="_static/images/usertutorial/rolling_mean.png" />
 <p>Save the chart as Tutorial Rolling Mean and add it to the Tutorial
 Dashboard.</p>
 </div>
@@ -531,12 +531,12 @@ visualization).</p>
 typing in “minus 1 week” (note this box accepts input in natural
 language). <span class="guilabel">Run Query</span> to see the new chart, which has an
 additional series with the same values, shifted a week back in time.</p>
-<img alt="_images/time_comparison_two_series.png" src="_images/time_comparison_two_series.png" />
+<img alt="_static/images/usertutorial/time_comparison_two_series.png" src="_static/images/usertutorial/time_comparison_two_series.png" />
 <p>Then, change the <span class="guilabel">Calculation type</span> to
 <span class="guilabel">Absolute difference</span> and select <span class="guilabel">Run
 Query</span>. We can now see only one series again, this time showing the
 difference between the two series we saw previously.</p>
-<img alt="_images/time_comparison_absolute_difference.png" src="_images/time_comparison_absolute_difference.png" />
+<img alt="_static/images/usertutorial/time_comparison_absolute_difference.png" src="_static/images/usertutorial/time_comparison_absolute_difference.png" />
 <p>Save the chart as Tutorial Time Comparison and add it to the Tutorial
 Dashboard.</p>
 </div>
@@ -549,7 +549,7 @@ Tutorial Advanced Analytics Base chart.</p>
 <span class="guilabel">Advanced Analytics</span>, enter 7D, corresponding to seven days,
 in the <span class="guilabel">Rule</span> and median as the <span class="guilabel">Method</span> and show
 the chart by selecting <span class="guilabel">Run Query</span>.</p>
-<img alt="_images/resample.png" src="_images/resample.png" />
+<img alt="_static/images/usertutorial/resample.png" src="_static/images/usertutorial/resample.png" />
 <p>Note that now we have a single data point every 7 days. In our case, the
 value showed corresponds to the median value within the seven daily data
 points. For more information on the meaning of the various options in
diff --git a/visualization.html b/visualization.html
index 5d17961..d62bbaf 100644
--- a/visualization.html
+++ b/visualization.html
@@ -3186,9 +3186,9 @@ You can get this file on this site: <a class="reference external" href="https://
 It’s important because it’s a norm for mapping your data with geojson file</p></li>
 <li><p>You need to convert shapefile to geojson file.
 This action can make with ogr2ogr tools: <a class="reference external" href="https://www.gdal.org/ogr2ogr.html">https://www.gdal.org/ogr2ogr.html</a></p></li>
-<li><p>Put your geojson file in next folder : superset/assets/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson</p></li>
+<li><p>Put your geojson file in next folder : superset-frontend/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson</p></li>
 <li><p>You can to reduce size of geojson file on this site: <a class="reference external" href="https://mapshaper.org/">https://mapshaper.org/</a></p></li>
-<li><p>Go in file superset/assets/src/explore/controls.jsx</p></li>
+<li><p>Go in file superset-frontend/src/explore/controls.jsx</p></li>
 <li><p>Add your country in component ‘select_country’
 Example :</p></li>
 </ol>