* [explore] DatasourceControl to pick datasource in modal
Makes it easier to change datasource, also makes it such that the list
of all datasources doesn't need to be loaded upfront.
* Adding more metadata
* [druid] Allow custom druid postaggregators
Also, fix the postaggregation for approxHistogram quantiles so it adds
the dependent field and that can show up in the graphs/tables.
In general, postAggregators add significant power, we should probably
support including custom postAggregators. Plywood has standard
postAggregators here, and a customAggregator escape hatch that allows
you to define custom postAggregators.
This commit adds a similar capability for Superset and a additional
field/fields/fieldName breakdown of the typical naming for dependent
aggregations, which should make it significantly easier to develop
approxHistogram and custom postAggregation-required dashboards.
* [druid] Minor style cleanup in tests file.
* [druid] Apply code review suggestions
* break out CustomPostAggregator into separate class. This just cleans
up the creation of the postaggregator a little bit.
* minor style issues.
* move the function around so the git diff is more readable
* [sqllab] improve Hive support
* Fix "Transport not open" bug
* Getting progress bar to show
* Bump pyhive to 0.4.0
* Getting [Track Job] button to show
* Fix testzz
* Escaping the user's SQL in the explore view
When executing SQL from SQL Lab, we use a lower level API to the
database which doesn't require escaping the SQL. When going through
the explore view, the stack chain leading to the same method may need
escaping depending on how the DBAPI driver is written, and that is the
case for Presto (and perhaps other drivers).
* Using regex to avoid doubling doubles
The end of the interval would be on the truncated today date, which
means that you will exclude today. If your realtime ingestion job
runs shorter than a day, the metadata cannot be pulled from the
druid cluster.
The metric name in the frontend doesn't match the one generated on the
backend. It turns out the explore view will default to the first
metric so specifying one isn't needed.
Related Msg:
sqlalchemy.orm.exc.ObjectDeletedError: Instance '<PermissionView at
0x7f10306b0e90>' has been deleted, or its row is otherwise not present.
* upgrade celery to 4.0.2
* using Redis for unit tests (sqla broker not supported in Celery 4)
* Setting Celery's soft_time_limit based on `SQLLAB_ASYNC_TIME_LIMIT_SEC` config
* Better error handling in async tasks
* Better statsd logging in async tasks
* show [pending/running] query status in Results tab
* systematically using sqla NullPool on worker (async) to limit number
of database connections
* move to explore folder and delete explorev2 folder
* add tests for fetchDatasourceMetadata
* tests for fetchDatasources, fetchDatasourceMetadata
* use $.ajax for fetch dashboards and write test
* sort explicitly on label
* add simple test for /slicemodelview/add endpoint
* make comments and method names more clear
* fix test name
* be more explicit, test status_code
* get compiled js file names
* make manifest available as template var
* use script src directly to avoid flash of unstyled content in the case of csstheme.js
* linting
* attempt to fix tests
* exception
* print the path when no manifest file found
* handle case when manifest.json is not present for some reason, or in the case of tests
* Fix handling of Chunked requests
Add fix for handling chunk encoding requests.
If ENABLE_CHUNK_ENCODING is set to true, for requests with transfer
encoding set to true. It will set wsgi.input_terminated to true which
tells werkzeug to ignore content-length and read the stream till the
end.
break comment in multiple lines
* remove debug print logging
* dont set first datasource as default
* not used
* add a disabled class if datasource is not selected
* sort datasources alphabettically
* make btn disabled is no datasource is selected
* fix linting
* [big number] various improvements
* dynamic number of X axis ticks based on width to prevent label overlap
* corrected overflow on the x axis
* improved tooltips (precise arrow and visible data point circle on hover)
* Fixing tooltips in heatmap viz
* initial structure for add new slice page
* simplify add slice form
* add a test
* fix long line
* use underscore for template name
* fix controls path
* fix vis types select
Some python developers use Python version manager to create and switch Python
enviroments, pyenv (http://github.com/yyuu/pyenv) is one of the version managers.
When you use `pyenv local x.x.x`, `pyenv` will put a `.python-version` file in
project directory, which, in general, should not be commited to git.
Same as explore view, if query takes > 45 seconds not returned, we will show Query timeout warning message. Otherwise user will see 504 Gateway timeout error.
* CONTRIBUTING: document starter_task label
* CONTRIBUTING: PR should work travis python versions
* CONTRIBUTING: move PR guidelines at the top
* CONTRIBUTING: no need to open a new pr after review
in SqlLab view, if query takes over 45 seconds, we will show advise to store a summarized data set before user clicks on Visualize button.
This advise will not block Visualize button.
fixes https://github.com/airbnb/superset/issues/2733
* rename spec folder
* remove special handling for viz_type control since it now uses VizTypeControl
* add test for getOptions
* linting
* add test for cwp
* linting
The reason is that it should be able to create arbitrary filters
over attributes with very high cardinality, where loading all
possible combinations into the filter box is infeasible,
e.g. IPv6 addresses.
* feat(visualization): Create new visualization's tools that display country with geojson file. Currently only france and Spain are loaded
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by travis for mysql databases
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by codeclimate
* fix(visualization): fix issues
* doc(visualization): Init visualization documentation
* doc(visualization): init visualization documentation for country
* fix(visualization): implement iso 3166-2 for id of country
* fix(visualization): implement iso 3166-2 for id of country
* doc(visualization): init visualization documentation for country
* fix(visualization): implement iso 3166-2 for id of country
* feat(country_map): add ukraine map in component
* fix(visualization): Test dont working and add color based on metrics
* refacto(visualization): fix issues for es6 and color component
* Show clear and actionable query timeout error message
1. Instead of waiting for a long time or server-side response 504 Gateway timeout, explore view now add a query timeout threshold. After timeout it will show specific querytimeout message.
2. fix alert box close button position.
* Show clear and actionable query timeout error message
1. Instead of waiting for a long time or server-side response 504 Gateway timeout, explore view now add a query timeout threshold. After timeout it will show specific querytimeout message.
2. fix alert box close button position.
3. fix a linting error.
Load times on list view pages like Slices, Dashboards, Tables and Database
have grown to be terrible over time.
After a bit of digging, I found that the not specifying `search_columns`
in ModelViews actually means "all columns" and that for each filter,
FAB goes and fetches a list of all values to prepopulate the
filter dropdowns. That means that the list of tables would fetch all
slices and all users upfront which is horrible. Worse, database list
view would fetch all queries with is insane.
This picks a subset of columns for search/filters and changes the
default to show only 100 elements per page instead of 500
auto select should only apply to cases where select control doesn't have pre-selected value prop. If select control has pre-selected value (passed in from value prop), auto select first avaliable options should not apply.
* [sql lab] improvements to the left panel
* better error handling with error notifications
* table is added instantly with a loading image
* Fixing tests
* Fixed tests
* Decimal is a valid numeric type
This will allow automatic creation of sum__ and avg__ metrics
* formatting for line length at 80 chars
* Reformating again, for the mandatory 79 chars maximum.
Somehow the CSS trick we use to display histogram-type visual elements
in table views started showing some odd glitches since
what I believe was a not-so-recent version of webkit.
The bug is around the `linear-gradient` call under `background-image`
prop being used to show non-gradient or "hard" colors, while using
transparency.
I was able to find a workaround that addresses things in chrome by using
a fake [minimal] gradient instead of a flat color.
* db_engine_specs: added engine spec for clickhouse
* models: group by time without join on subquery
if this is enabled, it will remove the subquery when grouping by time,
and group by time will be rewritten as group by timeslot, ...
this particularly fixes clickhouse backend
* docs: added clickhouse
* models: allow using secondary dttm columns as constraints
* superset/forms: configurable default slice since time
* superset/models: respect dialect quoting
* dttm handling, codeclimate tweaks
* react: using prop-types package to fix deprecated React.PropTypes property warning
https://facebook.github.io/react/warnings/dont-call-proptypes.html
* removing babel devDependency because has been deprecated in favor of babel-cli
this fixes a warning during `npm install`:
```
npm WARN deprecated babel@6.23.0:
In 6.x, the babel package has been deprecated in favor of babel-cli.
Check https://opencollective.com/babel to support the Babel maintainers
```
* js: setting ExploreActionButtons.queryEndpoint PropType as required
because it's required in the child component DisplayQueryButton
* js(tests): using object in expandedSlices prop type of SliceCell tests
* js(tests): adding required props to SqlEditor mockedProps
* js(tests): adding required prop editorHeight to TabbedSqlEditors mockedProps
* js: removing unused moments dependency
* Fixing PropTypes warning message
React recently started warning on the upcoming deprecation of
React.PropTypes, the new approach is to use the `prop-types`
npm package instead.
* Fixing the tests
The standalone view doesn't need to fetch the datasources asynchronously
to fill in the dataources dropdown, it also doesn't need to render any
of the controls.
* fix scrolling for query search, getHeight was returning NAN
* add styling for query search pagination
* remove console.log
* make pagination buttons match bootstrap theme small buttons
At Airbnb we use these WARNING_MSG configuration element to make it
clear that we're in the staging environment.
Before this PR it would render under the navbar and mess up some of the
heights configurations, where you wouldn't be able to scroll all the way
to the bottom of the page. This fixes it.
* make react-virtualized table work
use dynamic sizing for cell width
enable filtering
require height prop for result set component
* fix tests and linting
* move some state to props
* move getTextWidth to visUtils
* make striped rows optional
* fix striped proptype
* update name to FilterableTable
* add basic test and fix linting
* accept array of columns keys rather than an array of objects that needs to be mapped
* move container div inside the component
* rename styles
* fit table component to width if it's smaller than parent container
* move stylesheet to javascript folder otherwise it throws an error on npm run prod
* move css to index.jsx
* fix result set spec
* fix linting and test
* fix result set props
* keep list immutable
Introducing a nice component as a label that show when data was
loaded from cache, when the cache was taken (in humanize duration as in
`a few minutes ago`) in a tooltip, and it can act as a button that
can trigger a force-refresh.
While working on it, it became clear that it was going to be hard to
use this component in the Dashboard view since it's not pure React.
I'm planning on refactoring the dashboard view with proper React/Redux
and introducing the CachedLabel component at that point.
While digging around in the Dashboard view I realized that there was a
bunch on unused code around managing timers that was used in explorev1
and decided to rip it out.
* Add UNIX socket option to runserver
Added an optional parameter to runserver to server from a UNIX socket instead of an address:port. I believe it is fairly common to server from sockets when using a web server like Nginx on the same host.
* Collapsed if/else logic for address or socket
Also wrapped help description for socket parameter
* [explore] fix and clean
Currently it's not possible to view queries while they are running, the
spinner appears endlessly. I decided to rearrange things a bit while
debugging so I could see clearly through it.
* Adding NotImplemented methods to base classes
* Fixing
* Piling up
Column functions are currently escaped with the
same dialect that is being used by Superset for its
metadata storage. Instead the dialect of the target
table should be used when escaping column names.
* [bugfix] clarifying how to create a slice
First time users [rightfully] think that the proper way to create a
slice is to click the `+` button on the `Slices` CRUD page.
Changing / simplifying the redirect logic and message flashing that was
failing here somehow.
* Changing message from danger to info
* Revert "[big num] make sure scatterplot dots align properly (#2559)"
This reverts commit f24ddfd467.
* Revert "Revert "measure x axis labels too and use the longest to determine margins" (#2550)"
This reverts commit fe68bc31c3.
* Revert "[bug num vis] fix sizing for single digits (#2548)"
This reverts commit 3d2c791ff1.
* revert all big num changes.
* fix linting
* make document global, fix linting
* sql_lab.py: compress via utils
* utils.py: added zlib_compress and zlib_compress_to_string
* core.py: converted to use zlib_decompress_to_string; renamed uncompress to decompress in utils.py
* utils_tests.py: added test for compress/decompress
* fixed broken utils test; removed redundant code and empty lines from utils.py
* utils.py: corrected docstrings, removed unnecessary 'else'
* removed yet another superfluous else
* fix js error, make should render viz more readable, add tooltips, style axis and add min/max to xaxis
* put getTextWidth in utils
* add document to eslint globals config
* Initial commit to support the athena DB
This work was done at tobii.com (in collaboration with knowit.se), and depends on:
- A patched version of PyAthenaJDBC (https://github.com/dwa/PyAthenaJDBC/tree/dwa-tobii-dict_formatter)
- A patched version of PyHive (https://github.com/dwa/PyHive/tree/dwa-tobii-sqlalchemy-athena)
And can be used like so:
athena://<user>:<password>@athena.us-east-1.amazonaws.com/?region_name=<region>&s3_staging_dir=s3%3A//<staging_bucket_of_choice>
* Rebased, and fixed two lint issues
* rename athena engine: athena -> awsathena
* remove network status feature
* only fetch queries if there are started or running queries
* don't use local storage
* remove last network status from actions
* don't remove support for local storage
* address pr comments and linting
* use .some rather than .forEach
* [sqllab] assign types for visualize flow
Somehow when using the visualize flow, the types were not
assigned at all, creating some bugs downstream. This PR attempts to get
the information required based on what pandas is knows and the types in
the data itself.
* Fixing tests
* Fixing tests
* Fixing more tests
* Fixing the last py3 tests
* use fast filter for tables select
* react-virtualized needs this package, throws error otherwise...
* continue to use async select and this.getTableNamesBySubStr when a schema is not selected
* import styles in same place as react-select css import
When adding a Redshift database, the docs said to use a connection
string that started with `redshift+psycopg2://...`, but this results
in a Python error from how SQLAlchemy executes the `get_schema_names`
method (first reported [here](https://github.com/airbnb/superset/issues/2364#issuecomment-284705179)).
The fix is to use `postgresql+psycog2://...` for the Redshift connection
string.
* Support more filter operators
* more filter operators [>, <, >=, <=, ==, !=, LIKE]
* Fix need to escape/double `%` in LIKE clauses
* spinner while loading values when changing column
* datasource config elements to allow to applying predicates when
fetching filter values
* refactor
* Removing doubling parens
* rebasing
* Merging migrations
* [table viz] allow showing time granularity in table (#2284)
The time granularity currently does not show up in table viz. Now
defining a granularity will add an extra ISO-formatted time column in
the table. The column will be added for both grouped by and not grouped
by.
* Changes based on comments
The time granularity currently does not show up in table viz. Now
defining a granularity will add an extra ISO-formatted time column in
the table. The column will be added for both grouped by and not grouped
by.
The time granularity currently does not show up in table viz. Now
defining a granularity will add an extra ISO-formatted time column in
the table. The column will be added for both grouped by and not grouped
by.
Caching wasn't working after deprecate_v1, this addresses it. Also surfacing
whether the data is served from cache in explore view and a way to force
run the query bypassing the cache.
on startup, FAB spits out a bunch of logging messages that aren't useful
in most cases. This shuts them down by default. They can be turned back
on with `config.SILENCE_FAB = True`
Also shushing a flask-cache warning around setting up a null (default) cache
* Simplifying the viz interface (#2005)
* Working on dashes
* Making this a collaborative branch
* Fixing some bugs
* Fixing bugs
* More improvements
* Add datasource back in bootstrap data
* Decent state
* Linting
* Moving forward
* Some more linting
* Fix the timer
* Triggering events through state
* Lingint
* Put filters in an array instead of flt strings (#2090)
* Put filters in an array instead of flt strings
* Remove query_filter(), put opChoices into Filter
* Update version_info.json
* Fix migrations
* More renderTrigger=true
* Fixing bugs
* Working on standalone
* getting standalone to work
* Fixed forcedHeight for standalone =view
* Linting
* Get save slice working in v2 (#2106)
* Filter bugfix
* Fixing empty series limit bug
* Fixed dashboard view
* Fixing short urls
* Only allow owners to overwrite slice (#2142)
* Raise exception when date range is wrong
* Only allow owner to overwrite a slice
* Fix tests for deprecate v1 (#2140)
* Fixed tests for control panels container and filters
* Fixed python tests for explorev2
* Fix linting errors
* Add in stop button during slice querying/rendering (#2121)
* Add in stop button during slice querying/rendering
* Abort ajax request on stop
* Adding missing legacy module
* Removing select2.sortable.js because of license
* Allow query to display while slice is loading (#2100)
* Allow query to display while slice is loading
* Put latestQueryFormData in store
* Reorganized query function, got rid of tu[le return values
* Merging migrations
* Wrapping up shortner migration
* Fixing tests
* Add folder creation to syncBackend
* Fixing edit URL in explore view
* Fix look of Stop button
* Adding syntax highlighting to query modal
* Fix cast_form_data and flase checkbox on dash
* Bugfix
* Going deeper
* Fix filtering
* Deleing invalid filters when changing datasource
* Minor adjustments
* Fixing calendar heatmap examples
* Moving edit datasource button to header's right side
* Fixing mapbox example
* Show stack trace when clicking alert
* Adding npm sync-backend command to build instruction
* Bumping up JS dependencies
* rm dep on select2
* Fix py3 urlparse
* rm superset-select2.js
* Improving migration scripts
* Bugfixes on staging
* Fixing Markup viz
* Fix werkzeug instance was created twice in Debug Mode (#2135)
* add reloader option for flask (#2136)
* using --no-reload option for flask
* divide a line of code into two lines for PEP8
* Rename rv => o in the decorator.
* Address comments.
* Permissions cleanup: remove none and duplicates. (#1967)
* Updates
* Rename var and dropdown text
* Cleanup
* Resolve comments.
* Add user to the perm check.
* fix axis label size bug and accommodate dual axis chart
* don't adjust margins for bar time series
* handling this below now
* apply different margin padding if explore or dashboard
* fix linting
* re-render chart after adjusting for long axis labels
* measure all of the labels and take the max height
* add missing isTimeSeries var
* fix linting
* use jQuery to get text ticks
* rotate 45 rather than 90
* Add KeyValue model for storing id-value pairs
use it for storing shared queries
* Change string to text and added test
* Put getQueryLink in one place
* Changed migration down version
* Changes based on comments
* Update bcf3126872fc_add_keyvalue.py
In Vertica, inner queries require different aliases than the main query.
This is an example of query generated before this patch:
SELECT chain AS chain,
weekstartday AS __timestamp,
SUM(inventory) AS "Inventory"
FROM mytable
JOIN
(SELECT chain AS chain__,
SUM(inventory) AS "Inventory"
FROM mytable
WHERE weekstartday >= '2016-01-24 00:00:00'
AND weekstartday <= '2017-01-17 00:00:00'
GROUP BY chain
ORDER BY "Inventory" DESC LIMIT 50) AS anon_1 ON chain = chain__
WHERE weekstartday >= '2016-01-24 00:00:00'
AND weekstartday <= '2017-01-17 00:00:00'
GROUP BY chain,
weekstartday
ORDER BY "Inventory" DESC LIMIT 50000
Which in Vertica produces the error:
Error: ('42702', '[42702] ERROR 2671: Column reference "inventory" is ambiguous\n (2671) (SQLExecDirectW)')
And this is the same example after the patch:
SELECT chain AS chain,
weekstartday AS __timestamp,
SUM(inventory) AS "Inventory"
FROM mytable
JOIN
(SELECT chain AS chain__,
SUM(inventory) AS mme_inner__
FROM mytable
WHERE weekstartday >= '2016-01-24 00:00:00'
AND weekstartday <= '2017-01-17 00:00:00'
GROUP BY chain
ORDER BY mme_inner__ DESC LIMIT 50) AS anon_1 ON chain = chain__
WHERE weekstartday >= '2016-01-24 00:00:00'
AND weekstartday <= '2017-01-17 00:00:00'
GROUP BY chain,
weekstartday
ORDER BY "Inventory" DESC LIMIT 50000
Related PR:
https://github.com/airbnb/superset/commit/19f5371787df8d65137b7cf2ceb6c2a6b764cdca
* Cleanup fulfilled requests after approve
* Modified tests
* Moved to separate test, add user to access functions
* Moved to separate test and added test cases
* Fixed issue with dryrun
* More changes based on comments
I had issues compiling the src, I think it's because the syntax is different than the one used here?
With the dist it works fine.
I also saw there were other related issues in the past, so I'm suggesting to switch to the dist file.
* [explorev2] using label in 'Visualization Type' Select
* moved url related logic upstream in the caller
* moved option creation logic from render method to the constructor as
it only needs to be executed once
* Refactoring out getOptions
Fix cache set after c14c7ed update json serializer behaviour
but forget to update one call site.
While at it move payload serialization outside of catch all try
block since we want to see explosions if any.
Fix#1910
* Druid dashboard import
* Fix tests.
* Parse params with trailing commas
* Resolved issue with datasource is not in DB yet when slice perms are set
* Finish rebase
* Fix heads alembic problem.
* Druid dashboard import
* Fix tests.
* Parse params with trailing commas
* Resolved issue with datasource is not in DB yet when slice perms are set
* Finish rebase
* Add #views and #distinct users to created dashboard on profile page
* Added index on logs to speed up query
* Added #views and #users for slice table
* Add a views column to dashboards and slices, prepopulate
them with Log data
* Remove index on Log model
* Remove unused index
* Update 1b2c3f7c96f9_.py
fix multiple heads
* Exclude postgres in prepopulating views column
* Add dual-axis line chart to viz
- Add a new viz using two y axis for multi-chart in nvd3
- Option to set metric and axis format for two y axis
* Resolve conflicts
* Fixed x axis and resized thumbnail
* Added example to __init__.py
* Change get_df to match with format
* only show single run query button, allow async if possible
* only pass the needed props, rather than entire objects to the component
* add simple test
* fix linting
* Initial
* rewrite some line to make it short and setting merge variable temporarily
* rewrite commit author
* add emitted attribute
* Fix typo
* fix test error
* fix typo
* test added
* Improving logging with duration and referrer
* Handling case where referrer is None
* Providing log_this with its own session
* Attempting to fix tests
* Fixing tests
* Enable freeform-select with fetched column values for filter values
- db migration to add filter_select_enabled
- add freeform-multi option for Selectfield
- modify formatFilter() function on query to accomodate filter-select
* Fix js tests
* Fix codeclimate issue
* Changes based on comments
* Add test for filter endpoint
* Extract out renderFilterFormField function from render
* Fix landscape issues
* Stop ChartContainer from rendering twice on chartStatus change
* Make spinner overlay and dim chart while laoding
* Added timeout to make render more stable on resize
* Put viz in state and call resize at browser size change
* add render after height change since resize depends on render called on the same object
* Change name of renderVis to renderVisOnChange
* Only call resize at height change, persist viz in state
* Call resize wihout render at window size change
* Sort searched queries by recency
* Fixed sqllab tests
* Add one more tr to QueryTable spec for pagination
* Change desc to asc as we reverse queries in component
This should fix issue #1339.
IE 11 and lower has a long standing issue: out-of-document element's
pathname has no leading '/'. See
https://connect.microsoft.com/IE/feedbackdetail/view/1002846/pathname-incorrect-for-out-of-document-elements
And Superset's Slice.jsonEndpoint() method relies on pathname() to build
JSON API URL for slices:
```javascript
jsonEndpoint() {
const parser = document.createElement('a');
parser.href = data.json_endpoint;
let endpoint = parser.pathname + this.querystring();
endpoint += '&json=true';
endpoint += '&force=' + this.force;
return endpoint;
},
```
`parser` above is exactly an out-of-document element. Therefore when
running in IE <= 11, Superset would build wrong JSON endpoint URLs,
hence the 404 errors for loading data for slices.
This commit adds a simple workaround when leading '/' is missing in the
value returned by pathname().
* add config option for explore v2 beta users, and send through v2 path
* fix long lines
* use role rather than user ids in config
* add test
* simplify role check
* remove extra line
* use different test user for v2 tests
* Not working errors
* Remove update_explore endpoint, only update explore endpoints in reducer on query
* Change scroll to auto and make container reponse to height:
* Remove update_explore endpoint
* Remove can_update_explore perm
* Add NVD3's bullet chart.
* Add empty lines before nested function definitions.
* Add thumbnail for bullet chart.
* Add bullet chart to gallery.rst.
* Add "requiresTime: false", fix indentation.
* Avoid scaling bullet chart vertically.
* Use a default if no range is specified.
* Fix coloring of bullet chart.
* Add http to copied url and move function to componentWillReceiveProps
* Added getText() to CopyToClipbaord to enable ajax calls for getting copy text
* Set ajax call to synchronous (document.execCommand only works in synchronous mode
* Make cell-click filter in table viz optional
- Added table_filter checkbox in table viz
- If set to false, clicking on a cell in table will not apply filter to
dashboard
* Fix codeclimate issue
* Change default to false
* Fixed js error when results are not available
* Flush data and query in results when running new query, keeping columns
* add exception for columns
* Move setState from componentWillMount to componentWillReceiveProps
* Nit
* Fix superset cli for python3
dict.iteritems() has been removed since dict.items() returns an
iterable in python3. Shouldn't be a big deal for python2 to load
all the data into a list.
Fix#1756
* bin/superset: avoid some work when reading config
We don't need to unpack and then pack again a dictionary.
* Support running superset via pex
* [superset] Update default port in superset/bin/superset
* Fix codeclimate line length issues
* Fix another line length issue, in config.py
* Add trivial utils test to increase test coverage
* Clean up runserver handling
* Make chart container more responsive
**Leave chart empty when theres error
**Make all boolean fields auto-query chart when changed
* Replace forEach with some
* Added fields to autoQueryFields
* Bug fixes in Save Modal
Issues solved:
- Save button doesn't pass in gotodash
- slice_name was passed in from store as original slice_name instead of
new one in 'saveas' action
- datasource_type wasn't passed in to defaultViz and defaultForm
function
* Change css filename to exploreV2
* Moved out utils
* Implement table name extraction tests.
* Address comments.
* Fix tests and reimplement the token processing.
* Exclude aliases.
* Clean up print statements and code.
* Reverse select test.
* Fix failing test.
* Test JOINs
* refactore as a class
* Check for permissions in SQL Lab.
* Implement permissions check for the datasources in sql_lab
* Address comments.
* Add per schema permissions.
* Address comments.
* Add schema_access perms to the alpha and admin
* Create permissions on addition databases and datasources.
* Remove hybrid_property. Linter complains.
* Fixed table_name does not exist in druid
* Make Chart container scrollable for large chart
* Fixed bug of action buttons not clickable in heatmap
* Solve codeclimate issue
* Limit overflow to x
* render table name if in table view
* only render fave star and edit button if slice, not table
* fix error when table view
* use [table-name] - untitled format
* remove extra fave star
* Added filter in ControlPanelsContainer
* Move function for getting url params object to utils
* Fixed python test
* Move Filter to separate component
* Added specs and made changes based on comments
* Moved specs to right folder
* For some fields we would like to re-render chart once field is
* changed, saving user the time to click query button
* Such fields are stored in an array in store, could add more fields in
* the future
* Get sections to render when switching datasource
- Move sectionsToRender in store and use is for defaultFormData
- Change some SelectField to FreeFormSelect according to forms.py
* Solved the css not found problem in staging
* Fixed js tests
* Added specs for SaveModal
* Move datasource_id and datasource_name to form_data
* Add comments
* Deleted redundant fetchDashboard
* Replcae has_key for python3
* More react and less jquery
* Added alert for save slice
* Small changes based on comments
* Use react bootstrap
* Added Alert for ControlPanel and ChartContainer
Done:
- Add alert for Control Panel when fetch_datasource_metadata failes
- Add alert for Chart Container when update_explore query fails
* Changed color to warning-yellow
* Solve linter issue
* Fixed indent and delete error_redirect
- Issue: when switching from a viz_type outside nvd3 to a viz_type in
nvd3, the Chart Container doesn't draw new graph
- Fix: The reason was somehow the function inside nv.addGraph() wasn't
called, extract the function outside and explicitly calling it solve
the problem
* Fixed bugs with viz in exploreV2
Done:
- fix typo in pie viz
- add metrics/groupby to dist_bar viz
- fix typo in heatmap viz
- add big_number_total to viz
- fixed problem with fetching columns for datasource
- add sqlaTimeSeries to viz
- change row_limit and limit from number to strings so that we
don't need to parse integers in bootstrap data
* Fix python tests
* Added order_bars checkbox for dist_bar viz
* Move datasource from global store object to form_data
* Moved datasource_id and datasource_name to form_data
* Refetch defaultFormData when switching datasource
* Fixed js tests
* Get query buttonw working in explorev2
- Create new endpoint for updating explore viz
- Send over new form_data when query button is pressed
* Added endpoint test
* Changes based on comments
* Added docstring for endpoint, and query spec
* Remove white space around docstring
* Added different Select Fields
- Switched FormGroup to react-select
- Added multi and freeform to select, now it can take customized user
input and insert it as options
* Fixed tests
* Small nit based on comments
* Change in files
* Renamin files and folders
* cleaning up a single piece of lint
* Removing boat picture from docs
* add superset word mark
* Update rename note in docs
* Fixing images
* Pinning datatables
* Fixing issues with mapbox-gl
* Forgot to rename one file
* Linting
* v0.13.0
* adding pyyaml to dev-reqs
* Link fields to store by firing setFormData action
* Moved onChange to ControlPanelsContainer, retrieve defaultFormData from fields in store
* Pass data from store to checkbox/select/text Field
* Fixed tests
* Changed reducer back to old Object.assign() style
* pass field options in viz json
* move field options to fetch_datasource_metadata
* on control panels container mount, fetch datasource meta data and set dynamic field choices
* render options for select fields
* use component class rather than sic
* fix linting
* fix whitespace
* delete unused var
* only render fields once datasource meta has returned
* fix typo
* add datasources and fix column formatting
* fix tests
* never used function
* fix tests
* add test for fetch_datasource_metadata
* remove unneeded props
* Put default form_data and viz in store
* Link fields to store by firing setFormData action
* Fixed tests for Container and actions
* Moved onChange to ControlPanelsContainer, retrieve defaultFormData from fields in store
* Deleted switch statement in reducer
* Removed resetFormData and refactored setFormData in reducers
* Added text for fields
* Changed test statements
* Added scroll bar and option to collapse for Sql Editor tool bar
Done:
- Added scroll-bar to Sql Editor tool bar
- Added hide/expand tool bar option to dropdown menu of tab
* Add more margin to give space to scroll-bar
* Add scroll to right panel independently
* Put data preview in south pane
Before: data preview of a selected table appears as a modal, but for
some cases users may want to view data and edit sql at the same time
After:
- data preview of a selected table pops up a new tab in South Pane
- data are saved to local state and flushed in global store in
ResultSet component
* Moved dataPreviewId to table object
* Put back preview icon for fetching preview data
* Revert "Put back preview icon for fetching preview data"
This reverts commit b6f5dcfe64.
* Added option to retrieve preview results after refresh
* make fieldset conditions more clear
* make label required
* use render* pattern
* use slugify util for turning labels into ids
* use field rather than html
* don't need panel-title class here
* Support week_ending_saturday for Druid.
* Use period granularity
* Use ISO 8601 for period definitions.
* Fix tests
* More flexibility for the freeform choices.
* export functions directly rather than object at the bottom
* move viztypes to controlPanelMappings, add fieldset rows and section data
* for each viz type, render a controlPanelsContainer, controlPanelSections, FieldSetRows, and FieldsSets
* add comments, move mappings to store
* organize store and add default sections
* render all the needed sections
* add tooltip to sections
* remove console log
* use only panel panel-default, not panel-body, no need the padding
* render fields for all fields in field set
* add the rest of the control panel sections and field overrides
* fix naming
* add fieldTypes array
* don't use default section
* pass only needed state via mapStateToProps
* fix code climate errors
* linting
* move field components to their own files
* render field sets as lists
* fix field components
* use SFC
* update modal trigger test to be more accurate
* add FieldSetRow test
* add test for controlpanelsContainer
* fix test
* make code climate happy
* add freeform select field
* [druid] optimize Druid queries where possible
Trying to use timeseries, topn where possible, falling back on 2-phases
groupby only where needed
* Fixing py3 bug
* Moved queriesArray from render() to local state, so that QueriesArray
is only reloaded only during switching tabs or queries object is updated.
* Changed object comparison function to take length into consideration
* Added time filter to query search page
* Added start date
* Updated python endpoint test
* changed spec
* Added specs and tests
* Modified python/js tests and some function/file names
based on code review comments
* Resolved conflicts in DashboardSelect_spec and QuerySearch_spec
* Break python tests for separate functions, Move sql queries to setUp()
* Get around eslint error for spec
* Small changes based on comments
* Highlight affected slices for filter change in dashboard view
Done:
- When user adds/deletes a filter in dashboard, affected slices will
have their header highlighted for 2 seconds
* Modified highlight to a more subtle box shadow
* Added slice-cell class for highlight transition
* Changed class name to slice-cell-highlight
* Added dashboard standalone page
* Deleted additional template, parameterized dashboard.html for standalone
* Only wrap add-slice-container for standalone instead of including whole modal
* Use standalone_mode argument passed from both explore view and dashboard view
* Adjusted top margin of heatmap plot to get it working in V2
Problem:
The heatmap in V2 was shifted towards the top margin of slice
container, this was because in v2 slice name header was part of the
container body, while in v1 the header was separately defined in
explore.html template.
Solution:
To get heatmap properly shown in V2, we need to
take into account the height of the slice_name header. Adding to
margin_top will shift the plot in V1 too, but it won't make a big
difference to the look.
Ideally when we renovate slice container in future PR we would defined a
height for slice_name header and take it into account for all
visualization files.
* Added panel header height to margin_top for explore v2
* Use getBoundingClientRect to get header height
* Use slice-header for id of panel-title
* Added url shortner for sharing query link
* Move shortener outside CopyToClipboard and move ajax call to common.js
* transfer dbId to int to avoid failed prop
* Added d3format() function to mock slice in explorev2
Problem:
table viz was not working in explorev2 due to d3format() not defined in
mock slice.
* Change column_formats to camel case
* [sqllab] add support for results backends
Long running SQL queries (beyond the scope of a web request) can now use
a k/v store to hold their result sets.
* Addressing comments, fixed js tests
* Fixing mysql has gone away
* Adressing more comments
* Touchups
* Enable "Clone to New Tab" btn in QueryHistoryTable
Method #1; doesn't feel very clean.
Going to attempt to reimplement using an action and changing state directly
through the reducer rather than creating a new QueryEditor object directly from
the QueryTable
* Move Clone Logic to Action
* Implement PR feedback
* Clean up reducer action; fix bug
Bug => Attempting to clone anything other than the most recent Query for a given
TabbedQueryEditor would throw an exception, because we depended on lastQueryId
to find the title of the QueryEditor to clone. Since you can only activate a
clone from the currently active tab, we can instead fetch the ID of the Editor
to copy the Title of from the tip of tabHistory.
* Tests for Reducer Action
* Fix CodeClimate feedback
* make chart container work with nvd3_vis.js
* map vis to module, remove unneeded components
* fix linting
* use existing query and save btns, don't fork more things
* comment out chart and exploreviecontainer specs
* make a change because i think the js test is failing spuriously
* Changed eslint channel in codeclimate.yml for object spread
* Revert "Changed eslint channel in codeclimate.yml for object spread"
This reverts commit b9deb8ce84478f9c8f48ca7d41662e7222f40376.
* Took out the object spread operator
* do not over-write the stored password with a masked password.
his addresses issue #1199
* added a test to validate that sending a password-masked sqlalchemy_uri does not over-write the stored sqlalchemy_uri
* requery the database object after the update.
use self.assertEqual for more informative error messages.
* add scroll bars to control panel container
* make query and save-btns block elements
* don't use react component, use custom styles
* move style to stylesheet
One user reported the load of the "countries" table exceed
max_allowed_packet which in some configurations can be as low as 1MB.
Changing the chunk size from 500 to 50 has a small cost on the initial
load of the data (one additional second to the 17 taken previously)
while being more universally usable without changing the configuration
of the mysql server.
The new packet size is estimated to be about 500KB.
The committer has not checked other tables
* create structure for new forked explore view (#1099)
* create structure for new forked explore view
* update component name
* add bootstrap data pattern
* remove console.log
* Created store and reducers (#1108)
* Created store and reducers
* Added spec
* Modifications based on comments
* do use bootstrap data for now
* don't deal with bootstrap data for now
* use victory as a base
* import fake line data, add fake panels, make chart fixed
* add fetch support
* get slice data from json endpoint
* render chart with slicejson
* update chart and label demo
* remove fetch config
* remove dummy control panels
* should be a func
* make TimeSeriesLineChart
* add a comment
* inner height for height
* don't need fetch yet
* trailing comma breaks in package json
* pass in viz data from props
* add style sheet
* set height on explore container
* add legend
* make chart responsive to window resize
* can't use head_css in template bc overrides head_css in basic
* fix linting
* break labelItem into own SFC, make legend SFC
* add propTypes and fix linter
* Some polish
- Changed query search icon
- CopyToClipboard in action bar
* Added dbId as linked-button, made modifications based on comments
* Fix duplicated import (linting)
* Explore control panel - Chart control, TimeFilter, GroupBy, Filters (#1205)
* create structure for new forked explore view (#1099)
* create structure for new forked explore view
* update component name
* add bootstrap data pattern
* remove console.log
* Associate version to entry files (#1060)
* Associate version to entry files
* Modified path joins for configs
* Made changes based on comments
* Created store and reducers (#1108)
* Created store and reducers
* Added spec
* Modifications based on comments
* Explore control panel components: Chart control, Time filter, SQL,
GroupBy and Filters
* Modifications based on comments
* Added access check + Druid in endpoint
* pull grains to constants
* Switch explore.html to old version
* Explore control panel - Chart control, TimeFilter, GroupBy, Filters (#1205)
* create structure for new forked explore view (#1099)
* create structure for new forked explore view
* update component name
* add bootstrap data pattern
* remove console.log
* Associate version to entry files (#1060)
* Associate version to entry files
* Modified path joins for configs
* Made changes based on comments
* Created store and reducers (#1108)
* Created store and reducers
* Added spec
* Modifications based on comments
* Explore control panel components: Chart control, Time filter, SQL,
GroupBy and Filters
* Modifications based on comments
* accommodate old and new explore urls
* move bootstrap data up in scope
* fix code climate issues
* fix long lines
* fix syntax error
* In the tab's dropdown menu under SQL editors, copy query link option is
added. A url with copied query will pop up a new editor tab.
* Made changes based on comments
* Move copy query button to right bottom of sql editor box
* Added in Alanna's code for copy url under menu item
* Fixed linting issues
* Query search page under SQL Lab tab
* Modifications based on comments
* Hash
* Added spec and endpoint test with modifications
based on second round comments
* Changed permission menu in https://github.com/airbnb/caravel/pull/1095/files
* Query search page under SQL Lab tab
* Modifications based on comments
* Hash
* Added spec and endpoint test with modifications
based on second round comments
* Changed permission menu in https://github.com/airbnb/caravel/pull/1095/files
* [FilterBox] dashboard date range filtering
* [filtering] define combo of slice/fields unafected by filtering
* adding an entry to the docs
* Addressed comments
* Generalize switch between different datasources.
* Fix previous migration since slice model changed
* Fix warm up cache and other small stuff
* Adding modules and datasources through config
* Replace tabs w/ spaces
* Fix other style issues
* Change add method for SliceModelView to pick the first non-empty ds
* Remove tests on slice add redirect
* Change way of db migration
* Fix styling
* Fix create slice
* Small fixes
* Fix code climate check
* Adding notes on how to create new datasource in CONTRIBUTING.md
* Fix last merge
* A commit just to trigger travis build again
* Add migration to merge two heads
* Fix codeclimate
* Simplify source_registry
* Fix codeclimate
* Remove all getter methods
* pull explore actions button group into component
* use button component
* make sure we render all action buttons
* test that embed code is correct
* don't need before each
* generalize modal trigger for use with plain links or icons
Add an ENABLE_PROXY_FIX config param. When set to True, insert the Werkzeug ProxyFix
middleware. This middleware extracts and applies the X-Forwarded-* headers that are
inserted by common proxies and load balancers. Fixes#1139.
* Handling timeouts
* Fixing timer on non-utc server
* Allowing async with results
* [bugfix] database is not selected
* Making sure the session is up and running
* Cleaning up query results and query objects
* Picking a groupby and metric field on visualize flow
* Showing local time in query history
* Using pull-left pull-right instead of grid layout for table metdata
Long column name were looking weird and icons were wrapping oddly
* Linting
* Eliminating east buttons under the sql editor
* Sort database dropdown by name
* Linting
* Allowing non-SELECT statements to run
* Adding a db config
* Making sqla checkout check cross-db
* move initialization of Database sqlalchemy_uri and password from DatabaseView.pre_add to utils.get_or_create_main_db.
Unit tests for mysql and postgres include username and password in the SQLALCHEMY_DATABASE_URI.
* modified test_testconn to work with sqlalchemy uri with a username and password.
* When the label size is too short, the constant for calculating
margin_size does not apply. Also nvd3 auto-adjust font-size of axis
labels.
Temporary solution here: Setting a fixed font-size on nvd3 axis labels
and a minimum threshold for label size.
* Only stretch margin for dist_bar
margin_size does not apply. Also nvd3 auto-adjust font-size of axis
labels.
Temporary solution here: Setting a fixed font-size on nvd3 axis labels
and a minimum threshold for label size.
* Add time grain support for time columnd in unix timestamp
* Fix datetime parsing for unix epoch
Since we've already converted unix epoch to datetime type,
we shouldn't specify 'unit' parameter in pandas.to_datetime
* Fix SQLite timestamp to datetime conversion
* Improving the Visualize flow
* Fixed the timer
* CTAS
* Expiclit engine handling
* make tab full height, stretch for longer content (#1081)
* Better error handling for queries
* Hooked and fixed CSV export
* Linting
* Tying in the dttm in the viz flow
* Indicator showing when going offline
* Addressing comments, fixing the build
* Fixing unit tests
When specifying a table reference that can not be found, the system used
to still create the object, which would result in confusion and bad
error messages down the line. Now it will fail and not create the
object.
I also removed fields that are not necessary to worry about when
initially creating the table.
* we don't need tooltips on accordion menu, known ui pattern
* use consistent type sizes, bump body type down to 14px
* make editor same height as 3 selects
* table meta data accordion menu
- prevent default on accordion clicks
- always show table actions, they are more discoverable like that
- polish spacing/layout
* remove hover effect on table actions
* adjust bottom margin according to label sizes on x-axis
Note: same as the method in heatmap.js
* add default bottom_margin to dropdown
* Change default to auto
* Add codeclimate cli instructions.
Add the instructions for the users that want to mess around with the codeclimate cli.
It is useful to test locally the config changes.
Reviewers:
* @mistercrunch
* @ascott
* @vera-liu
* Update CONTRIBUTING.md
* Update CONTRIBUTING.md
* [SQL Lab] Adding DB options for SQL LAb
each db can be exposed or not in SQL Lab
CTAS is an option
target_schema placeholder (not hooked yet, but would force the CTAS to
target a specific schema)
* Addressing comments
* call explore() directly from '/caravel/slice/id/' endpoint instead of redirecting to it.
* pass slice_id instead of slice_params in 'caravel/slice/id/' endpoint to avoid logging errors. add fix for MultiDict bug
* address max's comments
* remove the /slice/id/ endpoint in preference of /datasource_type/datasource_id/slice_id/
* pep8
* Carapal react mockup
This is really just a mock up written in React to try different
components. It could become scaffolding to build a prototype, or not.
* Merging in Alanna's theme tweaks for SQL lab
* Tweak the display of the alert message in navbar
* Sketching the middleware refresh for Queries
* Adjustments
* Implement timer sync.
* CTAS
* Refactor the queries to be stored as a dict. (#994)
* Download csv endpoint. (#992)
* CSV download engdpoint.
* Use lower case booleans.
* Replcate loop with the object lookup by key.
* First changes for the sync
* Address comments
* Fix query deletions. Update only the queries from the store.
* Sync queries using tmp_id.
* simplify
* Fix the tests in the carapal. (#1023)
* Sync queries using tmp_id.
* Fix the unit tests
* Bux fixes. Pass 2.
* Tweakin' & linting
* Adding alpha label to the SQL LAb navbar entry
* Fixing the python unit tests
* move slice header to partial, show datasource in slice title area if no slice is saved
* change partial name, and use same styling as slice title
* use jinja style guide spacing rule
* use [datasource] - untitled
`.jsx` linting is now in-scope for the `npm run lint` command, and
I linted the base files and some of the viz, there's still quite a bit
of work there, but that's a first pass on it.
* start hacking cosmo theme and fixing small ui bugs on pages.
* straighten up welcome page
* fix tab styling
* remove paper theme files
* add tables to docs
* make alerts lighter
* Hack around the "last migration doesn't stamp" Alembic bug
This makes MySQL, Sqlite and Postgres work with a special hard coded
rule. I'm hoping Alembic fixes the root cause eventually.
* Running db upgrade twice in tests
* update panel headings, titles
* remove panel heading collapser
* style slice meta controls
* fix favstar on dashboard
* add space between heat map and list
* gamma: filter the sqla tables the user has access to
Refs #359
* gamma: filter slices available for dashboards in DashboardModelView
Refs #359
* gamma: limit owners to dashboard to self
As we don't want to leak other users to unpriviliged users
Refs #359
* Refactor around how visualizations/*.js are required
* Reactifying FilterBox further
* Fixing the auto-refresh on filtering events
* Fixing preselected filters
* [panoramix] -> [dashed]
* merge from caravel/master
* Updated from airbnb
* Cleaning
* Rebase with upstream/master
* merge from caravel/master
* Updated from airbnb
* Cleaning
* Manual rebase
* Last pending change to rebase
* Convert date to datetime before serialization.
Approach choosen: transform data before serialize and keep just one way to serialize
* Unit test created
* stupid error :(
* remove uneeded code and rename test
* Avoid double type checking
Test updated
note: isinstance(<datetime>, <date>) == True, check order changed
* Increase coverage
* Fix assertRaises
* pass the request arg in the /caravel/slices/<slice_id>/ endpoint.
remove unused import.
* test that a single slice redirects rather than testing them all. update standalone redirect logic for Javascript 'false' instead of Python False
With gamma users saving the dashboard model would fail if they
are not owner of the dashboard.
So if that's not the case just disable the "Add a new slice to
the dashboard" and "Save the current positioning and CSS".
Refs #359
* Add Histogram as a visualization
The css and js file use the histogram code from https://bl.ocks.org/mbostock/3048450.
THe viz.py extends from BaseViz to create chart data only for one histogram
* using d3.layout.histogram
* CSS updated
The new css has been used from the d3 chart http://bl.ocks.org/mbostock/1933560
* bars are visible
* added semicolons
* histogram from http://bl.ocks.org/mbostock/1933560
It takes as input no of bins. The histogram cycles through
a set of colors for different lengths of the bar. It places a
y axis coordinate on top or on the upper end of the bar
whichever is suitable.
* update style changes
* Altering theme for more subtle alerts / labels / buttons
* Taking comments into account
* changed button-primary to more sober grey instead of brand-primary
* remove carousel from theme demo page and other useless items
* Forcing links to be gray
After ea8a7ec1ba creating a slice
started redirecting to druid datasource from sqlalchemy tables.
That's quite painful for sqlalchemy tables users.
Instead of hardcoding a choice just query the db, if we don't
have any druid datasource fallback to sqlalchemy tables.
Bonus points we remove hacky javascript and make the message
translatable.
While at it fix druid client test to not hardcode datasource id.
* caravel: fix visualization cache for python3
python3 wants bytes and not strings:
2016-07-22 10:36:09,474:INFO:root:Caching for the next 28800 seconds
2016-07-22 10:36:09,475:WARNING:root:Could not cache key 1eeb45f32960f0df0ad99a125bdaf199
2016-07-22 10:36:09,475:ERROR:root:'str' does not support the buffer interface
Traceback (most recent call last):
File "/home/rm/caraveltest/venv/lib/python3.4/site-packages/caravel/viz.py", line 306, in get_json
zlib.compress(self.json_dumps(payload)),
TypeError: 'str' does not support the buffer interface
Tested with memcached and pylibmc client library.
* docs: add note about using a proper memcached client library
when i install for development, get an error:
error: Flask-SQLAlchemy 2.1 is installed but Flask-SQLAlchemy==2.0 is required by set(['flask-appbuilder'])
* Preselect filters in filter boxes according to the get parameters
* Use the JSX version in dashboard.html
* Use default parameters in ES6 and fix the indent
* Added documentation of the health check endpoint
* Adding Minute and Second time grains for MySQL
* Fixed Migration script so that it doesn't break when new fields added to the models for Dashboards or Slices (using declarative base)
* Revert "Fixed Migration script so that it doesn't break when new fields added to the models for Dashboards or Slices (using declarative base)"
This reverts commit 0b6dd696d6.
* Code Cleanliness
* time format minor features added
* add description for datetime format input
* db version bug walkaround
* removed unecessary comments and fixed minor bug
* fixed code style
* minor fix
* fixed missing time format column in DruidDatasource
* Update models.py
Minor style fix
* Revert "Update models.py"
This reverts commit 6897c388e0.
* removed timestamp_format from druid and removed try catch in migration
* Using spaces, not tabs
* get the most updated migration and add the migration on the head of it
* remove vscode setting file
* use colunm based dttm_format
* modify dttm_converter
* modify datetime viz
* added comments and documents
* fixed some description and removed unnecessary import
* fix migration head
* minor style
* minor style
* deleted empty lines
* delete print statement
* add epoch converter
* error fixed
* fixed epoch parsing issue
* delete unnecessary lines
* fixed typo
* fix minor error
* fix styling issues
* fix styling error
* fixed typo
* support epoch_ms and did some refactoring
* fixed styling error
* fixed styling error
* add one more dataset to test dttm_format and db_expr
* add more slices
* styling
* specified String() lenght
* simple mapbox viz
use react-map-gl
superclustering of long/lat points
Added hook for map style, huge performance boost from bounding box fix, added count text on clusters
variable gradient size based on metric count
Ability to aggregate over any point property
This needed a change in the supercluster npm module, a PR was placed here:
https://github.com/mapbox/supercluster/pull/12
Aggregator function option in explore, tweaked visual defaults
better radius size management
clustering radius, point metric/unit options
scale cluster labels that don't fit, non-numeric labels for points
Minor fixes, label field affects points, text changes
serve mapbox apikey for slice
global opacity, viewport saves (hacky), bug in point labels
fixing mapbox-gl dependency
mapbox_api_key in config
expose row_limit, fix minor bugs
Add renderWhileDragging flag, groupby. Only show numerical columns for point radius
Implicitly group by lng/lat columns and error when label doesn't match groupby
'Fix' radius in miles problem, still some jankiness
derived fields cannot be typed as of now -> reverting numerical number change
better grouping error checking, expose count(*) for labelling
Custom colour for clusters/points + smart text colouring
Fixed bad positioning and overflow in explore view + small bugs + added thumbnail
* landscaping & eslint & use izip
* landscapin'
* address js code review
At the moment, when using the "Period Ratio" option, a percentage
formatting is forced on the Y Axis. This code pre-dates the `Y Axis
Format` option.
People may want to see a growth rate, in which case the current `.3p`
isn't what they want, or they may want only 2 digits of precision or
whatever else. This PR allows that.
* Flashed messaged should be flushed in every page
* Show error messages in AJAX style
* Introduce the decorator "api"
* Move toggleCheckbox() to the right place and trigger it in jQuery style
when using sql.html page to run sql directly, for any SELECT * sql, when click run! button for the second time,
the page will show error msg like: DataTables warning: table id={id} - Cannot reinitialise DataTable.
this can be fix by:https://datatables.net/manual/tech-notes/3#retrieve
* fixed
* basic implementation of the iframe embed popover
* remove unecessary comments
* remove public embed iframe
* remove debug print line and public access
* remove uncessary extra line and use better text explain
* maintain the style of airbnb/master
* fixed style
* re-run the test locally. Made sure it passed
* Add the new field "is_restricted" to SqlMetric and DruidMetric
* Add the access control on metrics
* Add the more descriptions on is_restricted
* Update docs/security.rst
* Update docs/security.rst
* caravel: mark viz strings for translations
* caravel: mark templates string for translation
* caravel: make forms strings translatable
* Update translations
So that we can install caravel on postgresql:
```
2016-06-03 17:58:05,386:ERROR:flask_appbuilder.base:
Add Permission on Menu Error: (psycopg2.ProgrammingError) can't adapt type '_LazyString'
[SQL: 'SELECT ab_view_menu.id AS ab_view_menu_id, ab_view_menu.name AS
ab_view_menu_name \nFROM ab_view_menu \nWHERE ab_view_menu.name = %(name_1)s \n
LIMIT %(param_1)s'] [parameters: {'param_1': 1, 'name_1': l'Sources'}]
```
Other that translating names should be a recipe for disaster if
you switch language.
Fix#558
* Use react-grid-layout instead of gridster
* visualizations show and resize
* display slice name and description; links work
* positioning of widgets to match gridster, rowHeight matches
* Change margins, rowHeight, unpositioned viz, and expandedSlices to match gridster
* Saving dashboard, deleting slices, formatting on slices (chart control and resize handle), expanded slices fixed.
* responsiveness + use es6 classes
* Minor ui fixes + linting
* CSS transforms on slices messes up nvd3 tooltip positioning.
Turn off CSS transforms for the time being, with a cost of painting speed.
Issue is currently being looked at on the nvd3 repo
PR: https://github.com/novus/nvd3/pull/1674
* Remove breakpoint listener, fires when it shouldn't (i.e. too often)
* resize is no longer buggy, minor cleanup
* gridster class, const, landscape error
* one source of data for data to front end from python
* Created migration to fix the bug
* Working also on MySQL
* Added support for Vertica Grains (#515)
* Fix#529 1 "This Session's transaction has been rolled back" (#530)
* Fixing the specific issue
* Added an additional fix for a similar error in #529
Background:
- When an object is modified by SQLAlchemy, it is invalidated so need to be fetched again from the DB
- If there's an exception during a transaction, SQLAlchemy performs a rollback and mark the connection as dirty.
Bug:
- When handling exceptions, the exception handler tries to access the name of the cluster in the main object. Since the name has been invalidated due to a write, SQLAlchemy tries to fetch it on a 'dirty' connection and spits out an error. Solution:
- Fetch the information for handling the exception before starting the process.
* Modified the migration function to to automatically detect the the foreign keys based on the signature.
It supports also sqlite using batch migrations
* i18n: Fix typo in Druid cluster broker port label (#512)
* Update models.py (#541)
removing duplicated `user_id` def
* fix for default metric in table visualization
* better location for form override; covers all parameters
* remove dead code, use items instead of iteritems for python 3
* Fixing the specific issue
* Added an additional fix for a similar error in #529
Background:
- When an object is modified by SQLAlchemy, it is invalidated so need to be fetched again from the DB
- If there's an exception during a transaction, SQLAlchemy performs a rollback and mark the connection as dirty.
Bug:
- When handling exceptions, the exception handler tries to access the name of the cluster in the main object. Since the name has been invalidated due to a write, SQLAlchemy tries to fetch it on a 'dirty' connection and spits out an error. Solution:
- Fetch the information for handling the exception before starting the process.
It looks like COUNT(*) returns a numpy.int64 value that the
default JSONEncoder does not handle.
While at if we get a type we are not handling make it easier to
debug the issue by throwing a TypeError exception with useful
data.
Fix#486
* Allowing for templated urls in iFrame
This can allow for passing {{ width }} and {{ height }} as dynamic
attributes in the iFrame's URL.
The new method Slice.render_template method could do more eventually
exposing more variables to be used in dynamic strings.
* Passing function references
* js linting
* Improving the parallel coordinate viz
* Clear container on refresh
* Order of columns is kept
* Option to show/hide the series column in viz
* Color metric not shown by default
* JS linting
* add unicode data to tests
* make tests pass on 2.7
* clean up data loading
- remove duplicate keys in slice_data
- reduce line length
* change manager option flag to -t, --load-test-data
* test --> load_test_data
* Make sure anonymous user with proper permissions can access data
* Review fixes: naming changes
* Review fixes: add more granular tests for public user dashboard access
* Review fixes: test that public user has access only to permitted data sets
* attempt to enchance logging
* clean up logging
* clean up logging
* reset to logger
* clean up imports
* add comments in config.py
* remove redundant declaration of logging.config. Already exists in caravel/__init__.py
* replace RotatingFileHandler with TimedRotatingFileHandler
* revert back running web server in debug mode
* fix debug in bin/caravel
* resolve build errors - formatting
* need to test
* enable time rotateloghandler
* revert back print statements - add feature for rotatetimelog which is needed and make it configurable
* revert back to default in master
* fix build issues
* remove extra print statement
* change log location to default
* configure console log level and format
* Introducing more security features
* Many to many owners for slices and dashboards
* Slices are filtered to only slices that the user has access to
* Adding unit tests
* Periodically update the slices in the dashboard
* Make the refresh interval changeable
* Add the button and the modal for the user to change the refresh interval
* Don't use callback for refreshing
* Randomize to prevent all widgets refreshing at the same time
* Show the loading icon as an overlay when the slices refresh
* Fixing overwrite and save slice permissions for a give role
* fix function name - build failed
* fix function name and test user permissions
* disable the button in the UI
* fix build error - characters too long in 1 line
* try to disable button on the UI
* disable cursor in caravel css. You wont be able to click anymore if no access
* fix build issues
* fix build errors! god bless me
* disable main features in dashboard and slice
* fix build issues
* Change the size of the column datasource_name in datasource creation table to fix a Sql server specific issue.
* Change the model according to the change of the database script done in the PR 345
With mysql datetime and timestamp columns, currently the Time grain "week" and "month" options don't remove the time part. This results in groupings like this:
timestamp count
2015-04-05 07:00:00 1
2015-04-05 10:00:00 1
2015-04-05 11:00:00 2
2015-04-05 11:50:00 1
2015-04-05 12:00:00 5
2015-04-05 14:20:00 1
2015-04-05 14:30:00 1
and so on.
This is solved by wrapping the DATE_SUB with DATE().
* Move window.alert() calls to bootstrap modals. Also log errors that occur to console.
* move misc modal to basic template so it's available on all pages.
I noticed that there isn't the file `requirements.txt` was removed when moving to PyPi. Plus there's no such thing as an open-source project without an "update README" PR. ;)
{".class":"MypyFile","_fullname":"_types","is_partial_stub_package":false,"is_stub":true,"names":{".class":"SymbolTable","FileDescriptor":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"TypeAlias","alias_tvars":[],"column":0,"fullname":"_types.FileDescriptor","line":9,"no_args":true,"normalized":false,"target":"builtins.int"}},"FileDescriptorLike":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"TypeAlias","alias_tvars":[],"column":0,"fullname":"_types.FileDescriptorLike","line":10,"no_args":false,"normalized":false,"target":{".class":"UnionType","items":["builtins.int","_types.HasFileno"]}}},"HasFileno":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"TypeInfo","_promote":null,"abstract_attributes":[],"bases":["builtins.object"],"declared_metaclass":null,"defn":{".class":"ClassDef","fullname":"_types.HasFileno","name":"HasFileno","type_vars":[]},"flags":["is_protocol"],"fullname":"_types.HasFileno","metaclass_type":"abc.ABCMeta","metadata":{},"module_name":"_types","mro":["_types.HasFileno","builtins.object"],"names":{".class":"SymbolTable","fileno":{".class":"SymbolTableNode","kind":"Mdef","node":{".class":"FuncDef","arg_kinds":[0],"arg_names":["self"],"flags":[],"fullname":"_types.HasFileno.fileno","name":"fileno","type":{".class":"CallableType","arg_kinds":[0],"arg_names":["self"],"arg_types":["_types.HasFileno"],"bound_args":[],"def_extras":{"first_arg":"self"},"fallback":"builtins.function","implicit":false,"is_ellipsis_args":false,"name":"fileno of HasFileno","ret_type":"builtins.int","variables":[]}}}},"tuple_type":null,"type_vars":[],"typeddict_type":null}},"Protocol":{".class":"SymbolTableNode","cross_ref":"typing.Protocol","kind":"Gdef","module_hidden":true,"module_public":false},"Union":{".class":"SymbolTableNode","cross_ref":"typing.Union","kind":"Gdef","module_hidden":true,"module_public":false},"__doc__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"_types.__doc__","name":"__doc__","type":"builtins.str"}},"__file__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"_types.__file__","name":"__file__","type":"builtins.str"}},"__name__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"_types.__name__","name":"__name__","type":"builtins.str"}},"__package__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"_types.__package__","name":"__package__","type":"builtins.str"}},"type_check_only":{".class":"SymbolTableNode","cross_ref":"typing.type_check_only","kind":"Gdef","module_hidden":true,"module_public":false}},"path":"/Users/max/.pyenv/versions/3.6.9/envs/env36/lib/python3.6/site-packages/mypy/typeshed/stdlib/2and3/_types.pyi"}
{".class":"MypyFile","_fullname":"aiohttp._helpers","is_partial_stub_package":false,"is_stub":true,"names":{".class":"SymbolTable","Any":{".class":"SymbolTableNode","cross_ref":"typing.Any","kind":"Gdef","module_hidden":true,"module_public":false},"__doc__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"aiohttp._helpers.__doc__","name":"__doc__","type":"builtins.str"}},"__file__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"aiohttp._helpers.__file__","name":"__file__","type":"builtins.str"}},"__name__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"aiohttp._helpers.__name__","name":"__name__","type":"builtins.str"}},"__package__":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"Var","flags":["is_ready"],"fullname":"aiohttp._helpers.__package__","name":"__package__","type":"builtins.str"}},"reify":{".class":"SymbolTableNode","kind":"Gdef","node":{".class":"TypeInfo","_promote":null,"abstract_attributes":[],"bases":["builtins.object"],"declared_metaclass":null,"defn":{".class":"ClassDef","fullname":"aiohttp._helpers.reify","name":"reify","type_vars":[]},"flags":[],"fullname":"aiohttp._helpers.reify","metaclass_type":null,"metadata":{},"module_name":"aiohttp._helpers","mro":["aiohttp._helpers.reify","builtins.object"],"names":{".class":"SymbolTable","__get__":{".class":"SymbolTableNode","kind":"Mdef","node":{".class":"FuncDef","arg_kinds":[0,0,0],"arg_names":["self","inst","owner"],"flags":[],"fullname":"aiohttp._helpers.reify.__get__","name":"__get__","type":{".class":"CallableType","arg_kinds":[0,0,0],"arg_names":["self","inst","owner"],"arg_types":["aiohttp._helpers.reify",{".class":"AnyType","missing_import_name":null,"source_any":null,"type_of_any":2},{".class":"AnyType","missing_import_name":null,"source_any":null,"type_of_any":2}],"bound_args":[],"def_extras":{"first_arg":"self"},"fallback":"builtins.function","implicit":false,"is_ellipsis_args":false,"name":"__get__ of reify","ret_type":{".class":"AnyType","missing_import_name":null,"source_any":null,"type_of_any":2},"variables":[]}}},"__init__":{".class":"SymbolTableNode","kind":"Mdef","node":{".class":"FuncDef","arg_kinds":[0,0],"arg_names":["self","wrapped"],"flags":[],"fullname":"aiohttp._helpers.reify.__init__","name":"__init__","type":{".class":"CallableType","arg_kinds":[0,0],"arg_names":["self","wrapped"],"arg_types":["aiohttp._helpers.reify",{".class":"AnyType","missing_import_name":null,"source_any":null,"type_of_any":2}],"bound_args":[],"def_extras":{"first_arg":"self"},"fallback":"builtins.function","implicit":false,"is_ellipsis_args":false,"name":"__init__ of reify","ret_type":{".class":"NoneType"},"variables":[]}}},"__set__":{".class":"SymbolTableNode","kind":"Mdef","node":{".class":"FuncDef","arg_kinds":[0,0,0],"arg_names":["self","inst","value"],"flags":[],"fullname":"aiohttp._helpers.reify.__set__","name":"__set__","type":{".class":"CallableType","arg_kinds":[0,0,0],"arg_names":["self","inst","value"],"arg_types":["aiohttp._helpers.reify",{".class":"AnyType","missing_import_name":null,"source_any":null,"type_of_any":2},{".class":"AnyType","missing_import_name":null,"source_any":null,"type_of_any":2}],"bound_args":[],"def_extras":{"first_arg":"self"},"fallback":"builtins.function","implicit":false,"is_ellipsis_args":false,"name":"__set__ of reify","ret_type":{".class":"NoneType"},"variables":[]}}}},"tuple_type":null,"type_vars":[],"typeddict_type":null}}},"path":"/Users/max/.pyenv/versions/3.6.9/envs/env36/lib/python3.6/site-packages/aiohttp/_helpers.pyi"}
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.