@@ -120,8 +120,8 @@ class FilterBox extends React.Component {
@@ -227,7 +227,7 @@ class FilterBox extends React.Component {
onClick={this.clickApply.bind(this)}
disabled={!this.state.hasChanged}
>
- Apply
+ {t('Apply')}
}
diff --git a/superset/assets/visualizations/histogram.js b/superset/assets/visualizations/histogram.js
index b5bbf0951946b..b4bf6fcc746dd 100644
--- a/superset/assets/visualizations/histogram.js
+++ b/superset/assets/visualizations/histogram.js
@@ -4,40 +4,54 @@ import { getColorFromScheme } from '../javascripts/modules/colors';
require('./histogram.css');
function histogram(slice, payload) {
+ const data = payload.data;
const div = d3.select(slice.selector);
- const draw = function (data, numBins) {
+ const numBins = Number(slice.formData.link_length) || 10;
+ const normalized = slice.formData.normalized;
+ const xAxisLabel = slice.formData.x_axis_label;
+ const yAxisLabel = slice.formData.y_axis_label;
+
+ const draw = function () {
// Set Margins
+ const left = yAxisLabel ? 70 : 50;
const margin = {
top: 50,
right: 10,
bottom: 20,
- left: 50,
+ left,
};
const navBarHeight = 36;
const navBarBuffer = 10;
const width = slice.width() - margin.left - margin.right;
const height = slice.height() - margin.top - margin.bottom - navBarHeight - navBarBuffer;
+ // set number of ticks
+ const maxTicks = 20;
+ const numTicks = d3.min([maxTicks, numBins]);
+
// Set Histogram objects
- const formatNumber = d3.format(',.0f');
- const formatTicks = d3.format(',.00f');
- const x = d3.scale.ordinal();
+ const x = d3.scale.linear();
const y = d3.scale.linear();
const xAxis = d3.svg.axis()
.scale(x)
.orient('bottom')
- .ticks(numBins)
- .tickFormat(formatTicks);
+ .ticks(numTicks, 's');
const yAxis = d3.svg.axis()
.scale(y)
.orient('left')
- .ticks(numBins);
+ .ticks(numTicks, 's');
// Calculate bins for the data
- const bins = d3.layout.histogram().bins(numBins)(data);
+ let bins = d3.layout.histogram().bins(numBins)(data);
+ if (normalized) {
+ const total = data.length;
+ bins = bins.map(d => ({ ...d, y: d.y / total }));
+ }
// Set the x-values
- x.domain(bins.map(d => d.x))
- .rangeRoundBands([0, width], 0.1);
+ const max = d3.max(data);
+ const min = d3.min(data);
+ x.domain([min, max])
+ .range([0, width], 0.1);
// Set the y-values
y.domain([0, d3.max(bins, d => d.y)])
.range([height, 0]);
@@ -72,42 +86,13 @@ function histogram(slice, payload) {
bar.enter().append('rect');
bar.exit().remove();
// Set the Height and Width for each bar
- bar.attr('width', x.rangeBand())
+ bar.attr('width', (x(bins[0].dx) - x(0)) - 1)
.attr('x', d => x(d.x))
.attr('y', d => y(d.y))
.attr('height', d => y.range()[0] - y(d.y))
- .style('fill', d => getColorFromScheme(d.length, slice.formData.color_scheme))
+ .style('fill', getColorFromScheme(1, slice.formData.color_scheme))
.order();
- // Find maximum length to position the ticks on top of the bar correctly
- const maxLength = d3.max(bins, d => d.length);
- function textAboveBar(d) {
- return d.length / maxLength < 0.1;
- }
-
- // Add a bar text to each bar in the histogram
- svg.selectAll('.bartext')
- .data(bins)
- .enter()
- .append('text')
- .attr('dy', '.75em')
- .attr('y', function (d) {
- let padding = 0.0;
- if (textAboveBar(d)) {
- padding = 12.0;
- } else {
- padding = -8.0;
- }
- return y(d.y) - padding;
- })
- .attr('x', d => x(d.x) + (x.rangeBand() / 2))
- .attr('text-anchor', 'middle')
- .attr('font-weight', 'bold')
- .attr('font-size', '15px')
- .text(d => formatNumber(d.y))
- .attr('fill', d => textAboveBar(d) ? 'black' : 'white')
- .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
-
// Update the x-axis
svg.append('g')
.attr('class', 'axis')
@@ -124,11 +109,29 @@ function histogram(slice, payload) {
.selectAll('g')
.filter(function (d) { return d; })
.classed('minor', true);
+
+ // add axis labels if passed
+ if (xAxisLabel) {
+ svg.append('text')
+ .attr('transform',
+ 'translate(' + ((width + margin.left) / 2) + ' ,' +
+ (height + margin.top + 50) + ')')
+ .style('text-anchor', 'middle')
+ .text(xAxisLabel);
+ }
+ if (yAxisLabel) {
+ svg.append('text')
+ .attr('transform', 'rotate(-90)')
+ .attr('y', '1em')
+ .attr('x', 0 - (height / 2))
+ .attr('dy', '1em')
+ .style('text-anchor', 'middle')
+ .text(yAxisLabel);
+ }
};
- const numBins = Number(slice.formData.link_length) || 10;
div.selectAll('*').remove();
- draw(payload.data, numBins);
+ draw();
}
module.exports = histogram;
diff --git a/superset/assets/visualizations/nvd3_vis.js b/superset/assets/visualizations/nvd3_vis.js
index b60c32a0e57c0..3739aa41029c8 100644
--- a/superset/assets/visualizations/nvd3_vis.js
+++ b/superset/assets/visualizations/nvd3_vis.js
@@ -4,6 +4,7 @@ import throttle from 'lodash.throttle';
import d3 from 'd3';
import nv from 'nvd3';
import mathjs from 'mathjs';
+import moment from 'moment';
import d3tip from 'd3-tip';
import { getColorFromScheme } from '../javascripts/modules/colors';
@@ -18,6 +19,8 @@ import './nvd3_vis.css';
import { VIZ_TYPES } from './main';
const minBarWidth = 15;
+// Limit on how large axes margins can grow as the chart window is resized
+const maxMarginPad = 30;
const animationTime = 1000;
const BREAKPOINTS = {
@@ -463,7 +466,9 @@ function nvd3Vis(slice, payload) {
if (chart.yAxis !== undefined || chart.yAxis2 !== undefined) {
// Hack to adjust y axis left margin to accommodate long numbers
- const marginPad = isExplore ? width * 0.01 : width * 0.03;
+ const containerWidth = slice.container.width();
+ const marginPad = Math.min(isExplore ? containerWidth * 0.01 : containerWidth * 0.03,
+ maxMarginPad);
const maxYAxisLabelWidth = chart.yAxis2 ? getMaxLabelSize(slice.container, 'nv-y1')
: getMaxLabelSize(slice.container, 'nv-y');
const maxXAxisLabelHeight = getMaxLabelSize(slice.container, 'nv-x');
@@ -624,7 +629,7 @@ function nvd3Vis(slice, payload) {
const tip = tipFactory(e);
const records = (slice.annotationData[e.name].records || []).map((r) => {
- const timeColumn = new Date(r[e.timeColumn]);
+ const timeColumn = new Date(moment.utc(r[e.timeColumn]));
return {
...r,
[e.timeColumn]: timeColumn,
diff --git a/superset/cache_util.py b/superset/cache_util.py
index 9612324d5d487..be6b6d5d742c3 100644
--- a/superset/cache_util.py
+++ b/superset/cache_util.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from flask import request
from superset import tables_cache
diff --git a/superset/cli.py b/superset/cli.py
index 5c1f6081308ab..48db7394b9dae 100755
--- a/superset/cli.py
+++ b/superset/cli.py
@@ -1,4 +1,5 @@
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
diff --git a/superset/config.py b/superset/config.py
index 9e84c466b1dab..ae81cfcb6e402 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""The main config file for Superset
All configuration in this file can be overridden by providing a superset_config
diff --git a/superset/connectors/base/models.py b/superset/connectors/base/models.py
index 940cc446ee87c..7a115988af8c2 100644
--- a/superset/connectors/base/models.py
+++ b/superset/connectors/base/models.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
import json
from sqlalchemy import (
diff --git a/superset/connectors/base/views.py b/superset/connectors/base/views.py
index 46a7120c2b068..42ce670270872 100644
--- a/superset/connectors/base/views.py
+++ b/superset/connectors/base/views.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from flask import Markup
from superset.utils import SupersetException
diff --git a/superset/connectors/connector_registry.py b/superset/connectors/connector_registry.py
index ffcf5ad32b0aa..0a6291ab48d77 100644
--- a/superset/connectors/connector_registry.py
+++ b/superset/connectors/connector_registry.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from sqlalchemy.orm import subqueryload
diff --git a/superset/connectors/druid/__init__.py b/superset/connectors/druid/__init__.py
index b2df79851f224..a60249b87bb83 100644
--- a/superset/connectors/druid/__init__.py
+++ b/superset/connectors/druid/__init__.py
@@ -1,2 +1,3 @@
+# -*- coding: utf-8 -*-
from . import models # noqa
from . import views # noqa
diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py
index edd7ec1009721..a16baf1039e65 100644
--- a/superset/connectors/druid/models.py
+++ b/superset/connectors/druid/models.py
@@ -1,10 +1,17 @@
+# -*- coding: utf-8 -*-
# pylint: disable=invalid-unary-operand-type
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from collections import OrderedDict
from copy import deepcopy
from datetime import datetime, timedelta
import json
import logging
from multiprocessing.pool import ThreadPool
+import re
from dateutil.parser import parse as dparse
from flask import escape, Markup
@@ -29,7 +36,7 @@
from superset import conf, db, import_util, sm, utils
from superset.connectors.base.models import BaseColumn, BaseDatasource, BaseMetric
from superset.models.helpers import (
- AuditMixinNullable, ImportMixin, QueryResult, set_perm,
+ AuditMixinNullable, ImportMixin, QueryResult, set_perm,
)
from superset.utils import (
DimSelector, DTTM_ALIAS, flasher, MetricPermException,
@@ -101,24 +108,29 @@ def data(self):
'backend': 'druid',
}
+ @staticmethod
+ def get_base_url(host, port):
+ if not re.match('http(s)?://', host):
+ host = 'http://' + host
+ return '{0}:{1}'.format(host, port)
+
+ def get_base_coordinator_url(self):
+ base_url = self.get_base_url(
+ self.coordinator_host, self.coordinator_port)
+ return '{base_url}/{self.coordinator_endpoint}'.format(**locals())
+
def get_pydruid_client(self):
cli = PyDruid(
- 'http://{0}:{1}/'.format(self.broker_host, self.broker_port),
+ self.get_base_url(self.broker_host, self.broker_port),
self.broker_endpoint)
return cli
def get_datasources(self):
- endpoint = (
- 'http://{obj.coordinator_host}:{obj.coordinator_port}/'
- '{obj.coordinator_endpoint}/datasources'
- ).format(obj=self)
-
+ endpoint = self.get_base_coordinator_url() + '/datasources'
return json.loads(requests.get(endpoint).text)
def get_druid_version(self):
- endpoint = (
- 'http://{obj.coordinator_host}:{obj.coordinator_port}/status'
- ).format(obj=self)
+ endpoint = self.get_base_coordinator_url() + '/status'
return json.loads(requests.get(endpoint).text)['version']
def refresh_datasources(
@@ -582,11 +594,11 @@ def int_or_0(v):
v1nums = (v1nums + [0, 0, 0])[:3]
v2nums = (v2nums + [0, 0, 0])[:3]
return (
- v1nums[0] > v2nums[0] or
- (v1nums[0] == v2nums[0] and v1nums[1] > v2nums[1]) or
- (v1nums[0] == v2nums[0] and v1nums[1] == v2nums[1] and
- v1nums[2] > v2nums[2])
- )
+ v1nums[0] > v2nums[0] or
+ (v1nums[0] == v2nums[0] and v1nums[1] > v2nums[1]) or
+ (v1nums[0] == v2nums[0] and v1nums[1] == v2nums[1] and
+ v1nums[2] > v2nums[2])
+ )
def latest_metadata(self):
"""Returns segment metadata from the latest segment"""
@@ -869,8 +881,8 @@ def recursive_get_fields(_conf):
def resolve_postagg(postagg, post_aggs, agg_names, visited_postaggs, metrics_dict):
mconf = postagg.json_obj
required_fields = set(
- DruidDatasource.recursive_get_fields(mconf)
- + mconf.get('fieldNames', []))
+ DruidDatasource.recursive_get_fields(mconf) +
+ mconf.get('fieldNames', []))
# Check if the fields are already in aggs
# or is a previous postagg
required_fields = set([
diff --git a/superset/connectors/druid/views.py b/superset/connectors/druid/views.py
index ca407fb05ede2..53b3670debec3 100644
--- a/superset/connectors/druid/views.py
+++ b/superset/connectors/druid/views.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from datetime import datetime
import json
import logging
diff --git a/superset/connectors/sqla/__init__.py b/superset/connectors/sqla/__init__.py
index b2df79851f224..a60249b87bb83 100644
--- a/superset/connectors/sqla/__init__.py
+++ b/superset/connectors/sqla/__init__.py
@@ -1,2 +1,3 @@
+# -*- coding: utf-8 -*-
from . import models # noqa
from . import views # noqa
diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py
index 9e2ae2005f3ca..3b636e8fa2870 100644
--- a/superset/connectors/sqla/models.py
+++ b/superset/connectors/sqla/models.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from datetime import datetime
import logging
diff --git a/superset/connectors/sqla/views.py b/superset/connectors/sqla/views.py
index 3bc31f0a006b3..8398cbcbdd135 100644
--- a/superset/connectors/sqla/views.py
+++ b/superset/connectors/sqla/views.py
@@ -1,4 +1,10 @@
+# -*- coding: utf-8 -*-
"""Views used by the SqlAlchemy connector"""
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from flask import flash, Markup, redirect
from flask_appbuilder import CompactCRUDMixin, expose
from flask_appbuilder.actions import action
diff --git a/superset/dataframe.py b/superset/dataframe.py
index cd9f95fd2f323..62d6cf45dd8d6 100644
--- a/superset/dataframe.py
+++ b/superset/dataframe.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
""" Superset wrapper around pandas.DataFrame.
TODO(bkyryliuk): add support for the conventions like: *_dim or dim_*
diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py
index f0e7c67620712..4d373dff5a0de 100644
--- a/superset/db_engine_specs.py
+++ b/superset/db_engine_specs.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Compatibility layer for different database engines
This modules stores logic specific to different database engines. Things
@@ -17,7 +18,6 @@
from __future__ import unicode_literals
from collections import defaultdict, namedtuple
-import csv
import inspect
import logging
import os
@@ -34,6 +34,7 @@
from sqlalchemy.engine.url import make_url
from sqlalchemy.sql import text
import sqlparse
+import unicodecsv
from werkzeug.utils import secure_filename
from superset import app, cache_util, conf, db, utils
@@ -849,7 +850,7 @@ def create_table_from_csv(form, table):
"""Uploads a csv file and creates a superset datasource in Hive."""
def get_column_names(filepath):
with open(filepath, 'rb') as f:
- return csv.reader(f).next()
+ return unicodecsv.reader(f, encoding='utf-8-sig').next()
table_name = form.name.data
filename = form.csv_file.data.filename
@@ -873,11 +874,12 @@ def get_column_names(filepath):
s3 = boto3.client('s3')
location = os.path.join('s3a://', bucket_path, upload_prefix, table_name)
s3.upload_file(
- upload_path, 'airbnb-superset',
+ upload_path, bucket_path,
os.path.join(upload_prefix, table_name, filename))
sql = """CREATE EXTERNAL TABLE {table_name} ( {schema_definition} )
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS
- TEXTFILE LOCATION '{location}'""".format(**locals())
+ TEXTFILE LOCATION '{location}'
+ tblproperties ('skip.header.line.count'='1')""".format(**locals())
logging.info(form.con.data)
engine = create_engine(form.con.data.sqlalchemy_uri)
engine.execute(sql)
diff --git a/superset/db_engines/hive.py b/superset/db_engines/hive.py
index ae3c1eaacee63..4f677faefb33e 100644
--- a/superset/db_engines/hive.py
+++ b/superset/db_engines/hive.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from pyhive import hive
from TCLIService import ttypes
from thrift import Thrift
diff --git a/superset/db_engines/presto.py b/superset/db_engines/presto.py
index eb3246451d120..724cb9e08fe96 100644
--- a/superset/db_engines/presto.py
+++ b/superset/db_engines/presto.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from pyhive import presto
diff --git a/superset/dict_import_export_util.py b/superset/dict_import_export_util.py
index 26cfc5de2ed7a..4f7660ec84ceb 100644
--- a/superset/dict_import_export_util.py
+++ b/superset/dict_import_export_util.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
import logging
from superset.connectors.druid.models import DruidCluster
diff --git a/superset/extract_table_names.py b/superset/extract_table_names.py
index a86b067994551..8cac1e1ee43e2 100644
--- a/superset/extract_table_names.py
+++ b/superset/extract_table_names.py
@@ -11,6 +11,10 @@
#
# See:
# http://groups.google.com/group/sqlparse/browse_thread/thread/b0bd9a022e9d4895
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
import sqlparse
from sqlparse.sql import Identifier, IdentifierList
diff --git a/superset/forms.py b/superset/forms.py
index cacb9067eb81b..eb8aba889a086 100644
--- a/superset/forms.py
+++ b/superset/forms.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Contains the logic to create cohesive forms on the explore view"""
from __future__ import absolute_import
from __future__ import division
@@ -35,8 +36,8 @@ def all_db_items():
validators=[
FileRequired(), FileAllowed(['csv'], _('CSV Files Only!'))])
con = QuerySelectField(
- query_factory=all_db_items,
- get_pk=lambda a: a.id, get_label=lambda a: a.database_name)
+ query_factory=all_db_items,
+ get_pk=lambda a: a.id, get_label=lambda a: a.database_name)
sep = StringField(
_('Delimiter'),
description=_('Delimiter used by CSV file (for whitespace use \s+).'),
diff --git a/superset/import_util.py b/superset/import_util.py
index 47ffc4d04aff9..877cb90020c06 100644
--- a/superset/import_util.py
+++ b/superset/import_util.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
import logging
from sqlalchemy.orm.session import make_transient
diff --git a/superset/jinja_context.py b/superset/jinja_context.py
index dad3e9ace30fc..fe93594fce064 100644
--- a/superset/jinja_context.py
+++ b/superset/jinja_context.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Defines the templating context for SQL Lab"""
from __future__ import absolute_import
from __future__ import division
diff --git a/superset/legacy.py b/superset/legacy.py
index b89b84f0fd2e7..88d75709967cd 100644
--- a/superset/legacy.py
+++ b/superset/legacy.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Code related with dealing with legacy / change management"""
from __future__ import absolute_import
from __future__ import division
diff --git a/superset/migrations/env.py b/superset/migrations/env.py
index 599bda71fa822..07340485f8d4c 100755
--- a/superset/migrations/env.py
+++ b/superset/migrations/env.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from __future__ import with_statement
import logging
diff --git a/superset/migrations/versions/1226819ee0e3_fix_wrong_constraint_on_table_columns.py b/superset/migrations/versions/1226819ee0e3_fix_wrong_constraint_on_table_columns.py
index b77cb9c38fade..a3279ca3b5a8a 100644
--- a/superset/migrations/versions/1226819ee0e3_fix_wrong_constraint_on_table_columns.py
+++ b/superset/migrations/versions/1226819ee0e3_fix_wrong_constraint_on_table_columns.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Fix wrong constraint on table columns
Revision ID: 1226819ee0e3
diff --git a/superset/migrations/versions/1296d28ec131_druid_exports.py b/superset/migrations/versions/1296d28ec131_druid_exports.py
index 6df37bcda5931..0b97806f75197 100644
--- a/superset/migrations/versions/1296d28ec131_druid_exports.py
+++ b/superset/migrations/versions/1296d28ec131_druid_exports.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Adds params to the datasource (druid) table
Revision ID: 1296d28ec131
diff --git a/superset/migrations/versions/12d55656cbca_is_featured.py b/superset/migrations/versions/12d55656cbca_is_featured.py
index 3158223743064..66f6ef2154588 100644
--- a/superset/migrations/versions/12d55656cbca_is_featured.py
+++ b/superset/migrations/versions/12d55656cbca_is_featured.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""is_featured
Revision ID: 12d55656cbca
diff --git a/superset/migrations/versions/18e88e1cc004_making_audit_nullable.py b/superset/migrations/versions/18e88e1cc004_making_audit_nullable.py
index 0143aad58722b..3bb660005b60b 100644
--- a/superset/migrations/versions/18e88e1cc004_making_audit_nullable.py
+++ b/superset/migrations/versions/18e88e1cc004_making_audit_nullable.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""making audit nullable
Revision ID: 18e88e1cc004
diff --git a/superset/migrations/versions/19a814813610_adding_metric_warning_text.py b/superset/migrations/versions/19a814813610_adding_metric_warning_text.py
index cf39a0e631599..ab0165e87730e 100644
--- a/superset/migrations/versions/19a814813610_adding_metric_warning_text.py
+++ b/superset/migrations/versions/19a814813610_adding_metric_warning_text.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Adding metric warning_text
Revision ID: 19a814813610
diff --git a/superset/migrations/versions/1a48a5411020_adding_slug_to_dash.py b/superset/migrations/versions/1a48a5411020_adding_slug_to_dash.py
index c6b88642b254b..b5efe73432998 100644
--- a/superset/migrations/versions/1a48a5411020_adding_slug_to_dash.py
+++ b/superset/migrations/versions/1a48a5411020_adding_slug_to_dash.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""adding slug to dash
Revision ID: 1a48a5411020
diff --git a/superset/migrations/versions/1d2ddd543133_log_dt.py b/superset/migrations/versions/1d2ddd543133_log_dt.py
index a5f50f4f64c38..70cda0a0061a0 100644
--- a/superset/migrations/versions/1d2ddd543133_log_dt.py
+++ b/superset/migrations/versions/1d2ddd543133_log_dt.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""log dt
Revision ID: 1d2ddd543133
diff --git a/superset/migrations/versions/1e2841a4128_.py b/superset/migrations/versions/1e2841a4128_.py
index 330b3b217c010..459a555086734 100644
--- a/superset/migrations/versions/1e2841a4128_.py
+++ b/superset/migrations/versions/1e2841a4128_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 1e2841a4128
diff --git a/superset/migrations/versions/21e88bc06c02_annotation_migration.py b/superset/migrations/versions/21e88bc06c02_annotation_migration.py
index 4c7bb807aff04..9a0e407eb0476 100644
--- a/superset/migrations/versions/21e88bc06c02_annotation_migration.py
+++ b/superset/migrations/versions/21e88bc06c02_annotation_migration.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
import json
from alembic import op
diff --git a/superset/migrations/versions/2591d77e9831_user_id.py b/superset/migrations/versions/2591d77e9831_user_id.py
index 4fac61ce9eb31..2e3b7d1b30803 100644
--- a/superset/migrations/versions/2591d77e9831_user_id.py
+++ b/superset/migrations/versions/2591d77e9831_user_id.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""user_id
Revision ID: 2591d77e9831
diff --git a/superset/migrations/versions/27ae655e4247_make_creator_owners.py b/superset/migrations/versions/27ae655e4247_make_creator_owners.py
index 2c3cdc1ed289c..92b455b86b564 100644
--- a/superset/migrations/versions/27ae655e4247_make_creator_owners.py
+++ b/superset/migrations/versions/27ae655e4247_make_creator_owners.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Make creator owners
Revision ID: 27ae655e4247
diff --git a/superset/migrations/versions/289ce07647b_add_encrypted_password_field.py b/superset/migrations/versions/289ce07647b_add_encrypted_password_field.py
index 6d64887b2ff32..027a2555938ab 100644
--- a/superset/migrations/versions/289ce07647b_add_encrypted_password_field.py
+++ b/superset/migrations/versions/289ce07647b_add_encrypted_password_field.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add encrypted password field
Revision ID: 289ce07647b
diff --git a/superset/migrations/versions/2929af7925ed_tz_offsets_in_data_sources.py b/superset/migrations/versions/2929af7925ed_tz_offsets_in_data_sources.py
index 85b54bc5cc31c..19845604e397c 100644
--- a/superset/migrations/versions/2929af7925ed_tz_offsets_in_data_sources.py
+++ b/superset/migrations/versions/2929af7925ed_tz_offsets_in_data_sources.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""TZ offsets in data sources
Revision ID: 2929af7925ed
diff --git a/superset/migrations/versions/2fcdcb35e487_saved_queries.py b/superset/migrations/versions/2fcdcb35e487_saved_queries.py
index 43aa277c55055..629cc7610f1ff 100644
--- a/superset/migrations/versions/2fcdcb35e487_saved_queries.py
+++ b/superset/migrations/versions/2fcdcb35e487_saved_queries.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""saved_queries
Revision ID: 2fcdcb35e487
@@ -30,8 +31,8 @@ def upgrade():
sa.Column('created_by_fk', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['changed_by_fk'], ['ab_user.id'], ),
sa.ForeignKeyConstraint(['created_by_fk'], ['ab_user.id'], ),
- sa.ForeignKeyConstraint(['user_id'], [u'ab_user.id'], ),
- sa.ForeignKeyConstraint(['db_id'], [u'dbs.id'], ),
+ sa.ForeignKeyConstraint(['user_id'], ['ab_user.id'], ),
+ sa.ForeignKeyConstraint(['db_id'], ['dbs.id'], ),
sa.PrimaryKeyConstraint('id')
)
diff --git a/superset/migrations/versions/315b3f4da9b0_adding_log_model.py b/superset/migrations/versions/315b3f4da9b0_adding_log_model.py
index d9fdfaccea1b3..ddceff571f513 100644
--- a/superset/migrations/versions/315b3f4da9b0_adding_log_model.py
+++ b/superset/migrations/versions/315b3f4da9b0_adding_log_model.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""adding log model
Revision ID: 315b3f4da9b0
diff --git a/superset/migrations/versions/33d996bcc382_update_slice_model.py b/superset/migrations/versions/33d996bcc382_update_slice_model.py
index a92a959c5c151..28ef8310a3fe7 100644
--- a/superset/migrations/versions/33d996bcc382_update_slice_model.py
+++ b/superset/migrations/versions/33d996bcc382_update_slice_model.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from alembic import op
import sqlalchemy as sa
from superset import db
diff --git a/superset/migrations/versions/3b626e2a6783_sync_db_with_models.py b/superset/migrations/versions/3b626e2a6783_sync_db_with_models.py
index e20b8d4806566..f1bf94968fbd8 100644
--- a/superset/migrations/versions/3b626e2a6783_sync_db_with_models.py
+++ b/superset/migrations/versions/3b626e2a6783_sync_db_with_models.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Sync DB with the models.py.
Sqlite doesn't support alter on tables, that's why most of the operations
diff --git a/superset/migrations/versions/3c3ffe173e4f_add_sql_string_to_table.py b/superset/migrations/versions/3c3ffe173e4f_add_sql_string_to_table.py
index 5b64bc40df2f0..d73bdc0be486f 100644
--- a/superset/migrations/versions/3c3ffe173e4f_add_sql_string_to_table.py
+++ b/superset/migrations/versions/3c3ffe173e4f_add_sql_string_to_table.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""add_sql_string_to_table
Revision ID: 3c3ffe173e4f
diff --git a/superset/migrations/versions/41f6a59a61f2_database_options_for_sql_lab.py b/superset/migrations/versions/41f6a59a61f2_database_options_for_sql_lab.py
index 18a54416e67c5..484d0935dd421 100644
--- a/superset/migrations/versions/41f6a59a61f2_database_options_for_sql_lab.py
+++ b/superset/migrations/versions/41f6a59a61f2_database_options_for_sql_lab.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""database options for sql lab
Revision ID: 41f6a59a61f2
diff --git a/superset/migrations/versions/430039611635_log_more.py b/superset/migrations/versions/430039611635_log_more.py
index aec2b32ed95c4..6b8cbb331a85a 100644
--- a/superset/migrations/versions/430039611635_log_more.py
+++ b/superset/migrations/versions/430039611635_log_more.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""log more
Revision ID: 430039611635
diff --git a/superset/migrations/versions/43df8de3a5f4_dash_json.py b/superset/migrations/versions/43df8de3a5f4_dash_json.py
index c56ddc8f5fb26..9dcc7b2ff67d0 100644
--- a/superset/migrations/versions/43df8de3a5f4_dash_json.py
+++ b/superset/migrations/versions/43df8de3a5f4_dash_json.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 43df8de3a5f4
diff --git a/superset/migrations/versions/4500485bde7d_allow_run_sync_async.py b/superset/migrations/versions/4500485bde7d_allow_run_sync_async.py
index 0695e2cda59b6..deee3c019660f 100644
--- a/superset/migrations/versions/4500485bde7d_allow_run_sync_async.py
+++ b/superset/migrations/versions/4500485bde7d_allow_run_sync_async.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""allow_run_sync_async
Revision ID: 4500485bde7d
diff --git a/superset/migrations/versions/472d2f73dfd4_.py b/superset/migrations/versions/472d2f73dfd4_.py
index d74fd03a7b7c1..d5a1c039208c8 100644
--- a/superset/migrations/versions/472d2f73dfd4_.py
+++ b/superset/migrations/versions/472d2f73dfd4_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 472d2f73dfd4
diff --git a/superset/migrations/versions/4736ec66ce19_.py b/superset/migrations/versions/4736ec66ce19_.py
index de86a392292ad..280132d61ec81 100644
--- a/superset/migrations/versions/4736ec66ce19_.py
+++ b/superset/migrations/versions/4736ec66ce19_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 4736ec66ce19
diff --git a/superset/migrations/versions/4e6a06bad7a8_init.py b/superset/migrations/versions/4e6a06bad7a8_init.py
index add55f86714a9..7c06134c09aea 100644
--- a/superset/migrations/versions/4e6a06bad7a8_init.py
+++ b/superset/migrations/versions/4e6a06bad7a8_init.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Init
Revision ID: 4e6a06bad7a8
diff --git a/superset/migrations/versions/4fa88fe24e94_owners_many_to_many.py b/superset/migrations/versions/4fa88fe24e94_owners_many_to_many.py
index 8cd1123097f8e..b8601e14fe248 100644
--- a/superset/migrations/versions/4fa88fe24e94_owners_many_to_many.py
+++ b/superset/migrations/versions/4fa88fe24e94_owners_many_to_many.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""owners_many_to_many
Revision ID: 4fa88fe24e94
@@ -19,16 +20,16 @@ def upgrade():
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=True),
sa.Column('dashboard_id', sa.Integer(), nullable=True),
- sa.ForeignKeyConstraint(['dashboard_id'], [u'dashboards.id'], ),
- sa.ForeignKeyConstraint(['user_id'], [u'ab_user.id'], ),
+ sa.ForeignKeyConstraint(['dashboard_id'], ['dashboards.id'], ),
+ sa.ForeignKeyConstraint(['user_id'], ['ab_user.id'], ),
sa.PrimaryKeyConstraint('id'),
)
op.create_table('slice_user',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=True),
sa.Column('slice_id', sa.Integer(), nullable=True),
- sa.ForeignKeyConstraint(['slice_id'], [u'slices.id'], ),
- sa.ForeignKeyConstraint(['user_id'], [u'ab_user.id'], ),
+ sa.ForeignKeyConstraint(['slice_id'], ['slices.id'], ),
+ sa.ForeignKeyConstraint(['user_id'], ['ab_user.id'], ),
sa.PrimaryKeyConstraint('id'),
)
diff --git a/superset/migrations/versions/525c854f0005_log_this_plus.py b/superset/migrations/versions/525c854f0005_log_this_plus.py
index 9eaebef2a9900..1db3f5c76006a 100644
--- a/superset/migrations/versions/525c854f0005_log_this_plus.py
+++ b/superset/migrations/versions/525c854f0005_log_this_plus.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""log_this_plus
Revision ID: 525c854f0005
diff --git a/superset/migrations/versions/55179c7f25c7_sqla_descr.py b/superset/migrations/versions/55179c7f25c7_sqla_descr.py
index aade0b930aa0c..814da0b184f0e 100644
--- a/superset/migrations/versions/55179c7f25c7_sqla_descr.py
+++ b/superset/migrations/versions/55179c7f25c7_sqla_descr.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""sqla_descr
Revision ID: 55179c7f25c7
diff --git a/superset/migrations/versions/5a7bad26f2a7_.py b/superset/migrations/versions/5a7bad26f2a7_.py
index 66dc20aae35e2..d70a5ab7eb1b8 100644
--- a/superset/migrations/versions/5a7bad26f2a7_.py
+++ b/superset/migrations/versions/5a7bad26f2a7_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 5a7bad26f2a7
diff --git a/superset/migrations/versions/5e4a03ef0bf0_add_request_access_model.py b/superset/migrations/versions/5e4a03ef0bf0_add_request_access_model.py
index ad6375f1837c4..b580e239cca0f 100644
--- a/superset/migrations/versions/5e4a03ef0bf0_add_request_access_model.py
+++ b/superset/migrations/versions/5e4a03ef0bf0_add_request_access_model.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add access_request table to manage requests to access datastores.
Revision ID: 5e4a03ef0bf0
diff --git a/superset/migrations/versions/6414e83d82b7_.py b/superset/migrations/versions/6414e83d82b7_.py
index 35dabe1bc2dfa..ed1edec6fe674 100644
--- a/superset/migrations/versions/6414e83d82b7_.py
+++ b/superset/migrations/versions/6414e83d82b7_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 6414e83d82b7
diff --git a/superset/migrations/versions/65903709c321_allow_dml.py b/superset/migrations/versions/65903709c321_allow_dml.py
index 9860c503a9ba3..cf5f50a6fb853 100644
--- a/superset/migrations/versions/65903709c321_allow_dml.py
+++ b/superset/migrations/versions/65903709c321_allow_dml.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""allow_dml
Revision ID: 65903709c321
diff --git a/superset/migrations/versions/67a6ac9b727b_update_spatial_params.py b/superset/migrations/versions/67a6ac9b727b_update_spatial_params.py
index b3e81d6e96443..e322c5eea52c1 100644
--- a/superset/migrations/versions/67a6ac9b727b_update_spatial_params.py
+++ b/superset/migrations/versions/67a6ac9b727b_update_spatial_params.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""update_spatial_params
Revision ID: 67a6ac9b727b
diff --git a/superset/migrations/versions/732f1c06bcbf_add_fetch_values_predicate.py b/superset/migrations/versions/732f1c06bcbf_add_fetch_values_predicate.py
index 2d7ce54107a83..7ad56c7f23b6e 100644
--- a/superset/migrations/versions/732f1c06bcbf_add_fetch_values_predicate.py
+++ b/superset/migrations/versions/732f1c06bcbf_add_fetch_values_predicate.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""add fetch values predicate
Revision ID: 732f1c06bcbf
diff --git a/superset/migrations/versions/763d4b211ec9_fixing_audit_fk.py b/superset/migrations/versions/763d4b211ec9_fixing_audit_fk.py
index d8feb778216fe..f25b3bab36444 100644
--- a/superset/migrations/versions/763d4b211ec9_fixing_audit_fk.py
+++ b/superset/migrations/versions/763d4b211ec9_fixing_audit_fk.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""fixing audit fk
Revision ID: 763d4b211ec9
diff --git a/superset/migrations/versions/7dbf98566af7_slice_description.py b/superset/migrations/versions/7dbf98566af7_slice_description.py
index 329af9ef2d78d..58e295d426045 100644
--- a/superset/migrations/versions/7dbf98566af7_slice_description.py
+++ b/superset/migrations/versions/7dbf98566af7_slice_description.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 7dbf98566af7
diff --git a/superset/migrations/versions/7e3ddad2a00b_results_key_to_query.py b/superset/migrations/versions/7e3ddad2a00b_results_key_to_query.py
index f2a46085631da..b2ae3dabd962e 100644
--- a/superset/migrations/versions/7e3ddad2a00b_results_key_to_query.py
+++ b/superset/migrations/versions/7e3ddad2a00b_results_key_to_query.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""results_key to query
Revision ID: 7e3ddad2a00b
diff --git a/superset/migrations/versions/836c0bf75904_cache_timeouts.py b/superset/migrations/versions/836c0bf75904_cache_timeouts.py
index d050c49c0bb4b..b5e5d4719004b 100644
--- a/superset/migrations/versions/836c0bf75904_cache_timeouts.py
+++ b/superset/migrations/versions/836c0bf75904_cache_timeouts.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""cache_timeouts
Revision ID: 836c0bf75904
diff --git a/superset/migrations/versions/867bf4f117f9_adding_extra_field_to_database_model.py b/superset/migrations/versions/867bf4f117f9_adding_extra_field_to_database_model.py
index 3a46ffe18a902..86818545696d2 100644
--- a/superset/migrations/versions/867bf4f117f9_adding_extra_field_to_database_model.py
+++ b/superset/migrations/versions/867bf4f117f9_adding_extra_field_to_database_model.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Adding extra field to Database model
Revision ID: 867bf4f117f9
diff --git a/superset/migrations/versions/8e80a26a31db_.py b/superset/migrations/versions/8e80a26a31db_.py
index 54edc58a80a36..b80c82dcf0ae4 100644
--- a/superset/migrations/versions/8e80a26a31db_.py
+++ b/superset/migrations/versions/8e80a26a31db_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 8e80a26a31db
diff --git a/superset/migrations/versions/956a063c52b3_adjusting_key_length.py b/superset/migrations/versions/956a063c52b3_adjusting_key_length.py
index d83f63212846d..843433ee50509 100644
--- a/superset/migrations/versions/956a063c52b3_adjusting_key_length.py
+++ b/superset/migrations/versions/956a063c52b3_adjusting_key_length.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""adjusting key length
Revision ID: 956a063c52b3
diff --git a/superset/migrations/versions/960c69cb1f5b_.py b/superset/migrations/versions/960c69cb1f5b_.py
index 62ee976577d11..a7ac3dfdef1d6 100644
--- a/superset/migrations/versions/960c69cb1f5b_.py
+++ b/superset/migrations/versions/960c69cb1f5b_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""add dttm_format related fields in table_columns
Revision ID: 960c69cb1f5b
diff --git a/superset/migrations/versions/979c03af3341_.py b/superset/migrations/versions/979c03af3341_.py
index 6cb241f388d01..48c37277e1095 100644
--- a/superset/migrations/versions/979c03af3341_.py
+++ b/superset/migrations/versions/979c03af3341_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: 979c03af3341
diff --git a/superset/migrations/versions/a2d606a761d9_adding_favstar_model.py b/superset/migrations/versions/a2d606a761d9_adding_favstar_model.py
index 16087cb82cf2e..5de6fe09cb31e 100644
--- a/superset/migrations/versions/a2d606a761d9_adding_favstar_model.py
+++ b/superset/migrations/versions/a2d606a761d9_adding_favstar_model.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""adding favstar model
Revision ID: a2d606a761d9
diff --git a/superset/migrations/versions/a65458420354_add_result_backend_time_logging.py b/superset/migrations/versions/a65458420354_add_result_backend_time_logging.py
index 49a9d1b74e812..5eddea19489ce 100644
--- a/superset/migrations/versions/a65458420354_add_result_backend_time_logging.py
+++ b/superset/migrations/versions/a65458420354_add_result_backend_time_logging.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""add_result_backend_time_logging
Revision ID: a65458420354
diff --git a/superset/migrations/versions/a6c18f869a4e_query_start_running_time.py b/superset/migrations/versions/a6c18f869a4e_query_start_running_time.py
index 0f89b3f516df9..53b4fcbeac04d 100644
--- a/superset/migrations/versions/a6c18f869a4e_query_start_running_time.py
+++ b/superset/migrations/versions/a6c18f869a4e_query_start_running_time.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""query.start_running_time
Revision ID: a6c18f869a4e
diff --git a/superset/migrations/versions/a99f2f7c195a_rewriting_url_from_shortner_with_new_.py b/superset/migrations/versions/a99f2f7c195a_rewriting_url_from_shortner_with_new_.py
index 818d08d830088..0ef58981c372c 100644
--- a/superset/migrations/versions/a99f2f7c195a_rewriting_url_from_shortner_with_new_.py
+++ b/superset/migrations/versions/a99f2f7c195a_rewriting_url_from_shortner_with_new_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""rewriting url from shortner with new format
Revision ID: a99f2f7c195a
diff --git a/superset/migrations/versions/a9c47e2c1547_add_impersonate_user_to_dbs.py b/superset/migrations/versions/a9c47e2c1547_add_impersonate_user_to_dbs.py
index e0cf1e286cbfd..5bc122277dda9 100644
--- a/superset/migrations/versions/a9c47e2c1547_add_impersonate_user_to_dbs.py
+++ b/superset/migrations/versions/a9c47e2c1547_add_impersonate_user_to_dbs.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""add impersonate_user to dbs
Revision ID: a9c47e2c1547
diff --git a/superset/migrations/versions/ab3d66c4246e_add_cache_timeout_to_druid_cluster.py b/superset/migrations/versions/ab3d66c4246e_add_cache_timeout_to_druid_cluster.py
index 07c9c9172699c..82982a18de4b4 100644
--- a/superset/migrations/versions/ab3d66c4246e_add_cache_timeout_to_druid_cluster.py
+++ b/superset/migrations/versions/ab3d66c4246e_add_cache_timeout_to_druid_cluster.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""add_cache_timeout_to_druid_cluster
Revision ID: ab3d66c4246e
diff --git a/superset/migrations/versions/ad4d656d92bc_add_avg_metric.py b/superset/migrations/versions/ad4d656d92bc_add_avg_metric.py
index 2adad5242d2dd..83f36f7e3ee53 100644
--- a/superset/migrations/versions/ad4d656d92bc_add_avg_metric.py
+++ b/superset/migrations/versions/ad4d656d92bc_add_avg_metric.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add avg() to default metrics
Revision ID: ad4d656d92bc
diff --git a/superset/migrations/versions/ad82a75afd82_add_query_model.py b/superset/migrations/versions/ad82a75afd82_add_query_model.py
index 91959c6a7d216..1ae6f768ccb4d 100644
--- a/superset/migrations/versions/ad82a75afd82_add_query_model.py
+++ b/superset/migrations/versions/ad82a75afd82_add_query_model.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Update models to support storing the queries.
Revision ID: ad82a75afd82
@@ -39,8 +40,8 @@ def upgrade():
sa.Column('start_time', sa.Numeric(precision=20, scale=6), nullable=True),
sa.Column('changed_on', sa.DateTime(), nullable=True),
sa.Column('end_time', sa.Numeric(precision=20, scale=6), nullable=True),
- sa.ForeignKeyConstraint(['database_id'], [u'dbs.id'], ),
- sa.ForeignKeyConstraint(['user_id'], [u'ab_user.id'], ),
+ sa.ForeignKeyConstraint(['database_id'], ['dbs.id'], ),
+ sa.ForeignKeyConstraint(['user_id'], ['ab_user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.add_column('dbs', sa.Column('select_as_create_table_as', sa.Boolean(),
diff --git a/superset/migrations/versions/b318dfe5fb6c_adding_verbose_name_to_druid_column.py b/superset/migrations/versions/b318dfe5fb6c_adding_verbose_name_to_druid_column.py
index d492427b644f8..42d841a30b43d 100644
--- a/superset/migrations/versions/b318dfe5fb6c_adding_verbose_name_to_druid_column.py
+++ b/superset/migrations/versions/b318dfe5fb6c_adding_verbose_name_to_druid_column.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""adding verbose_name to druid column
Revision ID: b318dfe5fb6c
diff --git a/superset/migrations/versions/b347b202819b_.py b/superset/migrations/versions/b347b202819b_.py
index e73751814879a..a55eed1e9aaaf 100644
--- a/superset/migrations/versions/b347b202819b_.py
+++ b/superset/migrations/versions/b347b202819b_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: b347b202819b
diff --git a/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py b/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py
index 1c5c50a5f635a..157c3229440e6 100644
--- a/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py
+++ b/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""change_table_unique_constraint
Revision ID: b4456560d4f3
@@ -17,9 +18,9 @@ def upgrade():
try:
# Trying since sqlite doesn't like constraints
op.drop_constraint(
- u'tables_table_name_key', 'tables', type_='unique')
+ 'tables_table_name_key', 'tables', type_='unique')
op.create_unique_constraint(
- u'_customer_location_uc', 'tables',
+ '_customer_location_uc', 'tables',
['database_id', 'schema', 'table_name'])
except Exception:
pass
diff --git a/superset/migrations/versions/b46fa1b0b39e_add_params_to_tables.py b/superset/migrations/versions/b46fa1b0b39e_add_params_to_tables.py
index 9d02ec5b4b105..c07110ac20577 100644
--- a/superset/migrations/versions/b46fa1b0b39e_add_params_to_tables.py
+++ b/superset/migrations/versions/b46fa1b0b39e_add_params_to_tables.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add json_metadata to the tables table.
Revision ID: b46fa1b0b39e
diff --git a/superset/migrations/versions/bb51420eaf83_add_schema_to_table_model.py b/superset/migrations/versions/bb51420eaf83_add_schema_to_table_model.py
index 5e5d231111cc5..771d77efc3380 100644
--- a/superset/migrations/versions/bb51420eaf83_add_schema_to_table_model.py
+++ b/superset/migrations/versions/bb51420eaf83_add_schema_to_table_model.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""add schema to table model
Revision ID: bb51420eaf83
diff --git a/superset/migrations/versions/bcf3126872fc_add_keyvalue.py b/superset/migrations/versions/bcf3126872fc_add_keyvalue.py
index c58dad5eb1e17..39b7bb4c75339 100644
--- a/superset/migrations/versions/bcf3126872fc_add_keyvalue.py
+++ b/superset/migrations/versions/bcf3126872fc_add_keyvalue.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add keyvalue table
Revision ID: bcf3126872fc
diff --git a/superset/migrations/versions/c3a8f8611885_materializing_permission.py b/superset/migrations/versions/c3a8f8611885_materializing_permission.py
index 3ad446b61768a..f4c65a88b9382 100644
--- a/superset/migrations/versions/c3a8f8611885_materializing_permission.py
+++ b/superset/migrations/versions/c3a8f8611885_materializing_permission.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Materializing permission
Revision ID: c3a8f8611885
diff --git a/superset/migrations/versions/c611f2b591b8_dim_spec.py b/superset/migrations/versions/c611f2b591b8_dim_spec.py
index 58d50871c1c21..4ea66ec0fb64a 100644
--- a/superset/migrations/versions/c611f2b591b8_dim_spec.py
+++ b/superset/migrations/versions/c611f2b591b8_dim_spec.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""dim_spec
Revision ID: c611f2b591b8
diff --git a/superset/migrations/versions/ca69c70ec99b_tracking_url.py b/superset/migrations/versions/ca69c70ec99b_tracking_url.py
index 8a2ef38295c67..85901af11415f 100644
--- a/superset/migrations/versions/ca69c70ec99b_tracking_url.py
+++ b/superset/migrations/versions/ca69c70ec99b_tracking_url.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""tracking_url
Revision ID: ca69c70ec99b
diff --git a/superset/migrations/versions/d2424a248d63_.py b/superset/migrations/versions/d2424a248d63_.py
index fdfabc9166c21..beba1c9f9f50c 100644
--- a/superset/migrations/versions/d2424a248d63_.py
+++ b/superset/migrations/versions/d2424a248d63_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: d2424a248d63
diff --git a/superset/migrations/versions/d39b1e37131d_.py b/superset/migrations/versions/d39b1e37131d_.py
index adcaa7732bcd7..f132d62800031 100644
--- a/superset/migrations/versions/d39b1e37131d_.py
+++ b/superset/migrations/versions/d39b1e37131d_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: d39b1e37131d
diff --git a/superset/migrations/versions/d6db5a5cdb5d_.py b/superset/migrations/versions/d6db5a5cdb5d_.py
index 4a51fb8ff563d..0bb75ec6ef7dc 100644
--- a/superset/migrations/versions/d6db5a5cdb5d_.py
+++ b/superset/migrations/versions/d6db5a5cdb5d_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: d6db5a5cdb5d
diff --git a/superset/migrations/versions/d827694c7555_css_templates.py b/superset/migrations/versions/d827694c7555_css_templates.py
index 3b20e44055969..9abd5fb2fa591 100644
--- a/superset/migrations/versions/d827694c7555_css_templates.py
+++ b/superset/migrations/versions/d827694c7555_css_templates.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""css templates
Revision ID: d827694c7555
diff --git a/superset/migrations/versions/d8bc074f7aad_add_new_field_is_restricted_to_.py b/superset/migrations/versions/d8bc074f7aad_add_new_field_is_restricted_to_.py
index daa885767a023..0e4e92db27eef 100644
--- a/superset/migrations/versions/d8bc074f7aad_add_new_field_is_restricted_to_.py
+++ b/superset/migrations/versions/d8bc074f7aad_add_new_field_is_restricted_to_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add new field 'is_restricted' to SqlMetric and DruidMetric
Revision ID: d8bc074f7aad
@@ -30,7 +31,7 @@ class SqlMetric(Base):
__tablename__ = 'sql_metrics'
id = Column(Integer, primary_key=True)
is_restricted = Column(Boolean, default=False, nullable=True)
-
+
def upgrade():
op.add_column('metrics', sa.Column('is_restricted', sa.Boolean(), nullable=True))
op.add_column('sql_metrics', sa.Column('is_restricted', sa.Boolean(), nullable=True))
@@ -38,7 +39,7 @@ def upgrade():
bind = op.get_bind()
session = db.Session(bind=bind)
- # don't use models.DruidMetric
+ # don't use models.DruidMetric
# because it assumes the context is consistent with the application
for obj in session.query(DruidMetric).all():
obj.is_restricted = False
diff --git a/superset/migrations/versions/db0c65b146bd_update_slice_model_json.py b/superset/migrations/versions/db0c65b146bd_update_slice_model_json.py
index d4135562cf4a2..e348ae06fba66 100644
--- a/superset/migrations/versions/db0c65b146bd_update_slice_model_json.py
+++ b/superset/migrations/versions/db0c65b146bd_update_slice_model_json.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""update_slice_model_json
Revision ID: db0c65b146bd
diff --git a/superset/migrations/versions/db527d8c4c78_add_db_verbose_name.py b/superset/migrations/versions/db527d8c4c78_add_db_verbose_name.py
index 4c0d4167f551f..654f0c35c9447 100644
--- a/superset/migrations/versions/db527d8c4c78_add_db_verbose_name.py
+++ b/superset/migrations/versions/db527d8c4c78_add_db_verbose_name.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add verbose name to DruidCluster and Database
Revision ID: db527d8c4c78
diff --git a/superset/migrations/versions/ddd6ebdd853b_annotations.py b/superset/migrations/versions/ddd6ebdd853b_annotations.py
index 99f17babb0f32..f218a65b2bf85 100644
--- a/superset/migrations/versions/ddd6ebdd853b_annotations.py
+++ b/superset/migrations/versions/ddd6ebdd853b_annotations.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""annotations
Revision ID: ddd6ebdd853b
@@ -42,7 +43,7 @@ def upgrade():
sa.Column('created_by_fk', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['changed_by_fk'], ['ab_user.id'], ),
sa.ForeignKeyConstraint(['created_by_fk'], ['ab_user.id'], ),
- sa.ForeignKeyConstraint(['layer_id'], [u'annotation_layer.id'], ),
+ sa.ForeignKeyConstraint(['layer_id'], ['annotation_layer.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_index(
diff --git a/superset/migrations/versions/e46f2d27a08e_materialize_perms.py b/superset/migrations/versions/e46f2d27a08e_materialize_perms.py
index 7611671fe16be..6b13a2ddafce6 100644
--- a/superset/migrations/versions/e46f2d27a08e_materialize_perms.py
+++ b/superset/migrations/versions/e46f2d27a08e_materialize_perms.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""materialize perms
Revision ID: e46f2d27a08e
diff --git a/superset/migrations/versions/e866bd2d4976_smaller_grid.py b/superset/migrations/versions/e866bd2d4976_smaller_grid.py
index ad996d4c4c158..1388cd7816a3f 100644
--- a/superset/migrations/versions/e866bd2d4976_smaller_grid.py
+++ b/superset/migrations/versions/e866bd2d4976_smaller_grid.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""smaller_grid
Revision ID: e866bd2d4976
Revises: 21e88bc06c02
diff --git a/superset/migrations/versions/ea033256294a_.py b/superset/migrations/versions/ea033256294a_.py
index 8a5bbd21c32d4..2a08ebdbcdc33 100644
--- a/superset/migrations/versions/ea033256294a_.py
+++ b/superset/migrations/versions/ea033256294a_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: ea033256294a
diff --git a/superset/migrations/versions/eca4694defa7_sqllab_setting_defaults.py b/superset/migrations/versions/eca4694defa7_sqllab_setting_defaults.py
index b4f7038b2bf83..7bc2c46ae1ecc 100644
--- a/superset/migrations/versions/eca4694defa7_sqllab_setting_defaults.py
+++ b/superset/migrations/versions/eca4694defa7_sqllab_setting_defaults.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""sqllab_setting_defaults
Revision ID: eca4694defa7
diff --git a/superset/migrations/versions/ef8843b41dac_.py b/superset/migrations/versions/ef8843b41dac_.py
index 00e4de515838d..cf7d587a60ecb 100644
--- a/superset/migrations/versions/ef8843b41dac_.py
+++ b/superset/migrations/versions/ef8843b41dac_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: ef8843b41dac
diff --git a/superset/migrations/versions/f0fbf6129e13_adding_verbose_name_to_tablecolumn.py b/superset/migrations/versions/f0fbf6129e13_adding_verbose_name_to_tablecolumn.py
index 51f4923b9cedf..f09b08a351a1f 100644
--- a/superset/migrations/versions/f0fbf6129e13_adding_verbose_name_to_tablecolumn.py
+++ b/superset/migrations/versions/f0fbf6129e13_adding_verbose_name_to_tablecolumn.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Adding verbose_name to tablecolumn
Revision ID: f0fbf6129e13
diff --git a/superset/migrations/versions/f162a1dea4c4_d3format_by_metric.py b/superset/migrations/versions/f162a1dea4c4_d3format_by_metric.py
index 9e266e23a7296..391bdbd013723 100644
--- a/superset/migrations/versions/f162a1dea4c4_d3format_by_metric.py
+++ b/superset/migrations/versions/f162a1dea4c4_d3format_by_metric.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""d3format_by_metric
Revision ID: f162a1dea4c4
diff --git a/superset/migrations/versions/f18570e03440_add_query_result_key_index.py b/superset/migrations/versions/f18570e03440_add_query_result_key_index.py
index 383e7b0e3b724..32d3b00d3176c 100644
--- a/superset/migrations/versions/f18570e03440_add_query_result_key_index.py
+++ b/superset/migrations/versions/f18570e03440_add_query_result_key_index.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Add index on the result key to the query table.
Revision ID: f18570e03440
diff --git a/superset/migrations/versions/f1f2d4af5b90_.py b/superset/migrations/versions/f1f2d4af5b90_.py
index 36bae518ce063..8c77f715355c1 100644
--- a/superset/migrations/versions/f1f2d4af5b90_.py
+++ b/superset/migrations/versions/f1f2d4af5b90_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Enable Filter Select
Revision ID: f1f2d4af5b90
diff --git a/superset/migrations/versions/f959a6652acd_.py b/superset/migrations/versions/f959a6652acd_.py
index 96186a6e3a006..73b7fcb0033d1 100644
--- a/superset/migrations/versions/f959a6652acd_.py
+++ b/superset/migrations/versions/f959a6652acd_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: f959a6652acd
diff --git a/superset/migrations/versions/fee7b758c130_.py b/superset/migrations/versions/fee7b758c130_.py
index 28b05b17e3e7d..5b2e88d95d13d 100644
--- a/superset/migrations/versions/fee7b758c130_.py
+++ b/superset/migrations/versions/fee7b758c130_.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""empty message
Revision ID: fee7b758c130
diff --git a/superset/models/__init__.py b/superset/models/__init__.py
index bed8c30ede7c1..18df0e60881cb 100644
--- a/superset/models/__init__.py
+++ b/superset/models/__init__.py
@@ -1,2 +1,3 @@
+# -*- coding: utf-8 -*-
from . import core # noqa
from . import sql_lab # noqa
diff --git a/superset/models/annotations.py b/superset/models/annotations.py
index e082be0923d11..057aae2be6871 100644
--- a/superset/models/annotations.py
+++ b/superset/models/annotations.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""a collection of Annotation-related models"""
from __future__ import absolute_import
from __future__ import division
diff --git a/superset/models/core.py b/superset/models/core.py
index df45ccf533530..b4dbada947f4e 100644
--- a/superset/models/core.py
+++ b/superset/models/core.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""A collection of ORM sqlalchemy models for Superset"""
from __future__ import absolute_import
from __future__ import division
@@ -200,26 +201,30 @@ def form_data(self):
form_data.update({
'slice_id': self.id,
'viz_type': self.viz_type,
- 'datasource': str(self.datasource_id) + '__' + self.datasource_type,
+ 'datasource': '{}__{}'.format(
+ self.datasource_id, self.datasource_type),
})
if self.cache_timeout:
form_data['cache_timeout'] = self.cache_timeout
return form_data
+ def get_explore_url(self, base_url='/superset/explore', overrides=None):
+ overrides = overrides or {}
+ form_data = {'slice_id': self.id}
+ form_data.update(overrides)
+ params = parse.quote(json.dumps(form_data))
+ return (
+ '{base_url}/?form_data={params}'.format(**locals()))
+
@property
def slice_url(self):
"""Defines the url to access the slice"""
- form_data = {'slice_id': self.id}
- return (
- '/superset/explore/{obj.datasource_type}/'
- '{obj.datasource_id}/?form_data={params}'.format(
- obj=self, params=parse.quote(json.dumps(form_data))))
+ return self.get_explore_url()
@property
- def slice_id_url(self):
- return (
- '/superset/{slc.datasource_type}/{slc.datasource_id}/{slc.id}/'
- ).format(slc=self)
+ def explore_json_url(self):
+ """Defines the url to access the slice"""
+ return self.get_explore_url('/superset/explore_json')
@property
def edit_url(self):
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index 948cf0d49ede2..db395c11074d4 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""a collection of model-related helper classes and functions"""
from __future__ import absolute_import
from __future__ import division
@@ -61,8 +62,9 @@ def export_schema(cls, recursive=True, include_parent_ref=False):
if parent_ref:
parent_excludes = {c.name for c in parent_ref.local_columns}
- def formatter(c): return ('{0} Default ({1})'.format(
- str(c.type), c.default.arg) if c.default else str(c.type))
+ def formatter(c):
+ return ('{0} Default ({1})'.format(
+ str(c.type), c.default.arg) if c.default else str(c.type))
schema = {c.name: formatter(c) for c in cls.__table__.columns
if (c.name in cls.export_fields and
@@ -96,7 +98,7 @@ def import_from_dict(cls, session, dict_rep, parent=None,
for p in parent_refs.keys():
if p not in dict_rep:
raise RuntimeError(
- '{0}: Missing field {1}'.format(cls.__name__, p))
+ '{0}: Missing field {1}'.format(cls.__name__, p))
else:
# Set foreign keys to parent obj
for k, v in parent_refs.items():
@@ -176,19 +178,22 @@ def export_to_dict(self, recursive=True, include_parent_ref=False,
if (c.name in self.export_fields and
c.name not in parent_excludes and
(include_defaults or (
- getattr(self, c.name) is not None and
- (not c.default or
- getattr(self, c.name) != c.default.arg))))
+ getattr(self, c.name) is not None and
+ (not c.default or
+ getattr(self, c.name) != c.default.arg))))
}
if recursive:
for c in self.export_children:
# sorting to make lists of children stable
- dict_rep[c] = sorted([child.export_to_dict(
- recursive=recursive,
- include_parent_ref=include_parent_ref,
- include_defaults=include_defaults)
- for child in getattr(self, c)],
- key=lambda k: sorted(k.items()))
+ dict_rep[c] = sorted(
+ [
+ child.export_to_dict(
+ recursive=recursive,
+ include_parent_ref=include_parent_ref,
+ include_defaults=include_defaults,
+ ) for child in getattr(self, c)
+ ],
+ key=lambda k: sorted(k.items()))
return dict_rep
diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py
index 44b692b915da9..bf37db75f6172 100644
--- a/superset/models/sql_lab.py
+++ b/superset/models/sql_lab.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""A collection of ORM sqlalchemy models for SQL Lab"""
from __future__ import absolute_import
from __future__ import division
diff --git a/superset/security.py b/superset/security.py
index fa056c3987912..4d5b9f42b350c 100644
--- a/superset/security.py
+++ b/superset/security.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""A set of constants and methods to manage permissions and security"""
from __future__ import absolute_import
from __future__ import division
diff --git a/superset/sql_lab.py b/superset/sql_lab.py
index 64deaffea6c22..4dae72720dc97 100644
--- a/superset/sql_lab.py
+++ b/superset/sql_lab.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
diff --git a/superset/sql_parse.py b/superset/sql_parse.py
index d42e891c64552..83eac2715f910 100644
--- a/superset/sql_parse.py
+++ b/superset/sql_parse.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
diff --git a/superset/stats_logger.py b/superset/stats_logger.py
index 9644f10ea8998..3caa38ada5c91 100644
--- a/superset/stats_logger.py
+++ b/superset/stats_logger.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
import logging
from colorama import Fore, Style
diff --git a/superset/translations/it/LC_MESSAGES/messages.json b/superset/translations/it/LC_MESSAGES/messages.json
index 03177dedc653e..82e70a69ceeed 100644
--- a/superset/translations/it/LC_MESSAGES/messages.json
+++ b/superset/translations/it/LC_MESSAGES/messages.json
@@ -1 +1 @@
-{"domain":"superset","locale_data":{"superset":{"":{"domain":"superset","plural_forms":"nplurals=1; plural=0","lang":"it"},"Time Column":["Colonna del Tempo"],"second":["secondo"],"minute":["minuto"],"hour":["ora"],"day":["giorno"],"week":["settimana"],"month":["mese"],"quarter":["quartile"],"year":["anno"],"week_start_monday":["settimana_inizio_lunedì"],"week_ending_saturday":["settimana_fine_domenica"],"week_start_sunday":["settimana_inizio_domenica"],"5 minute":["5 minuti"],"half hour":["mezz'ora"],"10 minute":["10 minuti"],"[Superset] Access to the datasource %(name)s was granted":["[Superset] Accesso al datasource $(name) concesso"],"Viz is missing a datasource":["Datasource mancante per la visualizzazione"],"From date cannot be larger than to date":["La data di inizio non può essere dopo la data di fine"],"Table View":["Vista Tabella"],"Pick a granularity in the Time section or uncheck 'Include Time'":["Seleziona una granularità nella sezione tempo e deseleziona 'Includi Tempo'"],"Choose either fields to [Group By] and [Metrics] or [Columns], not both":["Selezionare i campi [Group By] e [Metrica] o [Colonne], non entrambi"],"Pivot Table":["Vista Pivot"],"Please choose at least one \"Group by\" field ":["Seleziona almeno un campo \"Group by\""],"Please choose at least one metric":["Seleziona almeno una metrica"],"'Group By' and 'Columns' can't overlap":["'Group by' e 'Colonne' non possono sovrapporsi"],"Markup":["Marcatore"],"Separator":["Separatore"],"Word Cloud":["Cloud di Parole"],"Treemap":["Treemap"],"Calendar Heatmap":["Calendario di Intensità"],"Box Plot":["Box Plot"],"Bubble Chart":["Grafico a Bolle"],"Pick a metric for x, y and size":["Seleziona una metrica per x, y e grandezza"],"Bullet Chart":["Grafico a Proiettile"],"Pick a metric to display":["Seleziona una metrica da visualizzare"],"Big Number with Trendline":["Numero Grande con Linea del Trend"],"Pick a metric!":["Seleziona una metrica!"],"Big Number":["Numero Grande"],"Time Series - Line Chart":["Serie Temporali - Grafico Lineare"],"Pick a time granularity for your time series":["Seleziona una granularità per la serie temporale"],"Time Series - Dual Axis Line Chart":["Serie Temporali - Grafico Lineare ad Assi Duali"],"Pick a metric for left axis!":["Seleziona una metrica per l'asse sinistro"],"Pick a metric for right axis!":["Seleziona una metrica per l'asse destro"],"Please choose different metrics on left and right axis":["Seleziona metriche differenti per gli assi destro e sinistro"],"Time Series - Bar Chart":["Serie Temporali - Grafico Barre"],"Time Series - Percent Change":["Serie Temporali - Cambiamento Percentuale"],"Time Series - Stacked":["Serie Temporali - Stacked"],"Distribution - NVD3 - Pie Chart":["Distribuzione - NVD3 - Grafico Torta"],"Histogram":["Istogramma"],"Must have one numeric column specified":["Devi specificare una colonna numerica"],"Distribution - Bar Chart":["Distribuzione - Grafico Barre"],"Can't have overlap between Series and Breakdowns":[""],"Pick at least one metric":["Seleziona almeno una metrica"],"Pick at least one field for [Series]":["Seleziona almeno un campo per [Series]"],"Sunburst":["Sunburst"],"Sankey":["Sankey"],"Pick exactly 2 columns as [Source / Target]":["Seleziona esattamente 2 colonne come [Sorgente / Destinazione]"],"There's a loop in your Sankey, please provide a tree. Here's a faulty link: {}":[""],"Directed Force Layout":["Disposizione a Forza Diretta"],"Pick exactly 2 columns to 'Group By'":["Seleziona esattamente 2 colonne per 'Group By'"],"Country Map":["Mappa della Nazione"],"World Map":["Mappa del Mondo"],"Filters":["Filtri"],"Pick at least one filter field":[""],"iFrame":["iFrame"],"Parallel Coordinates":["Coordinate Parallele"],"Heatmap":["Mappa di Intensità"],"Horizon Charts":["Grafici d'orizzonte"],"Mapbox":["Mapbox"],"Must have a [Group By] column to have 'count' as the [Label]":[""],"Choice of [Label] must be present in [Group By]":[""],"Choice of [Point Radius] must be present in [Group By]":[""],"[Longitude] and [Latitude] columns must be present in [Group By]":[""],"Event flow":[""],"Time Series - Paired t-test":[""],"Your query was saved":["La tua query è stata salvata"],"Your query could not be saved":["La tua query non può essere salvata"],"Failed at retrieving results from the results backend":["Errore nel recupero dei dati dal backend"],"Could not connect to server":["Non posso connettermi al server"],"Your session timed out, please refresh your page and try again.":["La tua sessione è scaduta, ricarica la pagina e riprova."],"Query was stopped.":["La query è stata fermata."],"Failed at stopping query.":["Errore nel fermare la query."],"Error occurred while fetching table metadata":["Errore nel recupero dei metadati della tabella"],"shared query":["query condivisa"],"The query couldn't be loaded":["La query non può essere caricata"],"An error occurred while creating the data source":["Errore nel creare il datasource"],"Pick a chart type!":["Seleziona un tipo di grafico"],"To use this chart type you need at least one column flagged as a date":["Per usare questo tipo di grafico devi avere almeno una colonna selezionata come data"],"To use this chart type you need at least one dimension":["Per usare questo tipo di grafico devi avere almeno una dimensione"],"To use this chart type you need at least one aggregation function":["Per usare questo tipo di grafico devi avere almeno uan funziona di aggregazione"],"Untitled Query":["Query senza nome"],"Copy of %s":["Copia di %s"],"share query":["condividi query"],"copy URL to clipboard":["copia URL in appunti"],"Raw SQL":[""],"Source SQL":[""],"SQL":[""],"No query history yet...":[""],"It seems you don't have access to any database":[""],"Search Results":["Risultati della ricerca"],"[From]-":[""],"[To]-":[""],"[Query Status]":[""],"Search":["Cerca"],"Open in SQL Editor":["Apri in SQL Editor"],"view results":["visualizza risultati"],"Data preview":[""],"Visualize the data out of this query":[""],"Overwrite text in editor with a query on this table":[""],"Run query in a new tab":[""],"Remove query from log":[""],".CSV":["CSV"],"Visualize":[""],"Table":["Tabella"],"was created":["è stata creata"],"Query in a new tab":["Query in un nuovo tab"],"Fetch data preview":[""],"Track Job":[""],"Loading...":[""],"Run Selected Query":[""],"Run Query":[""],"Run query asynchronously":[""],"Stop":[""],"Undefined":[""],"Label":[""],"Label for your query":[""],"Description":["Descrizione"],"Write a description for your query":[""],"Save":[""],"Cancel":["Annulla"],"Save Query":[""],"Run a query to display results here":[""],"Preview for %s":[""],"Results":[""],"Query History":[""],"Create table as with query results":[""],"new table name":[""],"Error while fetching table list":[""],"Error while fetching schema list":[""],"Error while fetching database list":[""],"Database:":[""],"Select a database":[""],"Select a schema (%s)":[""],"Schema:":[""],"Add a table (%s)":[""],"Type to search ...":[""],"Reset State":[""],"Enter a new title for the tab":[""],"Untitled Query %s":[""],"close tab":[""],"rename tab":[""],"expand tool bar":[""],"hide tool bar":[""],"Copy partition query to clipboard":[""],"latest partition:":[""],"Keys for table":[""],"View keys & indexes (%s)":[""],"Sort columns alphabetically":[""],"Original table column order":[""],"Copy SELECT statement to clipboard":[""],"Remove table preview":[""],"%s is not right as a column name, please alias it (as in SELECT count(*) ":[""],"AS my_alias":[""],"using only alphanumeric characters and underscores":[""],"Creating a data source and popping a new tab":[""],"No results available for this query":[""],"Chart Type":[""],"[Chart Type]":[""],"Datasource Name":[""],"datasource name":[""],"Select ...":[""],"Loaded data cached":[""],"Loaded from cache":[""],"Click to force-refresh":[""],"Copy to clipboard":[""],"Not successful":[""],"Sorry, your browser does not support copying. Use Ctrl / Cmd + C!":[""],"Copied!":[""],"Title":["Titolo"],"click to edit title":[""],"You don't have the rights to alter this title.":[""],"Click to favorite/unfavorite":[""],"You have unsaved changes.":[""],"Click the":[""],"button on the top right to save your changes.":[""],"Served from data cached %s . Click to force refresh.":[""],"Click to force refresh":[""],"Error":[""],"Sorry, there was an error adding slices to this dashboard: %s":[""],"Active Dashboard Filters":[""],"Checkout this dashboard: %s":[""],"Force refresh the whole dashboard":[""],"Edit this dashboard's properties":[""],"Load a template":[""],"Load a CSS template":[""],"CSS":["CSS"],"Live CSS Editor":[""],"Don't refresh":[""],"10 seconds":[""],"30 seconds":[""],"1 minute":[""],"5 minutes":[""],"Refresh Interval":[""],"Choose the refresh frequency for this dashboard":[""],"This dashboard was saved successfully.":[""],"Sorry, there was an error saving this dashboard: ":[""],"You must pick a name for the new dashboard":[""],"Save Dashboard":[""],"Overwrite Dashboard [%s]":[""],"Save as:":[""],"[dashboard name]":[""],"Name":["Nome"],"Viz":[""],"Modified":["Modificato"],"Add Slices":[""],"Add a new slice to the dashboard":[""],"Add Slices to Dashboard":[""],"Move chart":[""],"Force refresh data":[""],"Toggle chart description":[""],"Edit chart":[""],"Export CSV":[""],"Explore chart":[""],"Remove chart from dashboard":[""],"%s - untitled":[""],"Edit slice properties":[""],"description":[""],"bolt":[""],"Error...":[""],"Query":[""],"Height":["Altezza"],"Width":["Larghezza"],"Export to .json":["Esporta in .json"],"Export to .csv format":["Esporta nel formato .csv"],"Please enter a slice name":["Inserisci un nome per la slice"],"Please select a dashboard":["Seleziona una dashboard"],"Please enter a dashboard name":["Inserisci un nome per la dashboard"],"Save A Slice":["Salva una slice"],"Overwrite slice %s":["Sovrascrivi la slice %s"],"Save as":["Salva come"],"[slice name]":["[nome slice]"],"Do not add to a dashboard":["Non aggiugere alla dashboard"],"Add slice to existing dashboard":["Aggiungi la slice alla dashboard esistente"],"Add to new dashboard":["Aggiungi ad una nuova dashboard"],"Save & go to dashboard":["Salva e vai alla dashboard"],"Check out this slice: %s":["Guarda questa slice: %s"],"`Min` value should be numeric or empty":[""],"`Max` value should be numeric or empty":[""],"Min":["Min"],"Max":["Max"],"Something went wrong while fetching the datasource list":[""],"Click to point to another datasource":[""],"Edit the datasource's configuration":[""],"Select a datasource":["Seleziona un datasource"],"Search / Filter":["Cerca / Filtra"],"Filter value":["Valore del filtro"],"Select metric":["Seleziona una metrica"],"Select column":["Seleziona una colonna"],"Select operator":["Seleziona operatore"],"Add Filter":["Aggiungi filtro"],"Error while fetching data":["Errore nel recupero dati"],"Select %s":["Seleziona %s"],"textarea":["textarea"],"Edit":["Modifica"],"in modal":["in modale"],"Select a visualization type":["Seleziona un tipo di visualizzazione"],"Updating chart was stopped":["L'aggiornamento del grafico è stato fermato"],"An error occurred while rendering the visualization: %s":["Errore nel rendering della visualizzazione: %s"],"Perhaps your data has grown, your database is under unusual load, or you are simply querying a data source that is to large to be processed within the timeout range. If that is the case, we recommend that you summarize your data further.":[""],"Network error.":["Errore di rete."],"A reference to the [Time] configuration, taking granularity into account":[""],"Group by":["Raggruppa per"],"One or many controls to group by":["Uno o più controlli per 'Raggruppa per'"],"Datasource":["Sorgente Dati"],"Visualization Type":["Tipo di Visualizzazione"],"The type of visualization to display":["Il tipo di visualizzazione da mostrare"],"Metrics":["Metriche"],"One or many metrics to display":["Una o più metriche da mostrare"],"Y Axis Bounds":["Limite asse Y"],"Bounds for the Y axis. When left empty, the bounds are dynamically defined based on the min/max of the data. Note that this feature will only expand the axis range. It won't narrow the data's extent.":[""],"Ordering":["Ordina per"],"Annotation Layers":[""],"Annotation layers to overlay on the visualization":[""],"Select a annotation layer":[""],"Error while fetching annotation layers":[""],"Metric":["Metrica"],"Choose the metric":["Seleziona la metrica"],"Right Axis Metric":["Metrica asse destro"],"Choose a metric for right axis":["Seleziona una metrica per l'asse destro"],"Stacked Style":[""],"Linear Color Scheme":[""],"Normalize Across":[""],"Color will be rendered based on a ratio of the cell against the sum of across this criteria":[""],"Horizon Color Scale":[""],"Defines how the color are attributed.":[""],"Rendering":[""],"image-rendering CSS attribute of the canvas object that defines how the browser scales up the image":[""],"XScale Interval":[""],"Number of steps to take between ticks when displaying the X scale":[""],"YScale Interval":[""],"Number of steps to take between ticks when displaying the Y scale":[""],"Include Time":[""],"Whether to include the time granularity as defined in the time section":[""],"Stacked Bars":[""],"Show totals":[""],"Display total row/column":["Mostra totali riga/colonna"],"Show Markers":["Mostra marcatori"],"Show data points as circle markers on the lines":[""],"Bar Values":[""],"Show the value on top of the bar":[""],"Sort Bars":[""],"Sort bars by x labels.":[""],"Combine Metrics":[""],"Display metrics side by side within each column, as opposed to each column being displayed side by side for each metric.":[""],"Extra Controls":[""],"Whether to show extra controls or not. Extra controls include things like making mulitBar charts stacked or side by side.":[""],"Reduce X ticks":[""],"Reduces the number of X axis ticks to be rendered. If true, the x axis wont overflow and labels may be missing. If false, a minimum width will be applied to columns and the width may overflow into an horizontal scroll.":[""],"Include Series":[""],"Include series name as an axis":[""],"Color Metric":[""],"A metric to use for color":[""],"Country Name":[""],"The name of country that Superset should display":[""],"Country Field Type":[""],"The country code standard that Superset should expect to find in the [country] column":[""],"Columns":[""],"One or many controls to pivot as columns":[""],"Columns to display":[""],"Origin":[""],"Defines the origin where time buckets start, accepts natural dates as in `now`, `sunday` or `1970-01-01`":[""],"Bottom Margin":[""],"Bottom margin, in pixels, allowing for more room for axis labels":[""],"Left Margin":[""],"Left margin, in pixels, allowing for more room for axis labels":[""],"Time Granularity":[""],"The time granularity for the visualization. Note that you can type and use simple natural language as in `10 seconds`, `1 day` or `56 weeks`":[""],"Domain":[""],"The time unit used for the grouping of blocks":[""],"Subdomain":[""],"The time unit for each block. Should be a smaller unit than domain_granularity. Should be larger or equal to Time Grain":[""],"Link Length":[""],"Link length in the force layout":[""],"Charge":[""],"Charge in the force layout":[""],"The time column for the visualization. Note that you can define arbitrary expression that return a DATETIME column in the table or. Also note that the filter below is applied against this column or expression":[""],"Time Grain":[""],"The time granularity for the visualization. This applies a date transformation to alter your time column and defines a new time granularity. The options here are defined on a per database engine basis in the Superset source code.":[""],"Resample Rule":[""],"Pandas resample rule":[""],"Resample How":[""],"Pandas resample how":[""],"Resample Fill Method":[""],"Pandas resample fill method":[""],"Since":["Data inizio"],"7 days ago":["7 giorni"],"Until":["Data fine"],"Max Bubble Size":[""],"Whisker/outlier options":[""],"Determines how whiskers and outliers are calculated.":[""],"Ratio":[""],"Target aspect ratio for treemap tiles.":[""],"Number format":[""],"Row limit":[""],"Series limit":[""],"Limits the number of time series that get displayed":[""],"Sort By":[""],"Metric used to define the top series":[""],"Rolling":[""],"Defines a rolling window function to apply, works along with the [Periods] text box":[""],"Periods":[""],"Defines the size of the rolling window function, relative to the time granularity selected":[""],"Min Periods":[""],"The minimum number of rolling periods required to show a value. For instance if you do a cumulative sum on 7 days you may want your \"Min Period\" to be 7, so that all data points shown are the total of 7 periods. This will hide the \"ramp up\" taking place over the first 7 periods":[""],"Series":[""],"Defines the grouping of entities. Each series is shown as a specific color on the chart and has a legend toggle":[""],"Entity":[""],"This defines the element to be plotted on the chart":[""],"X Axis":[""],"Metric assigned to the [X] axis":[""],"Y Axis":[""],"Metric assigned to the [Y] axis":[""],"Bubble Size":[""],"URL":[""],"The URL, this control is templated, so you can integrate {{ width }} and/or {{ height }} in your URL string.":[""],"X Axis Label":[""],"Y Axis Label":[""],"Custom WHERE clause":[""],"The text in this box gets included in your query's WHERE clause, as an AND to other criteria. You can include complex expression, parenthesis and anything else supported by the backend it is directed towards.":[""],"Custom HAVING clause":[""],"The text in this box gets included in your query's HAVING clause, as an AND to other criteria. You can include complex expression, parenthesis and anything else supported by the backend it is directed towards.":[""],"Comparison Period Lag":[""],"Based on granularity, number of time periods to compare against":[""],"Comparison suffix":[""],"Suffix to apply after the percentage display":[""],"Table Timestamp Format":[""],"Timestamp Format":[""],"Series Height":[""],"Pixel height of each series":[""],"Page Length":[""],"Rows per page, 0 means no pagination":[""],"X Axis Format":[""],"Y Axis Format":[""],"Right Axis Format":[""],"Markup Type":[""],"Pick your favorite markup language":[""],"Rotation":[""],"Rotation to apply to words in the cloud":[""],"Line Style":[""],"Line interpolation as defined by d3.js":[""],"Label Type":[""],"What should be shown on the label?":[""],"Code":[""],"Put your code here":[""],"Aggregation function":[""],"Aggregate function to apply when pivoting and computing the total rows and columns":[""],"Font Size From":[""],"Font size for the smallest value in the list":[""],"Font Size To":[""],"Font size for the biggest value in the list":[""],"Instant Filtering":[""],"Range Filter":[""],"Whether to display the time range interactive selector":[""],"Date Filter":[""],"Whether to include a time filter":[""],"Data Table":[""],"Whether to display the interactive data table":[""],"Search Box":[""],"Whether to include a client side search box":[""],"Table Filter":[""],"Whether to apply filter when table cell is clicked":[""],"Show Bubbles":[""],"Whether to display bubbles on top of countries":[""],"Legend":[""],"Whether to display the legend (toggles)":[""],"X bounds":[""],"Whether to display the min and max values of the X axis":[""],"Y bounds":[""],"Whether to display the min and max values of the Y axis":[""],"Rich Tooltip":[""],"The rich tooltip shows a list of all series for that point in time":[""],"Y Log Scale":[""],"Use a log scale for the Y axis":[""],"X Log Scale":[""],"Use a log scale for the X axis":[""],"Donut":[""],"Do you want a donut or a pie?":[""],"Put labels outside":[""],"Put the labels outside the pie?":[""],"Contribution":[""],"Compute the contribution to the total":[""],"Period Ratio":[""],"[integer] Number of period to compare against, this is relative to the granularity selected":[""],"Period Ratio Type":[""],"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` is (new-previous)":[""],"Time Shift":[""],"Overlay a timeseries from a relative time period. Expects relative time delta in natural language (example: 24 hours, 7 days, 56 weeks, 365 days)":[""],"Subheader":[""],"Description text that shows up below your Big Number":[""],"label":[""],"`count` is COUNT(*) if a group by is used. Numerical columns will be aggregated with the aggregator. Non-numerical columns will be used to label points. Leave empty to get a count of points in each cluster.":[""],"Map Style":[""],"Base layer map style":[""],"Clustering Radius":[""],"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 to turn off clustering, but beware that a large number of points (>1000) will cause lag.":[""],"Point Radius":[""],"The radius of individual points (ones that are not in a cluster). Either a numerical column or `Auto`, which scales the point based on the largest cluster":[""],"Point Radius Unit":[""],"The unit of measure for the specified point radius":[""],"Opacity":[""],"Opacity of all clusters, points, and labels. Between 0 and 1.":[""],"Zoom":[""],"Zoom level of the map":[""],"Default latitude":[""],"Latitude of default viewport":[""],"Default longitude":[""],"Longitude of default viewport":[""],"Live render":[""],"Points and clusters will update as viewport is being changed":[""],"RGB Color":[""],"The color for points and clusters in RGB":[""],"Ranges":[""],"Ranges to highlight with shading":[""],"Range labels":[""],"Labels for the ranges":[""],"Markers":[""],"List of values to mark with triangles":[""],"Marker labels":[""],"Labels for the markers":[""],"Marker lines":[""],"List of values to mark with lines":[""],"Marker line labels":[""],"Labels for the marker lines":[""],"Slice ID":[""],"The id of the active slice":[""],"Cache Timeout (seconds)":[""],"The number of seconds before expiring the cache":[""],"Order by entity id":[""],"Important! Select this if the table is not already sorted by entity id, else there is no guarantee that all events for each entity are returned.":[""],"Minimum leaf node event count":[""],"Leaf nodes that represent fewer than this number of events will be initially hidden in the visualization":[""],"Color Scheme":[""],"The color scheme for rendering chart":[""],"Time":["Tempo"],"Time related form attributes":["Attributi relativi al tempo"],"Datasource & Chart Type":["Sorgente dati e tipo di grafico"],"This section exposes ways to include snippets of SQL in your query":[""],"Annotations":[""],"Advanced Analytics":["Analytics avanzate"],"This section contains options that allow for advanced analytical post processing of query results":[""],"Result Filters":[""],"The filters to apply after post-aggregation.Leave the value control empty to filter empty strings or nulls":[""],"Chart Options":["Opzioni del grafico"],"Breakdowns":[""],"Defines how each series is broken down":[""],"Pie Chart":["Grafico a torta"],"Dual Axis Line Chart":["Grafico lineare a due assi"],"Y Axis 1":["Asse Y 1"],"Y Axis 2":["Asse Y 2"],"Left Axis Metric":["Metrica asse sinistro"],"Choose a metric for left axis":["Seleziona una metrica per l'asse sinistro"],"Left Axis Format":["Formato asse sinistro"],"Axes":["Assi"],"GROUP BY":["RAGGRUPPA PER"],"Use this section if you want a query that aggregates":[""],"NOT GROUPED BY":["NON RAGGRUPPARE PER"],"Use this section if you want to query atomic rows":[""],"Options":["Opzioni"],"Bubbles":["Bolle"],"Numeric Column":["Colonne numeriche"],"Select the numeric column to draw the histogram":[""],"No of Bins":[""],"Select number of bins for the histogram":[""],"Primary Metric":[""],"The primary metric is used to define the arc segment sizes":[""],"Secondary Metric":["Metrica secondaria"],"This secondary metric is used to define the color as a ratio against the primary metric. If the two metrics match, color is mapped level groups":[""],"Hierarchy":["Gerarchia"],"This defines the level of the hierarchy":[""],"Source / Target":["Sorgente / Destinazione"],"Choose a source and a target":["Seleziona una sorgente ed una destinazione"],"Chord Diagram":[""],"Choose a number format":["Seleziona una formato numerico"],"Source":["Sorgente"],"Choose a source":["Seleziona una sorgente"],"Target":["Destinazione"],"Choose a target":["Seleziona una destinazione"],"ISO 3166-2 codes of region/province/department":[""],"It's ISO 3166-2 of your region/province/department in your table. (see documentation for list of ISO 3166-2)":[""],"Country Control":[""],"3 letter code of the country":["Codice a 3 lettere della nazione"],"Metric for color":["Metrica per il colore"],"Metric that defines the color of the country":[""],"Bubble size":["Grandezza della bolla"],"Metric that defines the size of the bubble":["Metrica che definisce la grandezza di una bolla"],"Filter Box":[""],"Filter controls":["Controlli del filtro"],"The controls you want to filter on. Note that only columns checked as \"filterable\" will show up on this list.":[""],"Heatmap Options":[""],"Horizon":[""],"Points":[""],"Labelling":[""],"Visual Tweaks":[""],"Viewport":[""],"Longitude":["Longitudine"],"Column containing longitude data":[""],"Latitude":["Latitudine"],"Column containing latitude data":[""],"Cluster label aggregator":[""],"Aggregate function applied to the list of points in each cluster to produce the cluster label.":[""],"Tooltip":["Suggerimento"],"Show a tooltip when hovering over points and clusters describing the label":[""],"One or many controls to group by. If grouping, latitude and longitude columns must be present.":[""],"Event definition":[""],"Additional meta data":[""],"Column containing entity ids":[""],"e.g., a \"user id\" column":[""],"Column containing event names":[""],"Event count limit":[""],"The maximum number of events to return, equivalent to number of rows":[""],"Meta data":[""],"Select any columns for meta data inspection":[""],"The server could not be reached. You may want to verify your connection and try again.":[""],"An unknown error occurred. (Status: %s )":[""],"Favorites":[""],"Created Content":[""],"Recent Activity":[""],"Security & Access":[""],"No slices":[""],"No dashboards":[""],"Dashboards":["Elenco Dashboard"],"Slices":["Slice"],"No favorite slices yet, go click on stars!":[""],"No favorite dashboards yet, go click on stars!":[""],"Roles":[""],"Databases":[""],"Datasources":[""],"Profile picture provided by Gravatar":[""],"joined":[""],"id:":[""],"Sorry, there appears to be no data":[""],"Select [%s]":[""],"No data was returned.":["Nessun dato restituito."],"List Druid Column":[""],"Show Druid Column":[""],"Add Druid Column":[""],"Edit Druid Column":[""],"Column":["Colonna"],"Type":["Tipo"],"Groupable":["Raggruppabile"],"Filterable":["Filtrabile"],"Count Distinct":["Count Distinct"],"Sum":["Sum"],"Whether this column is exposed in the `Filters` section of the explore view.":["Se questa colonna è esposta nella sezione `Filtri` della vista esplorazione."],"List Druid Metric":[""],"Show Druid Metric":[""],"Add Druid Metric":[""],"Edit Druid Metric":[""],"Whether the access to this metric is restricted to certain roles. Only roles with the permission 'metric access on XXX (the name of this metric)' are allowed to access this metric":["Se l'accesso a questa metrica è limitato a determinati ruoli. Solo i ruoli con l'autorizzazione 'accesso metrico su XXX (il nome di questa metrica)' possono accedervi"],"Verbose Name":["Nome Completo"],"JSON":["JSON"],"Druid Datasource":["Sorgente Dati Druid"],"Warning Message":[""],"List Druid Cluster":[""],"Show Druid Cluster":[""],"Add Druid Cluster":[""],"Edit Druid Cluster":[""],"Cluster":["Cluster"],"Coordinator Host":["Host Coordinatore"],"Coordinator Port":["Porta Coordinatore"],"Coordinator Endpoint":["Endpoint Coordinatore"],"Broker Host":["Host Broker"],"Broker Port":["Porta Broker"],"Broker Endpoint":["Endpoint Broker"],"Druid Clusters":[""],"Sources":[""],"List Druid Datasource":[""],"Show Druid Datasource":[""],"Add Druid Datasource":[""],"Edit Druid Datasource":[""],"The list of slices associated with this table. By altering this datasource, you may change how these associated slices behave. Also note that slices need to point to a datasource, so this form will fail at saving if removing slices from a datasource. If you want to change the datasource for a slice, overwrite the slice from the 'explore view'":["Elenco delle slice associate a questa tabella. Modificando questa origine dati, è possibile modificare le modalità di comportamento delle slice associate. Inoltre, va tenuto presente che le slice devono indicare un'origine dati, pertanto questo modulo non registra le impostazioni qualora si modifica un'origine dati. Se vuoi modificare l'origine dati per una slide, devi sovrascriverla dal 'vista di esplorazione'"],"Timezone offset (in hours) for this datasource":["Timezone offset (in ore) per questa sorgente dati"],"Time expression to use as a predicate when retrieving distinct values to populate the filter component. Only applies when `Enable Filter Select` is on. If you enter `7 days ago`, the distinct list of values in the filter will be populated based on the distinct value over the past week":["Espressione temporale da utilizzare come predicato durante il recupero di valori distinti per popolare la componente del filtro. Viene applicata solo quando è attivata l'opzione \"Abilita selezione filtro\". Se si inserisce `7 giorni fa`, l'elenco distinto di valori nel filtro verrà popolato in base al valore distinto della settimana passata"],"Whether to populate the filter's dropdown in the explore view's filter section with a list of distinct values fetched from the backend on the fly":["Usato per popolare la finestra a cascata dei filtri dall'elenco dei valori distinti prelevati dal backend al volo"],"Redirects to this endpoint when clicking on the datasource from the datasource list":["Rinvia a questo endpoint al clic sulla sorgente dati dall'elenco delle sorgenti dati"],"Associated Slices":["Slice associate"],"Data Source":["Sorgente Dati"],"Owner":["Proprietario"],"Is Hidden":["è nascosto"],"Enable Filter Select":["Abilita il filtro di Select"],"Default Endpoint":["Endpoint predefinito"],"Time Offset":["Offset temporale"],"Cache Timeout":["Cache Timeout"],"Druid Datasources":[""],"Scan New Datasources":[""],"Refresh Druid Metadata":[""],"Datetime column not provided as part table configuration and is required by this type of chart":["la colonna Datetime è necessaria per questo tipo di grafico. Nella configurazione della tabella però non è stata definita"],"Empty query?":[""],"Metric '{}' is not valid":["Metrica '{}' non valida"],"Table [{}] doesn't seem to exist in the specified database, couldn't fetch column information":[""],"List Columns":[""],"Show Column":[""],"Add Column":[""],"Edit Column":[""],"Whether to make this column available as a [Time Granularity] option, column has to be DATETIME or DATETIME-like":["Se rendere disponibile questa colonna come opzione [Time Granularity], la colonna deve essere di tipo DATETIME o simile"],"The data type that was inferred by the database. It may be necessary to input a type manually for expression-defined columns in some cases. In most case users should not need to alter this.":["Il tipo di dato è dedotto dal database. In alcuni casi potrebbe essere necessario inserire manualmente un tipo di colonna definito dall'espressione. Nella maggior parte dei casi gli utenti non hanno bisogno di fare questa modifica."],"Expression":["Espressione"],"Is temporal":["è temporale"],"Datetime Format":["Formato Datetime"],"Database Expression":["Espressione del Database"],"List Metrics":[""],"Show Metric":[""],"Add Metric":[""],"Edit Metric":[""],"SQL Expression":["Espressione SQL"],"D3 Format":[""],"Is Restricted":[""],"List Tables":[""],"Show Table":[""],"Add Table":[""],"Edit Table":[""],"Name of the table that exists in the source database":["Nome delle tabella esistente nella sorgente del database"],"Schema, as used only in some databases like Postgres, Redshift and DB2":["Schema, va utilizzato soltanto in alcuni database come Postgres, Redshift e DB2"],"This fields acts a Superset view, meaning that Superset will run a query against this string as a subquery.":["Questo campo agisce come una vista Superset, il che vuol dire che Superset eseguirà una query su questa stringa come sotto-query."],"Predicate applied when fetching distinct value to populate the filter control component. Supports jinja template syntax. Applies only when `Enable Filter Select` is on.":["Predicato utilizzato quando si fornisce un valore univoco per popolare il componente di controllo del filtro. Supporta la sintassi del template jinja. È utilizzabile solo quando è abilitata l'opzione \"Abilita selezione filtro\"."],"Redirects to this endpoint when clicking on the table from the table list":["Reinvia a questo endpoint al clic sulla tabella dall'elenco delle tabelle"],"Changed By":["Modificato da"],"Database":["Database"],"Last Changed":["Ultima Modifica"],"Schema":["Schema"],"Offset":["Offset"],"Table Name":[""],"Fetch Values Predicate":[""],"Main Datetime Column":[""],"Table [{}] could not be found, please double check your database connection, schema, and table name":[""],"The table was created. As part of this two phase configuration process, you should now click the edit button by the new table to configure it.":["Tabella creata. Come parte di questo processo di configurazione in due fasi, è necessario andare sul pulsante di modifica della nuova tabella per configurarla."],"Tables":[""],"Profile":["Profilo"],"Logout":["Logout"],"Login":["Login"],"Record Count":[""],"No records found":[""],"Import":[""],"No Access!":["Nessun Accesso!"],"You do not have permissions to access the datasource(s): %(name)s.":["Non hai i permessi per accedere alla/e sorgente/i dati: %(name)s."],"Request Permissions":["Richiesta di Permessi"],"Welcome!":[""],"Test Connection":["Testa la Connessione"],"Manage":[""],"Datasource %(name)s already exists":[""],"json isn't valid":[""],"Delete":[""],"Delete all Really?":[""],"This endpoint requires the `all_datasource_access` permission":[""],"The datasource seems to have been deleted":[""],"The access requests seem to have been deleted":[""],"The user seems to have been deleted":[""],"You don't have access to this datasource":[""],"This view requires the database %(name)s or `all_datasource_access` permission":[""],"This endpoint requires the datasource %(name)s, database or `all_datasource_access` permission":[""],"List Databases":[""],"Show Database":[""],"Add Database":[""],"Edit Database":[""],"Expose this DB in SQL Lab":["Esponi questo DB in SQL Lab"],"Allow users to run synchronous queries, this is the default and should work well for queries that can be executed within a web request scope (<~1 minute)":["Permetti agli utenti di eseguire query sincrone, questa è l'impostazione predefinita e dovrebbe funzionare bene per query che possono essere eseguite con una richiesta web (<-1 minuto)"],"Allow users to run queries, against an async backend. This assumes that you have a Celery worker setup as well as a results backend.":["Permetti agli utenti di eseguire query, contro un back-office asincrono. Questo presuppone che si abbia una installazione funzionante di Celery nel backend."],"Allow CREATE TABLE AS option in SQL Lab":["Permetti l'opzione CREATE TABLE AS in SQL Lab"],"Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in SQL Lab":["Permetti agli utenti di eseguire dichiarazioni diverse da SELECT (UPDATE, DELETE, CREATE, ...) nel SQL Lab"],"When allowing CREATE TABLE AS option in SQL Lab, this option forces the table to be created in this schema":["Se si abilita l'opzione CREATE TABLE AS in SQL Lab, verrà forzata la creazione della tabella con questo schema"],"All the queries in Sql Lab are going to be executed on behalf of currently authorized user.":[""],"Expose in SQL Lab":["Esponi in SQL Lab"],"Allow CREATE TABLE AS":["Permetti CREATE TABLE AS"],"Allow DML":["Permetti DML"],"CTAS Schema":["Schema CTAS"],"Creator":["Creatore"],"SQLAlchemy URI":["URI SQLAlchemy"],"Extra":["Extra"],"Allow Run Sync":[""],"Allow Run Async":[""],"Impersonate queries to the database":[""],"Import Dashboards":[""],"User":["Utente"],"User Roles":["Ruoli Utente"],"Database URL":["URL del Database"],"Roles to grant":["Ruoli per l'accesso"],"Created On":["Creato il"],"Access requests":[""],"Security":[""],"List Slices":[""],"Show Slice":[""],"Add Slice":[""],"Edit Slice":[""],"These parameters are generated dynamically when clicking the save or overwrite button in the explore view. This JSON object is exposed here for reference and for power users who may want to alter specific parameters.":["Questi parametri sono generati dinamicamente al clic su salva o con il bottone di sovrascrittura nella vista di esplorazione. Questo oggetto JSON è esposto qui per referenza e per utenti esperti che vogliono modificare parametri specifici."],"Duration (in seconds) of the caching timeout for this slice.":["Durata (in secondi) per il timeout della cache per questa slice."],"Last Modified":["Ultima Modifica"],"Owners":["Proprietari"],"Parameters":["Parametri"],"Slice":["Slice"],"List Dashboards":[""],"Show Dashboard":[""],"Add Dashboard":[""],"Edit Dashboard":[""],"This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view":["L'oggetto JSON descrive la posizione dei vari widget nella dashboard. È generato automaticamente nel momento in cui se ne cambia la posizione e la dimensione usando la funzione di drag & drop nella vista della dashboard. "],"The css for individual dashboards can be altered here, or in the dashboard view where changes are immediately visible":["Il CSS di ogni singola dashboard può essere modificato qui, oppure nella vista della dashboard dove i cambiamenti sono visibili immediatamente"],"To get a readable URL for your dashboard":["ottenere una URL leggibile per la tua dashboard"],"This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.":["Questo oggetto JSON è generato in maniera dinamica al clic sul pulsante di salvataggio o sovrascrittura nella vista dashboard. Il JSON è esposto qui come riferimento e per gli utenti esperti che vogliono modificare parametri specifici."],"Owners is a list of users who can alter the dashboard.":["Proprietari è una lista di utenti che può alterare la dashboard."],"Dashboard":["Dashboard"],"Slug":["Slug"],"Position JSON":["Posizione del JSON"],"JSON Metadata":["Metadati JSON"],"Underlying Tables":["Tabelle sottostanti"],"Export":[""],"Export dashboards?":[""],"Action":["Azione"],"dttm":["dttm"],"Action Log":[""],"Access was requested":[""],"%(user)s was granted the role %(role)s that gives access to the %(datasource)s":[""],"Role %(r)s was extended to provide the access to the datasource %(ds)s":[""],"You have no permission to approve this request":[""],"Malformed request. slice_id or table_name and db_name arguments are expected":[""],"Slice %(id)s not found":[""],"Table %(t)s wasn't found in the database %(d)s":[""],"Can't find User '%(name)s', please ask your admin to create one.":[""],"Can't find DruidCluster with cluster_name = '%(name)s'":[""],"Query record was not created as expected.":[""],"Template Name":[""],"CSS Templates":[""],"SQL Editor":["Editor SQL"],"SQL Lab":[""],"Query Search":["Ricerca Query"],"Status":[""],"Start Time":[""],"End Time":[""],"Queries":[""],"List Saved Query":[""],"Show Saved Query":[""],"Add Saved Query":[""],"Edit Saved Query":[""],"Pop Tab Link":[""],"Changed on":[""],"Saved Queries":[""]}}}
\ No newline at end of file
+{"domain":"superset","locale_data":{"superset":{"":{"domain":"superset","plural_forms":"nplurals=1; plural=0","lang":"it"},"Time Column":["Colonna del Tempo"],"second":["secondo"],"minute":["minuto"],"hour":["ora"],"day":["giorno"],"week":["settimana"],"month":["mese"],"quarter":["quartile"],"year":["anno"],"week_start_monday":["settimana_inizio_lunedì"],"week_ending_saturday":["settimana_fine_domenica"],"week_start_sunday":["settimana_inizio_domenica"],"5 minute":["5 minuti"],"half hour":["mezz'ora"],"10 minute":["10 minuti"],"Table Name":[""],"Name of table to be created from csv data.":[""],"CSV File":[""],"Select a CSV file to be uploaded to a database.":[""],"CSV Files Only!":[""],"Delimiter":[""],"Delimiter used by CSV file (for whitespace use \\s+).":[""],"Table Exists":[""],"If table exists do one of the following: Fail (do nothing), Replace (drop and recreate table) or Append (insert data).":[""],"Fail":[""],"Replace":[""],"Append":[""],"Schema":["Schema"],"Specify a schema (if database flavour supports this).":[""],"Header Row":[""],"Row containing the headers to use as column names (0 is first line of data). Leave empty if there is no header row.":[""],"Index Column":[""],"Column to use as the row labels of the dataframe. Leave empty if no index column.":[""],"Mangle Duplicate Columns":[""],"Specify duplicate columns as \"X.0, X.1\".":[""],"Skip Initial Space":[""],"Skip spaces after delimiter.":[""],"Skip Rows":[""],"Number of rows to skip at start of file.":[""],"Rows to Read":[""],"Number of rows of file to read.":[""],"Skip Blank Lines":[""],"Skip blank lines rather than interpreting them as NaN values.":[""],"Parse Dates":[""],"Parse date values.":[""],"Infer Datetime Format":[""],"Use Pandas to interpret the datetime format automatically.":[""],"Decimal Character":[""],"Character to interpret as decimal point.":[""],"Dataframe Index":[""],"Write dataframe index as a column.":[""],"Column Label(s)":[""],"Column label for index column(s). If None is given and Dataframe Index is True, Index Names are used.":[""],"[Superset] Access to the datasource %(name)s was granted":["[Superset] Accesso al datasource $(name) concesso"],"Viz is missing a datasource":["Datasource mancante per la visualizzazione"],"From date cannot be larger than to date":["La data di inizio non può essere dopo la data di fine"],"Table View":["Vista Tabella"],"Pick a granularity in the Time section or uncheck 'Include Time'":["Seleziona una granularità nella sezione tempo e deseleziona 'Includi Tempo'"],"Choose either fields to [Group By] and [Metrics] or [Columns], not both":["Selezionare i campi [Group By] e [Metrica] o [Colonne], non entrambi"],"Time Table View":[""],"Pick at least one metric":["Seleziona almeno una metrica"],"When using 'Group By' you are limited to use a single metric":[""],"Pivot Table":["Vista Pivot"],"Please choose at least one 'Group by' field ":[""],"Please choose at least one metric":["Seleziona almeno una metrica"],"Group By' and 'Columns' can't overlap":[""],"Markup":["Marcatore"],"Separator":["Separatore"],"Word Cloud":["Cloud di Parole"],"Treemap":["Treemap"],"Calendar Heatmap":["Calendario di Intensità"],"Box Plot":["Box Plot"],"Bubble Chart":["Grafico a Bolle"],"Pick a metric for x, y and size":["Seleziona una metrica per x, y e grandezza"],"Bullet Chart":["Grafico a Proiettile"],"Pick a metric to display":["Seleziona una metrica da visualizzare"],"Big Number with Trendline":["Numero Grande con Linea del Trend"],"Pick a metric!":["Seleziona una metrica!"],"Big Number":["Numero Grande"],"Time Series - Line Chart":["Serie Temporali - Grafico Lineare"],"Pick a time granularity for your time series":["Seleziona una granularità per la serie temporale"],"`Since` and `Until` time bounds should be specified when using the `Time Shift` feature.":[""],"Time Series - Dual Axis Line Chart":["Serie Temporali - Grafico Lineare ad Assi Duali"],"Pick a metric for left axis!":["Seleziona una metrica per l'asse sinistro"],"Pick a metric for right axis!":["Seleziona una metrica per l'asse destro"],"Please choose different metrics on left and right axis":["Seleziona metriche differenti per gli assi destro e sinistro"],"Time Series - Bar Chart":["Serie Temporali - Grafico Barre"],"Time Series - Period Pivot":[""],"Time Series - Percent Change":["Serie Temporali - Cambiamento Percentuale"],"Time Series - Stacked":["Serie Temporali - Stacked"],"Distribution - NVD3 - Pie Chart":["Distribuzione - NVD3 - Grafico Torta"],"Histogram":["Istogramma"],"Must have one numeric column specified":["Devi specificare una colonna numerica"],"Distribution - Bar Chart":["Distribuzione - Grafico Barre"],"Can't have overlap between Series and Breakdowns":[""],"Pick at least one field for [Series]":["Seleziona almeno un campo per [Series]"],"Sunburst":["Sunburst"],"Sankey":["Sankey"],"Pick exactly 2 columns as [Source / Target]":["Seleziona esattamente 2 colonne come [Sorgente / Destinazione]"],"There's a loop in your Sankey, please provide a tree. Here's a faulty link: {}":[""],"Directed Force Layout":["Disposizione a Forza Diretta"],"Pick exactly 2 columns to 'Group By'":["Seleziona esattamente 2 colonne per 'Group By'"],"Country Map":["Mappa della Nazione"],"World Map":["Mappa del Mondo"],"Filters":["Filtri"],"Pick at least one filter field":[""],"iFrame":["iFrame"],"Parallel Coordinates":["Coordinate Parallele"],"Heatmap":["Mappa di Intensità"],"Horizon Charts":["Grafici d'orizzonte"],"Mapbox":["Mapbox"],"Must have a [Group By] column to have 'count' as the [Label]":[""],"Choice of [Label] must be present in [Group By]":[""],"Choice of [Point Radius] must be present in [Group By]":[""],"[Longitude] and [Latitude] columns must be present in [Group By]":[""],"Deck.gl - Multiple Layers":[""],"Bad spatial key":[""],"Deck.gl - Scatter plot":[""],"Deck.gl - Screen Grid":[""],"Deck.gl - 3D Grid":[""],"Deck.gl - Paths":[""],"Deck.gl - Polygon":[""],"Deck.gl - 3D HEX":[""],"Deck.gl - GeoJSON":[""],"Deck.gl - Arc":[""],"Event flow":[""],"Time Series - Paired t-test":[""],"Time Series - Nightingale Rose Chart":[""],"Partition Diagram":[""],"Your query was saved":["La tua query è stata salvata"],"Your query could not be saved":["La tua query non può essere salvata"],"Failed at retrieving results from the results backend":["Errore nel recupero dei dati dal backend"],"Unknown error":[""],"Your session timed out, please refresh your page and try again.":["La tua sessione è scaduta, ricarica la pagina e riprova."],"Query was stopped.":["La query è stata fermata."],"Failed at stopping query.":["Errore nel fermare la query."],"Error occurred while fetching table metadata":["Errore nel recupero dei metadati della tabella"],"shared query":["query condivisa"],"The query couldn't be loaded":["La query non può essere caricata"],"An error occurred while creating the data source":["Errore nel creare il datasource"],"Pick a chart type!":["Seleziona un tipo di grafico"],"To use this chart type you need at least one column flagged as a date":["Per usare questo tipo di grafico devi avere almeno una colonna selezionata come data"],"To use this chart type you need at least one dimension":["Per usare questo tipo di grafico devi avere almeno una dimensione"],"To use this chart type you need at least one aggregation function":["Per usare questo tipo di grafico devi avere almeno uan funziona di aggregazione"],"Untitled Query":["Query senza nome"],"Copy of %s":["Copia di %s"],"share query":["condividi query"],"copy URL to clipboard":["copia URL in appunti"],"Raw SQL":[""],"Source SQL":[""],"SQL":[""],"No query history yet...":[""],"It seems you don't have access to any database":[""],"Search Results":["Risultati della ricerca"],"[From]-":[""],"[To]-":[""],"[Query Status]":[""],"Search":["Cerca"],"Open in SQL Editor":["Apri in SQL Editor"],"view results":["visualizza risultati"],"Data preview":[""],"Visualize the data out of this query":[""],"Overwrite text in editor with a query on this table":[""],"Run query in a new tab":[""],"Remove query from log":[""],".CSV":["CSV"],"Visualize":[""],"Table":["Tabella"],"was created":["è stata creata"],"Query in a new tab":["Query in un nuovo tab"],"Fetch data preview":[""],"Track Job":[""],"Loading...":[""],"Run Selected Query":[""],"Run Query":[""],"Run query synchronously":[""],"Run query asynchronously":[""],"Stop":[""],"Undefined":[""],"Label":[""],"Label for your query":[""],"Description":["Descrizione"],"Write a description for your query":[""],"Save":[""],"Cancel":["Annulla"],"Save Query":[""],"Run a query to display results here":[""],"Preview for %s":[""],"Results":[""],"Query History":[""],"Create table as with query results":[""],"new table name":[""],"Error while fetching table list":[""],"Error while fetching schema list":[""],"Error while fetching database list":[""],"Database:":[""],"Select a database":[""],"Select a schema (%s)":[""],"Schema:":[""],"Add a table (%s)":[""],"Type to search ...":[""],"Reset State":[""],"Enter a new title for the tab":[""],"Untitled Query %s":[""],"close tab":[""],"rename tab":[""],"expand tool bar":[""],"hide tool bar":[""],"Copy partition query to clipboard":[""],"latest partition:":[""],"Keys for table":[""],"View keys & indexes (%s)":[""],"Sort columns alphabetically":[""],"Original table column order":[""],"Copy SELECT statement to clipboard":[""],"Remove table preview":[""],"Template Parameters":[""],"Edit template parameters":[""],"Invalid JSON":[""],"%s is not right as a column name, please alias it (as in SELECT count(*) ":[""],"AS my_alias":[""],"using only alphanumeric characters and underscores":[""],"Creating a data source and popping a new tab":[""],"No results available for this query":[""],"Chart Type":[""],"[Chart Type]":[""],"Datasource Name":[""],"datasource name":[""],"Create a new slice":[""],"Choose a datasource":[""],"Choose a visualization type":[""],"Create new slice":[""],"Updating chart was stopped":["L'aggiornamento del grafico è stato fermato"],"An error occurred while rendering the visualization: %s":["Errore nel rendering della visualizzazione: %s"],"visualization queries are set to timeout at ${action.timeout} seconds. ":[""],"Perhaps your data has grown, your database is under unusual load, or you are simply querying a data source that is too large to be processed within the timeout range. If that is the case, we recommend that you summarize your data further.":[""],"Network error.":["Errore di rete."],"Click to see difference":[""],"Altered":[""],"Slice changes":[""],"Select ...":[""],"Loaded data cached":[""],"Loaded from cache":[""],"Click to force-refresh":[""],"Copy to clipboard":[""],"Not successful":[""],"Sorry, your browser does not support copying. Use Ctrl / Cmd + C!":[""],"Copied!":[""],"Title":["Titolo"],"click to edit title":[""],"You don't have the rights to alter this title.":[""],"Click to favorite/unfavorite":[""],"Active Dashboard Filters":[""],"Checkout this dashboard: %s":[""],"Save as":["Salva come"],"Force Refresh":[""],"Force refresh the whole dashboard":[""],"Set autorefresh":[""],"Set the auto-refresh interval for this session":[""],"Save the dashboard":[""],"Edit properties":[""],"Edit the dashboards's properties":[""],"Email":[""],"Email a link to this dashboard":[""],"Add Slices":[""],"Add some slices to this dashboard":[""],"Edit CSS":[""],"Change the style of the dashboard using CSS code":[""],"Load a template":[""],"Load a CSS template":[""],"CSS":["CSS"],"Live CSS Editor":[""],"You have unsaved changes.":[""],"Unsaved changes":[""],"Don't refresh":[""],"10 seconds":[""],"30 seconds":[""],"1 minute":[""],"5 minutes":[""],"Refresh Interval":[""],"Choose the refresh frequency for this dashboard":[""],"This dashboard was saved successfully.":[""],"Sorry, there was an error saving this dashboard: ":[""],"Error":[""],"You must pick a name for the new dashboard":[""],"Save Dashboard":[""],"Overwrite Dashboard [%s]":[""],"Save as:":[""],"[dashboard name]":[""],"Sorry, there was an error fetching slices to this dashboard: ":[""],"Sorry, there was an error adding slices to this dashboard: ":[""],"Name":["Nome"],"Viz":[""],"Datasource":["Sorgente Dati"],"Modified":["Modificato"],"Add a new slice to the dashboard":[""],"Add Slices to Dashboard":[""],"Served from data cached %s . Click to force refresh.":[""],"Force refresh data":[""],"Annotation layers are still loading.":[""],"One ore more annotation layers failed loading.":[""],"Move chart":[""],"Toggle chart description":[""],"Edit chart":[""],"Export CSV":["Esporta CSV"],"Explore chart":["Esplora grafico"],"Remove chart from dashboard":["Rimuovi il grafico dalla dashboard"],"is expected to be a number":[""],"is expected to be an integer":[""],"cannot be empty":["non può essere vuoto"],"description":["descrizione"],"bolt":[""],"Changing this control takes effect instantly":[""],"Error...":["Errore..."],"Query":[""],"Height":["Altezza"],"Width":["Larghezza"],"Export to .json":["Esporta in .json"],"Export to .csv format":["Esporta nel formato .csv"],"%s - untitled":["%s - senza nome"],"Edit slice properties":[""],"Limit reached":[""],"Please enter a slice name":["Inserisci un nome per la slice"],"Please select a dashboard":["Seleziona una dashboard"],"Please enter a dashboard name":["Inserisci un nome per la dashboard"],"Save A Slice":["Salva una slice"],"Overwrite slice %s":["Sovrascrivi la slice %s"],"[slice name]":["[nome slice]"],"Do not add to a dashboard":["Non aggiugere alla dashboard"],"Add slice to existing dashboard":["Aggiungi la slice alla dashboard esistente"],"Add to new dashboard":["Aggiungi ad una nuova dashboard"],"Save & go to dashboard":["Salva e vai alla dashboard"],"Check out this slice: %s":["Guarda questa slice: %s"],"Add Annotation Layer":[""],"`Min` value should be numeric or empty":[""],"`Max` value should be numeric or empty":[""],"Min":["Min"],"Max":["Max"],"Something went wrong while fetching the datasource list":[""],"Select a datasource":["Seleziona un datasource"],"Search / Filter":["Cerca / Filtra"],"Click to point to another datasource":[""],"Edit the datasource's configuration":[""],"Show datasource configuration":[""],"Filter value":["Valore del filtro"],"Select metric":["Seleziona una metrica"],"Select column":["Seleziona una colonna"],"Select operator":["Seleziona operatore"],"Add Filter":["Aggiungi filtro"],"Error while fetching data":["Errore nel recupero dati"],"%s option(s)":[""],"Invalid lat/long configuration.":[""],"Longitude & Latitude columns":[""],"Delimited long & lat single column":[""],"Multiple formats accepted, look the geopy.points Python library for more details":[""],"Reverse lat/long ":[""],"Geohash":[""],"textarea":["textarea"],"Edit":["Modifica"],"in modal":["in modale"],"Select a visualization type":["Seleziona un tipo di visualizzazione"],"A reference to the [Time] configuration, taking granularity into account":[""],"Group by":["Raggruppa per"],"One or many controls to group by":["Uno o più controlli per 'Raggruppa per'"],"For more information about objects are in context in the scope of this function, refer to the":[""]," source code of Superset's sandboxed parser":[""],"This functionality is disabled in your environment for security reasons.":[""],"Visualization Type":["Tipo di Visualizzazione"],"The type of visualization to display":["Il tipo di visualizzazione da mostrare"],"Metrics":["Metriche"],"One or many metrics to display":["Una o più metriche da mostrare"],"Percentage Metrics":[""],"Metrics for which percentage of total are to be displayed":[""],"Y Axis Bounds":["Limite asse Y"],"Bounds for the Y axis. When left empty, the bounds are dynamically defined based on the min/max of the data. Note that this feature will only expand the axis range. It won't narrow the data's extent.":[""],"Ordering":["Ordina per"],"Fixed Color":[""],"Use this to define a static color for all circles":[""],"Fill Color":[""]," Set the opacity to 0 if you do not want to override the color specified in the GeoJSON":[""],"Stroke Color":[""],"Metric":["Metrica"],"Choose the metric":["Seleziona la metrica"],"Right Axis Metric":["Metrica asse destro"],"Choose a metric for right axis":["Seleziona una metrica per l'asse destro"],"Stacked Style":[""],"Sort X Axis":[""],"Sort Y Axis":[""],"Linear Color Scheme":[""],"Normalize Across":[""],"Color will be rendered based on a ratio of the cell against the sum of across this criteria":[""],"Horizon Color Scale":[""],"Defines how the color are attributed.":[""],"Rendering":[""],"image-rendering CSS attribute of the canvas object that defines how the browser scales up the image":[""],"XScale Interval":[""],"Number of steps to take between ticks when displaying the X scale":[""],"YScale Interval":[""],"Number of steps to take between ticks when displaying the Y scale":[""],"Include Time":[""],"Whether to include the time granularity as defined in the time section":[""],"Auto Zoom":[""],"When checked, the map will zoom to your data after each query":[""],"Show percentage":[""],"Whether to include the percentage in the tooltip":[""],"Stacked Bars":[""],"Show totals":[""],"Display total row/column":["Mostra totali riga/colonna"],"Show Markers":["Mostra marcatori"],"Show data points as circle markers on the lines":[""],"Bar Values":[""],"Show the value on top of the bar":[""],"Sort Bars":[""],"Sort bars by x labels.":[""],"Combine Metrics":[""],"Display metrics side by side within each column, as opposed to each column being displayed side by side for each metric.":[""],"Extra Controls":[""],"Whether to show extra controls or not. Extra controls include things like making mulitBar charts stacked or side by side.":[""],"Reduce X ticks":[""],"Reduces the number of X axis ticks to be rendered. If true, the x axis wont overflow and labels may be missing. If false, a minimum width will be applied to columns and the width may overflow into an horizontal scroll.":[""],"Include Series":[""],"Include series name as an axis":[""],"Color Metric":[""],"A metric to use for color":[""],"Country Name":[""],"The name of country that Superset should display":[""],"Country Field Type":[""],"The country code standard that Superset should expect to find in the [country] column":[""],"Frequency":[""],"The periodicity over which to pivot time. Users can provide\n \"Pandas\" offset alias.\n Click on the info bubble for more details on accepted \"freq\" expressions.":[""],"Dimension":[""],"Select a dimension":[""],"Columns":[""],"One or many controls to pivot as columns":[""],"Columns to display":[""],"Longitude & Latitude":[""],"Point to your spatial columns":[""],"Start Longitude & Latitude":[""],"End Longitude & Latitude":[""],"Longitude":["Longitudine"],"Select the longitude column":[""],"Latitude":["Latitudine"],"Select the latitude column":[""],"GeoJson Column":[""],"Select the geojson column":[""],"Polygon Column":[""],"Select the polygon column. Each row should contain JSON.array(N) of [longitude, latitude] points":[""],"Point Radius Scale":[""],"Stroke Width":[""],"Origin":[""],"Defines the origin where time buckets start, accepts natural dates as in `now`, `sunday` or `1970-01-01`":[""],"Bottom Margin":[""],"Bottom margin, in pixels, allowing for more room for axis labels":[""],"Left Margin":[""],"Left margin, in pixels, allowing for more room for axis labels":[""],"Time Granularity":[""],"The time granularity for the visualization. Note that you can type and use simple natural language as in `10 seconds`, `1 day` or `56 weeks`":[""],"Domain":[""],"The time unit used for the grouping of blocks":[""],"Subdomain":[""],"The time unit for each block. Should be a smaller unit than domain_granularity. Should be larger or equal to Time Grain":[""],"Link Length":[""],"Link length in the force layout":[""],"Charge":[""],"Charge in the force layout":[""],"The time column for the visualization. Note that you can define arbitrary expression that return a DATETIME column in the table. Also note that the filter below is applied against this column or expression":[""],"Time Grain":[""],"The time granularity for the visualization. This applies a date transformation to alter your time column and defines a new time granularity. The options here are defined on a per database engine basis in the Superset source code.":[""],"Resample Rule":[""],"Pandas resample rule":[""],"Resample How":[""],"Pandas resample how":[""],"Resample Fill Method":[""],"Pandas resample fill method":[""],"Since":["Data inizio"],"7 days ago":["7 giorni"],"Until":["Data fine"],"Max Bubble Size":[""],"Whisker/outlier options":[""],"Determines how whiskers and outliers are calculated.":[""],"Ratio":[""],"Target aspect ratio for treemap tiles.":[""],"Number format":[""],"Row limit":[""],"Series limit":[""],"Limits the number of time series that get displayed. A sub query (or an extra phase where sub queries are not supported) is applied to limit the number of time series that get fetched and displayed. This feature is useful when grouping by high cardinality dimension(s).":[""],"Sort By":[""],"Metric used to define the top series":[""],"Sort Descending":[""],"Whether to sort descending or ascending":[""],"Rolling":[""],"Defines a rolling window function to apply, works along with the [Periods] text box":[""],"Multiplier":[""],"Factor to multiply the metric by":[""],"Periods":[""],"Defines the size of the rolling window function, relative to the time granularity selected":[""],"Grid Size":[""],"Defines the grid size in pixels":[""],"Min Periods":[""],"The minimum number of rolling periods required to show a value. For instance if you do a cumulative sum on 7 days you may want your \"Min Period\" to be 7, so that all data points shown are the total of 7 periods. This will hide the \"ramp up\" taking place over the first 7 periods":[""],"Series":[""],"Defines the grouping of entities. Each series is shown as a specific color on the chart and has a legend toggle":[""],"Entity":[""],"This defines the element to be plotted on the chart":[""],"X Axis":[""],"Metric assigned to the [X] axis":[""],"Y Axis":[""],"Metric assigned to the [Y] axis":[""],"Bubble Size":[""],"URL":[""],"The URL, this control is templated, so you can integrate {{ width }} and/or {{ height }} in your URL string.":[""],"X Axis Label":[""],"Y Axis Label":[""],"Custom WHERE clause":[""],"The text in this box gets included in your query's WHERE clause, as an AND to other criteria. You can include complex expression, parenthesis and anything else supported by the backend it is directed towards.":[""],"Custom HAVING clause":[""],"The text in this box gets included in your query's HAVING clause, as an AND to other criteria. You can include complex expression, parenthesis and anything else supported by the backend it is directed towards.":[""],"Comparison Period Lag":[""],"Based on granularity, number of time periods to compare against":[""],"Comparison suffix":[""],"Suffix to apply after the percentage display":[""],"Table Timestamp Format":[""],"Timestamp Format":[""],"Series Height":[""],"Pixel height of each series":[""],"Page Length":[""],"Rows per page, 0 means no pagination":[""],"X Axis Format":[""],"Y Axis Format":[""],"Right Axis Format":[""],"Date Time Format":[""],"Markup Type":[""],"Pick your favorite markup language":[""],"Rotation":[""],"Rotation to apply to words in the cloud":[""],"Line Style":[""],"Line interpolation as defined by d3.js":[""],"Label Type":[""],"What should be shown on the label?":[""],"Code":[""],"Put your code here":[""],"Aggregation function":[""],"Aggregate function to apply when pivoting and computing the total rows and columns":[""],"Font Size From":[""],"Font size for the smallest value in the list":[""],"Font Size To":[""],"Font size for the biggest value in the list":[""],"Instant Filtering":[""],"Extruded":[""],"Range Filter":[""],"Whether to display the time range interactive selector":[""],"Date Filter":[""],"Whether to include a time filter":[""],"Show SQL Granularity Dropdown":[""],"Check to include SQL Granularity dropdown":[""],"Show SQL Time Column":[""],"Check to include Time Column dropdown":[""],"Show Druid Granularity Dropdown":[""],"Check to include Druid Granularity dropdown":[""],"Show Druid Time Origin":[""],"Check to include Time Origin dropdown":[""],"Data Table":[""],"Whether to display the interactive data table":[""],"Search Box":[""],"Whether to include a client side search box":[""],"Table Filter":[""],"Whether to apply filter when table cell is clicked":[""],"Show Bubbles":[""],"Whether to display bubbles on top of countries":[""],"Legend":[""],"Whether to display the legend (toggles)":[""],"Show Values":[""],"Whether to display the numerical values within the cells":[""],"X bounds":[""],"Whether to display the min and max values of the X axis":[""],"Y bounds":[""],"Whether to display the min and max values of the Y axis":[""],"Rich Tooltip":[""],"The rich tooltip shows a list of all series for that point in time":[""],"Y Log Scale":[""],"Use a log scale for the Y axis":[""],"X Log Scale":[""],"Use a log scale for the X axis":[""],"Log Scale":[""],"Use a log scale":[""],"Donut":[""],"Do you want a donut or a pie?":[""],"Put labels outside":[""],"Put the labels outside the pie?":[""],"Contribution":[""],"Compute the contribution to the total":[""],"Period Ratio":[""],"[integer] Number of period to compare against, this is relative to the granularity selected":[""],"Period Ratio Type":[""],"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` is (new-previous)":[""],"Time Shift":[""],"Overlay a timeseries from a relative time period. Expects relative time delta in natural language (example: 24 hours, 7 days, 56 weeks, 365 days)":[""],"Subheader":[""],"Description text that shows up below your Big Number":[""],"label":[""],"`count` is COUNT(*) if a group by is used. Numerical columns will be aggregated with the aggregator. Non-numerical columns will be used to label points. Leave empty to get a count of points in each cluster.":[""],"Map Style":[""],"Base layer map style":[""],"Clustering Radius":[""],"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 to turn off clustering, but beware that a large number of points (>1000) will cause lag.":[""],"Point Size":[""],"Fixed point radius":[""],"Point Radius":[""],"The radius of individual points (ones that are not in a cluster). Either a numerical column or `Auto`, which scales the point based on the largest cluster":[""],"Point Radius Unit":[""],"The unit of measure for the specified point radius":[""],"Point Unit":[""],"Opacity":[""],"Opacity of all clusters, points, and labels. Between 0 and 1.":[""],"Viewport":[""],"Parameters related to the view and perspective on the map":[""],"Zoom":[""],"Zoom level of the map":[""],"Default latitude":[""],"Latitude of default viewport":[""],"Default longitude":[""],"Longitude of default viewport":[""],"Live render":[""],"Points and clusters will update as viewport is being changed":[""],"RGB Color":[""],"The color for points and clusters in RGB":[""],"Color":[""],"Pick a color":[""],"Ranges":[""],"Ranges to highlight with shading":[""],"Range labels":[""],"Labels for the ranges":[""],"Markers":[""],"List of values to mark with triangles":[""],"Marker labels":[""],"Labels for the markers":[""],"Marker lines":[""],"List of values to mark with lines":[""],"Marker line labels":[""],"Labels for the marker lines":[""],"Slice ID":[""],"The id of the active slice":[""],"Cache Timeout (seconds)":[""],"The number of seconds before expiring the cache":[""],"Order by entity id":[""],"Important! Select this if the table is not already sorted by entity id, else there is no guarantee that all events for each entity are returned.":[""],"Minimum leaf node event count":[""],"Leaf nodes that represent fewer than this number of events will be initially hidden in the visualization":[""],"Color Scheme":[""],"The color scheme for rendering chart":[""],"Significance Level":[""],"Threshold alpha level for determining significance":[""],"p-value precision":[""],"Number of decimal places with which to display p-values":[""],"Lift percent precision":[""],"Number of decimal places with which to display lift values":[""],"Time Series Columns":[""],"Use Area Proportions":[""],"Check if the Rose Chart should use segment area instead of segment radius for proportioning":[""],"Options":["Opzioni"],"Not Time Series":[""],"Ignore time":[""],"Time Series":[""],"Standard time series":[""],"Aggregate Mean":[""],"Mean of values over specified period":[""],"Aggregate Sum":[""],"Sum of values over specified period":[""],"Difference":[""],"Metric change in value from `since` to `until`":[""],"Percent Change":[""],"Metric percent change in value from `since` to `until`":[""],"Factor":[""],"Metric factor change from `since` to `until`":[""],"Advanced Analytics":["Analytics avanzate"],"Use the Advanced Analytics options below":[""],"Settings for time series":[""],"Equal Date Sizes":[""],"Check to force date partitions to have the same height":[""],"Partition Limit":[""],"The maximum number of subdivisions of each group; lower values are pruned first":[""],"Partition Threshold":[""],"Partitions whose height to parent height proportions are below this value are pruned":[""],"Lines column":[""],"The database columns that contains lines information":[""],"Lines encoding":[""],"The encoding format of the lines":[""],"Line width":[""],"The width of the lines":[""],"Reverse Lat & Long":[""],"deck.gl charts":[""],"Pick a set of deck.gl charts to layer on top of one another":[""],"Select charts":[""],"Error while fetching charts":[""],"Javascript data interceptor":[""],"Define a javascript function that receives the data array used in the visualization and is expected to return a modified version of that array. This can be used to alter properties of the data, filter, or enrich the array.":[""],"Javascript data mutator":[""],"Define a function that receives intercepts the data objects and can mutate it":[""],"Javascript tooltip generator":[""],"Define a function that receives the input and outputs the content for a tooltip":[""],"Javascript onClick href":[""],"Define a function that returns a URL to navigate to when user clicks":[""],"Extra data for JS":[""],"List of extra columns made available in Javascript functions":[""],"Stroked":[""],"Whether to display the stroke":[""],"Filled":[""],"Whether to fill the objects":[""],"Time":["Tempo"],"Time related form attributes":["Attributi relativi al tempo"],"Datasource & Chart Type":["Sorgente dati e tipo di grafico"],"This section exposes ways to include snippets of SQL in your query":[""],"Annotations and Layers":[""],"This section contains options that allow for advanced analytical post processing of query results":[""],"Result Filters":[""],"The filters to apply after post-aggregation.Leave the value control empty to filter empty strings or nulls":[""],"Chart Options":["Opzioni del grafico"],"Breakdowns":[""],"Defines how each series is broken down":[""],"Pie Chart":["Grafico a torta"],"Time Series - Periodicity Pivot":[""],"Dual Axis Line Chart":["Grafico lineare a due assi"],"Y Axis 1":["Asse Y 1"],"Y Axis 2":["Asse Y 2"],"Left Axis Metric":["Metrica asse sinistro"],"Choose a metric for left axis":["Seleziona una metrica per l'asse sinistro"],"Left Axis Format":["Formato asse sinistro"],"Axes":["Assi"],"Map":[""],"Deck.gl - Hexagons":[""],"Advanced":[""],"Metric used to control height":[""],"Deck.gl - Grid":[""],"Deck.gl - Screen grid":[""],"Grid":[""],"Weight":[""],"Metric used as a weight for the grid's coloring":[""],"Deck.gl - geoJson":[""],"GeoJson Settings":[""],"Polygon Settings":[""],"Arc":[""],"Point Color":[""],"Categorical Color":[""],"Pick a dimension from which categorical colors are defined":[""],"GROUP BY":["RAGGRUPPA PER"],"Use this section if you want a query that aggregates":[""],"NOT GROUPED BY":["NON RAGGRUPPARE PER"],"Use this section if you want to query atomic rows":[""],"Time Series Table":[""],"Templated link, it's possible to include {{ metric }} or other values coming from the controls.":[""],"Pivot Options":[""],"Bubbles":["Bolle"],"Numeric Column":["Colonne numeriche"],"Select the numeric column to draw the histogram":[""],"No of Bins":[""],"Select number of bins for the histogram":[""],"Primary Metric":[""],"The primary metric is used to define the arc segment sizes":[""],"Secondary Metric":["Metrica secondaria"],"[optional] this secondary metric is used to define the color as a ratio against the primary metric. When omitted, the color is categorical and based on labels":[""],"Hierarchy":["Gerarchia"],"This defines the level of the hierarchy":[""],"Source / Target":["Sorgente / Destinazione"],"Choose a source and a target":["Seleziona una sorgente ed una destinazione"],"Chord Diagram":[""],"Choose a number format":["Seleziona una formato numerico"],"Source":["Sorgente"],"Choose a source":["Seleziona una sorgente"],"Target":["Destinazione"],"Choose a target":["Seleziona una destinazione"],"ISO 3166-2 codes of region/province/department":[""],"It's ISO 3166-2 of your region/province/department in your table. (see documentation for list of ISO 3166-2)":[""],"Country Control":[""],"3 letter code of the country":["Codice a 3 lettere della nazione"],"Metric for color":["Metrica per il colore"],"Metric that defines the color of the country":[""],"Bubble size":["Grandezza della bolla"],"Metric that defines the size of the bubble":["Metrica che definisce la grandezza di una bolla"],"Filter Box":[""],"Filter controls":["Controlli del filtro"],"The controls you want to filter on. Note that only columns checked as \"filterable\" will show up on this list.":[""],"Heatmap Options":[""],"Value bounds":[""],"Value Format":[""],"Horizon":[""],"Points":[""],"Labelling":[""],"Visual Tweaks":[""],"Column containing longitude data":[""],"Column containing latitude data":[""],"Cluster label aggregator":[""],"Aggregate function applied to the list of points in each cluster to produce the cluster label.":[""],"Tooltip":["Suggerimento"],"Show a tooltip when hovering over points and clusters describing the label":[""],"One or many controls to group by. If grouping, latitude and longitude columns must be present.":[""],"Event definition":[""],"Additional meta data":[""],"Column containing entity ids":[""],"e.g., a \"user id\" column":[""],"Column containing event names":[""],"Event count limit":[""],"The maximum number of events to return, equivalent to number of rows":[""],"Meta data":[""],"Select any columns for meta data inspection":[""],"Paired t-test":[""],"Time Series Options":[""],"Favorites":[""],"Created Content":[""],"Recent Activity":[""],"Security & Access":[""],"No slices":[""],"No dashboards":[""],"Dashboards":["Elenco Dashboard"],"Slices":["Slice"],"No favorite charts yet, go click on stars!":[""],"No favorite dashboards yet, go click on stars!":[""],"Charts":["Grafici"],"Roles":["Ruoli"],"Databases":["Basi di dati"],"Datasources":[""],"Profile picture provided by Gravatar":[""],"joined":[""],"id:":[""],"Sorry, there appears to be no data":[""],"Data has no time steps":[""],"Select starting date":["Seleziona data iniziale"],"Select end date":["Seleziona data finale"],"Select [%s]":[""],"Apply":["Applica"],"No data was returned.":["Nessun dato restituito."],"List Druid Column":[""],"Show Druid Column":[""],"Add Druid Column":[""],"Edit Druid Column":[""],"Column":["Colonna"],"Type":["Tipo"],"Groupable":["Raggruppabile"],"Filterable":["Filtrabile"],"Count Distinct":["Count Distinct"],"Sum":["Sum"],"Whether this column is exposed in the `Filters` section of the explore view.":["Se questa colonna è esposta nella sezione `Filtri` della vista esplorazione."],"List Druid Metric":[""],"Show Druid Metric":[""],"Add Druid Metric":[""],"Edit Druid Metric":[""],"Whether the access to this metric is restricted to certain roles. Only roles with the permission 'metric access on XXX (the name of this metric)' are allowed to access this metric":["Se l'accesso a questa metrica è limitato a determinati ruoli. Solo i ruoli con l'autorizzazione 'accesso metrico su XXX (il nome di questa metrica)' possono accedervi"],"Verbose Name":["Nome Completo"],"JSON":["JSON"],"Druid Datasource":["Sorgente Dati Druid"],"Warning Message":[""],"List Druid Cluster":[""],"Show Druid Cluster":[""],"Add Druid Cluster":[""],"Edit Druid Cluster":[""],"Cluster":["Cluster"],"Coordinator Host":["Host Coordinatore"],"Coordinator Port":["Porta Coordinatore"],"Coordinator Endpoint":["Endpoint Coordinatore"],"Broker Host":["Host Broker"],"Broker Port":["Porta Broker"],"Broker Endpoint":["Endpoint Broker"],"Druid Clusters":[""],"Sources":["Sorgenti"],"List Druid Datasource":[""],"Show Druid Datasource":[""],"Add Druid Datasource":[""],"Edit Druid Datasource":[""],"The list of slices associated with this table. By altering this datasource, you may change how these associated slices behave. Also note that slices need to point to a datasource, so this form will fail at saving if removing slices from a datasource. If you want to change the datasource for a slice, overwrite the slice from the 'explore view'":["Elenco delle slice associate a questa tabella. Modificando questa origine dati, è possibile modificare le modalità di comportamento delle slice associate. Inoltre, va tenuto presente che le slice devono indicare un'origine dati, pertanto questo modulo non registra le impostazioni qualora si modifica un'origine dati. Se vuoi modificare l'origine dati per una slide, devi sovrascriverla dal 'vista di esplorazione'"],"Timezone offset (in hours) for this datasource":["Timezone offset (in ore) per questa sorgente dati"],"Time expression to use as a predicate when retrieving distinct values to populate the filter component. Only applies when `Enable Filter Select` is on. If you enter `7 days ago`, the distinct list of values in the filter will be populated based on the distinct value over the past week":["Espressione temporale da utilizzare come predicato durante il recupero di valori distinti per popolare la componente del filtro. Viene applicata solo quando è attivata l'opzione \"Abilita selezione filtro\". Se si inserisce `7 giorni fa`, l'elenco distinto di valori nel filtro verrà popolato in base al valore distinto della settimana passata"],"Whether to populate the filter's dropdown in the explore view's filter section with a list of distinct values fetched from the backend on the fly":["Usato per popolare la finestra a cascata dei filtri dall'elenco dei valori distinti prelevati dal backend al volo"],"Redirects to this endpoint when clicking on the datasource from the datasource list":["Rinvia a questo endpoint al clic sulla sorgente dati dall'elenco delle sorgenti dati"],"Associated Charts":[""],"Data Source":["Sorgente Dati"],"Owner":["Proprietario"],"Is Hidden":["è nascosto"],"Enable Filter Select":["Abilita il filtro di Select"],"Default Endpoint":["Endpoint predefinito"],"Time Offset":["Offset temporale"],"Cache Timeout":["Cache Timeout"],"Druid Datasources":[""],"Scan New Datasources":[""],"Refresh Druid Metadata":[""],"Datetime column not provided as part table configuration and is required by this type of chart":["la colonna Datetime è necessaria per questo tipo di grafico. Nella configurazione della tabella però non è stata definita"],"Empty query?":["Query vuota?"],"Metric '{}' is not valid":["Metrica '{}' non valida"],"Table [{}] doesn't seem to exist in the specified database, couldn't fetch column information":["La tabella [{}] non sembra esistere nel database specificato, non posso recuperare le informazioni sulla colonna "],"List Columns":["Visualizza colonne"],"Show Column":["Mostra colonna"],"Add Column":["Aggiungi colonna"],"Edit Column":["Edita colonna"],"Whether to make this column available as a [Time Granularity] option, column has to be DATETIME or DATETIME-like":["Se rendere disponibile questa colonna come opzione [Time Granularity], la colonna deve essere di tipo DATETIME o simile"],"The data type that was inferred by the database. It may be necessary to input a type manually for expression-defined columns in some cases. In most case users should not need to alter this.":["Il tipo di dato è dedotto dal database. In alcuni casi potrebbe essere necessario inserire manualmente un tipo di colonna definito dall'espressione. Nella maggior parte dei casi gli utenti non hanno bisogno di fare questa modifica."],"Expression":["Espressione"],"Is temporal":["è temporale"],"Datetime Format":["Formato Datetime"],"Database Expression":["Espressione del Database"],"List Metrics":["Lista Metriche"],"Show Metric":["Mostra metrica"],"Add Metric":["Aggiungi metrica"],"Edit Metric":["Modifica metrica"],"SQL Expression":["Espressione SQL"],"D3 Format":["Formato D3"],"Is Restricted":[""],"List Tables":["Visualizza Tabelle"],"Show Table":["Mostra Tabelle"],"Add Table":["Aggiungi Tabella"],"Edit Table":["Modifica Tabella"],"Name of the table that exists in the source database":["Nome delle tabella esistente nella sorgente del database"],"Schema, as used only in some databases like Postgres, Redshift and DB2":["Schema, va utilizzato soltanto in alcuni database come Postgres, Redshift e DB2"],"This fields acts a Superset view, meaning that Superset will run a query against this string as a subquery.":["Questo campo agisce come una vista Superset, il che vuol dire che Superset eseguirà una query su questa stringa come sotto-query."],"Predicate applied when fetching distinct value to populate the filter control component. Supports jinja template syntax. Applies only when `Enable Filter Select` is on.":["Predicato utilizzato quando si fornisce un valore univoco per popolare il componente di controllo del filtro. Supporta la sintassi del template jinja. È utilizzabile solo quando è abilitata l'opzione \"Abilita selezione filtro\"."],"Redirects to this endpoint when clicking on the table from the table list":["Reinvia a questo endpoint al clic sulla tabella dall'elenco delle tabelle"],"Changed By":["Modificato da"],"Database":["Database"],"Last Changed":["Ultima Modifica"],"Offset":["Offset"],"Fetch Values Predicate":[""],"Main Datetime Column":[""],"Table [{}] could not be found, please double check your database connection, schema, and table name":[""],"The table was created. As part of this two phase configuration process, you should now click the edit button by the new table to configure it.":["Tabella creata. Come parte di questo processo di configurazione in due fasi, è necessario andare sul pulsante di modifica della nuova tabella per configurarla."],"Refresh Metadata":[""],"Refresh column metadata":[""],"Metadata refreshed for the following table(s): %(tables)s":[""],"Tables":["Tabelle"],"Profile":["Profilo"],"Logout":["Logout"],"Login":["Login"],"Record Count":[""],"No records found":["Nessun record trovato"],"Import":["Importa"],"No Access!":["Nessun Accesso!"],"You do not have permissions to access the datasource(s): %(name)s.":["Non hai i permessi per accedere alla/e sorgente/i dati: %(name)s."],"Request Permissions":["Richiesta di Permessi"],"Test Connection":["Testa la Connessione"],"Annotation Layers":[""],"Manage":["Gestisci"],"Annotations":[""],"Datasource %(name)s already exists":[""],"json isn't valid":["json non è valido"],"Export to YAML":["Esporta in YAML"],"Export to YAML?":["Esporta in YAML?"],"Delete":["Cancella"],"Delete all Really?":[""],"This endpoint requires the `all_datasource_access` permission":[""],"The datasource seems to have been deleted":[""],"The access requests seem to have been deleted":[""],"The user seems to have been deleted":[""],"You don't have access to this datasource.
(Gain access)":[""],"You don't have access to this datasource":[""],"This view requires the database %(name)s or `all_datasource_access` permission":[""],"This endpoint requires the datasource %(name)s, database or `all_datasource_access` permission":[""],"List Databases":["Visualizza i database"],"Show Database":["Mostra database"],"Add Database":["Aggiungi Database"],"Edit Database":["Mostra database"],"Expose this DB in SQL Lab":["Esponi questo DB in SQL Lab"],"Allow users to run synchronous queries, this is the default and should work well for queries that can be executed within a web request scope (<~1 minute)":["Permetti agli utenti di eseguire query sincrone, questa è l'impostazione predefinita e dovrebbe funzionare bene per query che possono essere eseguite con una richiesta web (<-1 minuto)"],"Allow users to run queries, against an async backend. This assumes that you have a Celery worker setup as well as a results backend.":["Permetti agli utenti di eseguire query, contro un back-office asincrono. Questo presuppone che si abbia una installazione funzionante di Celery nel backend."],"Allow CREATE TABLE AS option in SQL Lab":["Permetti l'opzione CREATE TABLE AS in SQL Lab"],"Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in SQL Lab":["Permetti agli utenti di eseguire dichiarazioni diverse da SELECT (UPDATE, DELETE, CREATE, ...) nel SQL Lab"],"When allowing CREATE TABLE AS option in SQL Lab, this option forces the table to be created in this schema":["Se si abilita l'opzione CREATE TABLE AS in SQL Lab, verrà forzata la creazione della tabella con questo schema"],"If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.":[""],"Expose in SQL Lab":["Esponi in SQL Lab"],"Allow CREATE TABLE AS":["Permetti CREATE TABLE AS"],"Allow DML":["Permetti DML"],"CTAS Schema":["Schema CTAS"],"Creator":["Creatore"],"SQLAlchemy URI":["URI SQLAlchemy"],"Extra":["Extra"],"Allow Run Sync":[""],"Allow Run Async":[""],"Impersonate the logged on user":[""],"Import Dashboards":["Importa dashboard"],"CSV to Database configuration":[""],"CSV file \"{0}\" uploaded to table \"{1}\" in database \"{2}\"":[""],"User":["Utente"],"User Roles":["Ruoli Utente"],"Database URL":["URL del Database"],"Roles to grant":["Ruoli per l'accesso"],"Created On":["Creato il"],"Access requests":[""],"Security":["Sicurezza"],"List Charts":["Visualizza grafici"],"Show Chart":["Mostra grafico"],"Add Chart":["Aggiungi grafico"],"Edit Chart":["Modifica grafico"],"These parameters are generated dynamically when clicking the save or overwrite button in the explore view. This JSON object is exposed here for reference and for power users who may want to alter specific parameters.":["Questi parametri sono generati dinamicamente al clic su salva o con il bottone di sovrascrittura nella vista di esplorazione. Questo oggetto JSON è esposto qui per referenza e per utenti esperti che vogliono modificare parametri specifici."],"Duration (in seconds) of the caching timeout for this slice.":["Durata (in secondi) per il timeout della cache per questa slice."],"Last Modified":["Ultima Modifica"],"Owners":["Proprietari"],"Parameters":["Parametri"],"Chart":[""],"List Dashboards":[""],"Show Dashboard":[""],"Add Dashboard":[""],"Edit Dashboard":[""],"This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view":["L'oggetto JSON descrive la posizione dei vari widget nella dashboard. È generato automaticamente nel momento in cui se ne cambia la posizione e la dimensione usando la funzione di drag & drop nella vista della dashboard. "],"The css for individual dashboards can be altered here, or in the dashboard view where changes are immediately visible":["Il CSS di ogni singola dashboard può essere modificato qui, oppure nella vista della dashboard dove i cambiamenti sono visibili immediatamente"],"To get a readable URL for your dashboard":["ottenere una URL leggibile per la tua dashboard"],"This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.":["Questo oggetto JSON è generato in maniera dinamica al clic sul pulsante di salvataggio o sovrascrittura nella vista dashboard. Il JSON è esposto qui come riferimento e per gli utenti esperti che vogliono modificare parametri specifici."],"Owners is a list of users who can alter the dashboard.":["Proprietari è una lista di utenti che può alterare la dashboard."],"Dashboard":["Dashboard"],"Slug":["Slug"],"Position JSON":["Posizione del JSON"],"JSON Metadata":["Metadati JSON"],"Underlying Tables":["Tabelle sottostanti"],"Export":[""],"Export dashboards?":[""],"Action":["Azione"],"dttm":["dttm"],"Action Log":[""],"Access was requested":[""],"%(user)s was granted the role %(role)s that gives access to the %(datasource)s":[""],"Role %(r)s was extended to provide the access to the datasource %(ds)s":[""],"You have no permission to approve this request":[""],"You don't have the rights to ":[""],"alter this ":[""],"chart":[""],"create a ":[""],"dashboard":[""],"Malformed request. slice_id or table_name and db_name arguments are expected":[""],"Slice %(id)s not found":[""],"Table %(t)s wasn't found in the database %(d)s":[""],"Can't find User '%(name)s', please ask your admin to create one.":[""],"Can't find DruidCluster with cluster_name = '%(name)s'":[""],"Query record was not created as expected.":[""],"Template Name":[""],"CSS Templates":["Template CSS"],"SQL Editor":["Editor SQL"],"SQL Lab":[""],"Query Search":["Ricerca Query"],"Upload a CSV":[""],"Status":[""],"Start Time":[""],"End Time":[""],"Queries":[""],"List Saved Query":["Visualizza query salvate"],"Show Saved Query":["Mostra query salvate"],"Add Saved Query":["Aggiungi query salvata"],"Edit Saved Query":["Modifica query salvata"],"Pop Tab Link":[""],"Changed on":["Cambiato il"],"Saved Queries":["Query salvate"]}}}
\ No newline at end of file
diff --git a/superset/translations/it/LC_MESSAGES/messages.mo b/superset/translations/it/LC_MESSAGES/messages.mo
index 35dd479ee8c54..7671736b845bb 100644
Binary files a/superset/translations/it/LC_MESSAGES/messages.mo and b/superset/translations/it/LC_MESSAGES/messages.mo differ
diff --git a/superset/translations/it/LC_MESSAGES/messages.po b/superset/translations/it/LC_MESSAGES/messages.po
index 9e5ed1c1ec5da..5ef5b4b28e0e4 100644
--- a/superset/translations/it/LC_MESSAGES/messages.po
+++ b/superset/translations/it/LC_MESSAGES/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-04 10:12-0700\n"
+"POT-Creation-Date: 2018-02-25 00:15+0100\n"
"PO-Revision-Date: 2018-02-11 22:26+0200\n"
"Last-Translator: Raffaele Spangaro
\n"
"Language: it\n"
@@ -17,421 +17,657 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.4.0\n"
-
-#: superset/assets/javascripts/explore/stores/controls.jsx:553
-#: superset/db_engine_specs.py:192 superset/db_engine_specs.py:223
-#: superset/db_engine_specs.py:267 superset/db_engine_specs.py:315
-#: superset/db_engine_specs.py:371 superset/db_engine_specs.py:839
-#: superset/db_engine_specs.py:875 superset/db_engine_specs.py:907
-#: superset/db_engine_specs.py:953 superset/db_engine_specs.py:990
-#: superset/db_engine_specs.py:1015
+"Generated-By: Babel 2.5.3\n"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:744
+#: superset/db_engine_specs.py:291 superset/db_engine_specs.py:350
+#: superset/db_engine_specs.py:370 superset/db_engine_specs.py:414
+#: superset/db_engine_specs.py:464 superset/db_engine_specs.py:520
+#: superset/db_engine_specs.py:1067 superset/db_engine_specs.py:1099
+#: superset/db_engine_specs.py:1145 superset/db_engine_specs.py:1182
+#: superset/db_engine_specs.py:1214
msgid "Time Column"
msgstr "Colonna del Tempo"
-#: superset/db_engine_specs.py:193 superset/db_engine_specs.py:224
-#: superset/db_engine_specs.py:316 superset/db_engine_specs.py:372
-#: superset/db_engine_specs.py:840 superset/db_engine_specs.py:908
-#: superset/db_engine_specs.py:991
+#: superset/db_engine_specs.py:292 superset/db_engine_specs.py:371
+#: superset/db_engine_specs.py:465 superset/db_engine_specs.py:521
+#: superset/db_engine_specs.py:1068 superset/db_engine_specs.py:1100
+#: superset/db_engine_specs.py:1183
msgid "second"
msgstr "secondo"
-#: superset/db_engine_specs.py:194 superset/db_engine_specs.py:227
-#: superset/db_engine_specs.py:319 superset/db_engine_specs.py:374
-#: superset/db_engine_specs.py:842 superset/db_engine_specs.py:876
-#: superset/db_engine_specs.py:910 superset/db_engine_specs.py:954
-#: superset/db_engine_specs.py:992 superset/db_engine_specs.py:1016
+#: superset/db_engine_specs.py:294 superset/db_engine_specs.py:351
+#: superset/db_engine_specs.py:374 superset/db_engine_specs.py:468
+#: superset/db_engine_specs.py:523 superset/db_engine_specs.py:1070
+#: superset/db_engine_specs.py:1102 superset/db_engine_specs.py:1146
+#: superset/db_engine_specs.py:1184 superset/db_engine_specs.py:1215
msgid "minute"
msgstr "minuto"
-#: superset/db_engine_specs.py:195 superset/db_engine_specs.py:231
-#: superset/db_engine_specs.py:321 superset/db_engine_specs.py:376
-#: superset/db_engine_specs.py:848 superset/db_engine_specs.py:878
-#: superset/db_engine_specs.py:912 superset/db_engine_specs.py:960
-#: superset/db_engine_specs.py:993 superset/db_engine_specs.py:1017
+#: superset/db_engine_specs.py:296 superset/db_engine_specs.py:352
+#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:415
+#: superset/db_engine_specs.py:470 superset/db_engine_specs.py:525
+#: superset/db_engine_specs.py:1076 superset/db_engine_specs.py:1104
+#: superset/db_engine_specs.py:1152 superset/db_engine_specs.py:1185
+#: superset/db_engine_specs.py:1216
msgid "hour"
msgstr "ora"
-#: superset/db_engine_specs.py:196 superset/db_engine_specs.py:236
-#: superset/db_engine_specs.py:268 superset/db_engine_specs.py:323
-#: superset/db_engine_specs.py:378 superset/db_engine_specs.py:850
-#: superset/db_engine_specs.py:880 superset/db_engine_specs.py:914
-#: superset/db_engine_specs.py:962 superset/db_engine_specs.py:994
-#: superset/db_engine_specs.py:1018
+#: superset/db_engine_specs.py:298 superset/db_engine_specs.py:353
+#: superset/db_engine_specs.py:383 superset/db_engine_specs.py:417
+#: superset/db_engine_specs.py:472 superset/db_engine_specs.py:527
+#: superset/db_engine_specs.py:1078 superset/db_engine_specs.py:1106
+#: superset/db_engine_specs.py:1154 superset/db_engine_specs.py:1186
+#: superset/db_engine_specs.py:1217
msgid "day"
msgstr "giorno"
-#: superset/db_engine_specs.py:197 superset/db_engine_specs.py:242
-#: superset/db_engine_specs.py:269 superset/db_engine_specs.py:324
-#: superset/db_engine_specs.py:380 superset/db_engine_specs.py:852
-#: superset/db_engine_specs.py:882 superset/db_engine_specs.py:916
-#: superset/db_engine_specs.py:995 superset/db_engine_specs.py:1019
+#: superset/db_engine_specs.py:300 superset/db_engine_specs.py:354
+#: superset/db_engine_specs.py:389 superset/db_engine_specs.py:418
+#: superset/db_engine_specs.py:473 superset/db_engine_specs.py:529
+#: superset/db_engine_specs.py:1080 superset/db_engine_specs.py:1108
+#: superset/db_engine_specs.py:1187 superset/db_engine_specs.py:1218
msgid "week"
msgstr "settimana"
-#: superset/db_engine_specs.py:198 superset/db_engine_specs.py:244
-#: superset/db_engine_specs.py:271 superset/db_engine_specs.py:326
-#: superset/db_engine_specs.py:382 superset/db_engine_specs.py:854
-#: superset/db_engine_specs.py:884 superset/db_engine_specs.py:918
-#: superset/db_engine_specs.py:964 superset/db_engine_specs.py:996
-#: superset/db_engine_specs.py:1020
+#: superset/db_engine_specs.py:302 superset/db_engine_specs.py:355
+#: superset/db_engine_specs.py:391 superset/db_engine_specs.py:420
+#: superset/db_engine_specs.py:475 superset/db_engine_specs.py:531
+#: superset/db_engine_specs.py:1082 superset/db_engine_specs.py:1110
+#: superset/db_engine_specs.py:1156 superset/db_engine_specs.py:1188
+#: superset/db_engine_specs.py:1219
msgid "month"
msgstr "mese"
-#: superset/db_engine_specs.py:199 superset/db_engine_specs.py:246
-#: superset/db_engine_specs.py:328 superset/db_engine_specs.py:384
-#: superset/db_engine_specs.py:856 superset/db_engine_specs.py:886
-#: superset/db_engine_specs.py:920 superset/db_engine_specs.py:966
-#: superset/db_engine_specs.py:997 superset/db_engine_specs.py:1021
+#: superset/db_engine_specs.py:304 superset/db_engine_specs.py:356
+#: superset/db_engine_specs.py:393 superset/db_engine_specs.py:477
+#: superset/db_engine_specs.py:533 superset/db_engine_specs.py:1084
+#: superset/db_engine_specs.py:1112 superset/db_engine_specs.py:1158
+#: superset/db_engine_specs.py:1189 superset/db_engine_specs.py:1220
msgid "quarter"
msgstr "quartile"
-#: superset/db_engine_specs.py:200 superset/db_engine_specs.py:250
-#: superset/db_engine_specs.py:330 superset/db_engine_specs.py:858
-#: superset/db_engine_specs.py:888 superset/db_engine_specs.py:968
-#: superset/db_engine_specs.py:998 superset/db_engine_specs.py:1022
+#: superset/db_engine_specs.py:306 superset/db_engine_specs.py:357
+#: superset/db_engine_specs.py:397 superset/db_engine_specs.py:479
+#: superset/db_engine_specs.py:1086 superset/db_engine_specs.py:1160
+#: superset/db_engine_specs.py:1190 superset/db_engine_specs.py:1221
msgid "year"
msgstr "anno"
-#: superset/db_engine_specs.py:332
+#: superset/db_engine_specs.py:481
msgid "week_start_monday"
msgstr "settimana_inizio_lunedì"
-#: superset/db_engine_specs.py:386 superset/db_engine_specs.py:922
+#: superset/db_engine_specs.py:535 superset/db_engine_specs.py:1114
msgid "week_ending_saturday"
msgstr "settimana_fine_domenica"
-#: superset/db_engine_specs.py:389 superset/db_engine_specs.py:925
+#: superset/db_engine_specs.py:538 superset/db_engine_specs.py:1117
msgid "week_start_sunday"
msgstr "settimana_inizio_domenica"
-#: superset/db_engine_specs.py:844 superset/db_engine_specs.py:956
+#: superset/db_engine_specs.py:1072 superset/db_engine_specs.py:1148
msgid "5 minute"
msgstr "5 minuti"
-#: superset/db_engine_specs.py:846
+#: superset/db_engine_specs.py:1074
msgid "half hour"
msgstr "mezz'ora"
-#: superset/db_engine_specs.py:958
+#: superset/db_engine_specs.py:1150
msgid "10 minute"
msgstr "10 minuti"
-#: superset/utils.py:499
+#: superset/connectors/sqla/views.py:223 superset/forms.py:28
+msgid "Table Name"
+msgstr ""
+
+#: superset/forms.py:29
+msgid "Name of table to be created from csv data."
+msgstr ""
+
+#: superset/forms.py:33
+msgid "CSV File"
+msgstr ""
+
+#: superset/forms.py:34
+msgid "Select a CSV file to be uploaded to a database."
+msgstr ""
+
+#: superset/forms.py:36
+msgid "CSV Files Only!"
+msgstr ""
+
+#: superset/forms.py:41
+msgid "Delimiter"
+msgstr ""
+
+#: superset/forms.py:42
+msgid "Delimiter used by CSV file (for whitespace use \\s+)."
+msgstr ""
+
+#: superset/forms.py:46
+msgid "Table Exists"
+msgstr ""
+
+#: superset/forms.py:47
+msgid ""
+"If table exists do one of the following: Fail (do nothing), Replace (drop"
+" and recreate table) or Append (insert data)."
+msgstr ""
+
+#: superset/forms.py:52
+msgid "Fail"
+msgstr ""
+
+#: superset/forms.py:52
+msgid "Replace"
+msgstr ""
+
+#: superset/forms.py:53
+msgid "Append"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:219 superset/forms.py:56
+msgid "Schema"
+msgstr "Schema"
+
+#: superset/forms.py:57
+msgid "Specify a schema (if database flavour supports this)."
+msgstr ""
+
+#: superset/forms.py:62
+msgid "Header Row"
+msgstr ""
+
+#: superset/forms.py:63
+msgid ""
+"Row containing the headers to use as column names (0 is first line of "
+"data). Leave empty if there is no header row."
+msgstr ""
+
+#: superset/forms.py:71
+msgid "Index Column"
+msgstr ""
+
+#: superset/forms.py:72
+msgid ""
+"Column to use as the row labels of the dataframe. Leave empty if no index"
+" column."
+msgstr ""
+
+#: superset/forms.py:79
+msgid "Mangle Duplicate Columns"
+msgstr ""
+
+#: superset/forms.py:80
+msgid "Specify duplicate columns as \"X.0, X.1\"."
+msgstr ""
+
+#: superset/forms.py:82
+msgid "Skip Initial Space"
+msgstr ""
+
+#: superset/forms.py:83
+msgid "Skip spaces after delimiter."
+msgstr ""
+
+#: superset/forms.py:85
+msgid "Skip Rows"
+msgstr ""
+
+#: superset/forms.py:86
+msgid "Number of rows to skip at start of file."
+msgstr ""
+
+#: superset/forms.py:91
+msgid "Rows to Read"
+msgstr ""
+
+#: superset/forms.py:92
+msgid "Number of rows of file to read."
+msgstr ""
+
+#: superset/forms.py:97
+msgid "Skip Blank Lines"
+msgstr ""
+
+#: superset/forms.py:98
+msgid "Skip blank lines rather than interpreting them as NaN values."
+msgstr ""
+
+#: superset/forms.py:102
+msgid "Parse Dates"
+msgstr ""
+
+#: superset/forms.py:103
+msgid "Parse date values."
+msgstr ""
+
+#: superset/forms.py:105
+msgid "Infer Datetime Format"
+msgstr ""
+
+#: superset/forms.py:106
+msgid "Use Pandas to interpret the datetime format automatically."
+msgstr ""
+
+#: superset/forms.py:110
+msgid "Decimal Character"
+msgstr ""
+
+#: superset/forms.py:111
+msgid "Character to interpret as decimal point."
+msgstr ""
+
+#: superset/forms.py:116
+msgid "Dataframe Index"
+msgstr ""
+
+#: superset/forms.py:117
+msgid "Write dataframe index as a column."
+msgstr ""
+
+#: superset/forms.py:119
+msgid "Column Label(s)"
+msgstr ""
+
+#: superset/forms.py:120
+msgid ""
+"Column label for index column(s). If None is given and Dataframe Index is"
+" True, Index Names are used."
+msgstr ""
+
+#: superset/utils.py:607
#, python-format
msgid "[Superset] Access to the datasource %(name)s was granted"
msgstr "[Superset] Accesso al datasource $(name) concesso"
-#: superset/viz.py:50
+#: superset/viz.py:56
msgid "Viz is missing a datasource"
msgstr "Datasource mancante per la visualizzazione"
-#: superset/viz.py:181
+#: superset/viz.py:220
msgid "From date cannot be larger than to date"
msgstr "La data di inizio non può essere dopo la data di fine"
-#: superset/assets/javascripts/explore/stores/visTypes.js:334
-#: superset/viz.py:369
+#: superset/assets/javascripts/explore/stores/visTypes.js:720
+#: superset/viz.py:417
msgid "Table View"
msgstr "Vista Tabella"
-#: superset/viz.py:381
+#: superset/viz.py:429
msgid "Pick a granularity in the Time section or uncheck 'Include Time'"
-msgstr "Seleziona una granularità nella sezione tempo e deseleziona 'Includi Tempo'"
+msgstr ""
+"Seleziona una granularità nella sezione tempo e deseleziona 'Includi "
+"Tempo'"
-#: superset/viz.py:391
+#: superset/viz.py:439
msgid "Choose either fields to [Group By] and [Metrics] or [Columns], not both"
msgstr "Selezionare i campi [Group By] e [Metrica] o [Colonne], non entrambi"
-#: superset/assets/javascripts/explore/stores/visTypes.js:386
-#: superset/viz.py:430
+#: superset/viz.py:513
+msgid "Time Table View"
+msgstr ""
+
+#: superset/viz.py:522 superset/viz.py:1354
+msgid "Pick at least one metric"
+msgstr "Seleziona almeno una metrica"
+
+#: superset/viz.py:525
+msgid "When using 'Group By' you are limited to use a single metric"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:801
+#: superset/viz.py:554
msgid "Pivot Table"
msgstr "Vista Pivot"
-#: superset/viz.py:444
-msgid "Please choose at least one \"Group by\" field "
-msgstr "Seleziona almeno un campo \"Group by\""
+#: superset/viz.py:568
+msgid "Please choose at least one 'Group by' field "
+msgstr ""
-#: superset/viz.py:446
+#: superset/viz.py:570
msgid "Please choose at least one metric"
msgstr "Seleziona almeno una metrica"
-#: superset/viz.py:450
-msgid "'Group By' and 'Columns' can't overlap"
-msgstr "'Group by' e 'Colonne' non possono sovrapporsi"
+#: superset/viz.py:574
+msgid "Group By' and 'Columns' can't overlap"
+msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:373
-#: superset/viz.py:483
+#: superset/assets/javascripts/explore/stores/visTypes.js:787
+#: superset/viz.py:607
msgid "Markup"
msgstr "Marcatore"
-#: superset/assets/javascripts/explore/stores/visTypes.js:411
-#: superset/viz.py:502
+#: superset/assets/javascripts/explore/stores/visTypes.js:826
+#: superset/viz.py:629
msgid "Separator"
msgstr "Separatore"
-#: superset/assets/javascripts/explore/stores/visTypes.js:433
-#: superset/viz.py:514
+#: superset/assets/javascripts/explore/stores/visTypes.js:848
+#: superset/viz.py:641
msgid "Word Cloud"
msgstr "Cloud di Parole"
-#: superset/assets/javascripts/explore/stores/visTypes.js:454
-#: superset/viz.py:537
+#: superset/assets/javascripts/explore/stores/visTypes.js:870
+#: superset/viz.py:664
msgid "Treemap"
msgstr "Treemap"
-#: superset/assets/javascripts/explore/stores/visTypes.js:481
-#: superset/viz.py:563
+#: superset/assets/javascripts/explore/stores/visTypes.js:897
+#: superset/viz.py:690
msgid "Calendar Heatmap"
msgstr "Calendario di Intensità"
-#: superset/assets/javascripts/explore/stores/visTypes.js:502
-#: superset/viz.py:621
+#: superset/assets/javascripts/explore/stores/visTypes.js:918
+#: superset/viz.py:748
msgid "Box Plot"
msgstr "Box Plot"
-#: superset/assets/javascripts/explore/stores/visTypes.js:523
-#: superset/viz.py:710
+#: superset/assets/javascripts/explore/stores/visTypes.js:939
+#: superset/viz.py:837
msgid "Bubble Chart"
msgstr "Grafico a Bolle"
-#: superset/viz.py:734
+#: superset/viz.py:861
msgid "Pick a metric for x, y and size"
msgstr "Seleziona una metrica per x, y e grandezza"
-#: superset/assets/javascripts/explore/stores/visTypes.js:574
-#: superset/viz.py:760
+#: superset/assets/javascripts/explore/stores/visTypes.js:990
+#: superset/viz.py:887
msgid "Bullet Chart"
msgstr "Grafico a Proiettile"
-#: superset/viz.py:786
+#: superset/viz.py:913
msgid "Pick a metric to display"
msgstr "Seleziona una metrica da visualizzare"
-#: superset/assets/javascripts/explore/stores/visTypes.js:597
-#: superset/viz.py:809
+#: superset/assets/javascripts/explore/stores/visTypes.js:1013
+#: superset/viz.py:936
msgid "Big Number with Trendline"
msgstr "Numero Grande con Linea del Trend"
-#: superset/viz.py:817 superset/viz.py:846
+#: superset/viz.py:944 superset/viz.py:973
msgid "Pick a metric!"
msgstr "Seleziona una metrica!"
-#: superset/assets/javascripts/explore/stores/visTypes.js:622
-#: superset/viz.py:838
+#: superset/assets/javascripts/explore/stores/visTypes.js:1038
+#: superset/viz.py:965
msgid "Big Number"
msgstr "Numero Grande"
-#: superset/assets/javascripts/explore/stores/visTypes.js:157
-#: superset/viz.py:865
+#: superset/assets/javascripts/explore/stores/visTypes.js:158
+#: superset/viz.py:992
msgid "Time Series - Line Chart"
msgstr "Serie Temporali - Grafico Lineare"
-#: superset/viz.py:913 superset/viz.py:1058
+#: superset/viz.py:1049 superset/viz.py:1214
msgid "Pick a time granularity for your time series"
msgstr "Seleziona una granularità per la serie temporale"
-#: superset/viz.py:1001
+#: superset/viz.py:1128
+msgid ""
+"`Since` and `Until` time bounds should be specified when using the `Time "
+"Shift` feature."
+msgstr ""
+
+#: superset/viz.py:1157
msgid "Time Series - Dual Axis Line Chart"
msgstr "Serie Temporali - Grafico Lineare ad Assi Duali"
-#: superset/viz.py:1011
+#: superset/viz.py:1167
msgid "Pick a metric for left axis!"
msgstr "Seleziona una metrica per l'asse sinistro"
-#: superset/viz.py:1013
+#: superset/viz.py:1169
msgid "Pick a metric for right axis!"
msgstr "Seleziona una metrica per l'asse destro"
-#: superset/viz.py:1015
+#: superset/viz.py:1171
msgid "Please choose different metrics on left and right axis"
msgstr "Seleziona metriche differenti per gli assi destro e sinistro"
-#: superset/assets/javascripts/explore/stores/visTypes.js:238
-#: superset/viz.py:1076
+#: superset/assets/javascripts/explore/stores/visTypes.js:283
+#: superset/viz.py:1232
msgid "Time Series - Bar Chart"
msgstr "Serie Temporali - Grafico Barre"
-#: superset/assets/javascripts/explore/stores/visTypes.js:274
-#: superset/viz.py:1084
+#: superset/viz.py:1241
+msgid "Time Series - Period Pivot"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:319
+#: superset/viz.py:1281
msgid "Time Series - Percent Change"
msgstr "Serie Temporali - Cambiamento Percentuale"
-#: superset/assets/javascripts/explore/stores/visTypes.js:297
-#: superset/viz.py:1092
+#: superset/assets/javascripts/explore/stores/visTypes.js:683
+#: superset/viz.py:1289
msgid "Time Series - Stacked"
msgstr "Serie Temporali - Stacked"
-#: superset/viz.py:1101
+#: superset/viz.py:1298
msgid "Distribution - NVD3 - Pie Chart"
msgstr "Distribuzione - NVD3 - Grafico Torta"
-#: superset/assets/javascripts/explore/stores/visTypes.js:647
-#: superset/viz.py:1119
+#: superset/assets/javascripts/explore/stores/visTypes.js:1063
+#: superset/viz.py:1316
msgid "Histogram"
msgstr "Istogramma"
-#: superset/viz.py:1129
+#: superset/viz.py:1326
msgid "Must have one numeric column specified"
msgstr "Devi specificare una colonna numerica"
#: superset/assets/javascripts/explore/stores/visTypes.js:96
-#: superset/viz.py:1144
+#: superset/viz.py:1341
msgid "Distribution - Bar Chart"
msgstr "Distribuzione - Grafico Barre"
-#: superset/viz.py:1155
+#: superset/viz.py:1352
msgid "Can't have overlap between Series and Breakdowns"
msgstr ""
-#: superset/viz.py:1157
-msgid "Pick at least one metric"
-msgstr "Seleziona almeno una metrica"
-
-#: superset/viz.py:1159
+#: superset/viz.py:1356
msgid "Pick at least one field for [Series]"
msgstr "Seleziona almeno un campo per [Series]"
-#: superset/assets/javascripts/explore/stores/visTypes.js:679
-#: superset/viz.py:1212
+#: superset/assets/javascripts/explore/stores/visTypes.js:1095
+#: superset/viz.py:1409
msgid "Sunburst"
msgstr "Sunburst"
-#: superset/assets/javascripts/explore/stores/visTypes.js:716
-#: superset/viz.py:1245
+#: superset/assets/javascripts/explore/stores/visTypes.js:1133
+#: superset/viz.py:1440
msgid "Sankey"
msgstr "Sankey"
-#: superset/viz.py:1252
+#: superset/viz.py:1447
msgid "Pick exactly 2 columns as [Source / Target]"
msgstr "Seleziona esattamente 2 colonne come [Sorgente / Destinazione]"
-#: superset/viz.py:1283
+#: superset/viz.py:1478
msgid ""
"There's a loop in your Sankey, please provide a tree. Here's a faulty "
"link: {}"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:743
-#: superset/viz.py:1294 superset/viz.py:1315
+#: superset/assets/javascripts/explore/stores/visTypes.js:1160
+#: superset/viz.py:1489 superset/viz.py:1510
msgid "Directed Force Layout"
msgstr "Disposizione a Forza Diretta"
-#: superset/viz.py:1301
+#: superset/viz.py:1496
msgid "Pick exactly 2 columns to 'Group By'"
msgstr "Seleziona esattamente 2 colonne per 'Group By'"
-#: superset/assets/javascripts/explore/stores/visTypes.js:808
-#: superset/viz.py:1348
+#: superset/assets/javascripts/explore/stores/visTypes.js:1225
+#: superset/viz.py:1543
msgid "Country Map"
msgstr "Mappa della Nazione"
-#: superset/assets/javascripts/explore/stores/visTypes.js:841
-#: superset/viz.py:1376
+#: superset/assets/javascripts/explore/stores/visTypes.js:1259
+#: superset/viz.py:1571
msgid "World Map"
msgstr "Mappa del Mondo"
#: superset/assets/javascripts/explore/stores/visTypes.js:80
-#: superset/viz.py:1426
+#: superset/viz.py:1621
msgid "Filters"
msgstr "Filtri"
-#: superset/viz.py:1434
+#: superset/viz.py:1642
msgid "Pick at least one filter field"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:909
-#: superset/viz.py:1461
+#: superset/assets/javascripts/explore/stores/visTypes.js:1324
+#: superset/viz.py:1667
msgid "iFrame"
msgstr "iFrame"
-#: superset/assets/javascripts/explore/stores/visTypes.js:921
-#: superset/viz.py:1478
+#: superset/assets/javascripts/explore/stores/visTypes.js:1336
+#: superset/viz.py:1687
msgid "Parallel Coordinates"
msgstr "Coordinate Parallele"
-#: superset/assets/javascripts/explore/stores/visTypes.js:943
-#: superset/viz.py:1503
+#: superset/assets/javascripts/explore/stores/visTypes.js:1358
+#: superset/viz.py:1712
msgid "Heatmap"
msgstr "Mappa di Intensità"
-#: superset/viz.py:1562
+#: superset/viz.py:1771
msgid "Horizon Charts"
msgstr "Grafici d'orizzonte"
-#: superset/assets/javascripts/explore/stores/visTypes.js:1002
-#: superset/viz.py:1573
+#: superset/assets/javascripts/explore/stores/visTypes.js:1418
+#: superset/viz.py:1782
msgid "Mapbox"
msgstr "Mapbox"
-#: superset/viz.py:1588
+#: superset/viz.py:1797
msgid "Must have a [Group By] column to have 'count' as the [Label]"
msgstr ""
-#: superset/viz.py:1601
+#: superset/viz.py:1810
msgid "Choice of [Label] must be present in [Group By]"
msgstr ""
-#: superset/viz.py:1606
+#: superset/viz.py:1815
msgid "Choice of [Point Radius] must be present in [Group By]"
msgstr ""
-#: superset/viz.py:1611
+#: superset/viz.py:1820
msgid "[Longitude] and [Latitude] columns must be present in [Group By]"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1073
-#: superset/viz.py:1676
+#: superset/assets/javascripts/explore/stores/visTypes.js:342
+#: superset/viz.py:1889
+msgid "Deck.gl - Multiple Layers"
+msgstr ""
+
+#: superset/viz.py:1925 superset/viz.py:1938
+msgid "Bad spatial key"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:628
+#: superset/viz.py:2019
+msgid "Deck.gl - Scatter plot"
+msgstr ""
+
+#: superset/viz.py:2060
+msgid "Deck.gl - Screen Grid"
+msgstr ""
+
+#: superset/viz.py:2075
+msgid "Deck.gl - 3D Grid"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:434
+#: superset/viz.py:2090
+msgid "Deck.gl - Paths"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:550
+#: superset/viz.py:2123
+msgid "Deck.gl - Polygon"
+msgstr ""
+
+#: superset/viz.py:2131
+msgid "Deck.gl - 3D HEX"
+msgstr ""
+
+#: superset/viz.py:2146
+msgid "Deck.gl - GeoJSON"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:590
+#: superset/viz.py:2165
+msgid "Deck.gl - Arc"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1488
+#: superset/viz.py:2189
msgid "Event flow"
msgstr ""
-#: superset/viz.py:1706
+#: superset/assets/javascripts/explore/stores/visTypes.js:1533
+#: superset/viz.py:2220
msgid "Time Series - Paired t-test"
msgstr ""
-#: superset/assets/javascripts/SqlLab/actions.js:57
+#: superset/assets/javascripts/explore/stores/visTypes.js:1551
+#: superset/viz.py:2278
+msgid "Time Series - Nightingale Rose Chart"
+msgstr ""
+
+#: superset/viz.py:2308
+msgid "Partition Diagram"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:58
msgid "Your query was saved"
msgstr "La tua query è stata salvata"
-#: superset/assets/javascripts/SqlLab/actions.js:58
+#: superset/assets/javascripts/SqlLab/actions.js:59
msgid "Your query could not be saved"
msgstr "La tua query non può essere salvata"
-#: superset/assets/javascripts/SqlLab/actions.js:111
+#: superset/assets/javascripts/SqlLab/actions.js:112
msgid "Failed at retrieving results from the results backend"
msgstr "Errore nel recupero dei dati dal backend"
-#: superset/assets/javascripts/SqlLab/actions.js:157
-msgid "Could not connect to server"
-msgstr "Non posso connettermi al server"
-
#: superset/assets/javascripts/SqlLab/actions.js:162
+msgid "Unknown error"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/actions.js:166
msgid "Your session timed out, please refresh your page and try again."
msgstr "La tua sessione è scaduta, ricarica la pagina e riprova."
-#: superset/assets/javascripts/SqlLab/actions.js:181
+#: superset/assets/javascripts/SqlLab/actions.js:185
msgid "Query was stopped."
msgstr "La query è stata fermata."
-#: superset/assets/javascripts/SqlLab/actions.js:184
+#: superset/assets/javascripts/SqlLab/actions.js:188
msgid "Failed at stopping query."
msgstr "Errore nel fermare la query."
-#: superset/assets/javascripts/SqlLab/actions.js:297
-#: superset/assets/javascripts/SqlLab/actions.js:310
+#: superset/assets/javascripts/SqlLab/actions.js:305
+#: superset/assets/javascripts/SqlLab/actions.js:318
msgid "Error occurred while fetching table metadata"
msgstr "Errore nel recupero dei metadati della tabella"
-#: superset/assets/javascripts/SqlLab/actions.js:364
+#: superset/assets/javascripts/SqlLab/actions.js:372
msgid "shared query"
msgstr "query condivisa"
-#: superset/assets/javascripts/SqlLab/actions.js:372
-#: superset/assets/javascripts/SqlLab/actions.js:392
+#: superset/assets/javascripts/SqlLab/actions.js:380
+#: superset/assets/javascripts/SqlLab/actions.js:400
msgid "The query couldn't be loaded"
msgstr "La query non può essere caricata"
-#: superset/assets/javascripts/SqlLab/actions.js:426
+#: superset/assets/javascripts/SqlLab/actions.js:434
msgid "An error occurred while creating the data source"
msgstr "Errore nel creare il datasource"
@@ -441,7 +677,9 @@ msgstr "Seleziona un tipo di grafico"
#: superset/assets/javascripts/SqlLab/constants.js:31
msgid "To use this chart type you need at least one column flagged as a date"
-msgstr "Per usare questo tipo di grafico devi avere almeno una colonna selezionata come data"
+msgstr ""
+"Per usare questo tipo di grafico devi avere almeno una colonna "
+"selezionata come data"
#: superset/assets/javascripts/SqlLab/constants.js:32
msgid "To use this chart type you need at least one dimension"
@@ -449,7 +687,9 @@ msgstr "Per usare questo tipo di grafico devi avere almeno una dimensione"
#: superset/assets/javascripts/SqlLab/constants.js:33
msgid "To use this chart type you need at least one aggregation function"
-msgstr "Per usare questo tipo di grafico devi avere almeno uan funziona di aggregazione"
+msgstr ""
+"Per usare questo tipo di grafico devi avere almeno uan funziona di "
+"aggregazione"
#: superset/assets/javascripts/SqlLab/components/QueryTable.jsx:49
#: superset/assets/javascripts/SqlLab/reducers.js:11
@@ -545,34 +785,34 @@ msgid ".CSV"
msgstr "CSV"
#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:78
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:241
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:280
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:243
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:282
msgid "Visualize"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:162
-#: superset/connectors/sqla/views.py:85 superset/connectors/sqla/views.py:135
-#: superset/connectors/sqla/views.py:214 superset/views/core.py:380
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:163
+#: superset/connectors/sqla/views.py:81 superset/connectors/sqla/views.py:133
+#: superset/connectors/sqla/views.py:214 superset/views/core.py:455
msgid "Table"
msgstr "Tabella"
-#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:162
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:163
msgid "was created"
msgstr "è stata creata"
-#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:169
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:170
msgid "Query in a new tab"
msgstr "Query in un nuovo tab"
-#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:210
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:211
msgid "Fetch data preview"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:230
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:231
msgid "Track Job"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:236
+#: superset/assets/javascripts/SqlLab/components/ResultSet.jsx:237
msgid "Loading..."
msgstr ""
@@ -584,51 +824,57 @@ msgstr ""
msgid "Run Query"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:22
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:34
+msgid "Run query synchronously"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:45
msgid "Run query asynchronously"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:57
+#: superset/assets/javascripts/SqlLab/components/RunQueryActionButton.jsx:56
msgid "Stop"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:16
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:18
msgid "Undefined"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:66
-#: superset/views/sql_lab.py:53
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:67
+#: superset/views/sql_lab.py:52
msgid "Label"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:71
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:72
msgid "Label for your query"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:81
-#: superset/connectors/druid/views.py:107
-#: superset/connectors/druid/views.py:228 superset/connectors/sqla/views.py:82
-#: superset/connectors/sqla/views.py:131 superset/connectors/sqla/views.py:227
-#: superset/views/core.py:374 superset/views/sql_lab.py:56
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:82
+#: superset/connectors/druid/views.py:127
+#: superset/connectors/druid/views.py:251 superset/connectors/sqla/views.py:78
+#: superset/connectors/sqla/views.py:129 superset/connectors/sqla/views.py:227
+#: superset/views/core.py:449 superset/views/sql_lab.py:55
msgid "Description"
msgstr "Descrizione"
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:85
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:86
msgid "Write a description for your query"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:99
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:155
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:222
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:100
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:125
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:151
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:220
msgid "Save"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:102
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:103
#: superset/templates/superset/request_access.html:16
msgid "Cancel"
msgstr "Annulla"
-#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:123
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:115
+#: superset/assets/javascripts/SqlLab/components/SaveQuery.jsx:119
msgid "Save Query"
msgstr ""
@@ -649,11 +895,11 @@ msgstr ""
msgid "Query History"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:123
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:133
msgid "Create table as with query results"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:131
+#: superset/assets/javascripts/SqlLab/components/SqlEditor.jsx:141
msgid "new table name"
msgstr ""
@@ -757,6 +1003,18 @@ msgstr ""
msgid "Remove table preview"
msgstr ""
+#: superset/assets/javascripts/SqlLab/components/TemplateParamsEditor.jsx:102
+msgid "Template Parameters"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TemplateParamsEditor.jsx:106
+msgid "Edit template parameters"
+msgstr ""
+
+#: superset/assets/javascripts/SqlLab/components/TemplateParamsEditor.jsx:116
+msgid "Invalid JSON"
+msgstr ""
+
#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:90
#, python-format
msgid "%s is not right as a column name, please alias it (as in SELECT count(*) "
@@ -770,30 +1028,86 @@ msgstr ""
msgid "using only alphanumeric characters and underscores"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:166
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:167
msgid "Creating a data source and popping a new tab"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:196
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:198
msgid "No results available for this query"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:248
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:250
msgid "Chart Type"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:251
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:253
msgid "[Chart Type]"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:259
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:261
msgid "Datasource Name"
msgstr ""
-#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:263
+#: superset/assets/javascripts/SqlLab/components/VisualizeModal.jsx:265
msgid "datasource name"
msgstr ""
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:54
+msgid "Create a new slice"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:59
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:65
+msgid "Choose a datasource"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:71
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:77
+msgid "Choose a visualization type"
+msgstr ""
+
+#: superset/assets/javascripts/addSlice/AddSliceContainer.jsx:87
+msgid "Create new slice"
+msgstr ""
+
+#: superset/assets/javascripts/chart/chartReducer.js:55
+msgid "Updating chart was stopped"
+msgstr "L'aggiornamento del grafico è stato fermato"
+
+#: superset/assets/javascripts/chart/chartReducer.js:66
+#, python-format
+msgid "An error occurred while rendering the visualization: %s"
+msgstr "Errore nel rendering della visualizzazione: %s"
+
+#: superset/assets/javascripts/chart/chartReducer.js:74
+msgid "visualization queries are set to timeout at ${action.timeout} seconds. "
+msgstr ""
+
+#: superset/assets/javascripts/chart/chartReducer.js:75
+msgid ""
+"Perhaps your data has grown, your database is under unusual load, or you "
+"are simply querying a data source that is too large to be processed "
+"within the timeout range. If that is the case, we recommend that you "
+"summarize your data further."
+msgstr ""
+
+#: superset/assets/javascripts/chart/chartReducer.js:84
+#: superset/assets/javascripts/chart/chartReducer.js:134
+msgid "Network error."
+msgstr "Errore di rete."
+
+#: superset/assets/javascripts/components/AlteredSliceTag.jsx:113
+msgid "Click to see difference"
+msgstr ""
+
+#: superset/assets/javascripts/components/AlteredSliceTag.jsx:119
+msgid "Altered"
+msgstr ""
+
+#: superset/assets/javascripts/components/AlteredSliceTag.jsx:137
+msgid "Slice changes"
+msgstr ""
+
#: superset/assets/javascripts/components/AsyncSelect.jsx:23
#: superset/assets/javascripts/explore/components/controls/SelectAsyncControl.jsx:26
msgid "Select ..."
@@ -812,107 +1126,132 @@ msgid "Click to force-refresh"
msgstr ""
#: superset/assets/javascripts/components/CopyToClipboard.jsx:21
-#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:67
-#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:37
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:68
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:38
msgid "Copy to clipboard"
msgstr ""
-#: superset/assets/javascripts/components/CopyToClipboard.jsx:65
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:72
msgid "Not successful"
msgstr ""
-#: superset/assets/javascripts/components/CopyToClipboard.jsx:68
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:75
msgid "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!"
msgstr ""
-#: superset/assets/javascripts/components/CopyToClipboard.jsx:79
+#: superset/assets/javascripts/components/CopyToClipboard.jsx:91
msgid "Copied!"
msgstr ""
-#: superset/assets/javascripts/components/EditableTitle.jsx:13
-#: superset/views/core.py:475 superset/views/core.py:542
+#: superset/assets/javascripts/components/EditableTitle.jsx:14
+#: superset/views/core.py:559 superset/views/core.py:629
msgid "Title"
msgstr "Titolo"
-#: superset/assets/javascripts/components/EditableTitle.jsx:92
+#: superset/assets/javascripts/components/EditableTitle.jsx:105
msgid "click to edit title"
msgstr ""
-#: superset/assets/javascripts/components/EditableTitle.jsx:93
+#: superset/assets/javascripts/components/EditableTitle.jsx:106
msgid "You don't have the rights to alter this title."
msgstr ""
-#: superset/assets/javascripts/components/FaveStar.jsx:32
-#: superset/assets/javascripts/modules/superset.js:33
+#: superset/assets/javascripts/components/FaveStar.jsx:33
msgid "Click to favorite/unfavorite"
msgstr ""
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:42
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:59
-msgid "You have unsaved changes."
+#: superset/assets/javascripts/dashboard/components/CodeModal.jsx:35
+msgid "Active Dashboard Filters"
msgstr ""
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:59
-msgid "Click the"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:120
+#, python-format
+msgid "Checkout this dashboard: %s"
msgstr ""
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:61
-msgid "button on the top right to save your changes."
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:123
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:162
+msgid "Save as"
+msgstr "Salva come"
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:131
+msgid "Force Refresh"
msgstr ""
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:164
-#, python-format
-msgid "Served from data cached %s . Click to force refresh."
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:132
+msgid "Force refresh the whole dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:169
-msgid "Click to force refresh"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:140
+msgid "Set autorefresh"
msgstr ""
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:353
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:100
-msgid "Error"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:141
+msgid "Set the auto-refresh interval for this session"
msgstr ""
-#: superset/assets/javascripts/dashboard/Dashboard.jsx:354
-#, python-format
-msgid "Sorry, there was an error adding slices to this dashboard: %s"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:155
+msgid "Save the dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/CodeModal.jsx:35
-msgid "Active Dashboard Filters"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:162
+msgid "Edit properties"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/Controls.jsx:48
-#, python-format
-msgid "Checkout this dashboard: %s"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:163
+msgid "Edit the dashboards's properties"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/Controls.jsx:54
-msgid "Force refresh the whole dashboard"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:170
+msgid "Email"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:171
+msgid "Email a link to this dashboard"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:183
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:196
+msgid "Add Slices"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:184
+msgid "Add some slices to this dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/Controls.jsx:94
-msgid "Edit this dashboard's properties"
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:195
+msgid "Edit CSS"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:65
+#: superset/assets/javascripts/dashboard/components/Controls.jsx:196
+msgid "Change the style of the dashboard using CSS code"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:45
msgid "Load a template"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:68
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:48
msgid "Load a CSS template"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:80
-#: superset/views/core.py:482
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:60
+#: superset/views/core.py:566
msgid "CSS"
msgstr "CSS"
-#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:86
+#: superset/assets/javascripts/dashboard/components/CssEditor.jsx:66
msgid "Live CSS Editor"
msgstr ""
+#: superset/assets/javascripts/dashboard/components/Dashboard.jsx:157
+msgid "You have unsaved changes."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/Header.jsx:49
+msgid "Unsaved changes"
+msgstr ""
+
#: superset/assets/javascripts/dashboard/components/RefreshIntervalModal.jsx:19
msgid "Don't refresh"
msgstr ""
@@ -941,243 +1280,308 @@ msgstr ""
msgid "Choose the refresh frequency for this dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:63
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:66
msgid "This dashboard was saved successfully."
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:69
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:72
msgid "Sorry, there was an error saving this dashboard: "
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:101
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:95
+msgid "Error"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:96
msgid "You must pick a name for the new dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:115
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:111
msgid "Save Dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:123
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:119
#, python-format
msgid "Overwrite Dashboard [%s]"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:131
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:127
msgid "Save as:"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:135
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:210
+#: superset/assets/javascripts/dashboard/components/SaveModal.jsx:131
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:208
msgid "[dashboard name]"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:142
-#: superset/views/core.py:379
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:73
+msgid "Sorry, there was an error fetching slices to this dashboard: "
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:93
+msgid "Sorry, there was an error adding slices to this dashboard: "
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:163
+#: superset/views/core.py:454
msgid "Name"
msgstr "Nome"
-#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:148
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:169
msgid "Viz"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:157
-#: superset/views/core.py:480 superset/views/core.py:544
-#: superset/views/sql_lab.py:57
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:177
+#: superset/assets/javascripts/explore/stores/controls.jsx:111
+#: superset/connectors/druid/views.py:45 superset/views/core.py:392
+#: superset/views/core.py:416 superset/views/core.py:448
+msgid "Datasource"
+msgstr "Sorgente Dati"
+
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:186
+#: superset/views/core.py:564 superset/views/core.py:631
+#: superset/views/sql_lab.py:56
msgid "Modified"
msgstr "Modificato"
-#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:167
-msgid "Add Slices"
-msgstr ""
-
-#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:176
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:205
msgid "Add a new slice to the dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:181
+#: superset/assets/javascripts/dashboard/components/SliceAdder.jsx:211
msgid "Add Slices to Dashboard"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:37
-msgid "Move chart"
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:62
+#, python-format
+msgid "Served from data cached %s . Click to force refresh."
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:40
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:63
msgid "Force refresh data"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:44
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:64
+msgid "Annotation layers are still loading."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:65
+msgid "One ore more annotation layers failed loading."
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:103
+msgid "Move chart"
+msgstr ""
+
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:123
msgid "Toggle chart description"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:54
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:133
msgid "Edit chart"
msgstr ""
-#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:62
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:142
msgid "Export CSV"
-msgstr ""
+msgstr "Esporta CSV"
-#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:70
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:151
msgid "Explore chart"
-msgstr ""
+msgstr "Esplora grafico"
-#: superset/assets/javascripts/dashboard/components/SliceCell.jsx:77
+#: superset/assets/javascripts/dashboard/components/SliceHeader.jsx:161
msgid "Remove chart from dashboard"
-msgstr ""
+msgstr "Rimuovi il grafico dalla dashboard"
-#: superset/assets/javascripts/explore/components/ChartContainer.jsx:180
-#, python-format
-msgid "%s - untitled"
+#: superset/assets/javascripts/explore/validators.js:11
+msgid "is expected to be a number"
msgstr ""
-#: superset/assets/javascripts/explore/components/ChartContainer.jsx:287
-msgid "Edit slice properties"
+#: superset/assets/javascripts/explore/validators.js:18
+msgid "is expected to be an integer"
msgstr ""
-#: superset/assets/javascripts/explore/components/ControlHeader.jsx:32
+#: superset/assets/javascripts/explore/validators.js:30
+msgid "cannot be empty"
+msgstr "non può essere vuoto"
+
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:34
msgid "description"
-msgstr ""
+msgstr "descrizione"
-#: superset/assets/javascripts/explore/components/ControlHeader.jsx:42
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:45
msgid "bolt"
msgstr ""
-#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:61
-msgid "Error..."
+#: superset/assets/javascripts/explore/components/ControlHeader.jsx:46
+msgid "Changing this control takes effect instantly"
msgstr ""
-#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:97
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:75
+msgid "Error..."
+msgstr "Errore..."
+
+#: superset/assets/javascripts/explore/components/DisplayQueryButton.jsx:126
#: superset/assets/javascripts/explore/stores/visTypes.js:56
-#: superset/assets/javascripts/explore/stores/visTypes.js:137
-#: superset/assets/javascripts/explore/stores/visTypes.js:389
-#: superset/assets/javascripts/explore/stores/visTypes.js:436
-#: superset/assets/javascripts/explore/stores/visTypes.js:457
-#: superset/assets/javascripts/explore/stores/visTypes.js:485
-#: superset/assets/javascripts/explore/stores/visTypes.js:505
-#: superset/assets/javascripts/explore/stores/visTypes.js:526
-#: superset/assets/javascripts/explore/stores/visTypes.js:578
-#: superset/assets/javascripts/explore/stores/visTypes.js:600
-#: superset/assets/javascripts/explore/stores/visTypes.js:625
-#: superset/assets/javascripts/explore/stores/visTypes.js:650
-#: superset/assets/javascripts/explore/stores/visTypes.js:682
-#: superset/assets/javascripts/explore/stores/visTypes.js:719
-#: superset/assets/javascripts/explore/stores/visTypes.js:746
-#: superset/assets/javascripts/explore/stores/visTypes.js:773
-#: superset/assets/javascripts/explore/stores/visTypes.js:811
-#: superset/assets/javascripts/explore/stores/visTypes.js:844
-#: superset/assets/javascripts/explore/stores/visTypes.js:881
-#: superset/assets/javascripts/explore/stores/visTypes.js:924
-#: superset/assets/javascripts/explore/stores/visTypes.js:946
-#: superset/assets/javascripts/explore/stores/visTypes.js:1005
+#: superset/assets/javascripts/explore/stores/visTypes.js:100
+#: superset/assets/javascripts/explore/stores/visTypes.js:138
+#: superset/assets/javascripts/explore/stores/visTypes.js:204
+#: superset/assets/javascripts/explore/stores/visTypes.js:361
+#: superset/assets/javascripts/explore/stores/visTypes.js:399
+#: superset/assets/javascripts/explore/stores/visTypes.js:438
+#: superset/assets/javascripts/explore/stores/visTypes.js:471
+#: superset/assets/javascripts/explore/stores/visTypes.js:515
+#: superset/assets/javascripts/explore/stores/visTypes.js:554
+#: superset/assets/javascripts/explore/stores/visTypes.js:594
+#: superset/assets/javascripts/explore/stores/visTypes.js:632
+#: superset/assets/javascripts/explore/stores/visTypes.js:764
+#: superset/assets/javascripts/explore/stores/visTypes.js:804
+#: superset/assets/javascripts/explore/stores/visTypes.js:851
+#: superset/assets/javascripts/explore/stores/visTypes.js:873
+#: superset/assets/javascripts/explore/stores/visTypes.js:901
+#: superset/assets/javascripts/explore/stores/visTypes.js:921
+#: superset/assets/javascripts/explore/stores/visTypes.js:942
+#: superset/assets/javascripts/explore/stores/visTypes.js:994
+#: superset/assets/javascripts/explore/stores/visTypes.js:1016
+#: superset/assets/javascripts/explore/stores/visTypes.js:1041
+#: superset/assets/javascripts/explore/stores/visTypes.js:1066
+#: superset/assets/javascripts/explore/stores/visTypes.js:1098
+#: superset/assets/javascripts/explore/stores/visTypes.js:1136
+#: superset/assets/javascripts/explore/stores/visTypes.js:1163
+#: superset/assets/javascripts/explore/stores/visTypes.js:1190
+#: superset/assets/javascripts/explore/stores/visTypes.js:1228
+#: superset/assets/javascripts/explore/stores/visTypes.js:1262
+#: superset/assets/javascripts/explore/stores/visTypes.js:1299
+#: superset/assets/javascripts/explore/stores/visTypes.js:1339
+#: superset/assets/javascripts/explore/stores/visTypes.js:1361
+#: superset/assets/javascripts/explore/stores/visTypes.js:1421
msgid "Query"
msgstr ""
-#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:76
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:77
+#: superset/assets/javascripts/explore/stores/visTypes.js:388
+#: superset/assets/javascripts/explore/stores/visTypes.js:426
msgid "Height"
msgstr "Altezza"
-#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:90
+#: superset/assets/javascripts/explore/components/EmbedCodeButton.jsx:91
msgid "Width"
msgstr "Larghezza"
-#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:32
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:37
msgid "Export to .json"
msgstr "Esporta in .json"
-#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:42
+#: superset/assets/javascripts/explore/components/ExploreActionButtons.jsx:47
msgid "Export to .csv format"
msgstr "Esporta nel formato .csv"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:74
-msgid "Please enter a slice name"
-msgstr "Inserisci un nome per la slice"
+#: superset/assets/javascripts/explore/components/ExploreChartHeader.jsx:64
+#, python-format
+msgid "%s - untitled"
+msgstr "%s - senza nome"
+
+#: superset/assets/javascripts/explore/components/ExploreChartHeader.jsx:100
+msgid "Edit slice properties"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/RowCountLabel.jsx:25
+msgid "Limit reached"
+msgstr ""
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:89
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:73
+msgid "Please enter a slice name"
+msgstr "Inserisci un nome per la slice"
+
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:88
msgid "Please select a dashboard"
msgstr "Seleziona una dashboard"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:97
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:96
msgid "Please enter a dashboard name"
msgstr "Inserisci un nome per la dashboard"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:134
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:132
msgid "Save A Slice"
msgstr "Salva una slice"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:155
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:153
#, python-format
msgid "Overwrite slice %s"
msgstr "Sovrascrivi la slice %s"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:164
-msgid "Save as"
-msgstr "Salva come"
-
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:168
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:166
msgid "[slice name]"
msgstr "[nome slice]"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:181
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:179
msgid "Do not add to a dashboard"
msgstr "Non aggiugere alla dashboard"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:189
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:187
msgid "Add slice to existing dashboard"
msgstr "Aggiungi la slice alla dashboard esistente"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:205
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:203
msgid "Add to new dashboard"
msgstr "Aggiungi ad una nuova dashboard"
-#: superset/assets/javascripts/explore/components/SaveModal.jsx:231
+#: superset/assets/javascripts/explore/components/SaveModal.jsx:229
msgid "Save & go to dashboard"
msgstr "Salva e vai alla dashboard"
-#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:32
+#: superset/assets/javascripts/explore/components/URLShortLinkButton.jsx:33
#, python-format
msgid "Check out this slice: %s"
msgstr "Guarda questa slice: %s"
-#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:55
+#: superset/assets/javascripts/explore/components/controls/AnnotationLayerControl.jsx:147
+msgid "Add Annotation Layer"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:50
msgid "`Min` value should be numeric or empty"
msgstr ""
-#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:58
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:53
msgid "`Max` value should be numeric or empty"
msgstr ""
-#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:75
-#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:88
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:70
+#: superset/connectors/druid/views.py:50 superset/connectors/sqla/views.py:84
msgid "Min"
msgstr "Min"
-#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:83
-#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:89
+#: superset/assets/javascripts/explore/components/controls/BoundsControl.jsx:78
+#: superset/connectors/druid/views.py:51 superset/connectors/sqla/views.py:85
msgid "Max"
msgstr "Max"
-#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:70
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:79
msgid "Something went wrong while fetching the datasource list"
msgstr ""
-#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:95
-msgid "Click to point to another datasource"
-msgstr ""
-
-#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:106
-msgid "Edit the datasource's configuration"
-msgstr ""
-
-#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:122
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:110
msgid "Select a datasource"
msgstr "Seleziona un datasource"
-#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:132
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:120
#: superset/assets/javascripts/explore/components/controls/VizTypeControl.jsx:120
msgid "Search / Filter"
msgstr "Cerca / Filtra"
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:180
+msgid "Click to point to another datasource"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:191
+msgid "Edit the datasource's configuration"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/DatasourceControl.jsx:203
+msgid "Show datasource configuration"
+msgstr ""
+
#: superset/assets/javascripts/explore/components/controls/Filter.jsx:114
msgid "Filter value"
msgstr "Valore del filtro"
@@ -1194,7 +1598,7 @@ msgstr "Seleziona una colonna"
msgid "Select operator"
msgstr "Seleziona operatore"
-#: superset/assets/javascripts/explore/components/controls/FilterControl.jsx:138
+#: superset/assets/javascripts/explore/components/controls/FilterControl.jsx:145
#: superset/templates/appbuilder/general/widgets/search.html:6
msgid "Add Filter"
msgstr "Aggiungi filtro"
@@ -1203,20 +1607,46 @@ msgstr "Aggiungi filtro"
msgid "Error while fetching data"
msgstr "Errore nel recupero dati"
-#: superset/assets/javascripts/explore/components/controls/SelectControl.jsx:106
+#: superset/assets/javascripts/explore/components/controls/SelectControl.jsx:109
#, python-format
-msgid "Select %s"
-msgstr "Seleziona %s"
+msgid "%s option(s)"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SpatialControl.jsx:62
+msgid "Invalid lat/long configuration."
+msgstr ""
-#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:63
+#: superset/assets/javascripts/explore/components/controls/SpatialControl.jsx:128
+msgid "Longitude & Latitude columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SpatialControl.jsx:144
+msgid "Delimited long & lat single column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SpatialControl.jsx:145
+msgid ""
+"Multiple formats accepted, look the geopy.points Python library for more "
+"details"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SpatialControl.jsx:157
+msgid "Reverse lat/long "
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/SpatialControl.jsx:163
+msgid "Geohash"
+msgstr ""
+
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:70
msgid "textarea"
msgstr "textarea"
-#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:81
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:98
msgid "Edit"
msgstr "Modifica"
-#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:81
+#: superset/assets/javascripts/explore/components/controls/TextAreaControl.jsx:98
msgid "in modal"
msgstr "in modale"
@@ -1224,235 +1654,259 @@ msgstr "in modale"
msgid "Select a visualization type"
msgstr "Seleziona un tipo di visualizzazione"
-#: superset/assets/javascripts/explore/reducers/chartReducer.js:32
-msgid "Updating chart was stopped"
-msgstr "L'aggiornamento del grafico è stato fermato"
-
-#: superset/assets/javascripts/explore/reducers/chartReducer.js:38
-#: superset/assets/javascripts/modules/superset.js:223
-#, python-format
-msgid "An error occurred while rendering the visualization: %s"
-msgstr "Errore nel rendering della visualizzazione: %s"
-
-#: superset/assets/javascripts/explore/reducers/chartReducer.js:47
-msgid ""
-"Perhaps your data has grown, your database is under unusual load, or you "
-"are simply querying a data source that is to large to be processed within"
-" the timeout range. If that is the case, we recommend that you summarize "
-"your data further."
-msgstr ""
-
-#: superset/assets/javascripts/explore/reducers/chartReducer.js:56
-msgid "Network error."
-msgstr "Errore di rete."
-
-#: superset/assets/javascripts/explore/stores/controls.jsx:36
+#: superset/assets/javascripts/explore/stores/controls.jsx:41
msgid "A reference to the [Time] configuration, taking granularity into account"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:50
+#: superset/assets/javascripts/explore/stores/controls.jsx:55
msgid "Group by"
msgstr "Raggruppa per"
-#: superset/assets/javascripts/explore/stores/controls.jsx:53
+#: superset/assets/javascripts/explore/stores/controls.jsx:58
msgid "One or many controls to group by"
msgstr "Uno o più controlli per 'Raggruppa per'"
-#: superset/assets/javascripts/explore/stores/controls.jsx:72
-#: superset/connectors/druid/views.py:45 superset/views/core.py:318
-#: superset/views/core.py:342 superset/views/core.py:373
-msgid "Datasource"
-msgstr "Sorgente Dati"
+#: superset/assets/javascripts/explore/stores/controls.jsx:79
+msgid ""
+"For more information about objects are in context in the scope of this "
+"function, refer to the"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:81
+msgid " source code of Superset's sandboxed parser"
+msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:82
-#: superset/views/core.py:381
+#: superset/assets/javascripts/explore/stores/controls.jsx:102
+msgid "This functionality is disabled in your environment for security reasons."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:121
+#: superset/views/core.py:456
msgid "Visualization Type"
msgstr "Tipo di Visualizzazione"
-#: superset/assets/javascripts/explore/stores/controls.jsx:84
+#: superset/assets/javascripts/explore/stores/controls.jsx:123
msgid "The type of visualization to display"
msgstr "Il tipo di visualizzazione da mostrare"
-#: superset/assets/javascripts/explore/stores/controls.jsx:90
+#: superset/assets/javascripts/explore/stores/controls.jsx:129
msgid "Metrics"
msgstr "Metriche"
-#: superset/assets/javascripts/explore/stores/controls.jsx:99
-#: superset/assets/javascripts/explore/stores/controls.jsx:116
+#: superset/assets/javascripts/explore/stores/controls.jsx:138
+#: superset/assets/javascripts/explore/stores/controls.jsx:170
msgid "One or many metrics to display"
msgstr "Una o più metriche da mostrare"
-#: superset/assets/javascripts/explore/stores/controls.jsx:103
+#: superset/assets/javascripts/explore/stores/controls.jsx:144
+msgid "Percentage Metrics"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:151
+msgid "Metrics for which percentage of total are to be displayed"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:156
msgid "Y Axis Bounds"
msgstr "Limite asse Y"
-#: superset/assets/javascripts/explore/stores/controls.jsx:106
+#: superset/assets/javascripts/explore/stores/controls.jsx:159
msgid ""
"Bounds for the Y axis. When left empty, the bounds are dynamically "
"defined based on the min/max of the data. Note that this feature will "
"only expand the axis range. It won't narrow the data's extent."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:114
+#: superset/assets/javascripts/explore/stores/controls.jsx:168
msgid "Ordering"
msgstr "Ordina per"
-#: superset/assets/javascripts/explore/stores/controls.jsx:125
-#: superset/views/annotations.py:47
-msgid "Annotation Layers"
+#: superset/assets/javascripts/explore/stores/controls.jsx:176
+msgid "Fixed Color"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:127
-msgid "Annotation layers to overlay on the visualization"
+#: superset/assets/javascripts/explore/stores/controls.jsx:177
+msgid "Use this to define a static color for all circles"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:129
-msgid "Select a annotation layer"
+#: superset/assets/javascripts/explore/stores/controls.jsx:184
+msgid "Fill Color"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:130
-msgid "Error while fetching annotation layers"
+#: superset/assets/javascripts/explore/stores/controls.jsx:185
+#: superset/assets/javascripts/explore/stores/controls.jsx:193
+msgid ""
+" Set the opacity to 0 if you do not want to override the color specified "
+"in the GeoJSON"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:192
+msgid "Stroke Color"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:141
-#: superset/assets/javascripts/explore/stores/visTypes.js:832
-#: superset/connectors/druid/views.py:106 superset/connectors/sqla/views.py:130
+#: superset/assets/javascripts/explore/stores/controls.jsx:201
+#: superset/assets/javascripts/explore/stores/visTypes.js:1250
+#: superset/connectors/druid/views.py:126 superset/connectors/sqla/views.py:128
msgid "Metric"
msgstr "Metrica"
-#: superset/assets/javascripts/explore/stores/controls.jsx:143
+#: superset/assets/javascripts/explore/stores/controls.jsx:203
msgid "Choose the metric"
msgstr "Seleziona la metrica"
-#: superset/assets/javascripts/explore/stores/controls.jsx:156
+#: superset/assets/javascripts/explore/stores/controls.jsx:216
msgid "Right Axis Metric"
msgstr "Metrica asse destro"
-#: superset/assets/javascripts/explore/stores/controls.jsx:160
+#: superset/assets/javascripts/explore/stores/controls.jsx:220
msgid "Choose a metric for right axis"
msgstr "Seleziona una metrica per l'asse destro"
-#: superset/assets/javascripts/explore/stores/controls.jsx:171
+#: superset/assets/javascripts/explore/stores/controls.jsx:231
msgid "Stacked Style"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:199
+#: superset/assets/javascripts/explore/stores/controls.jsx:243
+msgid "Sort X Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:251
+msgid "Sort Y Axis"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:259
msgid "Linear Color Scheme"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:216
+#: superset/assets/javascripts/explore/stores/controls.jsx:278
msgid "Normalize Across"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:223
+#: superset/assets/javascripts/explore/stores/controls.jsx:285
msgid ""
"Color will be rendered based on a ratio of the cell against the sum of "
"across this criteria"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:230
+#: superset/assets/javascripts/explore/stores/controls.jsx:292
msgid "Horizon Color Scale"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:237
+#: superset/assets/javascripts/explore/stores/controls.jsx:299
msgid "Defines how the color are attributed."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:242
+#: superset/assets/javascripts/explore/stores/controls.jsx:304
msgid "Rendering"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:249
+#: superset/assets/javascripts/explore/stores/controls.jsx:311
msgid ""
"image-rendering CSS attribute of the canvas object that defines how the "
"browser scales up the image"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:255
+#: superset/assets/javascripts/explore/stores/controls.jsx:317
msgid "XScale Interval"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:258
+#: superset/assets/javascripts/explore/stores/controls.jsx:320
msgid "Number of steps to take between ticks when displaying the X scale"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:264
+#: superset/assets/javascripts/explore/stores/controls.jsx:326
msgid "YScale Interval"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:267
+#: superset/assets/javascripts/explore/stores/controls.jsx:329
msgid "Number of steps to take between ticks when displaying the Y scale"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:273
+#: superset/assets/javascripts/explore/stores/controls.jsx:335
msgid "Include Time"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:274
+#: superset/assets/javascripts/explore/stores/controls.jsx:336
msgid "Whether to include the time granularity as defined in the time section"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:288
+#: superset/assets/javascripts/explore/stores/controls.jsx:342
+msgid "Auto Zoom"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:345
+msgid "When checked, the map will zoom to your data after each query"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:350
+msgid "Show percentage"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:352
+msgid "Whether to include the percentage in the tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:358
msgid "Stacked Bars"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:296
+#: superset/assets/javascripts/explore/stores/controls.jsx:366
msgid "Show totals"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:299
+#: superset/assets/javascripts/explore/stores/controls.jsx:369
msgid "Display total row/column"
msgstr "Mostra totali riga/colonna"
-#: superset/assets/javascripts/explore/stores/controls.jsx:304
+#: superset/assets/javascripts/explore/stores/controls.jsx:374
msgid "Show Markers"
msgstr "Mostra marcatori"
-#: superset/assets/javascripts/explore/stores/controls.jsx:307
+#: superset/assets/javascripts/explore/stores/controls.jsx:377
msgid "Show data points as circle markers on the lines"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:312
+#: superset/assets/javascripts/explore/stores/controls.jsx:382
msgid "Bar Values"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:315
+#: superset/assets/javascripts/explore/stores/controls.jsx:385
msgid "Show the value on top of the bar"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:320
+#: superset/assets/javascripts/explore/stores/controls.jsx:390
msgid "Sort Bars"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:322
+#: superset/assets/javascripts/explore/stores/controls.jsx:392
msgid "Sort bars by x labels."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:327
+#: superset/assets/javascripts/explore/stores/controls.jsx:397
msgid "Combine Metrics"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:329
+#: superset/assets/javascripts/explore/stores/controls.jsx:399
msgid ""
"Display metrics side by side within each column, as opposed to each "
"column being displayed side by side for each metric."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:335
+#: superset/assets/javascripts/explore/stores/controls.jsx:405
msgid "Extra Controls"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:338
+#: superset/assets/javascripts/explore/stores/controls.jsx:408
msgid ""
"Whether to show extra controls or not. Extra controls include things like"
" making mulitBar charts stacked or side by side."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:345
+#: superset/assets/javascripts/explore/stores/controls.jsx:415
msgid "Reduce X ticks"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:348
+#: superset/assets/javascripts/explore/stores/controls.jsx:418
msgid ""
"Reduces the number of X axis ticks to be rendered. If true, the x axis "
"wont overflow and labels may be missing. If false, a minimum width will "
@@ -1460,137 +1914,219 @@ msgid ""
"scroll."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:357
+#: superset/assets/javascripts/explore/stores/controls.jsx:427
msgid "Include Series"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:360
+#: superset/assets/javascripts/explore/stores/controls.jsx:430
msgid "Include series name as an axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:365
+#: superset/assets/javascripts/explore/stores/controls.jsx:435
msgid "Color Metric"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:367
+#: superset/assets/javascripts/explore/stores/controls.jsx:437
msgid "A metric to use for color"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:374
+#: superset/assets/javascripts/explore/stores/controls.jsx:444
msgid "Country Name"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:393
+#: superset/assets/javascripts/explore/stores/controls.jsx:463
msgid "The name of country that Superset should display"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:397
+#: superset/assets/javascripts/explore/stores/controls.jsx:467
msgid "Country Field Type"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:405
+#: superset/assets/javascripts/explore/stores/controls.jsx:475
msgid ""
"The country code standard that Superset should expect to find in the "
"[country] column"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:412
-#: superset/assets/javascripts/explore/stores/controls.jsx:419
+#: superset/assets/javascripts/explore/stores/controls.jsx:481
+msgid "Frequency"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:493
+msgid ""
+"The periodicity over which to pivot time. Users can provide\n"
+" \"Pandas\" offset alias.\n"
+" Click on the info bubble for more details on accepted \"freq\" "
+"expressions."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:506
+msgid "Dimension"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:507
+msgid "Select a dimension"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:513
+#: superset/assets/javascripts/explore/stores/controls.jsx:520
msgid "Columns"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:413
+#: superset/assets/javascripts/explore/stores/controls.jsx:514
msgid "One or many controls to pivot as columns"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:421
-#: superset/assets/javascripts/explore/stores/controls.jsx:431
-#: superset/assets/javascripts/explore/stores/controls.jsx:441
+#: superset/assets/javascripts/explore/stores/controls.jsx:522
+#: superset/assets/javascripts/explore/stores/controls.jsx:622
+#: superset/assets/javascripts/explore/stores/controls.jsx:632
msgid "Columns to display"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:450
+#: superset/assets/javascripts/explore/stores/controls.jsx:530
+msgid "Longitude & Latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:532
+#: superset/assets/javascripts/explore/stores/controls.jsx:542
+#: superset/assets/javascripts/explore/stores/controls.jsx:552
+msgid "Point to your spatial columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:540
+msgid "Start Longitude & Latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:550
+msgid "End Longitude & Latitude"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:560
+#: superset/assets/javascripts/explore/stores/visTypes.js:1463
+msgid "Longitude"
+msgstr "Longitudine"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:563
+msgid "Select the longitude column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:571
+#: superset/assets/javascripts/explore/stores/visTypes.js:1467
+msgid "Latitude"
+msgstr "Latitudine"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:574
+msgid "Select the latitude column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:582
+msgid "GeoJson Column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:584
+msgid "Select the geojson column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:592
+msgid "Polygon Column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:594
+msgid ""
+"Select the polygon column. Each row should contain JSON.array(N) of "
+"[longitude, latitude] points"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:603
+msgid "Point Radius Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:612
+msgid "Stroke Width"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:641
msgid "Origin"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:456
+#: superset/assets/javascripts/explore/stores/controls.jsx:647
msgid ""
"Defines the origin where time buckets start, accepts natural dates as in "
"`now`, `sunday` or `1970-01-01`"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:463
+#: superset/assets/javascripts/explore/stores/controls.jsx:654
msgid "Bottom Margin"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:467
+#: superset/assets/javascripts/explore/stores/controls.jsx:658
msgid "Bottom margin, in pixels, allowing for more room for axis labels"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:473
+#: superset/assets/javascripts/explore/stores/controls.jsx:664
msgid "Left Margin"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:477
+#: superset/assets/javascripts/explore/stores/controls.jsx:668
msgid "Left margin, in pixels, allowing for more room for axis labels"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:483
+#: superset/assets/javascripts/explore/stores/controls.jsx:674
msgid "Time Granularity"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:500
+#: superset/assets/javascripts/explore/stores/controls.jsx:691
msgid ""
"The time granularity for the visualization. Note that you can type and "
"use simple natural language as in `10 seconds`, `1 day` or `56 weeks`"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:507
+#: superset/assets/javascripts/explore/stores/controls.jsx:698
msgid "Domain"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:510
+#: superset/assets/javascripts/explore/stores/controls.jsx:701
msgid "The time unit used for the grouping of blocks"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:515
+#: superset/assets/javascripts/explore/stores/controls.jsx:706
msgid "Subdomain"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:518
+#: superset/assets/javascripts/explore/stores/controls.jsx:709
msgid ""
"The time unit for each block. Should be a smaller unit than "
"domain_granularity. Should be larger or equal to Time Grain"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:525
+#: superset/assets/javascripts/explore/stores/controls.jsx:716
msgid "Link Length"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:528
+#: superset/assets/javascripts/explore/stores/controls.jsx:719
msgid "Link length in the force layout"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:534
+#: superset/assets/javascripts/explore/stores/controls.jsx:725
msgid "Charge"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:548
+#: superset/assets/javascripts/explore/stores/controls.jsx:739
msgid "Charge in the force layout"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:556
+#: superset/assets/javascripts/explore/stores/controls.jsx:745
msgid ""
"The time column for the visualization. Note that you can define arbitrary"
-" expression that return a DATETIME column in the table or. Also note that"
-" the filter below is applied against this column or expression"
+" expression that return a DATETIME column in the table. Also note that "
+"the filter below is applied against this column or expression"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:568
+#: superset/assets/javascripts/explore/stores/controls.jsx:771
msgid "Time Grain"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:570
+#: superset/assets/javascripts/explore/stores/controls.jsx:773
msgid ""
"The time granularity for the visualization. This applies a date "
"transformation to alter your time column and defines a new time "
@@ -1598,114 +2134,144 @@ msgid ""
"in the Superset source code."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:583
+#: superset/assets/javascripts/explore/stores/controls.jsx:786
msgid "Resample Rule"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:586
+#: superset/assets/javascripts/explore/stores/controls.jsx:789
msgid "Pandas resample rule"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:592
+#: superset/assets/javascripts/explore/stores/controls.jsx:795
msgid "Resample How"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:595
+#: superset/assets/javascripts/explore/stores/controls.jsx:798
msgid "Pandas resample how"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:601
+#: superset/assets/javascripts/explore/stores/controls.jsx:804
msgid "Resample Fill Method"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:604
+#: superset/assets/javascripts/explore/stores/controls.jsx:807
msgid "Pandas resample fill method"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:610
+#: superset/assets/javascripts/explore/stores/controls.jsx:813
+#: superset/assets/visualizations/filter_box.jsx:114
msgid "Since"
msgstr "Data inizio"
-#: superset/assets/javascripts/explore/stores/controls.jsx:611
+#: superset/assets/javascripts/explore/stores/controls.jsx:814
msgid "7 days ago"
msgstr "7 giorni"
-#: superset/assets/javascripts/explore/stores/controls.jsx:617
+#: superset/assets/javascripts/explore/stores/controls.jsx:820
+#: superset/assets/visualizations/filter_box.jsx:123
msgid "Until"
msgstr "Data fine"
-#: superset/assets/javascripts/explore/stores/controls.jsx:624
+#: superset/assets/javascripts/explore/stores/controls.jsx:827
msgid "Max Bubble Size"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:632
+#: superset/assets/javascripts/explore/stores/controls.jsx:835
msgid "Whisker/outlier options"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:634
+#: superset/assets/javascripts/explore/stores/controls.jsx:837
msgid "Determines how whiskers and outliers are calculated."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:645
+#: superset/assets/javascripts/explore/stores/controls.jsx:848
msgid "Ratio"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:648
+#: superset/assets/javascripts/explore/stores/controls.jsx:851
msgid "Target aspect ratio for treemap tiles."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:654
-#: superset/assets/javascripts/explore/stores/visTypes.js:616
-#: superset/assets/javascripts/explore/stores/visTypes.js:641
-#: superset/assets/javascripts/explore/stores/visTypes.js:790
+#: superset/assets/javascripts/explore/stores/controls.jsx:857
+#: superset/assets/javascripts/explore/stores/visTypes.js:1032
+#: superset/assets/javascripts/explore/stores/visTypes.js:1057
+#: superset/assets/javascripts/explore/stores/visTypes.js:1207
msgid "Number format"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:664
+#: superset/assets/javascripts/explore/stores/controls.jsx:867
msgid "Row limit"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:672
+#: superset/assets/javascripts/explore/stores/controls.jsx:876
msgid "Series limit"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:675
-msgid "Limits the number of time series that get displayed"
+#: superset/assets/javascripts/explore/stores/controls.jsx:879
+msgid ""
+"Limits the number of time series that get displayed. A sub query (or an "
+"extra phase where sub queries are not supported) is applied to limit the "
+"number of time series that get fetched and displayed. This feature is "
+"useful when grouping by high cardinality dimension(s)."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:680
+#: superset/assets/javascripts/explore/stores/controls.jsx:888
msgid "Sort By"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:682
+#: superset/assets/javascripts/explore/stores/controls.jsx:890
msgid "Metric used to define the top series"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:697
+#: superset/assets/javascripts/explore/stores/controls.jsx:898
+msgid "Sort Descending"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:900
+msgid "Whether to sort descending or ascending"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:905
msgid "Rolling"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:700
+#: superset/assets/javascripts/explore/stores/controls.jsx:908
msgid ""
"Defines a rolling window function to apply, works along with the "
"[Periods] text box"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:706
+#: superset/assets/javascripts/explore/stores/controls.jsx:914
+msgid "Multiplier"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:918
+msgid "Factor to multiply the metric by"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:923
msgid "Periods"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:708
+#: superset/assets/javascripts/explore/stores/controls.jsx:925
msgid ""
"Defines the size of the rolling window function, relative to the time "
"granularity selected"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:714
+#: superset/assets/javascripts/explore/stores/controls.jsx:931
+msgid "Grid Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:935
+msgid "Defines the grid size in pixels"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:940
msgid "Min Periods"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:716
+#: superset/assets/javascripts/explore/stores/controls.jsx:942
msgid ""
"The minimum number of rolling periods required to show a value. For "
"instance if you do a cumulative sum on 7 days you may want your \"Min "
@@ -1714,561 +2280,904 @@ msgid ""
"periods"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:725
-#: superset/assets/javascripts/explore/stores/visTypes.js:123
+#: superset/assets/javascripts/explore/stores/controls.jsx:951
+#: superset/assets/javascripts/explore/stores/visTypes.js:124
msgid "Series"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:727
+#: superset/assets/javascripts/explore/stores/controls.jsx:953
msgid ""
"Defines the grouping of entities. Each series is shown as a specific "
"color on the chart and has a legend toggle"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:737
+#: superset/assets/javascripts/explore/stores/controls.jsx:963
msgid "Entity"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:740
+#: superset/assets/javascripts/explore/stores/controls.jsx:966
msgid "This defines the element to be plotted on the chart"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:748
-#: superset/assets/javascripts/explore/stores/visTypes.js:172
-#: superset/assets/javascripts/explore/stores/visTypes.js:547
+#: superset/assets/javascripts/explore/stores/controls.jsx:974
+#: superset/assets/javascripts/explore/stores/visTypes.js:173
+#: superset/assets/javascripts/explore/stores/visTypes.js:219
+#: superset/assets/javascripts/explore/stores/visTypes.js:963
msgid "X Axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:749
+#: superset/assets/javascripts/explore/stores/controls.jsx:975
msgid "Metric assigned to the [X] axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:762
-#: superset/assets/javascripts/explore/stores/visTypes.js:179
-#: superset/assets/javascripts/explore/stores/visTypes.js:555
+#: superset/assets/javascripts/explore/stores/controls.jsx:988
+#: superset/assets/javascripts/explore/stores/visTypes.js:180
+#: superset/assets/javascripts/explore/stores/visTypes.js:226
+#: superset/assets/javascripts/explore/stores/visTypes.js:971
msgid "Y Axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:765
+#: superset/assets/javascripts/explore/stores/controls.jsx:991
msgid "Metric assigned to the [Y] axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:776
+#: superset/assets/javascripts/explore/stores/controls.jsx:1002
msgid "Bubble Size"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:789
+#: superset/assets/javascripts/explore/stores/controls.jsx:1015
msgid "URL"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:790
+#: superset/assets/javascripts/explore/stores/controls.jsx:1016
msgid ""
"The URL, this control is templated, so you can integrate {{ width }} "
"and/or {{ height }} in your URL string."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:797
+#: superset/assets/javascripts/explore/stores/controls.jsx:1023
msgid "X Axis Label"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:804
+#: superset/assets/javascripts/explore/stores/controls.jsx:1030
msgid "Y Axis Label"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:811
+#: superset/assets/javascripts/explore/stores/controls.jsx:1037
msgid "Custom WHERE clause"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:813
+#: superset/assets/javascripts/explore/stores/controls.jsx:1043
msgid ""
"The text in this box gets included in your query's WHERE clause, as an "
"AND to other criteria. You can include complex expression, parenthesis "
"and anything else supported by the backend it is directed towards."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:821
+#: superset/assets/javascripts/explore/stores/controls.jsx:1051
msgid "Custom HAVING clause"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:823
+#: superset/assets/javascripts/explore/stores/controls.jsx:1057
msgid ""
"The text in this box gets included in your query's HAVING clause, as an "
"AND to other criteria. You can include complex expression, parenthesis "
"and anything else supported by the backend it is directed towards."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:831
+#: superset/assets/javascripts/explore/stores/controls.jsx:1065
msgid "Comparison Period Lag"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:833
+#: superset/assets/javascripts/explore/stores/controls.jsx:1067
msgid "Based on granularity, number of time periods to compare against"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:838
+#: superset/assets/javascripts/explore/stores/controls.jsx:1072
msgid "Comparison suffix"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:839
+#: superset/assets/javascripts/explore/stores/controls.jsx:1073
msgid "Suffix to apply after the percentage display"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:845
+#: superset/assets/javascripts/explore/stores/controls.jsx:1079
msgid "Table Timestamp Format"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:850
+#: superset/assets/javascripts/explore/stores/controls.jsx:1084
msgid "Timestamp Format"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:856
+#: superset/assets/javascripts/explore/stores/controls.jsx:1090
msgid "Series Height"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:859
+#: superset/assets/javascripts/explore/stores/controls.jsx:1093
msgid "Pixel height of each series"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:865
+#: superset/assets/javascripts/explore/stores/controls.jsx:1099
msgid "Page Length"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:868
+#: superset/assets/javascripts/explore/stores/controls.jsx:1102
msgid "Rows per page, 0 means no pagination"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:874
-#: superset/assets/javascripts/explore/stores/controls.jsx:884
+#: superset/assets/javascripts/explore/stores/controls.jsx:1108
+#: superset/assets/javascripts/explore/stores/controls.jsx:1118
msgid "X Axis Format"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:894
+#: superset/assets/javascripts/explore/stores/controls.jsx:1128
msgid "Y Axis Format"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:904
+#: superset/assets/javascripts/explore/stores/controls.jsx:1138
msgid "Right Axis Format"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:912
+#: superset/assets/javascripts/explore/stores/controls.jsx:1147
+msgid "Date Time Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1156
msgid "Markup Type"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:917
+#: superset/assets/javascripts/explore/stores/controls.jsx:1161
msgid "Pick your favorite markup language"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:922
+#: superset/assets/javascripts/explore/stores/controls.jsx:1166
msgid "Rotation"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:925
+#: superset/assets/javascripts/explore/stores/controls.jsx:1169
msgid "Rotation to apply to words in the cloud"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:930
+#: superset/assets/javascripts/explore/stores/controls.jsx:1174
msgid "Line Style"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:935
+#: superset/assets/javascripts/explore/stores/controls.jsx:1179
msgid "Line interpolation as defined by d3.js"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:940
+#: superset/assets/javascripts/explore/stores/controls.jsx:1184
msgid "Label Type"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:949
+#: superset/assets/javascripts/explore/stores/controls.jsx:1193
msgid "What should be shown on the label?"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:954
-#: superset/assets/javascripts/explore/stores/visTypes.js:376
-#: superset/assets/javascripts/explore/stores/visTypes.js:414
+#: superset/assets/javascripts/explore/stores/controls.jsx:1198
+#: superset/assets/javascripts/explore/stores/visTypes.js:790
+#: superset/assets/javascripts/explore/stores/visTypes.js:829
msgid "Code"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:955
+#: superset/assets/javascripts/explore/stores/controls.jsx:1199
msgid "Put your code here"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:964
+#: superset/assets/javascripts/explore/stores/controls.jsx:1208
msgid "Aggregation function"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:976
+#: superset/assets/javascripts/explore/stores/controls.jsx:1220
msgid ""
"Aggregate function to apply when pivoting and computing the total rows "
"and columns"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:983
+#: superset/assets/javascripts/explore/stores/controls.jsx:1227
msgid "Font Size From"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:985
+#: superset/assets/javascripts/explore/stores/controls.jsx:1229
msgid "Font size for the smallest value in the list"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:991
+#: superset/assets/javascripts/explore/stores/controls.jsx:1235
msgid "Font Size To"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:993
+#: superset/assets/javascripts/explore/stores/controls.jsx:1237
msgid "Font size for the biggest value in the list"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:998
+#: superset/assets/javascripts/explore/stores/controls.jsx:1242
msgid "Instant Filtering"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1009
+#: superset/assets/javascripts/explore/stores/controls.jsx:1253
+msgid "Extruded"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1261
msgid "Range Filter"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1012
+#: superset/assets/javascripts/explore/stores/controls.jsx:1264
msgid "Whether to display the time range interactive selector"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1017
+#: superset/assets/javascripts/explore/stores/controls.jsx:1269
msgid "Date Filter"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1019
+#: superset/assets/javascripts/explore/stores/controls.jsx:1271
msgid "Whether to include a time filter"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1024
+#: superset/assets/javascripts/explore/stores/controls.jsx:1276
+msgid "Show SQL Granularity Dropdown"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1278
+msgid "Check to include SQL Granularity dropdown"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1283
+msgid "Show SQL Time Column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1285
+msgid "Check to include Time Column dropdown"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1290
+msgid "Show Druid Granularity Dropdown"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1292
+msgid "Check to include Druid Granularity dropdown"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1297
+msgid "Show Druid Time Origin"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1299
+msgid "Check to include Time Origin dropdown"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1304
msgid "Data Table"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1026
+#: superset/assets/javascripts/explore/stores/controls.jsx:1306
msgid "Whether to display the interactive data table"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1031
+#: superset/assets/javascripts/explore/stores/controls.jsx:1311
msgid "Search Box"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1034
+#: superset/assets/javascripts/explore/stores/controls.jsx:1314
msgid "Whether to include a client side search box"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1039
+#: superset/assets/javascripts/explore/stores/controls.jsx:1319
msgid "Table Filter"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1041
+#: superset/assets/javascripts/explore/stores/controls.jsx:1321
msgid "Whether to apply filter when table cell is clicked"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1046
+#: superset/assets/javascripts/explore/stores/controls.jsx:1326
msgid "Show Bubbles"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1049
+#: superset/assets/javascripts/explore/stores/controls.jsx:1329
msgid "Whether to display bubbles on top of countries"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1054
+#: superset/assets/javascripts/explore/stores/controls.jsx:1334
msgid "Legend"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1057
+#: superset/assets/javascripts/explore/stores/controls.jsx:1337
msgid "Whether to display the legend (toggles)"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1062
+#: superset/assets/javascripts/explore/stores/controls.jsx:1342
+msgid "Show Values"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1345
+msgid "Whether to display the numerical values within the cells"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1350
msgid "X bounds"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1065
+#: superset/assets/javascripts/explore/stores/controls.jsx:1353
msgid "Whether to display the min and max values of the X axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1070
+#: superset/assets/javascripts/explore/stores/controls.jsx:1358
msgid "Y bounds"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1073
+#: superset/assets/javascripts/explore/stores/controls.jsx:1361
msgid "Whether to display the min and max values of the Y axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1078
+#: superset/assets/javascripts/explore/stores/controls.jsx:1366
msgid "Rich Tooltip"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1081
+#: superset/assets/javascripts/explore/stores/controls.jsx:1369
msgid "The rich tooltip shows a list of all series for that point in time"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1087
+#: superset/assets/javascripts/explore/stores/controls.jsx:1375
msgid "Y Log Scale"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1090
+#: superset/assets/javascripts/explore/stores/controls.jsx:1378
msgid "Use a log scale for the Y axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1095
+#: superset/assets/javascripts/explore/stores/controls.jsx:1383
msgid "X Log Scale"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1098
+#: superset/assets/javascripts/explore/stores/controls.jsx:1386
msgid "Use a log scale for the X axis"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1103
+#: superset/assets/javascripts/explore/stores/controls.jsx:1391
+msgid "Log Scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1394
+msgid "Use a log scale"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1399
msgid "Donut"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1106
+#: superset/assets/javascripts/explore/stores/controls.jsx:1402
msgid "Do you want a donut or a pie?"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1111
+#: superset/assets/javascripts/explore/stores/controls.jsx:1407
msgid "Put labels outside"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1114
+#: superset/assets/javascripts/explore/stores/controls.jsx:1410
msgid "Put the labels outside the pie?"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1119
+#: superset/assets/javascripts/explore/stores/controls.jsx:1415
msgid "Contribution"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1121
+#: superset/assets/javascripts/explore/stores/controls.jsx:1417
msgid "Compute the contribution to the total"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1126
+#: superset/assets/javascripts/explore/stores/controls.jsx:1422
msgid "Period Ratio"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1129
+#: superset/assets/javascripts/explore/stores/controls.jsx:1425
msgid ""
"[integer] Number of period to compare against, this is relative to the "
"granularity selected"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1135
+#: superset/assets/javascripts/explore/stores/controls.jsx:1431
msgid "Period Ratio Type"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1138
+#: superset/assets/javascripts/explore/stores/controls.jsx:1434
msgid ""
"`factor` means (new/previous), `growth` is ((new/previous) - 1), `value` "
"is (new-previous)"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1144
+#: superset/assets/javascripts/explore/stores/controls.jsx:1440
msgid "Time Shift"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1146
+#: superset/assets/javascripts/explore/stores/controls.jsx:1442
msgid ""
"Overlay a timeseries from a relative time period. Expects relative time "
"delta in natural language (example: 24 hours, 7 days, 56 weeks, 365 "
"days)"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1154
+#: superset/assets/javascripts/explore/stores/controls.jsx:1450
msgid "Subheader"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1155
+#: superset/assets/javascripts/explore/stores/controls.jsx:1451
msgid "Description text that shows up below your Big Number"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1161
+#: superset/assets/javascripts/explore/stores/controls.jsx:1457
msgid "label"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1163
+#: superset/assets/javascripts/explore/stores/controls.jsx:1459
msgid ""
"`count` is COUNT(*) if a group by is used. Numerical columns will be "
"aggregated with the aggregator. Non-numerical columns will be used to "
"label points. Leave empty to get a count of points in each cluster."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1174
+#: superset/assets/javascripts/explore/stores/controls.jsx:1470
msgid "Map Style"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1184
+#: superset/assets/javascripts/explore/stores/controls.jsx:1482
msgid "Base layer map style"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1190
+#: superset/assets/javascripts/explore/stores/controls.jsx:1488
msgid "Clustering Radius"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1203
+#: superset/assets/javascripts/explore/stores/controls.jsx:1501
msgid ""
"The radius (in pixels) the algorithm uses to define a cluster. Choose 0 "
"to turn off clustering, but beware that a large number of points (>1000) "
"will cause lag."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1210
+#: superset/assets/javascripts/explore/stores/controls.jsx:1508
+#: superset/assets/javascripts/explore/stores/visTypes.js:648
+msgid "Point Size"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1510
+msgid "Fixed point radius"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1518
msgid "Point Radius"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1212
+#: superset/assets/javascripts/explore/stores/controls.jsx:1520
msgid ""
"The radius of individual points (ones that are not in a cluster). Either "
"a numerical column or `Auto`, which scales the point based on the largest"
" cluster"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1222
+#: superset/assets/javascripts/explore/stores/controls.jsx:1530
msgid "Point Radius Unit"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1225
+#: superset/assets/javascripts/explore/stores/controls.jsx:1533
+#: superset/assets/javascripts/explore/stores/controls.jsx:1549
msgid "The unit of measure for the specified point radius"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1230
+#: superset/assets/javascripts/explore/stores/controls.jsx:1538
+msgid "Point Unit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1554
msgid "Opacity"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1233
+#: superset/assets/javascripts/explore/stores/controls.jsx:1557
msgid "Opacity of all clusters, points, and labels. Between 0 and 1."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1239
+#: superset/assets/javascripts/explore/stores/controls.jsx:1563
+#: superset/assets/javascripts/explore/stores/visTypes.js:1454
+msgid "Viewport"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1565
+msgid "Parameters related to the view and perspective on the map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1572
msgid "Zoom"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1242
+#: superset/assets/javascripts/explore/stores/controls.jsx:1575
msgid "Zoom level of the map"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1248
+#: superset/assets/javascripts/explore/stores/controls.jsx:1581
msgid "Default latitude"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1251
+#: superset/assets/javascripts/explore/stores/controls.jsx:1584
msgid "Latitude of default viewport"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1257
+#: superset/assets/javascripts/explore/stores/controls.jsx:1590
msgid "Default longitude"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1260
+#: superset/assets/javascripts/explore/stores/controls.jsx:1593
msgid "Longitude of default viewport"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1266
+#: superset/assets/javascripts/explore/stores/controls.jsx:1599
msgid "Live render"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1268
+#: superset/assets/javascripts/explore/stores/controls.jsx:1601
msgid "Points and clusters will update as viewport is being changed"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1274
+#: superset/assets/javascripts/explore/stores/controls.jsx:1607
msgid "RGB Color"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1284
+#: superset/assets/javascripts/explore/stores/controls.jsx:1617
msgid "The color for points and clusters in RGB"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1289
+#: superset/assets/javascripts/explore/stores/controls.jsx:1622
+msgid "Color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1624
+msgid "Pick a color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1629
msgid "Ranges"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1291
+#: superset/assets/javascripts/explore/stores/controls.jsx:1631
msgid "Ranges to highlight with shading"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1296
+#: superset/assets/javascripts/explore/stores/controls.jsx:1636
msgid "Range labels"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1298
+#: superset/assets/javascripts/explore/stores/controls.jsx:1638
msgid "Labels for the ranges"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1303
+#: superset/assets/javascripts/explore/stores/controls.jsx:1643
msgid "Markers"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1305
+#: superset/assets/javascripts/explore/stores/controls.jsx:1645
msgid "List of values to mark with triangles"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1310
+#: superset/assets/javascripts/explore/stores/controls.jsx:1650
msgid "Marker labels"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1312
+#: superset/assets/javascripts/explore/stores/controls.jsx:1652
msgid "Labels for the markers"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1317
+#: superset/assets/javascripts/explore/stores/controls.jsx:1657
msgid "Marker lines"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1319
+#: superset/assets/javascripts/explore/stores/controls.jsx:1659
msgid "List of values to mark with lines"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1324
+#: superset/assets/javascripts/explore/stores/controls.jsx:1664
msgid "Marker line labels"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1326
+#: superset/assets/javascripts/explore/stores/controls.jsx:1666
msgid "Labels for the marker lines"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1353
+#: superset/assets/javascripts/explore/stores/controls.jsx:1701
msgid "Slice ID"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1355
+#: superset/assets/javascripts/explore/stores/controls.jsx:1703
msgid "The id of the active slice"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1360
+#: superset/assets/javascripts/explore/stores/controls.jsx:1708
msgid "Cache Timeout (seconds)"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1362
+#: superset/assets/javascripts/explore/stores/controls.jsx:1710
msgid "The number of seconds before expiring the cache"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1367
+#: superset/assets/javascripts/explore/stores/controls.jsx:1715
msgid "Order by entity id"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1368
+#: superset/assets/javascripts/explore/stores/controls.jsx:1716
msgid ""
"Important! Select this if the table is not already sorted by entity id, "
"else there is no guarantee that all events for each entity are returned."
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1376
+#: superset/assets/javascripts/explore/stores/controls.jsx:1724
msgid "Minimum leaf node event count"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1379
-msgid ""
-"Leaf nodes that represent fewer than this number of events will be "
-"initially hidden in the visualization"
+#: superset/assets/javascripts/explore/stores/controls.jsx:1727
+msgid ""
+"Leaf nodes that represent fewer than this number of events will be "
+"initially hidden in the visualization"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1733
+#: superset/assets/javascripts/explore/stores/visTypes.js:25
+msgid "Color Scheme"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1737
+msgid "The color scheme for rendering chart"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1743
+msgid "Significance Level"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1745
+msgid "Threshold alpha level for determining significance"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1750
+msgid "p-value precision"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1752
+msgid "Number of decimal places with which to display p-values"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1757
+msgid "Lift percent precision"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1759
+msgid "Number of decimal places with which to display lift values"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1764
+msgid "Time Series Columns"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1771
+msgid "Use Area Proportions"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1772
+msgid ""
+"Check if the Rose Chart should use segment area instead of segment radius"
+" for proportioning"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1782
+#: superset/assets/javascripts/explore/stores/visTypes.js:742
+#: superset/assets/javascripts/explore/stores/visTypes.js:859
+#: superset/assets/javascripts/explore/stores/visTypes.js:908
+#: superset/assets/javascripts/explore/stores/visTypes.js:1172
+#: superset/assets/javascripts/explore/stores/visTypes.js:1236
+#: superset/assets/javascripts/explore/stores/visTypes.js:1327
+#: superset/assets/javascripts/explore/stores/visTypes.js:1349
+msgid "Options"
+msgstr "Opzioni"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1788
+msgid "Not Time Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1790
+msgid "Ignore time"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1793
+msgid "Time Series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1795
+msgid "Standard time series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1798
+msgid "Aggregate Mean"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1800
+msgid "Mean of values over specified period"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1803
+msgid "Aggregate Sum"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1805
+msgid "Sum of values over specified period"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1808
+msgid "Difference"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1810
+msgid "Metric change in value from `since` to `until`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1813
+msgid "Percent Change"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1815
+msgid "Metric percent change in value from `since` to `until`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1818
+msgid "Factor"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1820
+msgid "Metric factor change from `since` to `until`"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1823
+#: superset/assets/javascripts/explore/stores/visTypes.js:66
+msgid "Advanced Analytics"
+msgstr "Analytics avanzate"
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1825
+msgid "Use the Advanced Analytics options below"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1830
+msgid "Settings for time series"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1835
+msgid "Equal Date Sizes"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1838
+msgid "Check to force date partitions to have the same height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1843
+msgid "Partition Limit"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1847
+msgid ""
+"The maximum number of subdivisions of each group; lower values are pruned"
+" first"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1853
+msgid "Partition Threshold"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1857
+msgid ""
+"Partitions whose height to parent height proportions are below this value"
+" are pruned"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1863
+msgid "Lines column"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1865
+msgid "The database columns that contains lines information"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1873
+msgid "Lines encoding"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1876
+msgid "The encoding format of the lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1885
+msgid "Line width"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1889
+msgid "The width of the lines"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1894
+msgid "Reverse Lat & Long"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1901
+msgid "deck.gl charts"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1904
+msgid "Pick a set of deck.gl charts to layer on top of one another"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1906
+msgid "Select charts"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1907
+msgid "Error while fetching charts"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1917
+msgid "Javascript data interceptor"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1918
+msgid ""
+"Define a javascript function that receives the data array used in the "
+"visualization and is expected to return a modified version of that array."
+" This can be used to alter properties of the data, filter, or enrich the "
+"array."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1924
+msgid "Javascript data mutator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1925
+msgid ""
+"Define a function that receives intercepts the data objects and can "
+"mutate it"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1929
+msgid "Javascript tooltip generator"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1930
+msgid ""
+"Define a function that receives the input and outputs the content for a "
+"tooltip"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1934
+msgid "Javascript onClick href"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1935
+msgid "Define a function that returns a URL to navigate to when user clicks"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1940
+msgid "Extra data for JS"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1942
+msgid "List of extra columns made available in Javascript functions"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1947
+msgid "Stroked"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/controls.jsx:1949
+msgid "Whether to display the stroke"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1385
-#: superset/assets/javascripts/explore/stores/visTypes.js:25
-msgid "Color Scheme"
+#: superset/assets/javascripts/explore/stores/controls.jsx:1955
+msgid "Filled"
msgstr ""
-#: superset/assets/javascripts/explore/stores/controls.jsx:1389
-msgid "The color scheme for rendering chart"
+#: superset/assets/javascripts/explore/stores/controls.jsx:1957
+msgid "Whether to fill the objects"
msgstr ""
#: superset/assets/javascripts/explore/stores/visTypes.js:7
@@ -2290,14 +3199,9 @@ msgid "This section exposes ways to include snippets of SQL in your query"
msgstr ""
#: superset/assets/javascripts/explore/stores/visTypes.js:48
-#: superset/views/annotations.py:55
-msgid "Annotations"
+msgid "Annotations and Layers"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:66
-msgid "Advanced Analytics"
-msgstr "Analytics avanzate"
-
#: superset/assets/javascripts/explore/stores/visTypes.js:67
msgid ""
"This section contains options that allow for advanced analytical post "
@@ -2314,327 +3218,417 @@ msgid ""
" to filter empty strings or nulls"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:100
-#: superset/assets/javascripts/explore/stores/visTypes.js:109
-#: superset/assets/javascripts/explore/stores/visTypes.js:145
-#: superset/assets/javascripts/explore/stores/visTypes.js:163
-#: superset/assets/javascripts/explore/stores/visTypes.js:202
-#: superset/assets/javascripts/explore/stores/visTypes.js:244
-#: superset/assets/javascripts/explore/stores/visTypes.js:279
-#: superset/assets/javascripts/explore/stores/visTypes.js:302
-#: superset/assets/javascripts/explore/stores/visTypes.js:465
-#: superset/assets/javascripts/explore/stores/visTypes.js:513
-#: superset/assets/javascripts/explore/stores/visTypes.js:534
-#: superset/assets/javascripts/explore/stores/visTypes.js:658
-#: superset/assets/javascripts/explore/stores/visTypes.js:691
-#: superset/assets/javascripts/explore/stores/visTypes.js:728
-#: superset/assets/javascripts/explore/stores/visTypes.js:781
-#: superset/assets/javascripts/explore/stores/visTypes.js:993
+#: superset/assets/javascripts/explore/stores/visTypes.js:110
+#: superset/assets/javascripts/explore/stores/visTypes.js:146
+#: superset/assets/javascripts/explore/stores/visTypes.js:164
+#: superset/assets/javascripts/explore/stores/visTypes.js:211
+#: superset/assets/javascripts/explore/stores/visTypes.js:247
+#: superset/assets/javascripts/explore/stores/visTypes.js:289
+#: superset/assets/javascripts/explore/stores/visTypes.js:324
+#: superset/assets/javascripts/explore/stores/visTypes.js:688
+#: superset/assets/javascripts/explore/stores/visTypes.js:881
+#: superset/assets/javascripts/explore/stores/visTypes.js:929
+#: superset/assets/javascripts/explore/stores/visTypes.js:950
+#: superset/assets/javascripts/explore/stores/visTypes.js:1001
+#: superset/assets/javascripts/explore/stores/visTypes.js:1023
+#: superset/assets/javascripts/explore/stores/visTypes.js:1048
+#: superset/assets/javascripts/explore/stores/visTypes.js:1074
+#: superset/assets/javascripts/explore/stores/visTypes.js:1107
+#: superset/assets/javascripts/explore/stores/visTypes.js:1145
+#: superset/assets/javascripts/explore/stores/visTypes.js:1198
+#: superset/assets/javascripts/explore/stores/visTypes.js:1409
+#: superset/assets/javascripts/explore/stores/visTypes.js:1557
+#: superset/assets/javascripts/explore/stores/visTypes.js:1582
msgid "Chart Options"
msgstr "Opzioni del grafico"
-#: superset/assets/javascripts/explore/stores/visTypes.js:126
+#: superset/assets/javascripts/explore/stores/visTypes.js:127
msgid "Breakdowns"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:127
+#: superset/assets/javascripts/explore/stores/visTypes.js:128
msgid "Defines how each series is broken down"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:133
+#: superset/assets/javascripts/explore/stores/visTypes.js:134
msgid "Pie Chart"
msgstr "Grafico a torta"
-#: superset/assets/javascripts/explore/stores/visTypes.js:198
+#: superset/assets/javascripts/explore/stores/visTypes.js:199
+msgid "Time Series - Periodicity Pivot"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:243
msgid "Dual Axis Line Chart"
msgstr "Grafico lineare a due assi"
-#: superset/assets/javascripts/explore/stores/visTypes.js:209
+#: superset/assets/javascripts/explore/stores/visTypes.js:254
msgid "Y Axis 1"
msgstr "Asse Y 1"
-#: superset/assets/javascripts/explore/stores/visTypes.js:215
+#: superset/assets/javascripts/explore/stores/visTypes.js:260
msgid "Y Axis 2"
msgstr "Asse Y 2"
-#: superset/assets/javascripts/explore/stores/visTypes.js:224
+#: superset/assets/javascripts/explore/stores/visTypes.js:269
msgid "Left Axis Metric"
msgstr "Metrica asse sinistro"
-#: superset/assets/javascripts/explore/stores/visTypes.js:225
+#: superset/assets/javascripts/explore/stores/visTypes.js:270
msgid "Choose a metric for left axis"
msgstr "Seleziona una metrica per l'asse sinistro"
-#: superset/assets/javascripts/explore/stores/visTypes.js:228
+#: superset/assets/javascripts/explore/stores/visTypes.js:273
msgid "Left Axis Format"
msgstr "Formato asse sinistro"
-#: superset/assets/javascripts/explore/stores/visTypes.js:254
-#: superset/assets/javascripts/explore/stores/visTypes.js:312
+#: superset/assets/javascripts/explore/stores/visTypes.js:299
+#: superset/assets/javascripts/explore/stores/visTypes.js:698
msgid "Axes"
msgstr "Assi"
-#: superset/assets/javascripts/explore/stores/visTypes.js:337
+#: superset/assets/javascripts/explore/stores/visTypes.js:346
+#: superset/assets/javascripts/explore/stores/visTypes.js:369
+#: superset/assets/javascripts/explore/stores/visTypes.js:407
+#: superset/assets/javascripts/explore/stores/visTypes.js:446
+#: superset/assets/javascripts/explore/stores/visTypes.js:479
+#: superset/assets/javascripts/explore/stores/visTypes.js:522
+#: superset/assets/javascripts/explore/stores/visTypes.js:562
+#: superset/assets/javascripts/explore/stores/visTypes.js:602
+#: superset/assets/javascripts/explore/stores/visTypes.js:640
+msgid "Map"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:357
+msgid "Deck.gl - Hexagons"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:377
+#: superset/assets/javascripts/explore/stores/visTypes.js:415
+#: superset/assets/javascripts/explore/stores/visTypes.js:455
+#: superset/assets/javascripts/explore/stores/visTypes.js:492
+#: superset/assets/javascripts/explore/stores/visTypes.js:538
+#: superset/assets/javascripts/explore/stores/visTypes.js:578
+#: superset/assets/javascripts/explore/stores/visTypes.js:616
+#: superset/assets/javascripts/explore/stores/visTypes.js:662
+msgid "Advanced"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:389
+#: superset/assets/javascripts/explore/stores/visTypes.js:427
+msgid "Metric used to control height"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:395
+msgid "Deck.gl - Grid"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:467
+msgid "Deck.gl - Screen grid"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:486
+msgid "Grid"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:503
+msgid "Weight"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:504
+msgid "Metric used as a weight for the grid's coloring"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:511
+msgid "Deck.gl - geoJson"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:529
+msgid "GeoJson Settings"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:569
+msgid "Polygon Settings"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:609
+msgid "Arc"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:655
+msgid "Point Color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:673
+msgid "Categorical Color"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:674
+msgid "Pick a dimension from which categorical colors are defined"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:723
msgid "GROUP BY"
msgstr "RAGGRUPPA PER"
-#: superset/assets/javascripts/explore/stores/visTypes.js:338
+#: superset/assets/javascripts/explore/stores/visTypes.js:724
msgid "Use this section if you want a query that aggregates"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:346
+#: superset/assets/javascripts/explore/stores/visTypes.js:734
msgid "NOT GROUPED BY"
msgstr "NON RAGGRUPPARE PER"
-#: superset/assets/javascripts/explore/stores/visTypes.js:347
+#: superset/assets/javascripts/explore/stores/visTypes.js:735
msgid "Use this section if you want to query atomic rows"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:354
-#: superset/assets/javascripts/explore/stores/visTypes.js:755
-#: superset/assets/javascripts/explore/stores/visTypes.js:819
-#: superset/assets/javascripts/explore/stores/visTypes.js:912
-msgid "Options"
-msgstr "Opzioni"
+#: superset/assets/javascripts/explore/stores/visTypes.js:761
+msgid "Time Series Table"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:779
+msgid ""
+"Templated link, it's possible to include {{ metric }} or other values "
+"coming from the controls."
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:812
+msgid "Pivot Options"
+msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:541
-#: superset/assets/javascripts/explore/stores/visTypes.js:853
+#: superset/assets/javascripts/explore/stores/visTypes.js:957
+#: superset/assets/javascripts/explore/stores/visTypes.js:1271
msgid "Bubbles"
msgstr "Bolle"
-#: superset/assets/javascripts/explore/stores/visTypes.js:667
+#: superset/assets/javascripts/explore/stores/visTypes.js:1083
msgid "Numeric Column"
msgstr "Colonne numeriche"
-#: superset/assets/javascripts/explore/stores/visTypes.js:668
+#: superset/assets/javascripts/explore/stores/visTypes.js:1084
msgid "Select the numeric column to draw the histogram"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:671
+#: superset/assets/javascripts/explore/stores/visTypes.js:1087
msgid "No of Bins"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:672
+#: superset/assets/javascripts/explore/stores/visTypes.js:1088
msgid "Select number of bins for the histogram"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:699
+#: superset/assets/javascripts/explore/stores/visTypes.js:1115
msgid "Primary Metric"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:700
+#: superset/assets/javascripts/explore/stores/visTypes.js:1116
msgid "The primary metric is used to define the arc segment sizes"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:703
+#: superset/assets/javascripts/explore/stores/visTypes.js:1119
msgid "Secondary Metric"
msgstr "Metrica secondaria"
-#: superset/assets/javascripts/explore/stores/visTypes.js:704
+#: superset/assets/javascripts/explore/stores/visTypes.js:1121
msgid ""
-"This secondary metric is used to define the color as a ratio against the "
-"primary metric. If the two metrics match, color is mapped level groups"
+"[optional] this secondary metric is used to define the color as a ratio "
+"against the primary metric. When omitted, the color is categorical and "
+"based on labels"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:709
+#: superset/assets/javascripts/explore/stores/visTypes.js:1126
msgid "Hierarchy"
msgstr "Gerarchia"
-#: superset/assets/javascripts/explore/stores/visTypes.js:710
+#: superset/assets/javascripts/explore/stores/visTypes.js:1127
msgid "This defines the level of the hierarchy"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:736
-#: superset/assets/javascripts/explore/stores/visTypes.js:764
+#: superset/assets/javascripts/explore/stores/visTypes.js:1153
+#: superset/assets/javascripts/explore/stores/visTypes.js:1181
msgid "Source / Target"
msgstr "Sorgente / Destinazione"
-#: superset/assets/javascripts/explore/stores/visTypes.js:737
-#: superset/assets/javascripts/explore/stores/visTypes.js:765
+#: superset/assets/javascripts/explore/stores/visTypes.js:1154
+#: superset/assets/javascripts/explore/stores/visTypes.js:1182
msgid "Choose a source and a target"
msgstr "Seleziona una sorgente ed una destinazione"
-#: superset/assets/javascripts/explore/stores/visTypes.js:770
+#: superset/assets/javascripts/explore/stores/visTypes.js:1187
msgid "Chord Diagram"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:791
+#: superset/assets/javascripts/explore/stores/visTypes.js:1208
msgid "Choose a number format"
msgstr "Seleziona una formato numerico"
-#: superset/assets/javascripts/explore/stores/visTypes.js:794
+#: superset/assets/javascripts/explore/stores/visTypes.js:1211
msgid "Source"
msgstr "Sorgente"
-#: superset/assets/javascripts/explore/stores/visTypes.js:797
+#: superset/assets/javascripts/explore/stores/visTypes.js:1214
msgid "Choose a source"
msgstr "Seleziona una sorgente"
-#: superset/assets/javascripts/explore/stores/visTypes.js:800
+#: superset/assets/javascripts/explore/stores/visTypes.js:1217
msgid "Target"
msgstr "Destinazione"
-#: superset/assets/javascripts/explore/stores/visTypes.js:803
+#: superset/assets/javascripts/explore/stores/visTypes.js:1220
msgid "Choose a target"
msgstr "Seleziona una destinazione"
-#: superset/assets/javascripts/explore/stores/visTypes.js:828
+#: superset/assets/javascripts/explore/stores/visTypes.js:1246
msgid "ISO 3166-2 codes of region/province/department"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:829
+#: superset/assets/javascripts/explore/stores/visTypes.js:1247
msgid ""
"It's ISO 3166-2 of your region/province/department in your table. (see "
"documentation for list of ISO 3166-2)"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:863
+#: superset/assets/javascripts/explore/stores/visTypes.js:1281
msgid "Country Control"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:864
+#: superset/assets/javascripts/explore/stores/visTypes.js:1282
msgid "3 letter code of the country"
msgstr "Codice a 3 lettere della nazione"
-#: superset/assets/javascripts/explore/stores/visTypes.js:867
+#: superset/assets/javascripts/explore/stores/visTypes.js:1285
msgid "Metric for color"
msgstr "Metrica per il colore"
-#: superset/assets/javascripts/explore/stores/visTypes.js:868
+#: superset/assets/javascripts/explore/stores/visTypes.js:1286
msgid "Metric that defines the color of the country"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:871
+#: superset/assets/javascripts/explore/stores/visTypes.js:1289
msgid "Bubble size"
msgstr "Grandezza della bolla"
-#: superset/assets/javascripts/explore/stores/visTypes.js:872
+#: superset/assets/javascripts/explore/stores/visTypes.js:1290
msgid "Metric that defines the size of the bubble"
msgstr "Metrica che definisce la grandezza di una bolla"
-#: superset/assets/javascripts/explore/stores/visTypes.js:878
+#: superset/assets/javascripts/explore/stores/visTypes.js:1296
msgid "Filter Box"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:897
+#: superset/assets/javascripts/explore/stores/visTypes.js:1312
msgid "Filter controls"
msgstr "Controlli del filtro"
-#: superset/assets/javascripts/explore/stores/visTypes.js:898
+#: superset/assets/javascripts/explore/stores/visTypes.js:1313
msgid ""
"The controls you want to filter on. Note that only columns checked as "
"\"filterable\" will show up on this list."
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:954
+#: superset/assets/javascripts/explore/stores/visTypes.js:1369
msgid "Heatmap Options"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:989
+#: superset/assets/javascripts/explore/stores/visTypes.js:1390
+msgid "Value bounds"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1399
+msgid "Value Format"
+msgstr ""
+
+#: superset/assets/javascripts/explore/stores/visTypes.js:1405
msgid "Horizon"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1015
+#: superset/assets/javascripts/explore/stores/visTypes.js:1431
msgid "Points"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1022
+#: superset/assets/javascripts/explore/stores/visTypes.js:1438
msgid "Labelling"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1029
+#: superset/assets/javascripts/explore/stores/visTypes.js:1445
msgid "Visual Tweaks"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1038
-msgid "Viewport"
-msgstr ""
-
-#: superset/assets/javascripts/explore/stores/visTypes.js:1048
-msgid "Longitude"
-msgstr "Longitudine"
-
-#: superset/assets/javascripts/explore/stores/visTypes.js:1049
+#: superset/assets/javascripts/explore/stores/visTypes.js:1464
msgid "Column containing longitude data"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1052
-msgid "Latitude"
-msgstr "Latitudine"
-
-#: superset/assets/javascripts/explore/stores/visTypes.js:1053
+#: superset/assets/javascripts/explore/stores/visTypes.js:1468
msgid "Column containing latitude data"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1056
+#: superset/assets/javascripts/explore/stores/visTypes.js:1471
msgid "Cluster label aggregator"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1057
+#: superset/assets/javascripts/explore/stores/visTypes.js:1472
msgid ""
"Aggregate function applied to the list of points in each cluster to "
"produce the cluster label."
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1061
+#: superset/assets/javascripts/explore/stores/visTypes.js:1476
msgid "Tooltip"
msgstr "Suggerimento"
-#: superset/assets/javascripts/explore/stores/visTypes.js:1062
+#: superset/assets/javascripts/explore/stores/visTypes.js:1477
msgid "Show a tooltip when hovering over points and clusters describing the label"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1066
+#: superset/assets/javascripts/explore/stores/visTypes.js:1481
msgid ""
"One or many controls to group by. If grouping, latitude and longitude "
"columns must be present."
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1077
+#: superset/assets/javascripts/explore/stores/visTypes.js:1492
msgid "Event definition"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1087
+#: superset/assets/javascripts/explore/stores/visTypes.js:1502
msgid "Additional meta data"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1095
+#: superset/assets/javascripts/explore/stores/visTypes.js:1510
msgid "Column containing entity ids"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1096
+#: superset/assets/javascripts/explore/stores/visTypes.js:1511
msgid "e.g., a \"user id\" column"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1099
+#: superset/assets/javascripts/explore/stores/visTypes.js:1514
msgid "Column containing event names"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1107
+#: superset/assets/javascripts/explore/stores/visTypes.js:1522
msgid "Event count limit"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1108
+#: superset/assets/javascripts/explore/stores/visTypes.js:1523
msgid "The maximum number of events to return, equivalent to number of rows"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1111
+#: superset/assets/javascripts/explore/stores/visTypes.js:1526
msgid "Meta data"
msgstr ""
-#: superset/assets/javascripts/explore/stores/visTypes.js:1112
+#: superset/assets/javascripts/explore/stores/visTypes.js:1527
msgid "Select any columns for meta data inspection"
msgstr ""
-#: superset/assets/javascripts/modules/superset.js:130
-msgid ""
-"The server could not be reached. You may want to verify your connection "
-"and try again."
+#: superset/assets/javascripts/explore/stores/visTypes.js:1539
+msgid "Paired t-test"
msgstr ""
-#: superset/assets/javascripts/modules/superset.js:133
-#, python-format
-msgid "An unknown error occurred. (Status: %s )"
+#: superset/assets/javascripts/explore/stores/visTypes.js:1575
+msgid "Time Series Options"
msgstr ""
#: superset/assets/javascripts/profile/components/App.jsx:24
@@ -2663,47 +3657,49 @@ msgstr ""
#: superset/assets/javascripts/profile/components/CreatedContent.jsx:58
#: superset/assets/javascripts/profile/components/Favorites.jsx:59
-#: superset/templates/superset/welcome.html:13 superset/views/core.py:372
-#: superset/views/core.py:532
+#: superset/views/core.py:447 superset/views/core.py:616
msgid "Dashboards"
msgstr "Elenco Dashboard"
#: superset/assets/javascripts/profile/components/CreatedContent.jsx:61
-#: superset/assets/javascripts/profile/components/Favorites.jsx:62
-#: superset/views/core.py:408 superset/views/core.py:477
msgid "Slices"
msgstr "Slice"
#: superset/assets/javascripts/profile/components/Favorites.jsx:34
-msgid "No favorite slices yet, go click on stars!"
+msgid "No favorite charts yet, go click on stars!"
msgstr ""
#: superset/assets/javascripts/profile/components/Favorites.jsx:50
msgid "No favorite dashboards yet, go click on stars!"
msgstr ""
+#: superset/assets/javascripts/profile/components/Favorites.jsx:62
+#: superset/views/core.py:488 superset/views/core.py:561
+msgid "Charts"
+msgstr "Grafici"
+
#: superset/assets/javascripts/profile/components/Security.jsx:14
msgid "Roles"
-msgstr ""
+msgstr "Ruoli"
#: superset/assets/javascripts/profile/components/Security.jsx:23
-#: superset/views/core.py:284
+#: superset/views/core.py:303
msgid "Databases"
-msgstr ""
+msgstr "Basi di dati"
#: superset/assets/javascripts/profile/components/Security.jsx:34
msgid "Datasources"
msgstr ""
-#: superset/assets/javascripts/profile/components/UserInfo.jsx:18
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:19
msgid "Profile picture provided by Gravatar"
msgstr ""
-#: superset/assets/javascripts/profile/components/UserInfo.jsx:33
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:34
msgid "joined"
msgstr ""
-#: superset/assets/javascripts/profile/components/UserInfo.jsx:43
+#: superset/assets/javascripts/profile/components/UserInfo.jsx:44
msgid "id:"
msgstr ""
@@ -2711,57 +3707,73 @@ msgstr ""
msgid "Sorry, there appears to be no data"
msgstr ""
-#: superset/assets/visualizations/filter_box.jsx:106
+#: superset/assets/visualizations/PlaySlider.jsx:99
+msgid "Data has no time steps"
+msgstr ""
+
+#: superset/assets/visualizations/filter_box.jsx:115
+msgid "Select starting date"
+msgstr "Seleziona data iniziale"
+
+#: superset/assets/visualizations/filter_box.jsx:124
+msgid "Select end date"
+msgstr "Seleziona data finale"
+
+#: superset/assets/visualizations/filter_box.jsx:193
#, python-format
msgid "Select [%s]"
msgstr ""
-#: superset/connectors/druid/models.py:1073
+#: superset/assets/visualizations/filter_box.jsx:230
+msgid "Apply"
+msgstr "Applica"
+
+#: superset/connectors/druid/models.py:1230
msgid "No data was returned."
msgstr "Nessun dato restituito."
-#: superset/connectors/druid/views.py:28
+#: superset/connectors/druid/views.py:26
msgid "List Druid Column"
msgstr ""
-#: superset/connectors/druid/views.py:29
+#: superset/connectors/druid/views.py:27
msgid "Show Druid Column"
msgstr ""
-#: superset/connectors/druid/views.py:30
+#: superset/connectors/druid/views.py:28
msgid "Add Druid Column"
msgstr ""
-#: superset/connectors/druid/views.py:31
+#: superset/connectors/druid/views.py:29
msgid "Edit Druid Column"
msgstr ""
-#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:80
+#: superset/connectors/druid/views.py:43 superset/connectors/sqla/views.py:76
msgid "Column"
msgstr "Colonna"
-#: superset/connectors/druid/views.py:44 superset/connectors/druid/views.py:109
-#: superset/connectors/sqla/views.py:94 superset/connectors/sqla/views.py:133
+#: superset/connectors/druid/views.py:44 superset/connectors/druid/views.py:129
+#: superset/connectors/sqla/views.py:90 superset/connectors/sqla/views.py:131
msgid "Type"
msgstr "Tipo"
-#: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:83
+#: superset/connectors/druid/views.py:46 superset/connectors/sqla/views.py:79
msgid "Groupable"
msgstr "Raggruppabile"
-#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:84
+#: superset/connectors/druid/views.py:47 superset/connectors/sqla/views.py:80
msgid "Filterable"
msgstr "Filtrabile"
-#: superset/connectors/druid/views.py:48 superset/connectors/sqla/views.py:86
+#: superset/connectors/druid/views.py:48 superset/connectors/sqla/views.py:82
msgid "Count Distinct"
msgstr "Count Distinct"
-#: superset/connectors/druid/views.py:49 superset/connectors/sqla/views.py:87
+#: superset/connectors/druid/views.py:49 superset/connectors/sqla/views.py:83
msgid "Sum"
msgstr "Sum"
-#: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:49
+#: superset/connectors/druid/views.py:54 superset/connectors/sqla/views.py:45
msgid ""
"Whether this column is exposed in the `Filters` section of the explore "
"view."
@@ -2769,23 +3781,23 @@ msgstr ""
"Se questa colonna è esposta nella sezione `Filtri` della vista "
"esplorazione."
-#: superset/connectors/druid/views.py:80
+#: superset/connectors/druid/views.py:100
msgid "List Druid Metric"
msgstr ""
-#: superset/connectors/druid/views.py:81
+#: superset/connectors/druid/views.py:101
msgid "Show Druid Metric"
msgstr ""
-#: superset/connectors/druid/views.py:82
+#: superset/connectors/druid/views.py:102
msgid "Add Druid Metric"
msgstr ""
-#: superset/connectors/druid/views.py:83
+#: superset/connectors/druid/views.py:103
msgid "Edit Druid Metric"
msgstr ""
-#: superset/connectors/druid/views.py:100 superset/connectors/sqla/views.py:115
+#: superset/connectors/druid/views.py:120 superset/connectors/sqla/views.py:113
msgid ""
"Whether the access to this metric is restricted to certain roles. Only "
"roles with the permission 'metric access on XXX (the name of this "
@@ -2795,97 +3807,97 @@ msgstr ""
"ruoli con l'autorizzazione 'accesso metrico su XXX (il nome di questa "
"metrica)' possono accedervi"
-#: superset/connectors/druid/views.py:108 superset/connectors/sqla/views.py:81
-#: superset/connectors/sqla/views.py:132
+#: superset/connectors/druid/views.py:128 superset/connectors/sqla/views.py:77
+#: superset/connectors/sqla/views.py:130
msgid "Verbose Name"
msgstr "Nome Completo"
-#: superset/connectors/druid/views.py:110 superset/views/core.py:559
+#: superset/connectors/druid/views.py:130 superset/views/core.py:658
msgid "JSON"
msgstr "JSON"
-#: superset/connectors/druid/views.py:111
+#: superset/connectors/druid/views.py:131
msgid "Druid Datasource"
msgstr "Sorgente Dati Druid"
-#: superset/connectors/druid/views.py:112 superset/connectors/sqla/views.py:138
+#: superset/connectors/druid/views.py:132 superset/connectors/sqla/views.py:136
msgid "Warning Message"
msgstr ""
-#: superset/connectors/druid/views.py:129
+#: superset/connectors/druid/views.py:150
msgid "List Druid Cluster"
msgstr ""
-#: superset/connectors/druid/views.py:130
+#: superset/connectors/druid/views.py:151
msgid "Show Druid Cluster"
msgstr ""
-#: superset/connectors/druid/views.py:131
+#: superset/connectors/druid/views.py:152
msgid "Add Druid Cluster"
msgstr ""
-#: superset/connectors/druid/views.py:132
+#: superset/connectors/druid/views.py:153
msgid "Edit Druid Cluster"
msgstr ""
-#: superset/connectors/druid/views.py:143
-#: superset/connectors/druid/views.py:227
+#: superset/connectors/druid/views.py:164
+#: superset/connectors/druid/views.py:250
msgid "Cluster"
msgstr "Cluster"
-#: superset/connectors/druid/views.py:144
+#: superset/connectors/druid/views.py:165
msgid "Coordinator Host"
msgstr "Host Coordinatore"
-#: superset/connectors/druid/views.py:145
+#: superset/connectors/druid/views.py:166
msgid "Coordinator Port"
msgstr "Porta Coordinatore"
-#: superset/connectors/druid/views.py:146
+#: superset/connectors/druid/views.py:167
msgid "Coordinator Endpoint"
msgstr "Endpoint Coordinatore"
-#: superset/connectors/druid/views.py:147
+#: superset/connectors/druid/views.py:168
msgid "Broker Host"
msgstr "Host Broker"
-#: superset/connectors/druid/views.py:148
+#: superset/connectors/druid/views.py:169
msgid "Broker Port"
msgstr "Porta Broker"
-#: superset/connectors/druid/views.py:149
+#: superset/connectors/druid/views.py:170
msgid "Broker Endpoint"
msgstr "Endpoint Broker"
-#: superset/connectors/druid/views.py:164
+#: superset/connectors/druid/views.py:186
msgid "Druid Clusters"
msgstr ""
-#: superset/connectors/druid/views.py:167
-#: superset/connectors/druid/views.py:267
-#: superset/connectors/druid/views.py:315
-#: superset/connectors/druid/views.py:323 superset/connectors/sqla/views.py:281
-#: superset/views/core.py:287
+#: superset/connectors/druid/views.py:189
+#: superset/connectors/druid/views.py:291
+#: superset/connectors/druid/views.py:340
+#: superset/connectors/druid/views.py:348 superset/connectors/sqla/views.py:298
+#: superset/views/core.py:306 superset/views/core.py:2693
msgid "Sources"
-msgstr ""
+msgstr "Sorgenti"
-#: superset/connectors/druid/views.py:174
+#: superset/connectors/druid/views.py:197
msgid "List Druid Datasource"
msgstr ""
-#: superset/connectors/druid/views.py:175
+#: superset/connectors/druid/views.py:198
msgid "Show Druid Datasource"
msgstr ""
-#: superset/connectors/druid/views.py:176
+#: superset/connectors/druid/views.py:199
msgid "Add Druid Datasource"
msgstr ""
-#: superset/connectors/druid/views.py:177
+#: superset/connectors/druid/views.py:200
msgid "Edit Druid Datasource"
msgstr ""
-#: superset/connectors/druid/views.py:196 superset/connectors/sqla/views.py:176
+#: superset/connectors/druid/views.py:219 superset/connectors/sqla/views.py:176
msgid ""
"The list of slices associated with this table. By altering this "
"datasource, you may change how these associated slices behave. Also note "
@@ -2900,11 +3912,11 @@ msgstr ""
"qualora si modifica un'origine dati. Se vuoi modificare l'origine dati "
"per una slide, devi sovrascriverla dal 'vista di esplorazione'"
-#: superset/connectors/druid/views.py:204 superset/connectors/sqla/views.py:184
+#: superset/connectors/druid/views.py:227 superset/connectors/sqla/views.py:184
msgid "Timezone offset (in hours) for this datasource"
msgstr "Timezone offset (in ore) per questa sorgente dati"
-#: superset/connectors/druid/views.py:208
+#: superset/connectors/druid/views.py:231
msgid ""
"Time expression to use as a predicate when retrieving distinct values to "
"populate the filter component. Only applies when `Enable Filter Select` "
@@ -2917,7 +3929,7 @@ msgstr ""
"inserisce `7 giorni fa`, l'elenco distinto di valori nel filtro verrà "
"popolato in base al valore distinto della settimana passata"
-#: superset/connectors/druid/views.py:215 superset/connectors/sqla/views.py:206
+#: superset/connectors/druid/views.py:238 superset/connectors/sqla/views.py:206
msgid ""
"Whether to populate the filter's dropdown in the explore view's filter "
"section with a list of distinct values fetched from the backend on the "
@@ -2926,7 +3938,7 @@ msgstr ""
"Usato per popolare la finestra a cascata dei filtri dall'elenco dei "
"valori distinti prelevati dal backend al volo"
-#: superset/connectors/druid/views.py:219
+#: superset/connectors/druid/views.py:242
msgid ""
"Redirects to this endpoint when clicking on the datasource from the "
"datasource list"
@@ -2934,52 +3946,52 @@ msgstr ""
"Rinvia a questo endpoint al clic sulla sorgente dati dall'elenco delle "
"sorgenti dati"
-#: superset/connectors/druid/views.py:225 superset/connectors/sqla/views.py:213
-msgid "Associated Slices"
-msgstr "Slice associate"
+#: superset/connectors/druid/views.py:248 superset/connectors/sqla/views.py:213
+msgid "Associated Charts"
+msgstr ""
-#: superset/connectors/druid/views.py:226
+#: superset/connectors/druid/views.py:249
msgid "Data Source"
msgstr "Sorgente Dati"
-#: superset/connectors/druid/views.py:229 superset/connectors/sqla/views.py:225
+#: superset/connectors/druid/views.py:252 superset/connectors/sqla/views.py:225
msgid "Owner"
msgstr "Proprietario"
-#: superset/connectors/druid/views.py:230
+#: superset/connectors/druid/views.py:253
msgid "Is Hidden"
msgstr "è nascosto"
-#: superset/connectors/druid/views.py:231 superset/connectors/sqla/views.py:218
+#: superset/connectors/druid/views.py:254 superset/connectors/sqla/views.py:218
msgid "Enable Filter Select"
msgstr "Abilita il filtro di Select"
-#: superset/connectors/druid/views.py:232 superset/connectors/sqla/views.py:220
+#: superset/connectors/druid/views.py:255 superset/connectors/sqla/views.py:220
msgid "Default Endpoint"
msgstr "Endpoint predefinito"
-#: superset/connectors/druid/views.py:233
+#: superset/connectors/druid/views.py:256
msgid "Time Offset"
msgstr "Offset temporale"
-#: superset/connectors/druid/views.py:234 superset/connectors/sqla/views.py:222
-#: superset/views/core.py:251 superset/views/core.py:370
+#: superset/connectors/druid/views.py:257 superset/connectors/sqla/views.py:222
+#: superset/views/core.py:269 superset/views/core.py:445
msgid "Cache Timeout"
msgstr "Cache Timeout"
-#: superset/connectors/druid/views.py:265
+#: superset/connectors/druid/views.py:289
msgid "Druid Datasources"
msgstr ""
-#: superset/connectors/druid/views.py:312
+#: superset/connectors/druid/views.py:337
msgid "Scan New Datasources"
msgstr ""
-#: superset/connectors/druid/views.py:320
+#: superset/connectors/druid/views.py:345
msgid "Refresh Druid Metadata"
msgstr ""
-#: superset/connectors/sqla/models.py:394
+#: superset/connectors/sqla/models.py:478
msgid ""
"Datetime column not provided as part table configuration and is required "
"by this type of chart"
@@ -2987,37 +3999,38 @@ msgstr ""
"la colonna Datetime è necessaria per questo tipo di grafico. Nella "
"configurazione della tabella però non è stata definita"
-#: superset/connectors/sqla/models.py:398
+#: superset/connectors/sqla/models.py:482
msgid "Empty query?"
-msgstr ""
+msgstr "Query vuota?"
-#: superset/connectors/sqla/models.py:401
+#: superset/connectors/sqla/models.py:485
msgid "Metric '{}' is not valid"
msgstr "Metrica '{}' non valida"
-#: superset/connectors/sqla/models.py:590
+#: superset/connectors/sqla/models.py:712
msgid ""
"Table [{}] doesn't seem to exist in the specified database, couldn't "
"fetch column information"
-msgstr ""
+msgstr "La tabella [{}] non sembra esistere nel database specificato, non posso "
+"recuperare le informazioni sulla colonna "
-#: superset/connectors/sqla/views.py:27
+#: superset/connectors/sqla/views.py:23
msgid "List Columns"
-msgstr ""
+msgstr "Visualizza colonne"
-#: superset/connectors/sqla/views.py:28
+#: superset/connectors/sqla/views.py:24
msgid "Show Column"
-msgstr ""
+msgstr "Mostra colonna"
-#: superset/connectors/sqla/views.py:29
+#: superset/connectors/sqla/views.py:25
msgid "Add Column"
-msgstr ""
+msgstr "Aggiungi colonna"
-#: superset/connectors/sqla/views.py:30
+#: superset/connectors/sqla/views.py:26
msgid "Edit Column"
-msgstr ""
+msgstr "Edita colonna"
-#: superset/connectors/sqla/views.py:45
+#: superset/connectors/sqla/views.py:41
msgid ""
"Whether to make this column available as a [Time Granularity] option, "
"column has to be DATETIME or DATETIME-like"
@@ -3025,7 +4038,7 @@ msgstr ""
"Se rendere disponibile questa colonna come opzione [Time Granularity], la"
" colonna deve essere di tipo DATETIME o simile"
-#: superset/connectors/sqla/views.py:52
+#: superset/connectors/sqla/views.py:48
msgid ""
"The data type that was inferred by the database. It may be necessary to "
"input a type manually for expression-defined columns in some cases. In "
@@ -3036,65 +4049,65 @@ msgstr ""
"dall'espressione. Nella maggior parte dei casi gli utenti non hanno "
"bisogno di fare questa modifica."
-#: superset/connectors/sqla/views.py:90
+#: superset/connectors/sqla/views.py:86
msgid "Expression"
msgstr "Espressione"
-#: superset/connectors/sqla/views.py:91
+#: superset/connectors/sqla/views.py:87
msgid "Is temporal"
msgstr "è temporale"
-#: superset/connectors/sqla/views.py:92
+#: superset/connectors/sqla/views.py:88
msgid "Datetime Format"
msgstr "Formato Datetime"
-#: superset/connectors/sqla/views.py:93
+#: superset/connectors/sqla/views.py:89
msgid "Database Expression"
msgstr "Espressione del Database"
-#: superset/connectors/sqla/views.py:102
+#: superset/connectors/sqla/views.py:100
msgid "List Metrics"
-msgstr ""
+msgstr "Lista Metriche"
-#: superset/connectors/sqla/views.py:103
+#: superset/connectors/sqla/views.py:101
msgid "Show Metric"
-msgstr ""
+msgstr "Mostra metrica"
-#: superset/connectors/sqla/views.py:104
+#: superset/connectors/sqla/views.py:102
msgid "Add Metric"
-msgstr ""
+msgstr "Aggiungi metrica"
-#: superset/connectors/sqla/views.py:105
+#: superset/connectors/sqla/views.py:103
msgid "Edit Metric"
-msgstr ""
+msgstr "Modifica metrica"
-#: superset/connectors/sqla/views.py:134
+#: superset/connectors/sqla/views.py:132
msgid "SQL Expression"
msgstr "Espressione SQL"
-#: superset/connectors/sqla/views.py:136
+#: superset/connectors/sqla/views.py:134
msgid "D3 Format"
-msgstr ""
+msgstr "Formato D3"
-#: superset/connectors/sqla/views.py:137
+#: superset/connectors/sqla/views.py:135
msgid "Is Restricted"
msgstr ""
-#: superset/connectors/sqla/views.py:155
+#: superset/connectors/sqla/views.py:154
msgid "List Tables"
-msgstr ""
+msgstr "Visualizza Tabelle"
-#: superset/connectors/sqla/views.py:156
+#: superset/connectors/sqla/views.py:155
msgid "Show Table"
-msgstr ""
+msgstr "Mostra Tabelle"
-#: superset/connectors/sqla/views.py:157
+#: superset/connectors/sqla/views.py:156
msgid "Add Table"
-msgstr ""
+msgstr "Aggiungi Tabella"
-#: superset/connectors/sqla/views.py:158
+#: superset/connectors/sqla/views.py:157
msgid "Edit Table"
-msgstr ""
+msgstr "Modifica Tabella"
#: superset/connectors/sqla/views.py:185
msgid "Name of the table that exists in the source database"
@@ -3133,27 +4146,19 @@ msgstr "Reinvia a questo endpoint al clic sulla tabella dall'elenco delle tabell
msgid "Changed By"
msgstr "Modificato da"
-#: superset/connectors/sqla/views.py:216 superset/views/core.py:247
-#: superset/views/sql_lab.py:19 superset/views/sql_lab.py:55
+#: superset/connectors/sqla/views.py:216 superset/views/core.py:265
+#: superset/views/sql_lab.py:17 superset/views/sql_lab.py:54
msgid "Database"
msgstr "Database"
-#: superset/connectors/sqla/views.py:217 superset/views/core.py:249
+#: superset/connectors/sqla/views.py:217 superset/views/core.py:267
msgid "Last Changed"
msgstr "Ultima Modifica"
-#: superset/connectors/sqla/views.py:219
-msgid "Schema"
-msgstr "Schema"
-
#: superset/connectors/sqla/views.py:221
msgid "Offset"
msgstr "Offset"
-#: superset/connectors/sqla/views.py:223
-msgid "Table Name"
-msgstr ""
-
#: superset/connectors/sqla/views.py:224
msgid "Fetch Values Predicate"
msgstr ""
@@ -3177,10 +4182,23 @@ msgstr ""
"fasi, è necessario andare sul pulsante di modifica della nuova tabella "
"per configurarla."
+#: superset/connectors/sqla/views.py:278
+msgid "Refresh Metadata"
+msgstr ""
+
#: superset/connectors/sqla/views.py:279
-msgid "Tables"
+msgid "Refresh column metadata"
+msgstr ""
+
+#: superset/connectors/sqla/views.py:288
+#, python-format
+msgid "Metadata refreshed for the following table(s): %(tables)s"
msgstr ""
+#: superset/connectors/sqla/views.py:296
+msgid "Tables"
+msgstr "Tabelle"
+
#: superset/templates/appbuilder/navbar_right.html:41
msgid "Profile"
msgstr "Profilo"
@@ -3199,11 +4217,11 @@ msgstr ""
#: superset/templates/appbuilder/general/widgets/base_list.html:46
msgid "No records found"
-msgstr ""
+msgstr "Nessun record trovato"
#: superset/templates/superset/import_dashboards.html:11
msgid "Import"
-msgstr ""
+msgstr "Importa"
#: superset/templates/superset/request_access.html:2
msgid "No Access!"
@@ -3218,92 +4236,108 @@ msgstr "Non hai i permessi per accedere alla/e sorgente/i dati: %(name)s."
msgid "Request Permissions"
msgstr "Richiesta di Permessi"
-#: superset/templates/superset/welcome.html:3
-msgid "Welcome!"
-msgstr ""
-
#: superset/templates/superset/models/database/macros.html:4
msgid "Test Connection"
msgstr "Testa la Connessione"
+#: superset/views/annotations.py:47
+msgid "Annotation Layers"
+msgstr ""
+
#: superset/views/annotations.py:50 superset/views/annotations.py:58
-#: superset/views/core.py:277 superset/views/core.py:2371
-#: superset/views/sql_lab.py:30
+#: superset/views/core.py:296 superset/views/core.py:2661
+#: superset/views/sql_lab.py:29
msgid "Manage"
+msgstr "Gestisci"
+
+#: superset/views/annotations.py:55
+msgid "Annotations"
msgstr ""
-#: superset/views/base.py:62
+#: superset/views/base.py:74
#, python-format
msgid "Datasource %(name)s already exists"
msgstr ""
-#: superset/views/base.py:221
+#: superset/views/base.py:233
msgid "json isn't valid"
-msgstr ""
+msgstr "json non è valido"
+
+#: superset/views/base.py:237
+msgid "Export to YAML"
+msgstr "Esporta in YAML"
+
+#: superset/views/base.py:237
+msgid "Export to YAML?"
+msgstr "Esporta in YAML?"
-#: superset/views/base.py:272
+#: superset/views/base.py:297
msgid "Delete"
-msgstr ""
+msgstr "Cancella"
-#: superset/views/base.py:273
+#: superset/views/base.py:298
msgid "Delete all Really?"
msgstr ""
-#: superset/views/core.py:56
+#: superset/views/core.py:61
msgid "This endpoint requires the `all_datasource_access` permission"
msgstr ""
-#: superset/views/core.py:58
+#: superset/views/core.py:63
msgid "The datasource seems to have been deleted"
msgstr ""
-#: superset/views/core.py:59
+#: superset/views/core.py:64
msgid "The access requests seem to have been deleted"
msgstr ""
-#: superset/views/core.py:61
+#: superset/views/core.py:66
msgid "The user seems to have been deleted"
msgstr ""
-#: superset/views/core.py:62
+#: superset/views/core.py:71
+msgid "You don't have access to this datasource. (Gain access)"
+msgstr ""
+
+#: superset/views/core.py:74
msgid "You don't have access to this datasource"
msgstr ""
-#: superset/views/core.py:66
+#: superset/views/core.py:86
#, python-format
msgid ""
"This view requires the database %(name)s or `all_datasource_access` "
"permission"
msgstr ""
-#: superset/views/core.py:71
+#: superset/views/core.py:91
#, python-format
msgid ""
"This endpoint requires the datasource %(name)s, database or "
"`all_datasource_access` permission"
msgstr ""
-#: superset/views/core.py:174
+#: superset/views/core.py:185
msgid "List Databases"
-msgstr ""
+msgstr "Visualizza i database"
-#: superset/views/core.py:175
+#: superset/views/core.py:186
msgid "Show Database"
-msgstr ""
+msgstr "Mostra database"
-#: superset/views/core.py:176
+#: superset/views/core.py:187
msgid "Add Database"
-msgstr ""
+msgstr "Aggiungi Database"
-#: superset/views/core.py:177
+#: superset/views/core.py:188
msgid "Edit Database"
-msgstr ""
+msgstr "Mostra database"
-#: superset/views/core.py:212
+#: superset/views/core.py:227
msgid "Expose this DB in SQL Lab"
msgstr "Esponi questo DB in SQL Lab"
-#: superset/views/core.py:213
+#: superset/views/core.py:228
msgid ""
"Allow users to run synchronous queries, this is the default and should "
"work well for queries that can be executed within a web request scope "
@@ -3313,7 +4347,7 @@ msgstr ""
"predefinita e dovrebbe funzionare bene per query che possono essere "
"eseguite con una richiesta web (<-1 minuto)"
-#: superset/views/core.py:217
+#: superset/views/core.py:232
msgid ""
"Allow users to run queries, against an async backend. This assumes that "
"you have a Celery worker setup as well as a results backend."
@@ -3322,11 +4356,11 @@ msgstr ""
"Questo presuppone che si abbia una installazione funzionante di Celery "
"nel backend."
-#: superset/views/core.py:221
+#: superset/views/core.py:236
msgid "Allow CREATE TABLE AS option in SQL Lab"
msgstr "Permetti l'opzione CREATE TABLE AS in SQL Lab"
-#: superset/views/core.py:222
+#: superset/views/core.py:237
msgid ""
"Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in"
" SQL Lab"
@@ -3334,7 +4368,7 @@ msgstr ""
"Permetti agli utenti di eseguire dichiarazioni diverse da SELECT (UPDATE,"
" DELETE, CREATE, ...) nel SQL Lab"
-#: superset/views/core.py:226
+#: superset/views/core.py:241
msgid ""
"When allowing CREATE TABLE AS option in SQL Lab, this option forces the "
"table to be created in this schema"
@@ -3342,103 +4376,114 @@ msgstr ""
"Se si abilita l'opzione CREATE TABLE AS in SQL Lab, verrà forzata la "
"creazione della tabella con questo schema"
-#: superset/views/core.py:238
+#: superset/views/core.py:253
msgid ""
-"All the queries in Sql Lab are going to be executed on behalf of "
-"currently authorized user."
+"If Presto, all the queries in SQL Lab are going to be executed as the "
+"currently logged on user who must have permission to run them.
If "
+"Hive and hive.server2.enable.doAs is enabled, will run the queries as "
+"service account, but impersonate the currently logged on user via "
+"hive.server2.proxy.user property."
msgstr ""
-#: superset/views/core.py:243
+#: superset/views/core.py:261
msgid "Expose in SQL Lab"
msgstr "Esponi in SQL Lab"
-#: superset/views/core.py:244
+#: superset/views/core.py:262
msgid "Allow CREATE TABLE AS"
msgstr "Permetti CREATE TABLE AS"
-#: superset/views/core.py:245
+#: superset/views/core.py:263
msgid "Allow DML"
msgstr "Permetti DML"
-#: superset/views/core.py:246
+#: superset/views/core.py:264
msgid "CTAS Schema"
msgstr "Schema CTAS"
-#: superset/views/core.py:248 superset/views/core.py:371
-#: superset/views/core.py:479 superset/views/core.py:543
+#: superset/views/core.py:266 superset/views/core.py:446
+#: superset/views/core.py:563 superset/views/core.py:630
msgid "Creator"
msgstr "Creatore"
-#: superset/views/core.py:250
+#: superset/views/core.py:268
msgid "SQLAlchemy URI"
msgstr "URI SQLAlchemy"
-#: superset/views/core.py:252
+#: superset/views/core.py:270
msgid "Extra"
msgstr "Extra"
-#: superset/views/core.py:253
+#: superset/views/core.py:271
msgid "Allow Run Sync"
msgstr ""
-#: superset/views/core.py:254
+#: superset/views/core.py:272
msgid "Allow Run Async"
msgstr ""
-#: superset/views/core.py:255
-msgid "Impersonate queries to the database"
+#: superset/views/core.py:273
+msgid "Impersonate the logged on user"
msgstr ""
-#: superset/views/core.py:273
+#: superset/views/core.py:292
msgid "Import Dashboards"
+msgstr "Importa dashboard"
+
+#: superset/views/core.py:323
+msgid "CSV to Database configuration"
+msgstr ""
+
+#: superset/views/core.py:363
+msgid "CSV file \"{0}\" uploaded to table \"{1}\" in database \"{2}\""
msgstr ""
-#: superset/views/core.py:315 superset/views/core.py:556
-#: superset/views/sql_lab.py:18 superset/views/sql_lab.py:54
+#: superset/views/core.py:389 superset/views/core.py:655
+#: superset/views/sql_lab.py:16 superset/views/sql_lab.py:53
msgid "User"
msgstr "Utente"
-#: superset/views/core.py:316
+#: superset/views/core.py:390
msgid "User Roles"
msgstr "Ruoli Utente"
-#: superset/views/core.py:317
+#: superset/views/core.py:391
msgid "Database URL"
msgstr "URL del Database"
-#: superset/views/core.py:319
+#: superset/views/core.py:393
msgid "Roles to grant"
msgstr "Ruoli per l'accesso"
-#: superset/views/core.py:320
+#: superset/views/core.py:394
msgid "Created On"
msgstr "Creato il"
-#: superset/views/core.py:326
+#: superset/views/core.py:400
msgid "Access requests"
msgstr ""
-#: superset/views/core.py:328 superset/views/core.py:567
+#: superset/views/core.py:402 superset/views/core.py:667
msgid "Security"
-msgstr ""
+msgstr "Sicurezza"
-#: superset/views/core.py:335
-msgid "List Slices"
-msgstr ""
+#: superset/views/core.py:409
+msgid "List Charts"
+msgstr "Visualizza grafici"
-#: superset/views/core.py:336
-msgid "Show Slice"
-msgstr ""
+#: superset/views/core.py:410
+msgid "Show Chart"
+msgstr "Mostra grafico"
-#: superset/views/core.py:337
-msgid "Add Slice"
-msgstr ""
+#: superset/views/core.py:411
+msgid "Add Chart"
+msgstr "Aggiungi grafico"
-#: superset/views/core.py:338
-msgid "Edit Slice"
-msgstr ""
+#: superset/views/core.py:412
+msgid "Edit Chart"
+msgstr "Modifica grafico"
-#: superset/views/core.py:359
+#: superset/views/core.py:434
msgid ""
"These parameters are generated dynamically when clicking the save or "
"overwrite button in the explore view. This JSON object is exposed here "
@@ -3450,43 +4495,43 @@ msgstr ""
"JSON è esposto qui per referenza e per utenti esperti che vogliono "
"modificare parametri specifici."
-#: superset/views/core.py:364
+#: superset/views/core.py:440
msgid "Duration (in seconds) of the caching timeout for this slice."
msgstr "Durata (in secondi) per il timeout della cache per questa slice."
-#: superset/views/core.py:375
+#: superset/views/core.py:450
msgid "Last Modified"
msgstr "Ultima Modifica"
-#: superset/views/core.py:376 superset/views/core.py:478
+#: superset/views/core.py:451 superset/views/core.py:562
msgid "Owners"
msgstr "Proprietari"
-#: superset/views/core.py:377
+#: superset/views/core.py:452
msgid "Parameters"
msgstr "Parametri"
-#: superset/views/core.py:378 superset/views/core.py:420
-msgid "Slice"
-msgstr "Slice"
+#: superset/views/core.py:453 superset/views/core.py:500
+msgid "Chart"
+msgstr ""
-#: superset/views/core.py:437
+#: superset/views/core.py:520
msgid "List Dashboards"
msgstr ""
-#: superset/views/core.py:438
+#: superset/views/core.py:521
msgid "Show Dashboard"
msgstr ""
-#: superset/views/core.py:439
+#: superset/views/core.py:522
msgid "Add Dashboard"
msgstr ""
-#: superset/views/core.py:440
+#: superset/views/core.py:523
msgid "Edit Dashboard"
msgstr ""
-#: superset/views/core.py:451
+#: superset/views/core.py:535
msgid ""
"This json object describes the positioning of the widgets in the "
"dashboard. It is dynamically generated when adjusting the widgets size "
@@ -3497,7 +4542,7 @@ msgstr ""
"la dimensione usando la funzione di drag & drop nella vista della "
"dashboard. "
-#: superset/views/core.py:456
+#: superset/views/core.py:540
msgid ""
"The css for individual dashboards can be altered here, or in the "
"dashboard view where changes are immediately visible"
@@ -3505,11 +4550,11 @@ msgstr ""
"Il CSS di ogni singola dashboard può essere modificato qui, oppure nella "
"vista della dashboard dove i cambiamenti sono visibili immediatamente"
-#: superset/views/core.py:460
+#: superset/views/core.py:544
msgid "To get a readable URL for your dashboard"
msgstr "ottenere una URL leggibile per la tua dashboard"
-#: superset/views/core.py:461
+#: superset/views/core.py:545
msgid ""
"This JSON object is generated dynamically when clicking the save or "
"overwrite button in the dashboard view. It is exposed here for reference "
@@ -3520,163 +4565,188 @@ msgstr ""
"qui come riferimento e per gli utenti esperti che vogliono modificare "
"parametri specifici."
-#: superset/views/core.py:466
+#: superset/views/core.py:550
msgid "Owners is a list of users who can alter the dashboard."
msgstr "Proprietari è una lista di utenti che può alterare la dashboard."
-#: superset/views/core.py:474 superset/views/core.py:541
+#: superset/views/core.py:558 superset/views/core.py:628
msgid "Dashboard"
msgstr "Dashboard"
-#: superset/views/core.py:476
+#: superset/views/core.py:560
msgid "Slug"
msgstr "Slug"
-#: superset/views/core.py:481
+#: superset/views/core.py:565
msgid "Position JSON"
msgstr "Posizione del JSON"
-#: superset/views/core.py:483
+#: superset/views/core.py:567
msgid "JSON Metadata"
msgstr "Metadati JSON"
-#: superset/views/core.py:484
+#: superset/views/core.py:568
msgid "Underlying Tables"
msgstr "Tabelle sottostanti"
-#: superset/views/core.py:507
+#: superset/views/core.py:591
msgid "Export"
msgstr ""
-#: superset/views/core.py:507
+#: superset/views/core.py:591
msgid "Export dashboards?"
msgstr ""
-#: superset/views/core.py:557
+#: superset/views/core.py:656
msgid "Action"
msgstr "Azione"
-#: superset/views/core.py:558
+#: superset/views/core.py:657
msgid "dttm"
msgstr "dttm"
-#: superset/views/core.py:565
+#: superset/views/core.py:665
msgid "Action Log"
msgstr ""
-#: superset/views/core.py:796
+#: superset/views/core.py:852
msgid "Access was requested"
msgstr ""
-#: superset/views/core.py:857
+#: superset/views/core.py:913
#, python-format
msgid ""
"%(user)s was granted the role %(role)s that gives access to the "
"%(datasource)s"
msgstr ""
-#: superset/views/core.py:873
+#: superset/views/core.py:929
#, python-format
msgid "Role %(r)s was extended to provide the access to the datasource %(ds)s"
msgstr ""
-#: superset/views/core.py:882
+#: superset/views/core.py:938
msgid "You have no permission to approve this request"
msgstr ""
-#: superset/views/core.py:1646
+#: superset/views/core.py:1230 superset/views/core.py:1235
+#: superset/views/core.py:1343 superset/views/core.py:1357
+msgid "You don't have the rights to "
+msgstr ""
+
+#: superset/views/core.py:1230 superset/views/core.py:1343
+msgid "alter this "
+msgstr ""
+
+#: superset/views/core.py:1230 superset/views/core.py:1235
+msgid "chart"
+msgstr ""
+
+#: superset/views/core.py:1235 superset/views/core.py:1357
+msgid "create a "
+msgstr ""
+
+#: superset/views/core.py:1344 superset/views/core.py:1357
+msgid "dashboard"
+msgstr ""
+
+#: superset/views/core.py:1904
msgid ""
"Malformed request. slice_id or table_name and db_name arguments are "
"expected"
msgstr ""
-#: superset/views/core.py:1652
+#: superset/views/core.py:1910
#, python-format
msgid "Slice %(id)s not found"
msgstr ""
-#: superset/views/core.py:1664
+#: superset/views/core.py:1922
#, python-format
msgid "Table %(t)s wasn't found in the database %(d)s"
msgstr ""
-#: superset/views/core.py:1803
+#: superset/views/core.py:2071
#, python-format
msgid "Can't find User '%(name)s', please ask your admin to create one."
msgstr ""
-#: superset/views/core.py:1810
+#: superset/views/core.py:2078
#, python-format
msgid "Can't find DruidCluster with cluster_name = '%(name)s'"
msgstr ""
-#: superset/views/core.py:2071
+#: superset/views/core.py:2350
msgid "Query record was not created as expected."
msgstr ""
-#: superset/views/core.py:2357
+#: superset/views/core.py:2646
msgid "Template Name"
msgstr ""
-#: superset/views/core.py:2368
+#: superset/views/core.py:2658
msgid "CSS Templates"
-msgstr ""
+msgstr "Template CSS"
-#: superset/views/core.py:2379
+#: superset/views/core.py:2669
msgid "SQL Editor"
msgstr "Editor SQL"
-#: superset/views/core.py:2384 superset/views/core.py:2393
+#: superset/views/core.py:2674 superset/views/core.py:2684
msgid "SQL Lab"
msgstr ""
-#: superset/views/core.py:2388
+#: superset/views/core.py:2679
msgid "Query Search"
msgstr "Ricerca Query"
-#: superset/views/sql_lab.py:20
+#: superset/views/core.py:2689
+msgid "Upload a CSV"
+msgstr ""
+
+#: superset/views/sql_lab.py:18
msgid "Status"
msgstr ""
-#: superset/views/sql_lab.py:21
+#: superset/views/sql_lab.py:19
msgid "Start Time"
msgstr ""
-#: superset/views/sql_lab.py:22 superset/views/sql_lab.py:58
+#: superset/views/sql_lab.py:20 superset/views/sql_lab.py:57
msgid "End Time"
msgstr ""
-#: superset/views/sql_lab.py:28
+#: superset/views/sql_lab.py:27
msgid "Queries"
msgstr ""
-#: superset/views/sql_lab.py:37
+#: superset/views/sql_lab.py:36
msgid "List Saved Query"
-msgstr ""
+msgstr "Visualizza query salvate"
-#: superset/views/sql_lab.py:38
+#: superset/views/sql_lab.py:37
msgid "Show Saved Query"
-msgstr ""
+msgstr "Mostra query salvate"
-#: superset/views/sql_lab.py:39
+#: superset/views/sql_lab.py:38
msgid "Add Saved Query"
-msgstr ""
+msgstr "Aggiungi query salvata"
-#: superset/views/sql_lab.py:40
+#: superset/views/sql_lab.py:39
msgid "Edit Saved Query"
-msgstr ""
+msgstr "Modifica query salvata"
-#: superset/views/sql_lab.py:59
+#: superset/views/sql_lab.py:58
msgid "Pop Tab Link"
msgstr ""
-#: superset/views/sql_lab.py:60
+#: superset/views/sql_lab.py:59
msgid "Changed on"
-msgstr ""
+msgstr "Cambiato il"
#: superset/views/sql_lab.py:79
msgid "Saved Queries"
-msgstr ""
+msgstr "Query salvate"
#~ msgid "Your query was saved"
#~ msgstr ""
@@ -3688,7 +4758,7 @@ msgstr ""
#~ msgstr ""
#~ msgid "Could not connect to server"
-#~ msgstr ""
+#~ msgstr "Non posso connettermi al server"
#~ msgid "Your session timed out, please refresh your page and try again."
#~ msgstr ""
@@ -4205,7 +5275,7 @@ msgstr ""
#~ msgstr ""
#~ msgid "Select %s"
-#~ msgstr ""
+#~ msgstr "Seleziona %s"
#~ msgid "textarea"
#~ msgstr ""
@@ -5350,3 +6420,48 @@ msgstr ""
#~ msgid "Select [%s]"
#~ msgstr ""
+#~ msgid "Please choose at least one \"Group by\" field "
+#~ msgstr "Seleziona almeno un campo \"Group by\""
+
+#~ msgid "'Group By' and 'Columns' can't overlap"
+#~ msgstr "'Group by' e 'Colonne' non possono sovrapporsi"
+
+#~ msgid "Annotation layers to overlay on the visualization"
+#~ msgstr ""
+
+#~ msgid "Select a annotation layer"
+#~ msgstr ""
+
+#~ msgid "Error while fetching annotation layers"
+#~ msgstr ""
+
+#~ msgid "Associated Slices"
+#~ msgstr "Slice associate"
+
+#~ msgid "Welcome!"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "All the queries in Sql Lab are "
+#~ "going to be executed on behalf of"
+#~ " currently authorized user."
+#~ msgstr ""
+
+#~ msgid "Impersonate queries to the database"
+#~ msgstr ""
+
+#~ msgid "List Slices"
+#~ msgstr ""
+
+#~ msgid "Show Slice"
+#~ msgstr ""
+
+#~ msgid "Add Slice"
+#~ msgstr ""
+
+#~ msgid "Edit Slice"
+#~ msgstr ""
+
+#~ msgid "Slice"
+#~ msgstr "Slice"
+
diff --git a/superset/translations/utils.py b/superset/translations/utils.py
index 56839f5e3017e..fb4f8404ee778 100644
--- a/superset/translations/utils.py
+++ b/superset/translations/utils.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
diff --git a/superset/utils.py b/superset/utils.py
index f4fcd93d07687..c60f128d0e603 100644
--- a/superset/utils.py
+++ b/superset/utils.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Utility functions used across Superset"""
from __future__ import absolute_import
from __future__ import division
diff --git a/superset/views/__init__.py b/superset/views/__init__.py
index c61472739814b..ab93a55ce7c13 100644
--- a/superset/views/__init__.py
+++ b/superset/views/__init__.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from . import base # noqa
from . import core # noqa
from . import sql_lab # noqa
diff --git a/superset/views/annotations.py b/superset/views/annotations.py
index e11a412b78b13..dea84561df4d1 100644
--- a/superset/views/annotations.py
+++ b/superset/views/annotations.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
diff --git a/superset/views/base.py b/superset/views/base.py
index 7e0edc476d47c..9ff883fcc6d15 100644
--- a/superset/views/base.py
+++ b/superset/views/base.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from datetime import datetime
import functools
import json
diff --git a/superset/views/core.py b/superset/views/core.py
index e5a6bf052f1dc..5b0ee5f3bc104 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -1,9 +1,9 @@
+# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
-from collections import defaultdict
from datetime import datetime, timedelta
import json
import logging
@@ -20,7 +20,6 @@
from flask_appbuilder.actions import action
from flask_appbuilder.models.sqla.interface import SQLAInterface
from flask_appbuilder.security.decorators import has_access_api
-from flask_appbuilder.security.sqla import models as ab_models
from flask_babel import gettext as __
from flask_babel import lazy_gettext as _
import pandas as pd
@@ -50,6 +49,7 @@
generate_download_headers, get_error_msg, get_user_roles,
json_error_response, SupersetFilter, SupersetModelView, YamlExportMixin,
)
+from .utils import bootstrap_user_data
config = app.config
stats_logger = config.get('STATS_LOGGER')
@@ -349,8 +349,8 @@ def form_post(self, form):
os.remove(os.path.join(config['UPLOAD_FOLDER'], csv_filename))
except OSError:
pass
- message = u'Table name {} already exists. Please pick another'.format(
- form.name.data) if isinstance(e, IntegrityError) else text_type(e)
+ message = 'Table name {} already exists. Please pick another'.format(
+ form.name.data) if isinstance(e, IntegrityError) else text_type(e)
flash(
message,
'danger')
@@ -359,7 +359,7 @@ def form_post(self, form):
os.remove(os.path.join(config['UPLOAD_FOLDER'], csv_filename))
# Go back to welcome page / splash screen
db_name = table.database.database_name
- message = _(u'CSV file "{0}" uploaded to table "{1}" in '
+ message = _('CSV file "{0}" uploaded to table "{1}" in '
'database "{2}"'.format(csv_filename,
form.name.data,
db_name))
@@ -842,6 +842,15 @@ def request_access(self):
.one()
)
datasources.add(datasource)
+
+ has_access = all(
+ (
+ datasource and self.datasource_access(datasource)
+ for datasource in datasources
+ ))
+ if has_access:
+ return redirect('/superset/dashboard/{}'.format(dashboard_id))
+
if request.args.get('action') == 'go':
for datasource in datasources:
access_request = DAR(
@@ -943,24 +952,39 @@ def clean_fulfilled_requests(session):
session.commit()
return redirect('/accessrequestsmodelview/list/')
- def get_form_data(self):
- d = {}
+ def get_form_data(self, slice_id=None):
+ form_data = {}
post_data = request.form.get('form_data')
request_args_data = request.args.get('form_data')
# Supporting POST
if post_data:
- d.update(json.loads(post_data))
+ form_data.update(json.loads(post_data))
# request params can overwrite post body
if request_args_data:
- d.update(json.loads(request_args_data))
+ form_data.update(json.loads(request_args_data))
if request.args.get('viz_type'):
# Converting old URLs
- d = cast_form_data(d)
+ form_data = cast_form_data(form_data)
- d = {k: v for k, v in d.items() if k not in FORM_DATA_KEY_BLACKLIST}
+ form_data = {
+ k: v
+ for k, v in form_data.items()
+ if k not in FORM_DATA_KEY_BLACKLIST
+ }
- return d
+ # When a slice_id is present, load from DB and override
+ # the form_data from the DB with the other form_data provided
+ slice_id = form_data.get('slice_id') or slice_id
+ slc = None
+ if slice_id:
+ slc = db.session.query(models.Slice).filter_by(id=slice_id).first()
+ slice_form_data = slc.form_data.copy()
+ # allow form_data in request override slice from_data
+ slice_form_data.update(form_data)
+ form_data = slice_form_data
+
+ return form_data, slc
def get_viz(
self,
@@ -991,12 +1015,10 @@ def get_viz(
@has_access
@expose('/slice//')
def slice(self, slice_id):
- viz_obj = self.get_viz(slice_id)
- endpoint = '/superset/explore/{}/{}?form_data={}'.format(
- viz_obj.datasource.type,
- viz_obj.datasource.id,
- parse.quote(json.dumps(viz_obj.form_data)),
- )
+ form_data, slc = self.get_form_data(slice_id)
+ endpoint = '/superset/explore/?form_data={}'.format(
+ parse.quote(json.dumps(form_data)),
+ )
if request.args.get('standalone') == 'true':
endpoint += '&standalone=true'
return redirect(endpoint)
@@ -1075,10 +1097,7 @@ def slice_json(self, slice_id):
viz_obj = self.get_viz(slice_id)
datasource_type = viz_obj.datasource.type
datasource_id = viz_obj.datasource.id
- form_data = viz_obj.form_data
- # This allows you to override the saved slice form data with
- # data from the current request (e.g. change the time window)
- form_data.update(self.get_form_data())
+ form_data, slc = self.get_form_data()
except Exception as e:
return json_error_response(
utils.error_msg_from_exception(e),
@@ -1091,16 +1110,16 @@ def slice_json(self, slice_id):
@has_access_api
@expose('/annotation_json/')
def annotation_json(self, layer_id):
- form_data = self.get_form_data()
+ form_data = self.get_form_data()[0]
form_data['layer_id'] = layer_id
form_data['filters'] = [{'col': 'layer_id',
'op': '==',
'val': layer_id}]
datasource = AnnotationDatasource()
viz_obj = viz.viz_types['table'](
- datasource,
- form_data=form_data,
- force=False,
+ datasource,
+ form_data=form_data,
+ force=False,
)
try:
payload = viz_obj.get_payload()
@@ -1115,12 +1134,15 @@ def annotation_json(self, layer_id):
@log_this
@has_access_api
@expose('/explore_json///', methods=['GET', 'POST'])
- def explore_json(self, datasource_type, datasource_id):
+ @expose('/explore_json/', methods=['GET', 'POST'])
+ def explore_json(self, datasource_type=None, datasource_id=None):
try:
csv = request.args.get('csv') == 'true'
query = request.args.get('query') == 'true'
force = request.args.get('force') == 'true'
- form_data = self.get_form_data()
+ form_data = self.get_form_data()[0]
+ datasource_id, datasource_type = self.datasource_info(
+ datasource_id, datasource_type, form_data)
except Exception as e:
logging.exception(e)
return json_error_response(
@@ -1157,19 +1179,36 @@ def import_dashboards(self):
@has_access
@expose('/explorev2///')
def explorev2(self, datasource_type, datasource_id):
+ """Deprecated endpoint, here for backward compatibility of urls"""
return redirect(url_for(
'Superset.explore',
datasource_type=datasource_type,
datasource_id=datasource_id,
**request.args))
+ @staticmethod
+ def datasource_info(datasource_id, datasource_type, form_data):
+ """Compatibility layer for handling of datasource info
+
+ datasource_id & datasource_type used to be passed in the URL
+ directory, now they should come as part of the form_data,
+ This function allows supporting both without duplicating code"""
+ datasource = form_data.get('datasource', '')
+ if '__' in datasource:
+ datasource_id, datasource_type = datasource.split('__')
+ datasource_id = int(datasource_id)
+ return datasource_id, datasource_type
+
@log_this
@has_access
@expose('/explore///', methods=['GET', 'POST'])
- def explore(self, datasource_type, datasource_id):
- datasource_id = int(datasource_id)
+ @expose('/explore/', methods=['GET', 'POST'])
+ def explore(self, datasource_type=None, datasource_id=None):
user_id = g.user.get_id() if g.user else None
- form_data = self.get_form_data()
+ form_data, slc = self.get_form_data()
+
+ datasource_id, datasource_type = self.datasource_info(
+ datasource_id, datasource_type, form_data)
saved_url = None
url_id = request.args.get('r')
@@ -1182,14 +1221,6 @@ def explore(self, datasource_type, datasource_id):
# allow form_date in request override saved url
url_form_data.update(form_data)
form_data = url_form_data
- slice_id = form_data.get('slice_id')
- slc = None
- if slice_id:
- slc = db.session.query(models.Slice).filter_by(id=slice_id).first()
- slice_form_data = slc.form_data.copy()
- # allow form_data in request override slice from_data
- slice_form_data.update(form_data)
- form_data = slice_form_data
error_redirect = '/slicemodelview/list/'
datasource = ConnectorRegistry.get_datasource(
@@ -1308,7 +1339,7 @@ def save_or_overwrite_slice(
"""Save or overwrite a slice"""
slice_name = args.get('slice_name')
action = args.get('action')
- form_data = self.get_form_data()
+ form_data, _ = self.get_form_data()
if action in ('saveas'):
if 'slice_id' in form_data:
@@ -1651,6 +1682,12 @@ def testconn(self):
def recent_activity(self, user_id):
"""Recent activity (actions) for a given user"""
M = models # noqa
+
+ if request.args.get('limit'):
+ limit = int(request.args.get('limit'))
+ else:
+ limit = 1000
+
qry = (
db.session.query(M.Log, M.Dashboard, M.Slice)
.outerjoin(
@@ -1668,7 +1705,7 @@ def recent_activity(self, user_id):
),
)
.order_by(M.Log.dttm.desc())
- .limit(1000)
+ .limit(limit)
)
payload = []
for log in qry.all():
@@ -2548,9 +2585,12 @@ def welcome(self):
"""Personalized welcome page"""
if not g.user or not g.user.get_id():
return redirect(appbuilder.get_url_for_login)
+
payload = {
+ 'user': bootstrap_user_data(),
'common': self.common_bootsrap_payload(),
}
+
return self.render_template(
'superset/basic.html',
entry='welcome',
@@ -2564,44 +2604,15 @@ def profile(self, username):
"""User profile page"""
if not username and g.user:
username = g.user.username
- user = (
- db.session.query(ab_models.User)
- .filter_by(username=username)
- .one()
- )
- roles = {}
- permissions = defaultdict(set)
- for role in user.roles:
- perms = set()
- for perm in role.permissions:
- if perm.permission and perm.view_menu:
- perms.add(
- (perm.permission.name, perm.view_menu.name),
- )
- if perm.permission.name in ('datasource_access', 'database_access'):
- permissions[perm.permission.name].add(perm.view_menu.name)
- roles[role.name] = [
- [perm.permission.name, perm.view_menu.name]
- for perm in role.permissions
- if perm.permission and perm.view_menu
- ]
+
payload = {
- 'user': {
- 'username': user.username,
- 'firstName': user.first_name,
- 'lastName': user.last_name,
- 'userId': user.id,
- 'isActive': user.is_active(),
- 'createdOn': user.created_on.isoformat(),
- 'email': user.email,
- 'roles': roles,
- 'permissions': permissions,
- },
+ 'user': bootstrap_user_data(username, include_perms=True),
'common': self.common_bootsrap_payload(),
}
+
return self.render_template(
'superset/basic.html',
- title=user.username + "'s profile",
+ title=username + "'s profile",
entry='profile',
bootstrap_data=json.dumps(payload, default=utils.json_iso_dttm_ser),
)
diff --git a/superset/views/sql_lab.py b/superset/views/sql_lab.py
index 488a36e33c54d..aac1d6d2c1d7d 100644
--- a/superset/views/sql_lab.py
+++ b/superset/views/sql_lab.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from flask import g, redirect
from flask_appbuilder import expose
from flask_appbuilder.models.sqla.interface import SQLAInterface
diff --git a/superset/views/utils.py b/superset/views/utils.py
new file mode 100644
index 0000000000000..b1f3fa2db7ffe
--- /dev/null
+++ b/superset/views/utils.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
+from collections import defaultdict
+
+from flask import g
+from flask_appbuilder.security.sqla import models as ab_models
+
+from superset import db
+
+
+def bootstrap_user_data(username=None, include_perms=False):
+ if username:
+ username = username
+ else:
+ username = g.user.username
+
+ user = (
+ db.session.query(ab_models.User)
+ .filter_by(username=username)
+ .one()
+ )
+
+ payload = {
+ 'username': user.username,
+ 'firstName': user.first_name,
+ 'lastName': user.last_name,
+ 'userId': user.id,
+ 'isActive': user.is_active(),
+ 'createdOn': user.created_on.isoformat(),
+ 'email': user.email,
+ }
+
+ if include_perms:
+ roles, permissions = get_permissions(user)
+ payload['roles'] = roles
+ payload['permissions'] = permissions
+
+ return payload
+
+
+def get_permissions(user):
+ if not user.roles:
+ raise AttributeError('User object does not have roles')
+
+ roles = {}
+ permissions = defaultdict(set)
+ for role in user.roles:
+ perms = set()
+ for perm in role.permissions:
+ if perm.permission and perm.view_menu:
+ perms.add(
+ (perm.permission.name, perm.view_menu.name),
+ )
+ if perm.permission.name in ('datasource_access',
+ 'database_access'):
+ permissions[perm.permission.name].add(perm.view_menu.name)
+ roles[role.name] = [
+ [perm.permission.name, perm.view_menu.name]
+ for perm in role.permissions
+ if perm.permission and perm.view_menu
+ ]
+
+ return roles, permissions
diff --git a/superset/viz.py b/superset/viz.py
index c1a8d9aa0d7e8..3595ebf767fa0 100644
--- a/superset/viz.py
+++ b/superset/viz.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""This module contains the 'Viz' objects
These objects represent the backend of all the visualizations that
@@ -150,9 +151,6 @@ def get_df(self, query_obj=None):
# If the datetime format is unix, the parse will use the corresponding
# parsing logic.
if df is None or df.empty:
- self.status = utils.QueryStatus.FAILED
- if not self.error_message:
- self.error_message = 'No data.'
return pd.DataFrame()
else:
if DTTM_ALIAS in df.columns:
@@ -289,10 +287,11 @@ def get_payload(self, query_obj=None):
payload = self.get_df_payload(query_obj)
df = payload.get('df')
- if df is not None and len(df.index) == 0:
- raise Exception('No data')
if self.status != utils.QueryStatus.FAILED:
- payload['data'] = self.get_data(df)
+ if df is None or df.empty:
+ payload['error'] = 'No data'
+ else:
+ payload['data'] = self.get_data(df)
if 'df' in payload:
del payload['df']
return payload
@@ -326,8 +325,9 @@ def get_df_payload(self, query_obj=None):
if query_obj and not is_loaded:
try:
df = self.get_df(query_obj)
- stats_logger.incr('loaded_from_source')
- is_loaded = True
+ if self.status != utils.QueryStatus.FAILED:
+ stats_logger.incr('loaded_from_source')
+ is_loaded = True
except Exception as e:
logging.exception(e)
if not self.error_message:
@@ -611,7 +611,7 @@ def query_obj(self):
return None
def get_df(self, query_obj=None):
- return None
+ return pd.DataFrame()
def get_data(self, df):
markup_type = self.form_data.get('markup_type')
diff --git a/tests/access_tests.py b/tests/access_tests.py
index 22231518b626a..39938c9b5534b 100644
--- a/tests/access_tests.py
+++ b/tests/access_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Superset"""
from __future__ import absolute_import
from __future__ import division
diff --git a/tests/base_tests.py b/tests/base_tests.py
index 1b213faed7a5c..dcc67988c3172 100644
--- a/tests/base_tests.py
+++ b/tests/base_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Superset"""
from __future__ import absolute_import
from __future__ import division
diff --git a/tests/celery_tests.py b/tests/celery_tests.py
index 591e7939450f9..172176ebb53b2 100644
--- a/tests/celery_tests.py
+++ b/tests/celery_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Superset Celery worker"""
from __future__ import absolute_import
from __future__ import division
diff --git a/tests/core_tests.py b/tests/core_tests.py
index aa5c3617950e4..43a3bdfc716c7 100644
--- a/tests/core_tests.py
+++ b/tests/core_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Superset"""
from __future__ import absolute_import
from __future__ import division
@@ -96,7 +97,7 @@ def test_cache_key(self):
qobj['groupby'] = []
self.assertNotEqual(cache_key, viz.cache_key(qobj))
- def test_slice_json_endpoint(self):
+ def test_old_slice_json_endpoint(self):
self.login(username='admin')
slc = self.get_slice('Girls', db.session)
@@ -107,7 +108,13 @@ def test_slice_json_endpoint(self):
resp = self.get_resp(json_endpoint, {'form_data': json.dumps(slc.viz.form_data)})
assert '"Jennifer"' in resp
- def test_slice_csv_endpoint(self):
+ def test_slice_json_endpoint(self):
+ self.login(username='admin')
+ slc = self.get_slice('Girls', db.session)
+ resp = self.get_resp(slc.explore_json_url)
+ assert '"Jennifer"' in resp
+
+ def test_old_slice_csv_endpoint(self):
self.login(username='admin')
slc = self.get_slice('Girls', db.session)
@@ -118,6 +125,15 @@ def test_slice_csv_endpoint(self):
resp = self.get_resp(csv_endpoint, {'form_data': json.dumps(slc.viz.form_data)})
assert 'Jennifer,' in resp
+ def test_slice_csv_endpoint(self):
+ self.login(username='admin')
+ slc = self.get_slice('Girls', db.session)
+
+ csv_endpoint = '/superset/explore_json/?csv=true'
+ resp = self.get_resp(
+ csv_endpoint, {'form_data': json.dumps({'slice_id': slc.id})})
+ assert 'Jennifer,' in resp
+
def test_admin_only_permissions(self):
def assert_admin_permission_in(role_name, assert_func):
role = sm.find_role(role_name)
@@ -224,8 +240,8 @@ def test_slices(self):
urls = []
for slc in db.session.query(Slc).all():
urls += [
- (slc.slice_name, 'slice_url', slc.slice_url),
- (slc.slice_name, 'slice_id_url', slc.slice_id_url),
+ (slc.slice_name, 'explore', slc.slice_url),
+ (slc.slice_name, 'explore_json', slc.explore_json_url),
]
for name, method, url in urls:
logging.info('[{name}]/[{method}]: {url}'.format(**locals()))
@@ -878,6 +894,49 @@ def test_comments_in_sqlatable_query(self):
rendered_query = text_type(table.get_from_clause())
self.assertEqual(clean_query, rendered_query)
+ def test_slice_url_overrides(self):
+ # No override
+ self.login(username='admin')
+ slice_name = 'Girls'
+ slc = self.get_slice(slice_name, db.session)
+ resp = self.get_resp(slc.explore_json_url)
+ assert '"Jennifer"' in resp
+
+ # Overriding groupby
+ url = slc.get_explore_url(
+ base_url='/superset/explore_json',
+ overrides={'groupby': ['state']})
+ resp = self.get_resp(url)
+ assert '"CA"' in resp
+
+ def test_slice_payload_no_data(self):
+ self.login(username='admin')
+ slc = self.get_slice('Girls', db.session)
+
+ url = slc.get_explore_url(
+ base_url='/superset/explore_json',
+ overrides={
+ 'filters': [{'col': 'state', 'op': 'in', 'val': ['N/A']}],
+ },
+ )
+
+ data = self.get_json_resp(url)
+ self.assertEqual(data['status'], utils.QueryStatus.SUCCESS)
+ assert 'No data' in data['error']
+
+ def test_slice_payload_invalid_query(self):
+ self.login(username='admin')
+ slc = self.get_slice('Girls', db.session)
+
+ url = slc.get_explore_url(
+ base_url='/superset/explore_json',
+ overrides={'groupby': ['N/A']},
+ )
+
+ data = self.get_json_resp(url)
+ self.assertEqual(data['status'], utils.QueryStatus.FAILED)
+ assert 'KeyError' in data['stacktrace']
+
if __name__ == '__main__':
unittest.main()
diff --git a/tests/db_engine_specs_test.py b/tests/db_engine_specs_test.py
index a2310d1d8098d..1a1282ad1a47f 100644
--- a/tests/db_engine_specs_test.py
+++ b/tests/db_engine_specs_test.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
diff --git a/tests/dict_import_export_tests.py b/tests/dict_import_export_tests.py
index 592930a8af08c..cbe8aa2ea240f 100644
--- a/tests/dict_import_export_tests.py
+++ b/tests/dict_import_export_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Superset"""
from __future__ import absolute_import
from __future__ import division
@@ -11,7 +12,8 @@
from superset import db
from superset.connectors.druid.models import (
- DruidColumn, DruidDatasource, DruidMetric)
+ DruidColumn, DruidDatasource, DruidMetric,
+)
from superset.connectors.sqla.models import SqlaTable, SqlMetric, TableColumn
from .base_tests import SupersetTestCase
@@ -81,12 +83,12 @@ def create_druid_datasource(
cluster_name = 'druid_test'
params = {DBREF: id, 'database_name': cluster_name}
dict_rep = {
- 'cluster_name': cluster_name,
- 'datasource_name': name,
- 'id': id,
- 'params': json.dumps(params),
- 'columns': [{'column_name': c} for c in cols_names],
- 'metrics': [{'metric_name': c} for c in metric_names],
+ 'cluster_name': cluster_name,
+ 'datasource_name': name,
+ 'id': id,
+ 'params': json.dumps(params),
+ 'columns': [{'column_name': c} for c in cols_names],
+ 'metrics': [{'metric_name': c} for c in metric_names],
}
datasource = DruidDatasource(
@@ -180,12 +182,12 @@ def test_import_table_override_append(self):
imported_table = SqlaTable.import_from_dict(db.session, dict_table)
db.session.commit()
table_over, dict_table_over = self.create_table(
- 'table_override', id=ID_PREFIX + 3,
- cols_names=['new_col1', 'col2', 'col3'],
- metric_names=['new_metric1'])
+ 'table_override', id=ID_PREFIX + 3,
+ cols_names=['new_col1', 'col2', 'col3'],
+ metric_names=['new_metric1'])
imported_over_table = SqlaTable.import_from_dict(
- db.session,
- dict_table_over)
+ db.session,
+ dict_table_over)
db.session.commit()
imported_over = self.get_table(imported_over_table.id)
@@ -289,8 +291,8 @@ def test_import_druid_override_append(self):
cols_names=['new_col1', 'col2', 'col3'],
metric_names=['new_metric1'])
imported_over_cluster = DruidDatasource.import_from_dict(
- db.session,
- table_over_dict)
+ db.session,
+ table_over_dict)
db.session.commit()
imported_over = self.get_datasource(imported_over_cluster.id)
self.assertEquals(imported_cluster.id, imported_over.id)
diff --git a/tests/druid_func_tests.py b/tests/druid_func_tests.py
index 3deb3e29afb25..5b535e9b7150b 100644
--- a/tests/druid_func_tests.py
+++ b/tests/druid_func_tests.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
import json
import unittest
diff --git a/tests/druid_tests.py b/tests/druid_tests.py
index ee8cfba5f6f11..fc360b6656bc0 100644
--- a/tests/druid_tests.py
+++ b/tests/druid_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Superset"""
from __future__ import absolute_import
from __future__ import division
@@ -76,6 +77,16 @@ class DruidTests(SupersetTestCase):
def __init__(self, *args, **kwargs):
super(DruidTests, self).__init__(*args, **kwargs)
+ def get_test_cluster_obj(self):
+ return DruidCluster(
+ cluster_name='test_cluster',
+ coordinator_host='localhost',
+ coordinator_endpoint='druid/coordinator/v1/metadata',
+ coordinator_port=7979,
+ broker_host='localhost',
+ broker_port=7980,
+ metadata_last_refreshed=datetime.now())
+
@patch('superset.connectors.druid.models.PyDruid')
def test_client(self, PyDruid):
self.login(username='admin')
@@ -94,13 +105,7 @@ def test_client(self, PyDruid):
db.session.delete(cluster)
db.session.commit()
- cluster = DruidCluster(
- cluster_name='test_cluster',
- coordinator_host='localhost',
- coordinator_port=7979,
- broker_host='localhost',
- broker_port=7980,
- metadata_last_refreshed=datetime.now())
+ cluster = self.get_test_cluster_obj()
db.session.add(cluster)
cluster.get_datasources = PickableMock(return_value=['test_datasource'])
@@ -322,6 +327,21 @@ def test_sync_druid_perm(self, PyDruid):
permission=permission, view_menu=view_menu).first()
assert pv is not None
+ def test_urls(self):
+ cluster = self.get_test_cluster_obj()
+ self.assertEquals(
+ cluster.get_base_url('localhost', '9999'), 'http://localhost:9999')
+ self.assertEquals(
+ cluster.get_base_url('http://localhost', '9999'),
+ 'http://localhost:9999')
+ self.assertEquals(
+ cluster.get_base_url('https://localhost', '9999'),
+ 'https://localhost:9999')
+
+ self.assertEquals(
+ cluster.get_base_coordinator_url(),
+ 'http://localhost:7979/druid/coordinator/v1/metadata')
+
if __name__ == '__main__':
unittest.main()
diff --git a/tests/email_tests.py b/tests/email_tests.py
index f7b33c9c5f5f8..3ee9f3ebf22d7 100644
--- a/tests/email_tests.py
+++ b/tests/email_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for email service in Superset"""
from __future__ import absolute_import
from __future__ import division
diff --git a/tests/import_export_tests.py b/tests/import_export_tests.py
index 245d4199908fa..dc9c4ade5b023 100644
--- a/tests/import_export_tests.py
+++ b/tests/import_export_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Superset"""
from __future__ import absolute_import
from __future__ import division
diff --git a/tests/model_tests.py b/tests/model_tests.py
index 94a5358807135..0b4a16bd450b9 100644
--- a/tests/model_tests.py
+++ b/tests/model_tests.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
import unittest
from sqlalchemy.engine.url import make_url
diff --git a/tests/security_tests.py b/tests/security_tests.py
index 6cd77804ebbc8..e117394a366ce 100644
--- a/tests/security_tests.py
+++ b/tests/security_tests.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from superset import app, security, sm
from .base_tests import SupersetTestCase
diff --git a/tests/sqllab_tests.py b/tests/sqllab_tests.py
index 53144eadacdab..01b10b262681f 100644
--- a/tests/sqllab_tests.py
+++ b/tests/sqllab_tests.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
"""Unit tests for Sql Lab"""
from __future__ import absolute_import
from __future__ import division
diff --git a/tests/superset_test_config.py b/tests/superset_test_config.py
index 4f8c32c448163..4d13744cf8d62 100644
--- a/tests/superset_test_config.py
+++ b/tests/superset_test_config.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
# flake8: noqa
from superset.config import *
diff --git a/tests/utils_tests.py b/tests/utils_tests.py
index 04a70b8f60f03..172818964f684 100644
--- a/tests/utils_tests.py
+++ b/tests/utils_tests.py
@@ -1,3 +1,9 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from datetime import date, datetime, time, timedelta
from decimal import Decimal
import unittest
diff --git a/tests/viz_tests.py b/tests/viz_tests.py
index e9e8d6b9c1665..6822837e28312 100644
--- a/tests/viz_tests.py
+++ b/tests/viz_tests.py
@@ -1,10 +1,15 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+from __future__ import unicode_literals
+
from datetime import datetime
import unittest
from mock import Mock, patch
import pandas as pd
-import superset.utils as utils
from superset.utils import DTTM_ALIAS
import superset.viz as viz
@@ -47,8 +52,6 @@ def test_get_df_returns_empty_df(self):
result = test_viz.get_df(query_obj)
self.assertEqual(type(result), pd.DataFrame)
self.assertTrue(result.empty)
- self.assertEqual(test_viz.error_message, 'No data.')
- self.assertEqual(test_viz.status, utils.QueryStatus.FAILED)
def test_get_df_handles_dttm_col(self):
datasource = Mock()
diff --git a/tox.ini b/tox.ini
index a4d5af4aa6f2f..280bcb4798155 100644
--- a/tox.ini
+++ b/tox.ini
@@ -8,6 +8,7 @@ envlist =
skipsdist=True
[flake8]
+accept-encodings = utf-8
application-import-names = superset
exclude =
.tox
@@ -16,8 +17,18 @@ exclude =
superset/data
superset/migrations
superset/templates
+ignore =
+ FI12
+ FI15
+ FI16
+ FI17
+ FI50
+ FI51
+ FI53
+ FI54
import-order-style = google
max-line-length = 90
+require-code = True
[global]
wheel_dir = {homedir}/.wheelhouse
@@ -55,7 +66,9 @@ commands =
flake8
deps =
flake8
+ flake8-coding
flake8-commas
+ flake8-future-import
flake8-import-order
flake8-quotes