From 344d359ba9c459b233bd2daa96f2473da742ce5a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:12:42 -0700 Subject: [PATCH 01/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20re?= =?UTF-8?q?quests=202.31.0=20->=202.32.2=20(#28684)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 457db364d19ff..9132ff278c186 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -308,7 +308,7 @@ pyyaml==6.0.1 # apispec redis==4.6.0 # via apache-superset -requests==2.31.0 +requests==2.32.2 # via # requests-cache # shillelagh From 61d44488ddfd564b9c3d8b267a076f7bbc6e72f4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:13:01 -0700 Subject: [PATCH 02/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ki?= =?UTF-8?q?wisolver=201.4.4=20->=201.4.5=20(#28683)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 2f5c6ef442e17..9aab2b318d0cd 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -127,7 +127,7 @@ jsonlines==4.0.0 # via dataflows-tabulator jsonschema-spec==0.1.6 # via openapi-spec-validator -kiwisolver==1.4.4 +kiwisolver==1.4.5 # via matplotlib lazy-object-proxy==1.10.0 # via openapi-spec-validator From b99a815da5811026503dd309657d72ff8e01ebc4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:13:21 -0700 Subject: [PATCH 03/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20py?= =?UTF-8?q?druid=200.6.6=20->=200.6.9=20(#28682)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 9aab2b318d0cd..594cdb24d66b2 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -202,7 +202,7 @@ pure-sasl==0.6.2 # via thrift-sasl pydata-google-auth==1.7.0 # via pandas-gbq -pydruid==0.6.6 +pydruid==0.6.9 # via apache-superset pyee==11.0.1 # via playwright From 796f279aecd949b3464114299e2eb0a7bdea2f57 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:14:32 -0700 Subject: [PATCH 04/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20id?= =?UTF-8?q?entify=202.5.24=20->=202.5.36=20(#28680)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 594cdb24d66b2..100394f776a19 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -107,7 +107,7 @@ grpcio==1.62.1 # grpcio-status grpcio-status==1.60.1 # via google-api-core -identify==2.5.24 +identify==2.5.36 # via pre-commit ijson==3.2.3 # via dataflows-tabulator From d8b69c2656c456c28255c6d15062684e7cf15ec7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:14:48 -0700 Subject: [PATCH 05/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20cl?= =?UTF-8?q?ick-didyoumean=200.3.0=20->=200.3.1=20(#28677)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 9132ff278c186..23ae68e928a46 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -64,7 +64,7 @@ click==8.1.7 # click-repl # flask # flask-appbuilder -click-didyoumean==0.3.0 +click-didyoumean==0.3.1 # via celery click-option-group==0.5.6 # via apache-superset From e5341d28e4a2a9ad087810d495d4929b08e0c0a4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:15:05 -0700 Subject: [PATCH 06/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20cf?= =?UTF-8?q?fi=201.15.1=20->=201.16.0=20(#28676)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 23ae68e928a46..5ff6b7df75579 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -48,7 +48,7 @@ celery==5.3.6 # via apache-superset certifi==2023.7.22 # via requests -cffi==1.15.1 +cffi==1.16.0 # via # cryptography # pynacl From 8953a822a42419852ce7ef9c3d680e7f95a6d572 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:15:24 -0700 Subject: [PATCH 07/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ko?= =?UTF-8?q?mbu=205.3.4=20->=205.3.7=20(#28675)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 5ff6b7df75579..6f73735822cdb 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -179,7 +179,7 @@ jinja2==3.1.4 # flask-babel jsonschema==4.17.3 # via flask-appbuilder -kombu==5.3.4 +kombu==5.3.7 # via celery korean-lunar-calendar==0.3.1 # via holidays From 94f1c4d2a9a6b4b3af3e94fa208e8984233fe6b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:15:50 -0700 Subject: [PATCH 08/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20cl?= =?UTF-8?q?ick-repl=200.2.0=20->=200.3.0=20(#28671)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 6f73735822cdb..9b171f1d75a2e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -70,7 +70,7 @@ click-option-group==0.5.6 # via apache-superset click-plugins==1.1.1 # via celery -click-repl==0.2.0 +click-repl==0.3.0 # via celery colorama==0.4.6 # via @@ -328,7 +328,6 @@ simplejson==3.19.2 # via apache-superset six==1.16.0 # via - # click-repl # isodate # prison # python-dateutil From 1fd2f2c80e320b440de917c09d18bf128bbf2b86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:16:01 -0700 Subject: [PATCH 09/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20py?= =?UTF-8?q?project-api=201.5.2=20->=201.6.1=20(#28672)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 100394f776a19..d9956d377ed9c 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -214,7 +214,7 @@ pyinstrument==4.4.0 # via apache-superset pylint==3.1.0 # via apache-superset -pyproject-api==1.5.2 +pyproject-api==1.6.1 # via tox pyproject-hooks==1.0.0 # via From dfc2ee2a88c23caa26b01ce107d6162a601baee6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:16:59 -0700 Subject: [PATCH 10/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ba?= =?UTF-8?q?bel=202.9.1=20->=202.15.0=20(#28668)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 9b171f1d75a2e..b6912d76e7253 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -22,7 +22,7 @@ attrs==23.1.0 # cattrs # jsonschema # requests-cache -babel==2.9.1 +babel==2.15.0 # via flask-babel backoff==2.2.1 # via apache-superset @@ -298,7 +298,6 @@ python-geohash==0.8.5 # via apache-superset pytz==2021.3 # via - # babel # croniter # flask-babel # pandas From 207a5f054b23fbaa9c9bb0127d2ba41ca37cd27a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:17:39 -0700 Subject: [PATCH 11/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20fr?= =?UTF-8?q?eezegun=201.4.0=20->=201.5.1=20(#28666)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index d9956d377ed9c..cb487eeadccd6 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -66,7 +66,7 @@ flask-testing==0.8.1 # via apache-superset fonttools==4.51.0 # via matplotlib -freezegun==1.4.0 +freezegun==1.5.1 # via apache-superset future==0.18.3 # via pyhive From a48128d31706e2537d6580aef9ba55da110e5e92 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:17:47 -0700 Subject: [PATCH 12/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20tr?= =?UTF-8?q?aitlets=205.9.0=20->=205.14.3=20(#28665)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index cb487eeadccd6..fb84607e13917 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -279,7 +279,7 @@ tqdm==4.66.4 # via # cmdstanpy # prophet -traitlets==5.9.0 +traitlets==5.14.3 # via # ipython # matplotlib-inline From 65937947a9c99b71edba74319d545f9b8e6c544f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:17:56 -0700 Subject: [PATCH 13/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20pe?= =?UTF-8?q?xpect=204.8.0=20->=204.9.0=20(#28662)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index fb84607e13917..f80cf06504377 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -159,7 +159,7 @@ parso==0.8.4 # via jedi pathable==0.4.3 # via jsonschema-spec -pexpect==4.8.0 +pexpect==4.9.0 # via ipython pickleshare==0.7.5 # via ipython From 6044f643ed7442d8ae26d367f3919d9e864f0bdb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:18:19 -0700 Subject: [PATCH 14/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20wh?= =?UTF-8?q?eel=200.40.0=20->=200.43.0=20(#28660)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index f80cf06504377..4ed764abca22e 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -295,7 +295,7 @@ virtualenv==20.23.1 # via # pre-commit # tox -wheel==0.40.0 +wheel==0.43.0 # via pip-tools xlrd==2.0.1 # via dataflows-tabulator From 63e98286e9b03841d77d272b7ceb54d8a0f76dfd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:18:57 -0700 Subject: [PATCH 15/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ty?= =?UTF-8?q?ping-extensions=204.11.0=20->=204.12.0=20(#28659)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index b6912d76e7253..ec475abf3f82d 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -355,7 +355,7 @@ sshtunnel==0.4.0 # via apache-superset tabulate==0.8.10 # via apache-superset -typing-extensions==4.11.0 +typing-extensions==4.12.0 # via # alembic # apache-superset From a5df955a39b493bca6363450c3784516c88ef5fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:19:08 -0700 Subject: [PATCH 16/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ca?= =?UTF-8?q?ttrs=2023.2.1=20->=2023.2.3=20(#28658)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index ec475abf3f82d..1b60eba767857 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -42,7 +42,7 @@ cachelib==0.9.0 # flask-session cachetools==5.3.2 # via google-auth -cattrs==23.2.1 +cattrs==23.2.3 # via requests-cache celery==5.3.6 # via apache-superset From f39eda150f8c3449241ae0c4dba1d82fca4714e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:19:16 -0700 Subject: [PATCH 17/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20bo?= =?UTF-8?q?ttleneck=201.3.7=20->=201.3.8=20(#28657)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 1b60eba767857..19d310baba78e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -32,7 +32,7 @@ billiard==4.2.0 # via celery blinker==1.8.2 # via flask -bottleneck==1.3.7 +bottleneck==1.3.8 # via pandas brotli==1.1.0 # via flask-compress From 820fecb48181ad8f2c49f7e711d92950eefc1064 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:22:13 -0700 Subject: [PATCH 18/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20bc?= =?UTF-8?q?rypt=204.0.1=20->=204.1.3=20(#28590)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 19d310baba78e..3df3afc08d284 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -26,7 +26,7 @@ babel==2.15.0 # via flask-babel backoff==2.2.1 # via apache-superset -bcrypt==4.0.1 +bcrypt==4.1.3 # via paramiko billiard==4.2.0 # via celery From 21486da2b436c3cc1989eb271475dbe64e90cdb2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:22:20 -0700 Subject: [PATCH 19/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ma?= =?UTF-8?q?rshmallow=203.19.0=20->=203.21.2=20(#28655)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 3df3afc08d284..67a9175dbf76d 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -201,7 +201,7 @@ markupsafe==2.1.5 # mako # werkzeug # wtforms -marshmallow==3.19.0 +marshmallow==3.21.2 # via # flask-appbuilder # marshmallow-sqlalchemy From 3d67346f77d91625ecdc97e21155407bf9064cf3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:27:50 -0700 Subject: [PATCH 20/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20fl?= =?UTF-8?q?ask-limiter=203.3.1=20->=203.7.0=20(#28670)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 67a9175dbf76d..dc8557db4a4d2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -119,7 +119,7 @@ flask-compress==1.15 # via apache-superset flask-jwt-extended==4.6.0 # via flask-appbuilder -flask-limiter==3.3.1 +flask-limiter==3.7.0 # via flask-appbuilder flask-login==0.6.3 # via From 278570bc38b00db939b61b694ce5386b64a3f70b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 11:40:38 -0700 Subject: [PATCH 21/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20re?= =?UTF-8?q?quests-oauthlib=201.3.1=20->=202.0.0=20(#28681)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action Co-authored-by: Maxime Beauchemin --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 4ed764abca22e..313bb514d9e4e 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -231,7 +231,7 @@ pytest-mock==3.10.0 # via apache-superset python-ldap==3.4.4 # via apache-superset -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via google-auth-oauthlib rfc3339-validator==0.1.4 # via openapi-schema-validator From 2c982cf5b382f8831868d53eedd558865312e89c Mon Sep 17 00:00:00 2001 From: Sam Firke Date: Fri, 24 May 2024 15:36:39 -0400 Subject: [PATCH 22/60] chore(docs): address common docker compose error message in Quickstart (#28696) --- docs/docs/quickstart.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/quickstart.mdx b/docs/docs/quickstart.mdx index b36051a4b9534..e1e621a85a93e 100644 --- a/docs/docs/quickstart.mdx +++ b/docs/docs/quickstart.mdx @@ -38,6 +38,8 @@ This may take a moment as Docker Compose will fetch the underlying container images and will load up some examples. Once all containers are downloaded and the output settles, you're ready to log in. +⚠️ If you get an error message like `validating superset\docker-compose-image-tag.yml: services.superset-worker-beat.env_file.0 must be a string`, you need to update your version of `docker-compose`. + ### 3. Log into Superset Now head over to [http://localhost:8088](http://localhost:8088) and log in with the default created account: ```bash From c82c4b6877d71f82e17818651081323e6ecb7e1f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 22:38:51 -0700 Subject: [PATCH 23/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ma?= =?UTF-8?q?tplotlib=203.7.1=20->=203.9.0=20(#28674)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 313bb514d9e4e..39e1108b09a42 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -133,7 +133,7 @@ lazy-object-proxy==1.10.0 # via openapi-spec-validator linear-tsv==1.1.0 # via dataflows-tabulator -matplotlib==3.7.1 +matplotlib==3.9.0 # via prophet matplotlib-inline==0.1.6 # via ipython From eadf84d8cfd5bdbaa7f2953ff6ef8ff7433c7a30 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 22:39:08 -0700 Subject: [PATCH 24/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ru?= =?UTF-8?q?ff=200.4.4=20->=200.4.5=20(#28669)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 39e1108b09a42..22d4c4f2efcd5 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -237,7 +237,7 @@ rfc3339-validator==0.1.4 # via openapi-schema-validator rfc3986==2.0.0 # via tableschema -ruff==0.4.4 +ruff==0.4.5 # via apache-superset s3transfer==0.6.1 # via boto3 From c1a7bb4f62f59f2737ec4df1a89de07d41f96765 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 22:39:23 -0700 Subject: [PATCH 25/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20go?= =?UTF-8?q?ogleapis-common-protos=201.59.0=20->=201.63.0=20(#28663)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 22d4c4f2efcd5..4b8531017ffc2 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -96,7 +96,7 @@ google-crc32c==1.5.0 # via google-resumable-media google-resumable-media==2.7.0 # via google-cloud-bigquery -googleapis-common-protos==1.59.0 +googleapis-common-protos==1.63.0 # via # google-api-core # grpcio-status From 5f553601f771768455aa6094cc1e082f25b5bf65 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 22:39:43 -0700 Subject: [PATCH 26/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20st?= =?UTF-8?q?ack-data=200.6.2=20->=200.6.3=20(#28661)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/development.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/development.txt b/requirements/development.txt index 4b8531017ffc2..257af5f46ddb0 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -245,7 +245,7 @@ sqlalchemy-bigquery==1.11.0 # via apache-superset sqloxide==0.1.43 # via apache-superset -stack-data==0.6.2 +stack-data==0.6.3 # via ipython statsd==4.0.1 # via apache-superset From 9ac0cf7d1466f71fb41a2c30dcb54d94c733206e Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Sat, 25 May 2024 01:25:12 -0700 Subject: [PATCH 27/60] chore: remove ipython from development dependencies (#28703) --- pyproject.toml | 1 - requirements/base.txt | 4 +--- requirements/development.txt | 29 ----------------------------- 3 files changed, 1 insertion(+), 33 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ed2f78a6f55bc..af6a15dbac9fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -178,7 +178,6 @@ development = [ "freezegun", "greenlet>=2.0.2", "grpcio>=1.55.3", - "ipython", "openapi-spec-validator", "parameterized", "pip-compile-multi", diff --git a/requirements/base.txt b/requirements/base.txt index dc8557db4a4d2..5865cbd6f9096 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -148,9 +148,7 @@ geopy==2.4.1 google-auth==2.27.0 # via shillelagh greenlet==3.0.3 - # via - # shillelagh - # sqlalchemy + # via shillelagh gunicorn==22.0.0 # via apache-superset hashids==1.3.1 diff --git a/requirements/development.txt b/requirements/development.txt index 257af5f46ddb0..8dfdb5e34cd5f 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -12,10 +12,6 @@ # -r requirements/development.in astroid==3.1.0 # via pylint -asttokens==2.2.1 - # via stack-data -backcall==0.2.0 - # via ipython boto3==1.26.130 # via dataflows-tabulator botocore==1.29.130 @@ -44,8 +40,6 @@ dataflows-tabulator==1.54.3 # via tableschema db-dtypes==1.2.0 # via pandas-gbq -decorator==5.1.1 - # via ipython dill==0.3.8 # via pylint distlib==0.3.8 @@ -54,8 +48,6 @@ docker==7.0.0 # via apache-superset et-xmlfile==1.1.0 # via openpyxl -executing==1.2.0 - # via stack-data filelock==3.12.2 # via # tox @@ -113,12 +105,8 @@ ijson==3.2.3 # via dataflows-tabulator iniconfig==2.0.0 # via pytest -ipython==8.12.2 - # via apache-superset isort==5.12.0 # via pylint -jedi==0.18.2 - # via ipython jmespath==1.0.1 # via # boto3 @@ -135,8 +123,6 @@ linear-tsv==1.1.0 # via dataflows-tabulator matplotlib==3.9.0 # via prophet -matplotlib-inline==0.1.6 - # via ipython mccabe==0.7.0 # via pylint mysqlclient==2.2.4 @@ -155,14 +141,8 @@ pandas-gbq==0.19.1 # via apache-superset parameterized==0.9.0 # via apache-superset -parso==0.8.4 - # via jedi pathable==0.4.3 # via jsonschema-spec -pexpect==4.9.0 - # via ipython -pickleshare==0.7.5 - # via ipython pillow==10.3.0 # via # apache-superset @@ -194,10 +174,6 @@ protobuf==4.23.0 # proto-plus psycopg2-binary==2.9.6 # via apache-superset -ptyprocess==0.7.0 - # via pexpect -pure-eval==0.2.2 - # via stack-data pure-sasl==0.6.2 # via thrift-sasl pydata-google-auth==1.7.0 @@ -245,8 +221,6 @@ sqlalchemy-bigquery==1.11.0 # via apache-superset sqloxide==0.1.43 # via apache-superset -stack-data==0.6.3 - # via ipython statsd==4.0.1 # via apache-superset tableschema==1.20.10 @@ -259,12 +233,10 @@ thrift-sasl==0.4.3 # via apache-superset tomli==2.0.1 # via - # apache-superset # build # coverage # pip-tools # pylint - # pyhive # pyproject-api # pyproject-hooks # pytest @@ -281,7 +253,6 @@ tqdm==4.66.4 # prophet traitlets==5.14.3 # via - # ipython # matplotlib-inline trino==0.328.0 # via apache-superset From f7b273460d89d9aa8a9fd15c6dd49ee6ca7f6c86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 21:47:11 -0700 Subject: [PATCH 28/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20bo?= =?UTF-8?q?to3=201.26.130=20->=201.34.112=20(#28679)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action Co-authored-by: Maxime Beauchemin --- requirements/development.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements/development.txt b/requirements/development.txt index 8dfdb5e34cd5f..5fdc102ea08d6 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -12,9 +12,9 @@ # -r requirements/development.in astroid==3.1.0 # via pylint -boto3==1.26.130 +boto3==1.34.112 # via dataflows-tabulator -botocore==1.29.130 +botocore==1.34.112 # via # boto3 # s3transfer @@ -215,7 +215,7 @@ rfc3986==2.0.0 # via tableschema ruff==0.4.5 # via apache-superset -s3transfer==0.6.1 +s3transfer==0.10.1 # via boto3 sqlalchemy-bigquery==1.11.0 # via apache-superset From 4ad823e97aff4f4671778c40fb9e605e355de27a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 07:58:35 -0700 Subject: [PATCH 29/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ce?= =?UTF-8?q?rtifi=202023.7.22=20->=202024.2.2=20(#28733)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 5865cbd6f9096..d1a345140e28c 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -46,7 +46,7 @@ cattrs==23.2.3 # via requests-cache celery==5.3.6 # via apache-superset -certifi==2023.7.22 +certifi==2024.2.2 # via requests cffi==1.16.0 # via @@ -148,7 +148,9 @@ geopy==2.4.1 google-auth==2.27.0 # via shillelagh greenlet==3.0.3 - # via shillelagh + # via + # shillelagh + # sqlalchemy gunicorn==22.0.0 # via apache-superset hashids==1.3.1 From b53ccf893f334cf286eb6ee50e0b13c50252073f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 07:58:56 -0700 Subject: [PATCH 30/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20go?= =?UTF-8?q?ogle-auth=202.27.0=20->=202.29.0=20(#28732)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index d1a345140e28c..eb0a702e83311 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -145,7 +145,7 @@ geographiclib==2.0 # via geopy geopy==2.4.1 # via apache-superset -google-auth==2.27.0 +google-auth==2.29.0 # via shillelagh greenlet==3.0.3 # via From 57bd3c35c2dd8200e38172ac16e671d242f58365 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:00:14 -0700 Subject: [PATCH 31/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20py?= =?UTF-8?q?asn1=200.5.1=20->=200.6.0=20(#28726)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index eb0a702e83311..9d53c1f216490 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -260,7 +260,7 @@ prompt-toolkit==3.0.38 # via click-repl pyarrow==14.0.2 # via apache-superset -pyasn1==0.5.1 +pyasn1==0.6.0 # via # pyasn1-modules # rsa From 0ed87c5d56d015b0b5686a01f0d5ccbf5d99bb71 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:00:29 -0700 Subject: [PATCH 32/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20wc?= =?UTF-8?q?width=200.2.5=20->=200.2.13=20(#28725)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 9d53c1f216490..7a39870eb618c 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -380,7 +380,7 @@ vine==5.1.0 # amqp # celery # kombu -wcwidth==0.2.5 +wcwidth==0.2.13 # via prompt-toolkit werkzeug==3.0.3 # via From f988d997ff2941f1cd1caa2ac1562f255af4699d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:00:59 -0700 Subject: [PATCH 33/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ma?= =?UTF-8?q?rshmallow-sqlalchemy=200.23.1=20->=200.28.2=20(#28724)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 7a39870eb618c..936646bdaa379 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -205,7 +205,7 @@ marshmallow==3.21.2 # via # flask-appbuilder # marshmallow-sqlalchemy -marshmallow-sqlalchemy==0.23.1 +marshmallow-sqlalchemy==0.28.2 # via flask-appbuilder mdurl==0.1.2 # via markdown-it-py @@ -239,6 +239,7 @@ packaging==23.2 # gunicorn # limits # marshmallow + # marshmallow-sqlalchemy # shillelagh pandas[performance]==2.0.3 # via apache-superset From 4d252647ef09d14a2d3532c1d3ce7fea45be3048 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:01:19 -0700 Subject: [PATCH 34/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ma?= =?UTF-8?q?ko=201.3.3=20->=201.3.5=20(#28723)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 936646bdaa379..1fffc95faa361 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -187,7 +187,7 @@ limits==3.4.0 # via flask-limiter llvmlite==0.42.0 # via numba -mako==1.3.3 +mako==1.3.5 # via # alembic # apache-superset From 22d8074c49f1301960ddccd93063baa5b2d9ee88 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:03:14 -0700 Subject: [PATCH 35/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20li?= =?UTF-8?q?mits=203.4.0=20->=203.12.0=20(#28717)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 1fffc95faa361..03df70c0e6402 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -183,7 +183,7 @@ kombu==5.3.7 # via celery korean-lunar-calendar==0.3.1 # via holidays -limits==3.4.0 +limits==3.12.0 # via flask-limiter llvmlite==0.42.0 # via numba @@ -406,6 +406,3 @@ zipp==3.18.2 # via importlib-metadata zstandard==0.22.0 # via flask-compress - -# The following packages are considered to be unsafe in a requirements file: -# setuptools From 475364248f037be90fd0575772435381c1d89258 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:06:51 -0700 Subject: [PATCH 36/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20wr?= =?UTF-8?q?apt=201.15.0=20->=201.16.0=20(#28722)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 03df70c0e6402..8d8f3fa73f062 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -390,7 +390,7 @@ werkzeug==3.0.3 # flask-appbuilder # flask-jwt-extended # flask-login -wrapt==1.15.0 +wrapt==1.16.0 # via deprecated wtforms==3.1.2 # via From 0fdb4b7c23cee51b665a4bef187051abe9d05008 Mon Sep 17 00:00:00 2001 From: Vitor Avila <96086495+Vitor-Avila@users.noreply.github.com> Date: Tue, 28 May 2024 12:41:31 -0300 Subject: [PATCH 37/60] chore(tags): Handle tagging as part of asset update call (#28570) --- .../src/components/Tags/utils.test.tsx | 6 +- .../src/components/Tags/utils.tsx | 14 +- .../components/PropertiesModal/index.tsx | 84 +--- .../components/PropertiesModal/index.tsx | 77 +--- superset-frontend/src/types/TagType.ts | 2 +- superset/charts/api.py | 4 +- superset/charts/schemas.py | 10 +- superset/commands/chart/update.py | 19 +- superset/commands/dashboard/update.py | 23 +- superset/commands/exceptions.py | 10 + superset/commands/utils.py | 85 +++- superset/dashboards/api.py | 3 + superset/dashboards/schemas.py | 4 + superset/security/manager.py | 2 + tests/integration_tests/charts/api_tests.py | 259 ++++++++++++ .../integration_tests/dashboards/api_tests.py | 273 +++++++++++++ tests/unit_tests/commands/test_utils.py | 367 +++++++++++++++++- 17 files changed, 1075 insertions(+), 167 deletions(-) diff --git a/superset-frontend/src/components/Tags/utils.test.tsx b/superset-frontend/src/components/Tags/utils.test.tsx index b6d28d60c1a74..e4ba71e3e22d2 100644 --- a/superset-frontend/src/components/Tags/utils.test.tsx +++ b/superset-frontend/src/components/Tags/utils.test.tsx @@ -21,15 +21,15 @@ import { tagToSelectOption } from 'src/components/Tags/utils'; describe('tagToSelectOption', () => { test('converts a Tag object with table_name to a SelectTagsValue', () => { const tag = { - id: '1', + id: 1, name: 'TagName', table_name: 'Table1', }; const expectedSelectTagsValue = { - value: 'TagName', + value: 1, label: 'TagName', - key: '1', + key: 1, }; expect(tagToSelectOption(tag)).toEqual(expectedSelectTagsValue); diff --git a/superset-frontend/src/components/Tags/utils.tsx b/superset-frontend/src/components/Tags/utils.tsx index f0dd4c46f6786..ea3f9b1982c15 100644 --- a/superset-frontend/src/components/Tags/utils.tsx +++ b/superset-frontend/src/components/Tags/utils.tsx @@ -37,17 +37,17 @@ const cachedSupersetGet = cacheWrapper( ); type SelectTagsValue = { - value: string | number | undefined; - label: string; - key: string | number | undefined; + value: number | undefined; + label: string | undefined; + key: number | undefined; }; export const tagToSelectOption = ( - item: Tag & { table_name: string }, + tag: Tag & { table_name: string }, ): SelectTagsValue => ({ - value: item.name, - label: item.name, - key: item.id, + value: tag.id, + label: tag.name, + key: tag.id, }); export const loadTags = async ( diff --git a/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx b/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx index 8613a8db6f2a7..12dadaa2eb90f 100644 --- a/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx +++ b/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx @@ -44,12 +44,7 @@ import ColorSchemeControlWrapper from 'src/dashboard/components/ColorSchemeContr import FilterScopeModal from 'src/dashboard/components/filterscope/FilterScopeModal'; import withToasts from 'src/components/MessageToasts/withToasts'; import TagType from 'src/types/TagType'; -import { - addTag, - deleteTaggedObjects, - fetchTags, - OBJECT_TYPES, -} from 'src/features/tags/tags'; +import { fetchTags, OBJECT_TYPES } from 'src/features/tags/tags'; import { loadTags } from 'src/components/Tags/utils'; const StyledFormItem = styled(FormItem)` @@ -115,10 +110,9 @@ const PropertiesModal = ({ const categoricalSchemeRegistry = getCategoricalSchemeRegistry(); const tagsAsSelectValues = useMemo(() => { - const selectTags = tags.map(tag => ({ - value: tag.name, + const selectTags = tags.map((tag: { id: number; name: string }) => ({ + value: tag.id, label: tag.name, - key: tag.name, })); return selectTags; }, [tags.length]); @@ -309,41 +303,6 @@ const PropertiesModal = ({ setColorScheme(colorScheme); }; - const updateTags = (oldTags: TagType[], newTags: TagType[]) => { - // update the tags for this object - // add tags that are in new tags, but not in old tags - // eslint-disable-next-line array-callback-return - newTags.map((tag: TagType) => { - if (!oldTags.some(t => t.name === tag.name)) { - addTag( - { - objectType: OBJECT_TYPES.DASHBOARD, - objectId: dashboardId, - includeTypes: false, - }, - tag.name, - () => {}, - () => {}, - ); - } - }); - // delete tags that are in old tags, but not in new tags - // eslint-disable-next-line array-callback-return - oldTags.map((tag: TagType) => { - if (!newTags.some(t => t.name === tag.name)) { - deleteTaggedObjects( - { - objectType: OBJECT_TYPES.DASHBOARD, - objectId: dashboardId, - }, - tag, - () => {}, - () => {}, - ); - } - }); - }; - const onFinish = () => { const { title, slug, certifiedBy, certificationDetails } = form.getFieldsValue(); @@ -401,31 +360,16 @@ const PropertiesModal = ({ updateMetadata: false, }); - if (isFeatureEnabled(FeatureFlag.TaggingSystem)) { - // update tags - try { - fetchTags( - { - objectType: OBJECT_TYPES.DASHBOARD, - objectId: dashboardId, - includeTypes: false, - }, - (currentTags: TagType[]) => updateTags(currentTags, tags), - error => { - handleErrorResponse(error); - }, - ); - } catch (error) { - handleErrorResponse(error); - } - } - const moreOnSubmitProps: { roles?: Roles } = {}; - const morePutProps: { roles?: number[] } = {}; + const morePutProps: { roles?: number[]; tags?: (number | undefined)[] } = + {}; if (isFeatureEnabled(FeatureFlag.DashboardRbac)) { moreOnSubmitProps.roles = roles; morePutProps.roles = (roles || []).map(r => r.id); } + if (isFeatureEnabled(FeatureFlag.TaggingSystem)) { + morePutProps.tags = tags.map(tag => tag.id); + } const onSubmitProps = { id: dashboardId, title, @@ -621,12 +565,12 @@ const PropertiesModal = ({ } }, [dashboardId]); - const handleChangeTags = (values: { label: string; value: number }[]) => { - // triggered whenever a new tag is selected or a tag was deselected - // on new tag selected, add the tag - - const uniqueTags = [...new Set(values.map(v => v.label))]; - setTags([...uniqueTags.map(t => ({ name: t }))]); + const handleChangeTags = (tags: { label: string; value: number }[]) => { + const parsedTags: TagType[] = ensureIsArray(tags).map(r => ({ + id: r.value, + name: r.label, + })); + setTags(parsedTags); }; return ( diff --git a/superset-frontend/src/explore/components/PropertiesModal/index.tsx b/superset-frontend/src/explore/components/PropertiesModal/index.tsx index 45af79a54b80a..39b4224b93edc 100644 --- a/superset-frontend/src/explore/components/PropertiesModal/index.tsx +++ b/superset-frontend/src/explore/components/PropertiesModal/index.tsx @@ -30,16 +30,12 @@ import { isFeatureEnabled, FeatureFlag, getClientErrorObject, + ensureIsArray, } from '@superset-ui/core'; import Chart, { Slice } from 'src/types/Chart'; import withToasts from 'src/components/MessageToasts/withToasts'; import { loadTags } from 'src/components/Tags/utils'; -import { - addTag, - deleteTaggedObjects, - fetchTags, - OBJECT_TYPES, -} from 'src/features/tags/tags'; +import { fetchTags, OBJECT_TYPES } from 'src/features/tags/tags'; import TagType from 'src/types/TagType'; export type PropertiesModalProps = { @@ -80,10 +76,9 @@ function PropertiesModal({ const [tags, setTags] = useState([]); const tagsAsSelectValues = useMemo(() => { - const selectTags = tags.map(tag => ({ - value: tag.name, + const selectTags = tags.map((tag: { id: number; name: string }) => ({ + value: tag.id, label: tag.name, - key: tag.name, })); return selectTags; }, [tags.length]); @@ -144,41 +139,6 @@ function PropertiesModal({ [], ); - const updateTags = (oldTags: TagType[], newTags: TagType[]) => { - // update the tags for this object - // add tags that are in new tags, but not in old tags - // eslint-disable-next-line array-callback-return - newTags.map((tag: TagType) => { - if (!oldTags.some(t => t.name === tag.name)) { - addTag( - { - objectType: OBJECT_TYPES.CHART, - objectId: slice.slice_id, - includeTypes: false, - }, - tag.name, - () => {}, - () => {}, - ); - } - }); - // delete tags that are in old tags, but not in new tags - // eslint-disable-next-line array-callback-return - oldTags.map((tag: TagType) => { - if (!newTags.some(t => t.name === tag.name)) { - deleteTaggedObjects( - { - objectType: OBJECT_TYPES.CHART, - objectId: slice.slice_id, - }, - tag, - () => {}, - () => {}, - ); - } - }); - }; - const onSubmit = async (values: { certified_by?: string; certification_details?: string; @@ -209,22 +169,7 @@ function PropertiesModal({ ).map(o => o.value); } if (isFeatureEnabled(FeatureFlag.TaggingSystem)) { - // update tags - try { - fetchTags( - { - objectType: OBJECT_TYPES.CHART, - objectId: slice.slice_id, - includeTypes: false, - }, - (currentTags: TagType[]) => updateTags(currentTags, tags), - error => { - showError(error); - }, - ); - } catch (error) { - showError(error); - } + payload.tags = tags.map(tag => tag.id); } try { @@ -282,12 +227,12 @@ function PropertiesModal({ } }, [slice.slice_id]); - const handleChangeTags = (values: { label: string; value: number }[]) => { - // triggered whenever a new tag is selected or a tag was deselected - // on new tag selected, add the tag - - const uniqueTags = [...new Set(values.map(v => v.label))]; - setTags([...uniqueTags.map(t => ({ name: t }))]); + const handleChangeTags = (tags: { label: string; value: number }[]) => { + const parsedTags: TagType[] = ensureIsArray(tags).map(r => ({ + id: r.value, + name: r.label, + })); + setTags(parsedTags); }; const handleClearTags = () => { diff --git a/superset-frontend/src/types/TagType.ts b/superset-frontend/src/types/TagType.ts index 8f445e50dafd5..0ea5f44d2d275 100644 --- a/superset-frontend/src/types/TagType.ts +++ b/superset-frontend/src/types/TagType.ts @@ -20,7 +20,7 @@ import { MouseEventHandler } from 'react'; export interface TagType { - id?: string | number; + id?: number; type?: string | number; editable?: boolean; onDelete?: (index: number) => void; diff --git a/superset/charts/api.py b/superset/charts/api.py index 05eb0ab0c2af9..4034c8ef2740e 100644 --- a/superset/charts/api.py +++ b/superset/charts/api.py @@ -69,7 +69,7 @@ from superset.commands.chart.importers.dispatcher import ImportChartsCommand from superset.commands.chart.update import UpdateChartCommand from superset.commands.chart.warm_up_cache import ChartWarmUpCacheCommand -from superset.commands.exceptions import CommandException +from superset.commands.exceptions import CommandException, TagForbiddenError from superset.commands.importers.exceptions import ( IncorrectFormatError, NoValidFilesFoundError, @@ -404,6 +404,8 @@ def put(self, pk: int) -> Response: response = self.response_404() except ChartForbiddenError: response = self.response_403() + except TagForbiddenError as ex: + response = self.response(403, message=str(ex)) except ChartInvalidError as ex: response = self.response_422(message=ex.normalized_messages()) except ChartUpdateFailedError as ex: diff --git a/superset/charts/schemas.py b/superset/charts/schemas.py index 611f7af59786f..89e47a9dcb881 100644 --- a/superset/charts/schemas.py +++ b/superset/charts/schemas.py @@ -27,7 +27,6 @@ from superset import app from superset.common.chart_data import ChartDataResultFormat, ChartDataResultType from superset.db_engine_specs.base import builtin_time_grains -from superset.tags.models import TagType from superset.utils import pandas_postprocessing, schema as utils from superset.utils.core import ( AnnotationType, @@ -122,6 +121,7 @@ owners_name_description = "Name of an owner of the chart." certified_by_description = "Person or group that has certified this chart" certification_details_description = "Details of the certification" +tags_description = "Tags to be associated with the chart" openapi_spec_methods_override = { "get": {"get": {"summary": "Get a chart detail information"}}, @@ -143,12 +143,6 @@ } -class TagSchema(Schema): - id = fields.Int() - name = fields.String() - type = fields.Enum(TagType, by_value=True) - - class ChartEntityResponseSchema(Schema): """ Schema for a chart object @@ -284,7 +278,7 @@ class ChartPutSchema(Schema): ) is_managed_externally = fields.Boolean(allow_none=True, dump_default=False) external_url = fields.String(allow_none=True) - tags = fields.Nested(TagSchema, many=True) + tags = fields.List(fields.Integer(metadata={"description": tags_description})) class ChartGetDatasourceObjectDataResponseSchema(Schema): diff --git a/superset/commands/chart/update.py b/superset/commands/chart/update.py index 178344634e186..74b1c30aa83c8 100644 --- a/superset/commands/chart/update.py +++ b/superset/commands/chart/update.py @@ -32,12 +32,13 @@ DashboardsNotFoundValidationError, DatasourceTypeUpdateRequiredValidationError, ) -from superset.commands.utils import get_datasource_by_id +from superset.commands.utils import get_datasource_by_id, update_tags, validate_tags from superset.daos.chart import ChartDAO from superset.daos.dashboard import DashboardDAO -from superset.daos.exceptions import DAOUpdateFailedError +from superset.daos.exceptions import DAODeleteFailedError, DAOUpdateFailedError from superset.exceptions import SupersetSecurityException from superset.models.slice import Slice +from superset.tags.models import ObjectType logger = logging.getLogger(__name__) @@ -59,11 +60,16 @@ def run(self) -> Model: assert self._model try: + # Update tags + tags = self._properties.pop("tags", None) + if tags is not None: + update_tags(ObjectType.chart, self._model.id, self._model.tags, tags) + if self._properties.get("query_context_generation") is None: self._properties["last_saved_at"] = datetime.now() self._properties["last_saved_by"] = g.user chart = ChartDAO.update(self._model, self._properties) - except DAOUpdateFailedError as ex: + except (DAOUpdateFailedError, DAODeleteFailedError) as ex: logger.exception(ex.exception) raise ChartUpdateFailedError() from ex return chart @@ -72,6 +78,7 @@ def validate(self) -> None: exceptions: list[ValidationError] = [] dashboard_ids = self._properties.get("dashboards") owner_ids: Optional[list[int]] = self._properties.get("owners") + tag_ids: Optional[list[int]] = self._properties.get("tags") # Validate if datasource_id is provided datasource_type is required datasource_id = self._properties.get("datasource_id") @@ -100,6 +107,12 @@ def validate(self) -> None: except ValidationError as ex: exceptions.append(ex) + # validate tags + try: + validate_tags(ObjectType.chart, self._model.tags, tag_ids) + except ValidationError as ex: + exceptions.append(ex) + # Validate/Populate datasource if datasource_id is not None: try: diff --git a/superset/commands/dashboard/update.py b/superset/commands/dashboard/update.py index b2b11e5f6e4e8..d35fb6b28e5dd 100644 --- a/superset/commands/dashboard/update.py +++ b/superset/commands/dashboard/update.py @@ -30,12 +30,13 @@ DashboardSlugExistsValidationError, DashboardUpdateFailedError, ) -from superset.commands.utils import populate_roles +from superset.commands.utils import populate_roles, update_tags, validate_tags from superset.daos.dashboard import DashboardDAO -from superset.daos.exceptions import DAOUpdateFailedError +from superset.daos.exceptions import DAODeleteFailedError, DAOUpdateFailedError from superset.exceptions import SupersetSecurityException from superset.extensions import db from superset.models.dashboard import Dashboard +from superset.tags.models import ObjectType logger = logging.getLogger(__name__) @@ -51,6 +52,13 @@ def run(self) -> Model: assert self._model try: + # Update tags + tags = self._properties.pop("tags", None) + if tags is not None: + update_tags( + ObjectType.dashboard, self._model.id, self._model.tags, tags + ) + dashboard = DashboardDAO.update(self._model, self._properties, commit=False) if self._properties.get("json_metadata"): dashboard = DashboardDAO.set_dash_metadata( @@ -59,7 +67,7 @@ def run(self) -> Model: commit=False, ) db.session.commit() - except DAOUpdateFailedError as ex: + except (DAOUpdateFailedError, DAODeleteFailedError) as ex: logger.exception(ex.exception) raise DashboardUpdateFailedError() from ex return dashboard @@ -69,6 +77,7 @@ def validate(self) -> None: owner_ids: Optional[list[int]] = self._properties.get("owners") roles_ids: Optional[list[int]] = self._properties.get("roles") slug: Optional[str] = self._properties.get("slug") + tag_ids: Optional[list[int]] = self._properties.get("tags") # Validate/populate model exists self._model = DashboardDAO.find_by_id(self._model_id) @@ -93,8 +102,12 @@ def validate(self) -> None: self._properties["owners"] = owners except ValidationError as ex: exceptions.append(ex) - if exceptions: - raise DashboardInvalidError(exceptions=exceptions) + + # validate tags + try: + validate_tags(ObjectType.dashboard, self._model.tags, tag_ids) + except ValidationError as ex: + exceptions.append(ex) # Validate/Populate role if roles_ids is None: diff --git a/superset/commands/exceptions.py b/superset/commands/exceptions.py index 4fb36c5b57f97..7fc89ac1d93aa 100644 --- a/superset/commands/exceptions.py +++ b/superset/commands/exceptions.py @@ -140,3 +140,13 @@ class QueryNotFoundValidationError(ValidationError): def __init__(self) -> None: super().__init__([_("Query does not exist")], field_name="datasource_id") + + +class TagNotFoundValidationError(ValidationError): + def __init__(self, message: str) -> None: + super().__init__(message, field_name="tags") + + +class TagForbiddenError(ForbiddenError): + def __init__(self, message: str) -> None: + super().__init__(message) diff --git a/superset/commands/utils.py b/superset/commands/utils.py index f01c96ba28223..29a31aa2aa7a3 100644 --- a/superset/commands/utils.py +++ b/superset/commands/utils.py @@ -16,7 +16,8 @@ # under the License. from __future__ import annotations -from typing import TYPE_CHECKING +from collections import Counter +from typing import Optional, TYPE_CHECKING from flask import g from flask_appbuilder.security.sqla.models import Role, User @@ -26,9 +27,13 @@ DatasourceNotFoundValidationError, OwnersNotFoundValidationError, RolesNotFoundValidationError, + TagForbiddenError, + TagNotFoundValidationError, ) from superset.daos.datasource import DatasourceDAO from superset.daos.exceptions import DatasourceNotFound +from superset.daos.tag import TagDAO +from superset.tags.models import ObjectType, Tag, TagType from superset.utils.core import DatasourceType, get_user_id if TYPE_CHECKING: @@ -102,3 +107,81 @@ def get_datasource_by_id(datasource_id: int, datasource_type: str) -> BaseDataso ) except DatasourceNotFound as ex: raise DatasourceNotFoundValidationError() from ex + + +def validate_tags( + object_type: ObjectType, + current_tags: list[Tag], + new_tag_ids: Optional[list[int]], +) -> None: + """ + Helper function for update commands, to validate the tags list. Users + with `can_write` on `Tag` are allowed to both create new tags and manage + tag association with objects. Users with `can_tag` on `object_type` are + only allowed to manage existing existing tags' associations with the object. + + :param current_tags: list of current tags + :param new_tag_ids: list of tags specified in the update payload + """ + + # `tags` not part of the update payload + if new_tag_ids is None: + return + + # No changes in the list + current_custom_tags = [tag.id for tag in current_tags if tag.type == TagType.custom] + if Counter(current_custom_tags) == Counter(new_tag_ids): + return + + # No perm to tags assets + if not ( + security_manager.can_access("can_write", "Tag") + or security_manager.can_access("can_tag", object_type.name.capitalize()) + ): + validation_error = ( + f"You do not have permission to manage tags on {object_type.name}s" + ) + raise TagForbiddenError(validation_error) + + # Validate if new tags already exist + additional_tags = [tag for tag in new_tag_ids if tag not in current_custom_tags] + for tag_id in additional_tags: + if not TagDAO.find_by_id(tag_id): + validation_error = f"Tag ID {tag_id} not found" + raise TagNotFoundValidationError(validation_error) + + return + + +def update_tags( + object_type: ObjectType, + object_id: int, + current_tags: list[Tag], + new_tag_ids: list[int], +) -> None: + """ + Helper function for update commands, to update the tag relationship. + + :param object_id: The object (dashboard, chart, etc) ID + :param object_type: The object type + :param current_tags: list of current tags + :param new_tag_ids: list of tags specified in the update payload + """ + + current_custom_tags = [tag for tag in current_tags if tag.type == TagType.custom] + current_custom_tag_ids = [ + tag.id for tag in current_tags if tag.type == TagType.custom + ] + + tags_to_delete = [tag for tag in current_custom_tags if tag.id not in new_tag_ids] + for tag in tags_to_delete: + TagDAO.delete_tagged_object(object_type, object_id, tag.name) + + tag_ids_to_add = [ + tag_id for tag_id in new_tag_ids if tag_id not in current_custom_tag_ids + ] + if tag_ids_to_add: + tags_to_add = TagDAO.find_by_ids(tag_ids_to_add) + TagDAO.create_custom_tagged_objects( + object_type, object_id, [tag.name for tag in tags_to_add] + ) diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py index 375c384660200..ff6f5f5f48d78 100644 --- a/superset/dashboards/api.py +++ b/superset/dashboards/api.py @@ -49,6 +49,7 @@ from superset.commands.dashboard.export import ExportDashboardsCommand from superset.commands.dashboard.importers.dispatcher import ImportDashboardsCommand from superset.commands.dashboard.update import UpdateDashboardCommand +from superset.commands.exceptions import TagForbiddenError from superset.commands.importers.exceptions import NoValidFilesFoundError from superset.commands.importers.v1.utils import get_contents_from_bundle from superset.constants import MODEL_API_RW_METHOD_PERMISSION_MAP, RouteMethod @@ -577,6 +578,8 @@ def put(self, pk: int) -> Response: response = self.response_404() except DashboardForbiddenError: response = self.response_403() + except TagForbiddenError as ex: + response = self.response(403, message=str(ex)) except DashboardInvalidError as ex: return self.response_422(message=ex.normalized_messages()) except DashboardUpdateFailedError as ex: diff --git a/superset/dashboards/schemas.py b/superset/dashboards/schemas.py index c90da33734a9c..60eb50918e923 100644 --- a/superset/dashboards/schemas.py +++ b/superset/dashboards/schemas.py @@ -68,6 +68,7 @@ ) certified_by_description = "Person or group that has certified this dashboard" certification_details_description = "Details of the certification" +tags_description = "Tags to be associated with the dashboard" openapi_spec_methods_override = { "get": {"get": {"summary": "Get a dashboard detail information"}}, @@ -369,6 +370,9 @@ class DashboardPutSchema(BaseDashboardSchema): ) is_managed_externally = fields.Boolean(allow_none=True, dump_default=False) external_url = fields.String(allow_none=True) + tags = fields.List( + fields.Integer(metadata={"description": tags_description}, allow_none=True) + ) class ChartFavStarResponseResult(Schema): diff --git a/superset/security/manager.py b/superset/security/manager.py index b5ca455ce6a80..009fd662fdb33 100644 --- a/superset/security/manager.py +++ b/superset/security/manager.py @@ -968,6 +968,8 @@ def create_custom_permissions(self) -> None: self.add_permission_view_menu("can_view_query", "Dashboard") self.add_permission_view_menu("can_view_chart_as_table", "Dashboard") self.add_permission_view_menu("can_drill", "Dashboard") + self.add_permission_view_menu("can_tag", "Chart") + self.add_permission_view_menu("can_tag", "Dashboard") def create_missing_perms(self) -> None: """ diff --git a/tests/integration_tests/charts/api_tests.py b/tests/integration_tests/charts/api_tests.py index 65ede9221cff1..3b28cfbcaaec6 100644 --- a/tests/integration_tests/charts/api_tests.py +++ b/tests/integration_tests/charts/api_tests.py @@ -37,6 +37,7 @@ from superset.models.dashboard import Dashboard from superset.models.slice import Slice from superset.reports.models import ReportSchedule, ReportScheduleType +from superset.tags.models import ObjectType, Tag, TaggedObject, TagType from superset.utils.core import get_example_default_schema from superset.utils.database import get_example_database # noqa: F401 from superset.viz import viz_types # noqa: F401 @@ -199,6 +200,53 @@ def add_dashboard_to_chart(self): db.session.delete(self.chart) db.session.commit() + @pytest.fixture() + def create_custom_tags(self): + with self.create_app().app_context(): + tags: list[Tag] = [] + for tag_name in {"one_tag", "new_tag"}: + tag = Tag( + name=tag_name, + type="custom", + ) + db.session.add(tag) + db.session.commit() + tags.append(tag) + + yield tags + + for tags in tags: + db.session.delete(tags) + db.session.commit() + + @pytest.fixture() + def create_chart_with_tag(self, create_custom_tags): + with self.create_app().app_context(): + alpha_user = self.get_user(ALPHA_USERNAME) + + chart = self.insert_chart( + "chart with tag", + [alpha_user.id], + 1, + ) + + tag = db.session.query(Tag).filter(Tag.name == "one_tag").first() + tag_association = TaggedObject( + object_id=chart.id, + object_type=ObjectType.chart, + tag=tag, + ) + + db.session.add(tag_association) + db.session.commit() + + yield chart + + # rollback changes + db.session.delete(tag_association) + db.session.delete(chart) + db.session.commit() + def test_info_security_chart(self): """ Chart API: Test info security @@ -2000,3 +2048,214 @@ def test_warm_up_cache_no_datasource(self) -> None: }, ], } + + @pytest.mark.usefixtures("create_chart_with_tag") + def test_update_chart_add_tags_can_write_on_tag(self): + """ + Validates a user with can write on tag permission can + add tags while updating a chart + """ + self.login(ADMIN_USERNAME) + + chart = ( + db.session.query(Slice).filter(Slice.slice_name == "chart with tag").first() + ) + new_tag = db.session.query(Tag).filter(Tag.name == "new_tag").one() + + # get existing tag and add a new one + new_tags = [tag.id for tag in chart.tags if tag.type == TagType.custom] + new_tags.append(new_tag.id) + update_payload = {"tags": new_tags} + + uri = f"api/v1/chart/{chart.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Slice).get(chart.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, new_tags) + + @pytest.mark.usefixtures("create_chart_with_tag") + def test_update_chart_remove_tags_can_write_on_tag(self): + """ + Validates a user with can write on tag permission can + remove tags while updating a chart + """ + self.login(ADMIN_USERNAME) + + chart = ( + db.session.query(Slice).filter(Slice.slice_name == "chart with tag").first() + ) + + # get existing tag and add a new one + new_tags = [tag.id for tag in chart.tags if tag.type == TagType.custom] + new_tags.pop() + + update_payload = {"tags": new_tags} + + uri = f"api/v1/chart/{chart.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Slice).get(chart.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, new_tags) + + @pytest.mark.usefixtures("create_chart_with_tag") + def test_update_chart_add_tags_can_tag_on_chart(self): + """ + Validates an owner with can tag on chart permission can + add tags while updating a chart + """ + self.login(ALPHA_USERNAME) + + alpha_role = security_manager.find_role("Alpha") + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + security_manager.del_permission_role(alpha_role, write_tags_perm) + assert "can tag on Chart" in str(alpha_role.permissions) + + chart = ( + db.session.query(Slice).filter(Slice.slice_name == "chart with tag").first() + ) + new_tag = db.session.query(Tag).filter(Tag.name == "new_tag").one() + + # get existing tag and add a new one + new_tags = [tag.id for tag in chart.tags if tag.type == TagType.custom] + new_tags.append(new_tag.id) + update_payload = {"tags": new_tags} + + uri = f"api/v1/chart/{chart.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Slice).get(chart.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, new_tags) + + security_manager.add_permission_role(alpha_role, write_tags_perm) + + @pytest.mark.usefixtures("create_chart_with_tag") + def test_update_chart_remove_tags_can_tag_on_chart(self): + """ + Validates an owner with can tag on chart permission can + remove tags from a chart + """ + self.login(ALPHA_USERNAME) + + alpha_role = security_manager.find_role("Alpha") + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + security_manager.del_permission_role(alpha_role, write_tags_perm) + assert "can tag on Chart" in str(alpha_role.permissions) + + chart = ( + db.session.query(Slice).filter(Slice.slice_name == "chart with tag").first() + ) + + update_payload = {"tags": []} + + uri = f"api/v1/chart/{chart.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Slice).get(chart.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, []) + + security_manager.add_permission_role(alpha_role, write_tags_perm) + + @pytest.mark.usefixtures("create_chart_with_tag") + def test_update_chart_add_tags_missing_permission(self): + """ + Validates an owner can't add tags to a chart if they don't + have permission to it + """ + self.login(ALPHA_USERNAME) + + alpha_role = security_manager.find_role("Alpha") + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + tag_charts_perm = security_manager.add_permission_view_menu("can_tag", "Chart") + security_manager.del_permission_role(alpha_role, write_tags_perm) + security_manager.del_permission_role(alpha_role, tag_charts_perm) + + chart = ( + db.session.query(Slice).filter(Slice.slice_name == "chart with tag").first() + ) + new_tag = db.session.query(Tag).filter(Tag.name == "new_tag").one() + + # get existing tag and add a new one + new_tags = [tag.id for tag in chart.tags if tag.type == TagType.custom] + new_tags.append(new_tag.id) + update_payload = {"tags": new_tags} + + uri = f"api/v1/chart/{chart.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 403) + self.assertEqual( + rv.json["message"], + "You do not have permission to manage tags on charts", + ) + + security_manager.add_permission_role(alpha_role, write_tags_perm) + security_manager.add_permission_role(alpha_role, tag_charts_perm) + + @pytest.mark.usefixtures("create_chart_with_tag") + def test_update_chart_remove_tags_missing_permission(self): + """ + Validates an owner can't remove tags from a chart if they don't + have permission to it + """ + self.login(ALPHA_USERNAME) + + alpha_role = security_manager.find_role("Alpha") + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + tag_charts_perm = security_manager.add_permission_view_menu("can_tag", "Chart") + security_manager.del_permission_role(alpha_role, write_tags_perm) + security_manager.del_permission_role(alpha_role, tag_charts_perm) + + chart = ( + db.session.query(Slice).filter(Slice.slice_name == "chart with tag").first() + ) + + update_payload = {"tags": []} + + uri = f"api/v1/chart/{chart.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 403) + self.assertEqual( + rv.json["message"], + "You do not have permission to manage tags on charts", + ) + + security_manager.add_permission_role(alpha_role, write_tags_perm) + security_manager.add_permission_role(alpha_role, tag_charts_perm) + + @pytest.mark.usefixtures("create_chart_with_tag") + def test_update_chart_no_tag_changes(self): + """ + Validates an owner without permission to change tags is able to + update a chart when tags haven't changed + """ + self.login(ALPHA_USERNAME) + + alpha_role = security_manager.find_role("Alpha") + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + tag_charts_perm = security_manager.add_permission_view_menu("can_tag", "Chart") + security_manager.del_permission_role(alpha_role, write_tags_perm) + security_manager.del_permission_role(alpha_role, tag_charts_perm) + + chart = ( + db.session.query(Slice).filter(Slice.slice_name == "chart with tag").first() + ) + existing_tags = [tag.id for tag in chart.tags if tag.type == TagType.custom] + update_payload = {"tags": existing_tags} + + uri = f"api/v1/chart/{chart.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + + security_manager.add_permission_role(alpha_role, write_tags_perm) + security_manager.add_permission_role(alpha_role, tag_charts_perm) diff --git a/tests/integration_tests/dashboards/api_tests.py b/tests/integration_tests/dashboards/api_tests.py index 328fb5774eecc..614524cb2daed 100644 --- a/tests/integration_tests/dashboards/api_tests.py +++ b/tests/integration_tests/dashboards/api_tests.py @@ -36,6 +36,7 @@ from superset.models.core import FavStar, FavStarClassName from superset.reports.models import ReportSchedule, ReportScheduleType from superset.models.slice import Slice +from superset.tags.models import Tag, TaggedObject, TagType, ObjectType from superset.utils.core import backend, override_user from tests.integration_tests.base_api_tests import ApiOwnersTestCaseMixin @@ -168,6 +169,52 @@ def create_dashboard_with_report(self): db.session.delete(dashboard) db.session.commit() + @pytest.fixture() + def create_custom_tags(self): + with self.create_app().app_context(): + tags: list[Tag] = [] + for tag_name in {"one_tag", "new_tag"}: + tag = Tag( + name=tag_name, + type="custom", + ) + db.session.add(tag) + db.session.commit() + tags.append(tag) + + yield tags + + for tags in tags: + db.session.delete(tags) + db.session.commit() + + @pytest.fixture() + def create_dashboard_with_tag(self, create_custom_tags): + with self.create_app().app_context(): + gamma = self.get_user("gamma") + + dashboard = self.insert_dashboard( + "dash with tag", + None, + [gamma.id], + ) + tag = db.session.query(Tag).filter(Tag.name == "one_tag").first() + tag_association = TaggedObject( + object_id=dashboard.id, + object_type=ObjectType.dashboard, + tag=tag, + ) + + db.session.add(tag_association) + db.session.commit() + + yield dashboard + + # rollback changes + db.session.delete(tag_association) + db.session.delete(dashboard) + db.session.commit() + @pytest.mark.usefixtures("load_world_bank_dashboard_with_slices") def test_get_dashboard_datasets(self): self.login(ADMIN_USERNAME) @@ -2263,3 +2310,229 @@ def test_copy_dashboard_duplicate_slices(self): db.session.delete(dash) db.session.commit() + + @pytest.mark.usefixtures("create_dashboard_with_tag") + def test_update_dashboard_add_tags_can_write_on_tag(self): + """ + Validates a user with can write on tag permission can + add tags while updating a dashboard + """ + self.login(ADMIN_USERNAME) + + dashboard = ( + db.session.query(Dashboard) + .filter(Dashboard.dashboard_title == "dash with tag") + .first() + ) + new_tag = db.session.query(Tag).filter(Tag.name == "new_tag").one() + + # get existing tag and add a new one + new_tags = [tag.id for tag in dashboard.tags if tag.type == TagType.custom] + new_tags.append(new_tag.id) + update_payload = {"tags": new_tags} + + uri = f"api/v1/dashboard/{dashboard.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Dashboard).get(dashboard.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, new_tags) + + @pytest.mark.usefixtures("create_dashboard_with_tag") + def test_update_dashboard_remove_tags_can_write_on_tag(self): + """ + Validates a user with can write on tag permission can + remove tags while updating a dashboard + """ + self.login(ADMIN_USERNAME) + + dashboard = ( + db.session.query(Dashboard) + .filter(Dashboard.dashboard_title == "dash with tag") + .first() + ) + + # get existing tag and add a new one + new_tags = [tag.id for tag in dashboard.tags if tag.type == TagType.custom] + new_tags.pop() + + update_payload = {"tags": new_tags} + + uri = f"api/v1/dashboard/{dashboard.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Dashboard).get(dashboard.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, new_tags) + + @pytest.mark.usefixtures("create_dashboard_with_tag") + def test_update_dashboard_add_tags_can_tag_on_dashboard(self): + """ + Validates an owner with can tag on dashboard permission can + add tags while updating a dashboard + """ + self.login(GAMMA_USERNAME) + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + gamma_role = security_manager.find_role("Gamma") + security_manager.del_permission_role(gamma_role, write_tags_perm) + assert "can tag on Dashboard" in str(gamma_role.permissions) + + dashboard = ( + db.session.query(Dashboard) + .filter(Dashboard.dashboard_title == "dash with tag") + .first() + ) + new_tag = db.session.query(Tag).filter(Tag.name == "new_tag").one() + + # get existing tag and add a new one + new_tags = [tag.id for tag in dashboard.tags if tag.type == TagType.custom] + new_tags.append(new_tag.id) + update_payload = {"tags": new_tags} + + uri = f"api/v1/dashboard/{dashboard.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Dashboard).get(dashboard.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, new_tags) + + security_manager.add_permission_role(gamma_role, write_tags_perm) + + @pytest.mark.usefixtures("create_dashboard_with_tag") + def test_update_dashboard_remove_tags_can_tag_on_dashboard(self): + """ + Validates an owner with can tag on dashboard permission can + remove tags from a dashboard + """ + self.login(GAMMA_USERNAME) + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + gamma_role = security_manager.find_role("Gamma") + security_manager.del_permission_role(gamma_role, write_tags_perm) + assert "can tag on Dashboard" in str(gamma_role.permissions) + + dashboard = ( + db.session.query(Dashboard) + .filter(Dashboard.dashboard_title == "dash with tag") + .first() + ) + + update_payload = {"tags": []} + + uri = f"api/v1/dashboard/{dashboard.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + model = db.session.query(Dashboard).get(dashboard.id) + + # Clean up system tags + tag_list = [tag.id for tag in model.tags if tag.type == TagType.custom] + self.assertEqual(tag_list, []) + + security_manager.add_permission_role(gamma_role, write_tags_perm) + + @pytest.mark.usefixtures("create_dashboard_with_tag") + def test_update_dashboard_add_tags_missing_permission(self): + """ + Validates an owner can't add tags to a dashboard if they don't + have permission to it + """ + self.login(GAMMA_USERNAME) + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + tag_dashboards_perm = security_manager.add_permission_view_menu( + "can_tag", "Dashboard" + ) + gamma_role = security_manager.find_role("Gamma") + security_manager.del_permission_role(gamma_role, write_tags_perm) + security_manager.del_permission_role(gamma_role, tag_dashboards_perm) + + dashboard = ( + db.session.query(Dashboard) + .filter(Dashboard.dashboard_title == "dash with tag") + .first() + ) + new_tag = db.session.query(Tag).filter(Tag.name == "new_tag").one() + + # get existing tag and add a new one + new_tags = [tag.id for tag in dashboard.tags if tag.type == TagType.custom] + new_tags.append(new_tag.id) + update_payload = {"tags": new_tags} + + uri = f"api/v1/dashboard/{dashboard.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 403) + self.assertEqual( + rv.json["message"], + "You do not have permission to manage tags on dashboards", + ) + + security_manager.add_permission_role(gamma_role, write_tags_perm) + security_manager.add_permission_role(gamma_role, tag_dashboards_perm) + + @pytest.mark.usefixtures("create_dashboard_with_tag") + def test_update_dashboard_remove_tags_missing_permission(self): + """ + Validates an owner can't remove tags from a dashboard if they don't + have permission to it + """ + self.login(GAMMA_USERNAME) + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + tag_dashboards_perm = security_manager.add_permission_view_menu( + "can_tag", "Dashboard" + ) + gamma_role = security_manager.find_role("Gamma") + security_manager.del_permission_role(gamma_role, write_tags_perm) + security_manager.del_permission_role(gamma_role, tag_dashboards_perm) + + dashboard = ( + db.session.query(Dashboard) + .filter(Dashboard.dashboard_title == "dash with tag") + .first() + ) + + update_payload = {"tags": []} + + uri = f"api/v1/dashboard/{dashboard.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 403) + self.assertEqual( + rv.json["message"], + "You do not have permission to manage tags on dashboards", + ) + + security_manager.add_permission_role(gamma_role, write_tags_perm) + security_manager.add_permission_role(gamma_role, tag_dashboards_perm) + + @pytest.mark.usefixtures("create_dashboard_with_tag") + def test_update_dashboard_no_tag_changes(self): + """ + Validates an owner without permission to change tags is able to + update a dashboard when tags haven't changed + """ + self.login(GAMMA_USERNAME) + write_tags_perm = security_manager.add_permission_view_menu("can_write", "Tag") + tag_dashboards_perm = security_manager.add_permission_view_menu( + "can_tag", "Dashboard" + ) + gamma_role = security_manager.find_role("Gamma") + security_manager.del_permission_role(gamma_role, write_tags_perm) + security_manager.del_permission_role(gamma_role, tag_dashboards_perm) + + dashboard = ( + db.session.query(Dashboard) + .filter(Dashboard.dashboard_title == "dash with tag") + .first() + ) + existing_tags = [tag.id for tag in dashboard.tags if tag.type == TagType.custom] + update_payload = {"tags": existing_tags} + + uri = f"api/v1/dashboard/{dashboard.id}" + rv = self.put_assert_metric(uri, update_payload, "put") + self.assertEqual(rv.status_code, 200) + + security_manager.add_permission_role(gamma_role, write_tags_perm) + security_manager.add_permission_role(gamma_role, tag_dashboards_perm) diff --git a/tests/unit_tests/commands/test_utils.py b/tests/unit_tests/commands/test_utils.py index d3ba5bbe41d5b..810142d3d9591 100644 --- a/tests/unit_tests/commands/test_utils.py +++ b/tests/unit_tests/commands/test_utils.py @@ -15,19 +15,74 @@ # specific language governing permissions and limitations # under the License. -from unittest.mock import MagicMock, patch -from superset.commands.utils import compute_owner_list, populate_owner_list, User +from unittest.mock import call, MagicMock, patch + +import pytest + +from superset.commands.exceptions import TagForbiddenError, TagNotFoundValidationError +from superset.commands.utils import ( + compute_owner_list, + populate_owner_list, + Tag, + TagType, + update_tags, + User, + validate_tags, +) +from superset.tags.models import ObjectType + +OBJECT_TYPES = {ObjectType.chart, ObjectType.chart} +MOCK_TAGS = [ + Tag( + id=1, + name="first", + type=TagType.custom, + ), + Tag( + id=2, + name="second", + type=TagType.custom, + ), + Tag( + id=3, + name="third", + type=TagType.custom, + ), + Tag( + id=4, + name="type:dashboard", + type=TagType.type, + ), + Tag( + id=4, + name="owner:1", + type=TagType.owner, + ), + Tag( + id=4, + name="avorited_by:2", + type=TagType.favorited_by, + ), +] @patch("superset.commands.utils.g") def test_populate_owner_list_default_to_user(mock_user): + """ + Test the ``populate_owner_list`` method when no owners are provided + and default_to_user is True (non-admin). + """ owner_list = populate_owner_list([], True) assert owner_list == [mock_user.user] @patch("superset.commands.utils.g") def test_populate_owner_list_default_to_user_handle_none(mock_user): + """ + Test the ``populate_owner_list`` method when owners is None + and default_to_user is True (non-admin). + """ owner_list = populate_owner_list(None, True) assert owner_list == [mock_user.user] @@ -36,6 +91,10 @@ def test_populate_owner_list_default_to_user_handle_none(mock_user): @patch("superset.commands.utils.security_manager") @patch("superset.commands.utils.get_user_id") def test_populate_owner_list_admin_user(mock_user_id, mock_sm, mock_g): + """ + Test the ``populate_owner_list`` method when an admin is setting + another user as an owner and default_to_user is False. + """ test_user = User(id=1, first_name="First", last_name="Last") mock_g.user = User(id=4, first_name="Admin", last_name="User") mock_user_id.return_value = 4 @@ -50,6 +109,10 @@ def test_populate_owner_list_admin_user(mock_user_id, mock_sm, mock_g): @patch("superset.commands.utils.security_manager") @patch("superset.commands.utils.get_user_id") def test_populate_owner_list_admin_user_empty_list(mock_user_id, mock_sm, mock_g): + """ + Test the ``populate_owner_list`` method when an admin is setting an empty list + of owners. + """ mock_g.user = User(id=4, first_name="Admin", last_name="User") mock_user_id.return_value = 4 mock_sm.is_admin = MagicMock(return_value=True) @@ -61,6 +124,10 @@ def test_populate_owner_list_admin_user_empty_list(mock_user_id, mock_sm, mock_g @patch("superset.commands.utils.security_manager") @patch("superset.commands.utils.get_user_id") def test_populate_owner_list_non_admin(mock_user_id, mock_sm, mock_g): + """ + Test the ``populate_owner_list`` method when a non admin is adding + another user as an owner and default_to_user is False (both get added). + """ test_user = User(id=1, first_name="First", last_name="Last") mock_g.user = User(id=4, first_name="Non", last_name="admin") mock_user_id.return_value = 4 @@ -73,6 +140,9 @@ def test_populate_owner_list_non_admin(mock_user_id, mock_sm, mock_g): @patch("superset.commands.utils.populate_owner_list") def test_compute_owner_list_new_owners(mock_populate_owner_list): + """ + Test the ``compute_owner_list`` method when replacing the owner list. + """ current_owners = [User(id=1), User(id=2), User(id=3)] new_owners = [4, 5, 6] @@ -82,6 +152,9 @@ def test_compute_owner_list_new_owners(mock_populate_owner_list): @patch("superset.commands.utils.populate_owner_list") def test_compute_owner_list_no_new_owners(mock_populate_owner_list): + """ + Test the ``compute_owner_list`` method when replacing new_owners is None. + """ current_owners = [User(id=1), User(id=2), User(id=3)] new_owners = None @@ -91,6 +164,9 @@ def test_compute_owner_list_no_new_owners(mock_populate_owner_list): @patch("superset.commands.utils.populate_owner_list") def test_compute_owner_list_new_owner_empty_list(mock_populate_owner_list): + """ + Test the ``compute_owner_list`` method when new_owners is an empty list. + """ current_owners = [User(id=1), User(id=2), User(id=3)] new_owners = [] @@ -100,6 +176,9 @@ def test_compute_owner_list_new_owner_empty_list(mock_populate_owner_list): @patch("superset.commands.utils.populate_owner_list") def test_compute_owner_list_no_owners(mock_populate_owner_list): + """ + Test the ``compute_owner_list`` method when current ownership is an empty list. + """ current_owners = [] new_owners = [4, 5, 6] @@ -109,8 +188,292 @@ def test_compute_owner_list_no_owners(mock_populate_owner_list): @patch("superset.commands.utils.populate_owner_list") def test_compute_owner_list_no_owners_handle_none(mock_populate_owner_list): + """ + Test the ``compute_owner_list`` method when current ownership is None. + """ current_owners = None new_owners = [4, 5, 6] compute_owner_list(current_owners, new_owners) mock_populate_owner_list.assert_called_once_with(new_owners, default_to_user=False) + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +def test_validate_tags_new_tags_is_none(mock_sm, object_type): + """ + Test the ``validate_tags`` method when new_tags is None. + """ + validate_tags(object_type, MOCK_TAGS, None) + mock_sm.can_access.assert_not_called() + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +def test_validate_tags_empty_list_can_write_on_tag(mock_sm, object_type): + """ + Test the ``validate_tags`` method when new_tags is an empty list and + user has permission to write on tag. + """ + mock_sm.can_access = MagicMock(return_value=True) + validate_tags(object_type, MOCK_TAGS, []) + mock_sm.can_access.assert_called_once_with("can_write", "Tag") + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +def test_validate_tags_empty_list_can_tag_on_object(mock_sm, object_type): + """ + Test the ``validate_tags`` method when new_tags is an empty list and + user has permission to tag objects. + """ + mock_sm.can_access = MagicMock(side_effect=[False, True]) + validate_tags(object_type, MOCK_TAGS, []) + mock_sm.can_access.assert_has_calls( + [call("can_write", "Tag"), call("can_tag", object_type.name.capitalize())] + ) + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +def test_validate_tags_empty_list_missing_permission(mock_sm, object_type): + """ + Test the ``validate_tags`` method when new_tags is an empty list and + the user doesn't have the required permission. + """ + mock_sm.can_access = MagicMock(side_effect=[False, False]) + with pytest.raises(TagForbiddenError): + validate_tags(object_type, MOCK_TAGS, []) + mock_sm.can_access.assert_has_calls( + [call("can_write", "Tag"), call("can_tag", object_type.name.capitalize())] + ) + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +def test_validate_tags_no_changes_can_write_on_tag(mock_sm, object_type): + """ + Test the ``validate_tags`` method when new_tags is equal to existing tags + and user has permission to write on tag. + """ + new_tags = [tag.id for tag in MOCK_TAGS if tag.type == TagType.custom] + validate_tags(object_type, MOCK_TAGS, new_tags) + mock_sm.can_access.assert_not_called() + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +def test_validate_tags_no_changes_can_tag_on_object(mock_sm, object_type): + """ + Test the ``validate_tags`` method when new_tags is equal to existing tags + and user has permission to tag objects. + """ + new_tags = [tag.id for tag in MOCK_TAGS if tag.type == TagType.custom] + validate_tags(object_type, MOCK_TAGS, new_tags) + mock_sm.can_access.assert_not_called() + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +def test_validate_tags_no_changes_missing_permission(mock_sm, object_type): + """ + Test the ``validate_tags`` method when new_tags is equal to existing tags + the user doens't have the required perms. + """ + new_tags = [tag.id for tag in MOCK_TAGS if tag.type == TagType.custom] + validate_tags(object_type, MOCK_TAGS, new_tags) + mock_sm.can_access.assert_not_called() + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +@patch("superset.commands.utils.TagDAO.find_by_id") +def test_validate_tags_add_new_tags_can_write_on_tag( + mock_tag_find_by_id, mock_sm, object_type +): + """ + Test the ``validate_tags`` method when new_tags are added and user has + permission to write on tag. + """ + new_tag_ids = [tag.id for tag in MOCK_TAGS if tag.type == TagType.custom] + new_tag = { + "id": 10, + "name": "New test tag", + "type": TagType.custom, + } + new_tag_ids.append(new_tag["id"]) + + mock_tag_find_by_id.return_value = new_tag + mock_sm.can_access = MagicMock(return_value=True) + + validate_tags(object_type, MOCK_TAGS, new_tag_ids) + + mock_sm.can_access.assert_called_once_with("can_write", "Tag") + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +@patch("superset.commands.utils.TagDAO.find_by_id") +def test_validate_tags_add_new_tags_can_tag_on_object( + mock_tag_find_by_id, mock_sm, object_type +): + """ + Test the ``validate_tags`` method when new_tags are added and user has + permission to tag objects. + """ + current_tags = [tag for tag in MOCK_TAGS if tag.type == TagType.custom] + new_tag = current_tags.pop() + new_tag_ids = [tag.id for tag in current_tags] + new_tag_ids.append(new_tag.id) + + mock_sm.can_access = MagicMock(side_effect=[False, True]) + mock_tag_find_by_id.return_value = new_tag + + validate_tags(object_type, current_tags, new_tag_ids) + + mock_sm.can_access.assert_has_calls( + [call("can_write", "Tag"), call("can_tag", object_type.name.capitalize())] + ) + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +@patch("superset.commands.utils.TagDAO.find_by_name") +def test_validate_tags_can_write_on_tag_unable_to_find_tag( + mock_tag_find_by_id, mock_sm, object_type +): + """ + Test the ``validate_tags`` method when an un-existing tag is being + added and user has permission to write on tag. + """ + fake_id = 100 + mock_sm.can_access = MagicMock(return_value=True) + mock_tag_find_by_id.return_value = None + with pytest.raises(TagNotFoundValidationError): + validate_tags(object_type, MOCK_TAGS, [fake_id]) + mock_sm.can_access.assert_called_once_with("can_write", "Tag") + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.security_manager") +@patch("superset.commands.utils.TagDAO.find_by_name") +def test_validate_tags_can_tag_on_object_unable_to_find_tag( + mock_tag_find_by_id, mock_sm, object_type +): + """ + Test the ``validate_tags`` method when an un-existing tag is being + added and user has permission to tag on object. + """ + fake_id = 100 + mock_sm.can_access = MagicMock(side_effect=[False, True]) + mock_tag_find_by_id.return_value = None + with pytest.raises(TagNotFoundValidationError): + validate_tags(object_type, MOCK_TAGS, [fake_id]) + mock_sm.can_access.assert_has_calls( + [call("can_write", "Tag"), call("can_tag", object_type.name.capitalize())] + ) + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.TagDAO") +def test_update_tags_adding_tags(mock_tag_dao, object_type): + """ + Test the ``update_tags`` method when adding tags. + """ + current_tags = [tag for tag in MOCK_TAGS if tag.type == TagType.custom] + new_tag = current_tags.pop() + new_tags = [tag for tag in MOCK_TAGS if tag.type == TagType.custom] + new_tag_ids = [tag.id for tag in new_tags] + + mock_tag_dao.find_by_ids.return_value = [new_tag] + + update_tags(object_type, 1, current_tags, new_tag_ids) + + mock_tag_dao.find_by_ids.assert_called_once_with([new_tag.id]) + mock_tag_dao.delete_tagged_object.assert_not_called() + mock_tag_dao.create_custom_tagged_objects.assert_called_once_with( + object_type, 1, [new_tag.name] + ) + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.TagDAO") +def test_update_tags_removing_tags(mock_tag_dao, object_type): + """ + Test the ``update_tags`` method when removing existing tags. + """ + new_tags = [tag for tag in MOCK_TAGS if tag.type == TagType.custom] + tag_to_be_removed = new_tags.pop() + new_tag_ids = [tag.id for tag in new_tags] + + update_tags(object_type, 1, MOCK_TAGS, new_tag_ids) + + mock_tag_dao.delete_tagged_object.assert_called_once_with( + object_type, 1, tag_to_be_removed.name + ) + mock_tag_dao.create_custom_tagged_objects.assert_not_called() + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.TagDAO") +def test_update_tags_adding_and_removing_tags(mock_tag_dao, object_type): + """ + Test the ``update_tags`` method when adding and removing existing tags. + """ + new_tags = [tag for tag in MOCK_TAGS if tag.type == TagType.custom] + tag_to_be_removed = new_tags.pop() + new_tag = Tag(id=10, name="my new tag", type=TagType.custom) + new_tags.append(new_tag) + new_tag_ids = [tag.id for tag in new_tags] + + mock_tag_dao.find_by_ids.return_value = [new_tag] + + update_tags(object_type, 1, MOCK_TAGS, new_tag_ids) + + mock_tag_dao.delete_tagged_object.assert_called_once_with( + object_type, 1, tag_to_be_removed.name + ) + mock_tag_dao.find_by_ids.assert_called_once_with([new_tag.id]) + mock_tag_dao.create_custom_tagged_objects.assert_called_once_with( + object_type, 1, ["my new tag"] + ) + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.TagDAO") +def test_update_tags_removing_all_tags(mock_tag_dao, object_type): + """ + Test the ``update_tags`` method when removing all tags. + """ + update_tags(object_type, 1, MOCK_TAGS, []) + + mock_tag_dao.delete_tagged_object.assert_has_calls( + [ + call(object_type, 1, tag.name) + for tag in MOCK_TAGS + if tag.type == TagType.custom + ] + ) + mock_tag_dao.create_custom_tagged_objects.assert_not_called() + + +@pytest.mark.parametrize("object_type", OBJECT_TYPES) +@patch("superset.commands.utils.TagDAO") +def test_update_tags_no_tags(mock_tag_dao, object_type): + """ + Test the ``update_tags`` method when the asset only has system tags. + """ + system_tags = [tag for tag in MOCK_TAGS if tag.type != TagType.custom] + new_tags = [tag for tag in MOCK_TAGS if tag.type == TagType.custom] + new_tag_ids = [tag.id for tag in new_tags] + new_tag_names = [tag.name for tag in new_tags] + + mock_tag_dao.find_by_ids.return_value = new_tags + + update_tags(object_type, 1, system_tags, new_tag_ids) + + mock_tag_dao.delete_tagged_object.assert_not_called() + mock_tag_dao.find_by_ids.assert_called_once_with(new_tag_ids) + mock_tag_dao.create_custom_tagged_objects.assert_called_once_with( + object_type, 1, new_tag_names + ) From 51dd41bb728334da883aabf7c3d31254f403d9b8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:53:32 -0700 Subject: [PATCH 38/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20py?= =?UTF-8?q?tz=202021.3=20->=202024.1=20(#28731)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 8d8f3fa73f062..07ea0e919f6ee 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -297,7 +297,7 @@ python-dotenv==1.0.1 # via apache-superset python-geohash==0.8.5 # via apache-superset -pytz==2021.3 +pytz==2024.1 # via # croniter # flask-babel From 307477a62a06b600958461dbe6eec17d82daa4aa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:53:54 -0700 Subject: [PATCH 39/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ap?= =?UTF-8?q?sw=203.45.3.0=20->=203.46.0.0=20(#28730)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 07ea0e919f6ee..8de4d98c24fbc 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -13,7 +13,7 @@ amqp==5.2.0 # via kombu apispec[yaml]==6.3.0 # via flask-appbuilder -apsw==3.45.3.0 +apsw==3.46.0.0 # via shillelagh async-timeout==4.0.3 # via redis From 4bdf7b560bcd4a6bd373ed8e95c469071632c2f9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:54:16 -0700 Subject: [PATCH 40/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20at?= =?UTF-8?q?trs=2023.1.0=20->=2023.2.0=20(#28729)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 8de4d98c24fbc..00e8a2cb74c78 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -17,7 +17,7 @@ apsw==3.46.0.0 # via shillelagh async-timeout==4.0.3 # via redis -attrs==23.1.0 +attrs==23.2.0 # via # cattrs # jsonschema From 42e05ce4943dcee36c7ac7a9d021ed8071f6c92f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:54:35 -0700 Subject: [PATCH 41/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20pr?= =?UTF-8?q?ompt-toolkit=203.0.38=20->=203.0.44=20(#28727)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 00e8a2cb74c78..84bed3b70d320 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -257,7 +257,7 @@ polyline==2.0.2 # via apache-superset prison==0.2.1 # via flask-appbuilder -prompt-toolkit==3.0.38 +prompt-toolkit==3.0.44 # via click-repl pyarrow==14.0.2 # via apache-superset From a59bad83d45d2536e0125d0e4a5d6df9df3f64f7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:54:56 -0700 Subject: [PATCH 42/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20sl?= =?UTF-8?q?ack-sdk=203.21.3=20->=203.27.2=20(#28721)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 84bed3b70d320..f799779a50563 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -333,7 +333,7 @@ six==1.16.0 # python-dateutil # url-normalize # wtforms-json -slack-sdk==3.21.3 +slack-sdk==3.27.2 # via apache-superset sqlalchemy==1.4.52 # via From 4ff17409abdbef1692c69d08e4508afff781b0e2 Mon Sep 17 00:00:00 2001 From: John Bodley <4567245+john-bodley@users.noreply.github.com> Date: Tue, 28 May 2024 08:56:38 -0700 Subject: [PATCH 43/60] fix: Handling of column types for Presto, Trino, et al. (#28653) --- superset/db_engine_specs/presto.py | 8 ++- superset/superset_typing.py | 5 +- .../unit_tests/db_engine_specs/test_presto.py | 61 +++++++++---------- .../unit_tests/db_engine_specs/test_trino.py | 50 ++++++++++++++- 4 files changed, 85 insertions(+), 39 deletions(-) diff --git a/superset/db_engine_specs/presto.py b/superset/db_engine_specs/presto.py index d97264e002ad5..4f3b82af6007c 100644 --- a/superset/db_engine_specs/presto.py +++ b/superset/db_engine_specs/presto.py @@ -14,9 +14,7 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. - # pylint: disable=too-many-lines - from __future__ import annotations import contextlib @@ -118,7 +116,7 @@ def get_children(column: ResultSetColumnType) -> list[ResultSetColumnType]: pattern = re.compile(r"(?P\w+)\((?P.*)\)") if not column["type"]: raise ValueError - match = pattern.match(column["type"]) + match = pattern.match(cast(str, column["type"])) if not match: raise Exception( # pylint: disable=broad-exception-raised f"Unable to parse column type {column['type']}" @@ -538,6 +536,10 @@ def where_latest_partition( for col_name, value in zip(col_names, values): col_type = column_type_by_name.get(col_name) + if isinstance(col_type, str): + col_type_class = getattr(types, col_type, None) + col_type = col_type_class() if col_type_class else None + if isinstance(col_type, types.DATE): col_type = Date() elif isinstance(col_type, types.TIMESTAMP): diff --git a/superset/superset_typing.py b/superset/superset_typing.py index ba623f5819054..3a850e0acb672 100644 --- a/superset/superset_typing.py +++ b/superset/superset_typing.py @@ -18,12 +18,15 @@ from datetime import datetime from typing import Any, Literal, Optional, TYPE_CHECKING, TypedDict, Union +from sqlalchemy.sql.type_api import TypeEngine from typing_extensions import NotRequired from werkzeug.wrappers import Response if TYPE_CHECKING: from superset.utils.core import GenericDataType +SQLType = Union[TypeEngine, type[TypeEngine]] + class LegacyMetric(TypedDict): label: Optional[str] @@ -73,7 +76,7 @@ class ResultSetColumnType(TypedDict): name: str # legacy naming convention keeping this for backwards compatibility column_name: str - type: Optional[str] + type: Optional[Union[SQLType, str]] is_dttm: Optional[bool] type_generic: NotRequired[Optional["GenericDataType"]] diff --git a/tests/unit_tests/db_engine_specs/test_presto.py b/tests/unit_tests/db_engine_specs/test_presto.py index e002102224404..7631ed9adbdf3 100644 --- a/tests/unit_tests/db_engine_specs/test_presto.py +++ b/tests/unit_tests/db_engine_specs/test_presto.py @@ -25,7 +25,6 @@ from sqlalchemy.engine.url import make_url from superset.sql_parse import Table -from superset.superset_typing import ResultSetColumnType from superset.utils.core import GenericDataType from tests.unit_tests.db_engine_specs.utils import ( assert_column_spec, @@ -116,46 +115,44 @@ def test_get_schema_from_engine_params() -> None: @pytest.mark.parametrize( ["column_type", "column_value", "expected_value"], [ - (types.DATE(), "2023-05-01", "DATE '2023-05-01'"), - (types.TIMESTAMP(), "2023-05-01", "TIMESTAMP '2023-05-01'"), - (types.VARCHAR(), "2023-05-01", "'2023-05-01'"), - (types.INT(), 1234, "1234"), + ("DATE", "2023-05-01", "DATE '2023-05-01'"), + ("TIMESTAMP", "2023-05-01", "TIMESTAMP '2023-05-01'"), + ("VARCHAR", "2023-05-01", "'2023-05-01'"), + ("INT", 1234, "1234"), ], ) def test_where_latest_partition( - mock_latest_partition, column_type, column_value: Any, expected_value: str + mock_latest_partition, + column_type: str, + column_value: Any, + expected_value: str, ) -> None: - """ - Test the ``where_latest_partition`` method - """ - from superset.db_engine_specs.presto import PrestoEngineSpec as spec + from superset.db_engine_specs.presto import PrestoEngineSpec mock_latest_partition.return_value = (["partition_key"], [column_value]) - query = sql.select(text("* FROM table")) - columns: list[ResultSetColumnType] = [ - { - "column_name": "partition_key", - "name": "partition_key", - "type": column_type, - "is_dttm": False, - } - ] - - expected = f"""SELECT * FROM table \nWHERE "partition_key" = {expected_value}""" - result = spec.where_latest_partition( - mock.MagicMock(), - Table("table"), - query, - columns, - ) - assert result is not None - actual = result.compile( - dialect=PrestoDialect(), compile_kwargs={"literal_binds": True} + assert ( + str( + PrestoEngineSpec.where_latest_partition( # type: ignore + database=mock.MagicMock(), + table=Table("table"), + query=sql.select(text("* FROM table")), + columns=[ + { + "column_name": "partition_key", + "name": "partition_key", + "type": column_type, + "is_dttm": False, + } + ], + ).compile( + dialect=PrestoDialect(), + compile_kwargs={"literal_binds": True}, + ) + ) + == f"""SELECT * FROM table \nWHERE "partition_key" = {expected_value}""" ) - assert str(actual) == expected - def test_adjust_engine_params_fully_qualified() -> None: """ diff --git a/tests/unit_tests/db_engine_specs/test_trino.py b/tests/unit_tests/db_engine_specs/test_trino.py index e35615f57a4f1..c783780a45114 100644 --- a/tests/unit_tests/db_engine_specs/test_trino.py +++ b/tests/unit_tests/db_engine_specs/test_trino.py @@ -19,16 +19,17 @@ import json from datetime import datetime from typing import Any, Optional -from unittest.mock import Mock, patch +from unittest.mock import MagicMock, Mock, patch import pandas as pd import pytest from pytest_mock import MockerFixture from requests.exceptions import ConnectionError as RequestsConnectionError -from sqlalchemy import types +from sqlalchemy import sql, text, types from sqlalchemy.engine.url import make_url from trino.exceptions import TrinoExternalError, TrinoInternalError, TrinoUserError from trino.sqlalchemy import datatype +from trino.sqlalchemy.dialect import TrinoDialect import superset.config from superset.constants import QUERY_CANCEL_KEY, QUERY_EARLY_CANCEL_KEY, USER_AGENT @@ -39,7 +40,7 @@ SupersetDBAPIProgrammingError, ) from superset.sql_parse import Table -from superset.superset_typing import ResultSetColumnType, SQLAColumnType +from superset.superset_typing import ResultSetColumnType, SQLAColumnType, SQLType from superset.utils.core import GenericDataType from tests.unit_tests.db_engine_specs.utils import ( assert_column_spec, @@ -645,3 +646,46 @@ def test_get_default_catalog() -> None: sqlalchemy_uri="trino://user:pass@localhost:8080/system/default", ) assert TrinoEngineSpec.get_default_catalog(database) == "system" + + +@patch("superset.db_engine_specs.trino.TrinoEngineSpec.latest_partition") +@pytest.mark.parametrize( + ["column_type", "column_value", "expected_value"], + [ + (types.DATE(), "2023-05-01", "DATE '2023-05-01'"), + (types.TIMESTAMP(), "2023-05-01", "TIMESTAMP '2023-05-01'"), + (types.VARCHAR(), "2023-05-01", "'2023-05-01'"), + (types.INT(), 1234, "1234"), + ], +) +def test_where_latest_partition( + mock_latest_partition, + column_type: SQLType, + column_value: Any, + expected_value: str, +) -> None: + from superset.db_engine_specs.trino import TrinoEngineSpec + + mock_latest_partition.return_value = (["partition_key"], [column_value]) + + assert ( + str( + TrinoEngineSpec.where_latest_partition( # type: ignore + database=MagicMock(), + table=Table("table"), + query=sql.select(text("* FROM table")), + columns=[ + { + "column_name": "partition_key", + "name": "partition_key", + "type": column_type, + "is_dttm": False, + } + ], + ).compile( + dialect=TrinoDialect(), + compile_kwargs={"literal_binds": True}, + ) + ) + == f"""SELECT * FROM table \nWHERE partition_key = {expected_value}""" + ) From 03a62aaa33314dffaf36ad4892fe46efab596755 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:57:41 -0700 Subject: [PATCH 44/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ma?= =?UTF-8?q?rkdown-it-py=202.2.0=20->=203.0.0=20(#28720)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index f799779a50563..a6e5b5c124953 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -193,7 +193,7 @@ mako==1.3.5 # apache-superset markdown==3.6 # via apache-superset -markdown-it-py==2.2.0 +markdown-it-py==3.0.0 # via rich markupsafe==2.1.5 # via From 6a734e2746fde8e77ffa92ed3f80c773cc1730e3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:58:02 -0700 Subject: [PATCH 45/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ca?= =?UTF-8?q?chetools=205.3.2=20->=205.3.3=20(#28719)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index a6e5b5c124953..97df3d5336ce4 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -40,7 +40,7 @@ cachelib==0.9.0 # via # flask-caching # flask-session -cachetools==5.3.2 +cachetools==5.3.3 # via google-auth cattrs==23.2.3 # via requests-cache From 18f327781d74615b571fb1461388dd30dd537229 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 08:59:14 -0700 Subject: [PATCH 46/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20zi?= =?UTF-8?q?pp=203.18.2=20->=203.19.0=20(#28718)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 97df3d5336ce4..57fe65db467e3 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -402,7 +402,7 @@ wtforms-json==0.3.5 # via apache-superset xlsxwriter==3.0.9 # via apache-superset -zipp==3.18.2 +zipp==3.19.0 # via importlib-metadata zstandard==0.22.0 # via flask-compress From c67e3e7e1d7a99587064810aa43b31c173162770 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 09:02:19 -0700 Subject: [PATCH 47/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20im?= =?UTF-8?q?portlib-resources=205.12.0=20->=206.4.0=20(#28716)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 57fe65db467e3..eb1bdf330180b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -165,7 +165,7 @@ idna==3.7 # requests importlib-metadata==7.1.0 # via apache-superset -importlib-resources==5.12.0 +importlib-resources==6.4.0 # via limits isodate==0.6.1 # via apache-superset From 8c3250396fcedaa1c701f86a1d2a2caa154752dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 09:20:29 -0700 Subject: [PATCH 48/60] chore(deps): bump pug from 3.0.2 to 3.0.3 in /superset-websocket/utils/client-ws-app (#28742) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../utils/client-ws-app/package-lock.json | 62 +++++++++---------- .../utils/client-ws-app/package.json | 2 +- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/superset-websocket/utils/client-ws-app/package-lock.json b/superset-websocket/utils/client-ws-app/package-lock.json index 22be6a0a086a6..1c87be6959d3c 100644 --- a/superset-websocket/utils/client-ws-app/package-lock.json +++ b/superset-websocket/utils/client-ws-app/package-lock.json @@ -14,7 +14,7 @@ "http-errors": "~2.0.0", "jsonwebtoken": "^9.0.2", "morgan": "~1.10.0", - "pug": "~3.0.2" + "pug": "~3.0.3" } }, "node_modules/@babel/helper-validator-identifier": { @@ -326,7 +326,7 @@ "node_modules/doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", @@ -710,7 +710,7 @@ "node_modules/js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" }, "node_modules/jsonwebtoken": { "version": "9.0.2", @@ -978,11 +978,11 @@ } }, "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", "dependencies": { - "pug-code-gen": "^3.0.2", + "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", @@ -1003,24 +1003,24 @@ } }, "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", "dependencies": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==" }, "node_modules/pug-filters": { "version": "4.0.0", @@ -1333,7 +1333,7 @@ "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "engines": { "node": ">=0.10.0" } @@ -1581,7 +1581,7 @@ "doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==" }, "ecdsa-sig-formatter": { "version": "1.0.11", @@ -1868,7 +1868,7 @@ "js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==" }, "jsonwebtoken": { "version": "9.0.2", @@ -2091,11 +2091,11 @@ } }, "pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", "requires": { - "pug-code-gen": "^3.0.2", + "pug-code-gen": "^3.0.3", "pug-filters": "^4.0.0", "pug-lexer": "^5.0.1", "pug-linker": "^4.0.0", @@ -2116,24 +2116,24 @@ } }, "pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", "requires": { "constantinople": "^4.0.1", "doctypes": "^1.1.0", "js-stringify": "^1.0.2", "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", "void-elements": "^3.1.0", "with": "^7.0.0" } }, "pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==" }, "pug-filters": { "version": "4.0.0", @@ -2390,7 +2390,7 @@ "void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" }, "with": { "version": "7.0.2", diff --git a/superset-websocket/utils/client-ws-app/package.json b/superset-websocket/utils/client-ws-app/package.json index 3d64c69426c1b..d757a7cc3c62d 100644 --- a/superset-websocket/utils/client-ws-app/package.json +++ b/superset-websocket/utils/client-ws-app/package.json @@ -12,6 +12,6 @@ "http-errors": "~2.0.0", "jsonwebtoken": "^9.0.2", "morgan": "~1.10.0", - "pug": "~3.0.2" + "pug": "~3.0.3" } } From e17724a73a28d4e8da51e188c4986b8d10dcb16f Mon Sep 17 00:00:00 2001 From: "Michael S. Molina" <70410625+michael-s-molina@users.noreply.github.com> Date: Tue, 28 May 2024 13:58:35 -0300 Subject: [PATCH 49/60] feat: Adds Bar chart migration logic (#28602) --- superset/cli/viz_migrations.py | 6 ++ .../shared/migrate_viz/processors.py | 54 +++++++++++++++- .../viz/nvd3_bar_chart_to_echarts_test.py | 64 +++++++++++++++++++ 3 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 tests/unit_tests/migrations/viz/nvd3_bar_chart_to_echarts_test.py diff --git a/superset/cli/viz_migrations.py b/superset/cli/viz_migrations.py index c80c3a5136945..4ddc739cdcfda 100644 --- a/superset/cli/viz_migrations.py +++ b/superset/cli/viz_migrations.py @@ -25,7 +25,9 @@ class VizType(str, Enum): AREA = "area" + BAR = "bar" BUBBLE = "bubble" + DIST_BAR = "dist_bar" DUAL_LINE = "dual_line" HEATMAP = "heatmap" LINE = "line" @@ -78,7 +80,9 @@ def migrate(viz_type: VizType, is_downgrade: bool = False) -> None: # pylint: disable=import-outside-toplevel from superset.migrations.shared.migrate_viz.processors import ( MigrateAreaChart, + MigrateBarChart, MigrateBubbleChart, + MigrateDistBarChart, MigrateDualLine, MigrateHeatmapChart, MigrateLineChart, @@ -89,7 +93,9 @@ def migrate(viz_type: VizType, is_downgrade: bool = False) -> None: migrations = { VizType.AREA: MigrateAreaChart, + VizType.BAR: MigrateBarChart, VizType.BUBBLE: MigrateBubbleChart, + VizType.DIST_BAR: MigrateDistBarChart, VizType.DUAL_LINE: MigrateDualLine, VizType.HEATMAP: MigrateHeatmapChart, VizType.LINE: MigrateLineChart, diff --git a/superset/migrations/shared/migrate_viz/processors.py b/superset/migrations/shared/migrate_viz/processors.py index 6df66b9f4826c..b3504bc280c89 100644 --- a/superset/migrations/shared/migrate_viz/processors.py +++ b/superset/migrations/shared/migrate_viz/processors.py @@ -109,12 +109,19 @@ class TimeseriesChart(MigrateViz): "show_controls": "show_extra_controls", "x_axis_label": "x_axis_title", "x_axis_format": "x_axis_time_format", + "x_axis_showminmax": "truncateXAxis", "x_ticks_layout": "xAxisLabelRotation", "y_axis_label": "y_axis_title", "y_axis_showminmax": "truncateYAxis", "y_log_scale": "logAxis", } - remove_keys = {"contribution", "show_brush", "show_markers"} + remove_keys = { + "contribution", + "line_interpolation", + "reduce_x_ticks", + "show_brush", + "show_markers", + } def _pre_action(self) -> None: self.data["contributionMode"] = "row" if self.data.get("contribution") else None @@ -156,8 +163,6 @@ class MigrateLineChart(TimeseriesChart): def _pre_action(self) -> None: super()._pre_action() - self.remove_keys.add("line_interpolation") - line_interpolation = self.data.get("line_interpolation") if line_interpolation == "cardinal": self.target_viz_type = "echarts_timeseries_smooth" @@ -190,6 +195,49 @@ def _pre_action(self) -> None: self.data["opacity"] = 0.7 +class MigrateBarChart(TimeseriesChart): + source_viz_type = "bar" + target_viz_type = "echarts_timeseries_bar" + + def _pre_action(self) -> None: + super()._pre_action() + + self.rename_keys["show_bar_value"] = "show_value" + + self.remove_keys.add("bar_stacked") + + self.data["stack"] = "Stack" if self.data.get("bar_stacked") else None + + +class MigrateDistBarChart(TimeseriesChart): + source_viz_type = "dist_bar" + target_viz_type = "echarts_timeseries_bar" + has_x_axis_control = False + + def _pre_action(self) -> None: + super()._pre_action() + + groupby = self.data.get("groupby") or [] + columns = self.data.get("columns") or [] + if len(groupby) > 0: + # x-axis supports only one value + self.data["x_axis"] = groupby[0] + + self.data["groupby"] = [] + if len(groupby) > 1: + # rest of groupby will go into dimensions + self.data["groupby"] += groupby[1:] + if len(columns) > 0: + self.data["groupby"] += columns + + self.rename_keys["show_bar_value"] = "show_value" + + self.remove_keys.add("columns") + self.remove_keys.add("bar_stacked") + + self.data["stack"] = "Stack" if self.data.get("bar_stacked") else None + + class MigrateBubbleChart(MigrateViz): source_viz_type = "bubble" target_viz_type = "bubble_v2" diff --git a/tests/unit_tests/migrations/viz/nvd3_bar_chart_to_echarts_test.py b/tests/unit_tests/migrations/viz/nvd3_bar_chart_to_echarts_test.py new file mode 100644 index 0000000000000..a37cd00fcbe64 --- /dev/null +++ b/tests/unit_tests/migrations/viz/nvd3_bar_chart_to_echarts_test.py @@ -0,0 +1,64 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +from typing import Any + +from superset.migrations.shared.migrate_viz import MigrateBarChart, MigrateDistBarChart +from tests.unit_tests.migrations.viz.utils import ( + migrate_and_assert, + TIMESERIES_SOURCE_FORM_DATA, + TIMESERIES_TARGET_FORM_DATA, +) + + +def test_bar_migration() -> None: + source_form_data: dict[str, Any] = { + "viz_type": "bar", + "show_bar_value": True, + "bar_stacked": True, + } + + target_form_data: dict[str, Any] = { + "form_data_bak": source_form_data, + "viz_type": "echarts_timeseries_bar", + "show_value": True, + "stack": "Stack", + } + source_form_data.update(TIMESERIES_SOURCE_FORM_DATA) + target_form_data.update(TIMESERIES_TARGET_FORM_DATA) + migrate_and_assert(MigrateBarChart, source_form_data, target_form_data) + + +def test_dist_bar_migration() -> None: + source_form_data: dict[str, Any] = { + "viz_type": "dist_bar", + "show_bar_value": True, + "bar_stacked": True, + "groupby": ["column_a", "column_b"], + "columns": ["column_c", "column_d"], + } + + target_form_data: dict[str, Any] = { + "form_data_bak": source_form_data, + "viz_type": "echarts_timeseries_bar", + "show_value": True, + "stack": "Stack", + "x_axis": "column_a", + "groupby": ["column_b", "column_c", "column_d"], + } + source_form_data.update(TIMESERIES_SOURCE_FORM_DATA) + target_form_data.update(TIMESERIES_TARGET_FORM_DATA) + migrate_and_assert(MigrateDistBarChart, source_form_data, target_form_data) From 30dfd92577335ddecf78be18e435d616c60b5906 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 May 2024 10:38:14 -0700 Subject: [PATCH 50/60] =?UTF-8?q?chore(=F0=9F=A6=BE):=20bump=20python=20ce?= =?UTF-8?q?lery=205.3.6=20->=205.4.0=20(#28471)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GitHub Action --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index eb1bdf330180b..6a68e505249d4 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -44,7 +44,7 @@ cachetools==5.3.3 # via google-auth cattrs==23.2.3 # via requests-cache -celery==5.3.6 +celery==5.4.0 # via apache-superset certifi==2024.2.2 # via requests From f9d2451b23e0f5b0316a61889a8d964704e888dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hex=20Caf=C3=A9?= <157834442+hexcafe@users.noreply.github.com> Date: Wed, 29 May 2024 02:19:38 +0800 Subject: [PATCH 51/60] feat: add Nightingale chart support for echarts pie chart (#28597) --- .../plugin-chart-echarts/Pie/Pie.stories.tsx | 90 +++++++++++++++++- .../plugins/plugin-chart-echarts/Pie/data.ts | 11 +++ .../src/Pie/controlPanel.tsx | 18 ++++ .../src/Pie/images/Pie3.jpg | Bin 50875 -> 31954 bytes .../src/Pie/images/Pie4.jpg | Bin 17000 -> 31291 bytes .../plugin-chart-echarts/src/Pie/index.ts | 1 + .../src/Pie/transformProps.ts | 2 + .../plugin-chart-echarts/src/Pie/types.ts | 2 + 8 files changed, 123 insertions(+), 1 deletion(-) diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/Pie.stories.tsx b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/Pie.stories.tsx index 73b25a2f7cf42..228d5792175aa 100644 --- a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/Pie.stories.tsx +++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/Pie.stories.tsx @@ -23,7 +23,7 @@ import { EchartsPieChartPlugin, PieTransformProps, } from '@superset-ui/plugin-chart-echarts'; -import { weekday, population } from './data'; +import { weekday, population, sales } from './data'; import { withResizableChartDemo } from '../../../../shared/components/ResizableChartDemo'; new EchartsPieChartPlugin().configure({ key: 'echarts-pie' }).register(); @@ -193,3 +193,91 @@ PopulationPie.argTypes = { }, }, }; + +export const SalesPie = ( + { + donut, + innerRadius, + outerRadius, + labelsOutside, + labelLine, + showLabels, + showLegend, + labelType, + roseType, + }: { + donut: boolean; + innerRadius: number; + outerRadius: number; + labelsOutside: boolean; + labelLine: boolean; + showLabels: boolean; + showLegend: boolean; + labelType: string; + roseType: string; + }, + { width, height }: { width: number; height: number }, +) => ( + +); + +SalesPie.args = { + roseType: 'area', + donut: false, + innerRadius: 30, + outerRadius: 70, + labelsOutside: false, + labelLine: true, + showLabels: true, + showLegend: false, + labelType: 'key', +}; + +SalesPie.argTypes = { + roseType: { + control: { + type: 'select', + options: ['area', 'radius'], + }, + }, + donut: { control: 'boolean' }, + innerRadius: { control: 'number' }, + outerRadius: { control: 'number' }, + labelsOutside: { control: 'boolean' }, + labelLine: { control: 'boolean' }, + showLabels: { control: 'boolean' }, + showLegend: { control: 'boolean' }, + labelType: { + control: { + type: 'select', + options: [ + 'key', + 'value', + 'percent', + 'key_value', + 'key_percent', + 'key_value_percent', + ], + }, + }, +}; diff --git a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/data.ts b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/data.ts index 8959a1fc6c552..33fdb2c6b8d8f 100644 --- a/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/data.ts +++ b/superset-frontend/packages/superset-ui-demo/storybook/stories/plugins/plugin-chart-echarts/Pie/data.ts @@ -240,3 +240,14 @@ export const population = [ { Country: 'Sint Maarten (Dutch part)', Population: 597781 }, { Country: 'Tuvalu', Population: 466709 }, ]; + +export const sales = [ + { Product: 'Laptop', 'SUM(AMOUNT)': 30 }, + { Product: 'Workstation', 'SUM(AMOUNT)': 28 }, + { Product: 'Phone', 'SUM(AMOUNT)': 26 }, + { Product: 'Tablet', 'SUM(AMOUNT)': 24 }, + { Product: 'PDA', 'SUM(AMOUNT)': 22 }, + { Product: 'Ink Pad', 'SUM(AMOUNT)': 20 }, + { Product: 'Accessories', 'SUM(AMOUNT)': 18 }, + { Product: 'Pad', 'SUM(AMOUNT)': 16 }, +]; diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx index 1afc64924bb3d..b197c9743bfe8 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx @@ -40,6 +40,7 @@ const { outerRadius, numberFormat, showLabels, + roseType, } = DEFAULT_FORM_DATA; const config: ControlPanelConfig = { @@ -87,6 +88,23 @@ const config: ControlPanelConfig = { }, }, ], + [ + { + name: 'roseType', + config: { + type: 'SelectControl', + label: t('Rose Type'), + default: roseType, + renderTrigger: true, + choices: [ + ['area', t('Area')], + ['radius', t('Radius')], + [null, t('None')], + ], + description: t('Whether to show as Nightingale chart.'), + }, + }, + ], ...legendSection, // eslint-disable-next-line react/jsx-key [{t('Labels')}], diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Pie/images/Pie3.jpg b/superset-frontend/plugins/plugin-chart-echarts/src/Pie/images/Pie3.jpg index 45299bab7c52c6b23d2126c9d99d78c31f485942..5ad62baa6917f634e769889154dc6086438688e4 100644 GIT binary patch literal 31954 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 VwgYa+O6{1j{k8Tw+mX+s{{zb3F^B*F literal 50875 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

Nw~#cW3)D03;f7UBf!y=&fcyhqu{MA4 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 literal 17000 zcmeHuc|6-`yLVbGU8e1*qNSMO8EY}At)+>XsnR7FjY#cN+E_yDK@jcJMNu*awaW~Z zkXTAYkfOD=wv>njFLCsU zxWrKjaq%O^j~qSr`z0!Uas1d9zYD)B`M0kgJS--5_?U#a#NR&hzq;+e0Z1M>h!Oiv z?0_=hpyUBD$pib%07VhVg9pV#&;b8_9XTp4ap>?du>%K1@89}TG z^X0R0WnPizh8(JvJM&BQ@57X?HfOB2z?#{%(O+C#7&wp6!N$enV`z`M=~dG!1)yPP zcjq3%IcbO7kNpAu0fmXwPl$U^?>P4f7*z7ujR{v2(d3FXX-=_&Rauwu#PtqgBqm1M z<=H-9jyn&NS|sLaFP=)=@fh!q!r)JDQ2M=(iY1vo{a7ThQvP!d|}Qx z8C06fSdH})gPtdTa$M*(i)|3Rr}Xv~6$XQjkcu+aI~(MYj=B%>nI!M^=z8{(I~+<= z;0IdF8jdPQA|*WO0E4Qx(+qskWPEp4Fm%t?w|XB?3GC|5huP3JqA2<^9v!=JyMwqz z=kM;~%`H+L$Gp|r>^EN%rLYmu?T0y)JM#fopJ$r)49gSE%88TR7FCq^Uk3>YueKUz zkY;)YuEY{tq!5%_e-D{k{#poKV$SXZ_^{{;a4l+E2?bWWO}V_RfR#cOrtjU(J+|zt z4gG7UHq*_xT;D%|vzjwQK~a3z66u_HSwWs^qNHszvUn-1{@7nu=xCb6YCB=UkGaxAGr4ajIQL|pZM$>-f_^R= z3wC2eX6SmpJg8#8*>%s1J@`4oh!B^X!mO>hyrzimwb!?*laatmM}Uf;1|2a}9azZ-&GAg5!$%%IP#!Q|u@jv*STB zdOp1lq&A!i%-kk+;j<(9#i7iqtFh@srI^ybkk>zaPO)$ab}Prd=4$ z;-`6zn=j_;Ij=>{`chu9EQdRinN4*H7>C$(HgJr0nuPT?@x1)&q}A(^@^b3A0glT& z<{5JZ$vkHyWW?NJ?`Y+gADZL+7WM}^94OdIn&C6hwke#J> z?%XPKK8tE`Q*B)%7Kb_V>C>l4*D@_#WjYN>E(z6v8Nh6}Cq24$RL^SXzPanBS}kCW zHVtmiu!mcm%bre$nv6cnT8?$#3g0)M7%M_vUZ0tF>FA?q)j2~KGYQV$8kI{zyuLtv zb?Sp?Mon9gFf2Z4=bTn*&3>&H{RsVUeH1AScZT(oTgt z=#JfEp$hRi7iZeKY?;n_mNvz==C~a%$Z^vdv58Xh1dx~gTOC#|(1-k@vR=!pDinMe zq(N3`>~;pu&o>8?H}cC`fYo1j#{j~XQT;l7BX;EmT1g7Q3Af$4_SS22DcrIR1Wayk zaY=W4gs397ik`Cpd6mZ1LaZC_N_H7)sdXBV`oc9gnN4i#Q;7Imh%J|);zYL*<+5>Y zi~HCYIjqH9XHOUPVjb6r8yjP9NAKpLUYB(z$c)~^CKL|i{k-u5^eH9H+P1eQ)rY&- zhr?sv<}d38+PFjKLhACSSTakVc$Xx0LBJxhtSzsi+tAhE{VItE@&>a^CfFRsI__NT zpi9yk(tCx5m`bkO2e4iEJCw#UyS;!Dxd$)d|F8P>5g`Nar7ITx6^A;3+^j@8(v&+{ z1YaMm9-&8Z7#vfk!Ezp;4CaYm(B^Fes-Q zTZVlmiG=B_evoWtX8v>2-(w}=RX#&V5ahF+R-UndlOFqk_cvRm%bui$N?h#s&EPv{ zRkF=?+%S#pNP=gnC;n3IFD01oiHs(esK-*_D+$&)Psxk>0Hh^g+C$^P-?e`7!juy8 zJcd~Mk=p|`hRC=Q*YZHm(pa46aa22xg_yPevP&QpkyO=gJZ|IpQFQ}+z1jwc-*V`r zj}|wzkyT!TWW<$*8%pyk6KnNetO}z^#<z@e3yY?sYN82N0zc7&1%AQ#0$l%JT_f)7@v5OrA zIlp}x#(7!S(}VVwaL>cqiVbI8w%i3?(ppCBik`^UZ~D%mJRWp^YdgLWs!R{@Pu~ZG zLeS0gi66vGuKaI%r&1TEYL-J<6{PfBJJSVY+pfg9U77Ugv8yA4%3<8HA9)QabshRW zQg+}^BbP$2AXmsrGKDM4aitdcRIs96*26b$ddEks`ob9ZuFP=>EaMIjbjI3y-|hpg z(TBo487-{!lxubdpupTTU?rwDIMZ{5jxlY5Y_8&u6rSL{UU&VHW{6lC*?y!8V}%@F zb?IVsHyG(~OFfD^S>TI;G8cLhn!G;8at>h`z@0-vG6|8B9;}_>$Oi2uUVm-XM6}Nu zV`I)+XQXu1;hoq|OaBo9nOg)8Xc519D^;rh;sqPD+IpVa-ptUQ?)Ex!^RC`NZ3e3h z(niY7<Rl_U_%b;@cW36wV@eb_U|K@;KQscw@Kr`uV}qDE!^xrA zR&#Nz!az+zYC@oB2+PAXH#atIY6wq%*l4mcI#Jz{iX+T<64aafG}H513&75xKBtXv z7{51Cx^b_>neHYuDjp`qO_NkJ`MJqb^G}nF-}&2*C>3G!Nta;f-PaTS(`KIzP01@H zE>%0!_D?Zs-~^kcT$uSj;Oy}0yAqp{!ZX=%uQrU@gb3xLxxpTqq9qoaGSpzZ4^S_~ zLg!-}ENxj3n57L6*srSAWq}wp*Hdk=%r*G-B-j*RQ}=g|DdFl3bWMjg25yu6%dF>JgHllA-rDZHN@a4r6siK&xC4_T36Vw z=EBCAz+QhLOcBONeUDS$s*kcyKQBFtRn~S~WvEXs*92zSh7>$Q*P$t++{?ykTIVa~ zF6WCD!*{mJg2tQ|J4shGTgq*t={QX?j>=PlmtiQA2#;chJ^nJ51%rtuT|GU$engaO zyq?%!%O8}>l(aox>s)@3%WE%X_5UpH-uVx24nJPNkjP^)eKoMC84~A`G|YCZbHXtL zUJL&tc>u4lvw zqNEs{M#46F!buo7I_`BHH z#Bz{ZB;k?e zKWC@7<39#UK0mQLEG$VMa-w@zWC90na7{?Ws!X~UKJ8NPcXEA?|Jj>=T^28zGRfRc zcwctVzy&z3IZelOft$>Fw|BMr^t@x&&_x?zmN4rA{myMXTFAzHvN1#I)hZ3GKQkrXKHn%km^YGf6vH*jCDQ_U>8K6hJ<)=1L>oh9kzkR}w3q;PF``50^gb z1$x@jMIBb)?l!9nHe6aHFn}gkpvy}pVbPjG=&F}s z&9_Gh9p_%4&s3C@{KDDezP;~j+KIk|RqJ!}yT1_{Fn;i|pTrQ0|Lm$%(~AqWdez6P z{A@sO*+*#`J%J>Tt=@@ZpZC*!$L_c9O1lIGE$C7X$&I8b>H|`W(9;wwquzgZ z`EW(PyPwmRd#GoXvTj#UZ^&`UUgaHZU)VL9c|N#a`q_M#Z?iM2F>0O|Aa;KS<~C!D zGIOQ`W-O3Eo+OZ0x?TwDCZCv;Hf7n~ec>y}5#(n9X2pPTQito!i;!;`wq5<6tC z4zxQrV7+KUv3g94d{$Q{63sc^yijI6Za7?;sa0n|>GP*^y_???R2opxN@wwR(q9Ds zIzK>vS_dPS7ua?uE6j15WtczcTcm?O+fw1A zSmL@y+4cvb83$1@QlQi_oUlB-fo7ELj#)cU}Lu#1}tZ&Ad|Ybcy2KPt9yT!`L$n*_c$yZhxHDloFGt$?! zq4H`)4WZf9p%S%Phkf?HhF zDh#AS03iyW-Xt@G5=aFpRc9o<0a)$1r*VX87~DtAn^FMIQGDjLQew zecFyrj14W-1!_BHrZPLD71nVVcYKDg_>NwdhUJvbNV~*?_?ZF4Z7ixAelYJDA${}P z2M#GVmbJ>6?$;B#E_8MZzB)zx_y_1mL*6M~llFfEZI0dQL*1fwMryXTiHIJ8jkM-A zct%hWvK2AnP*THZcdYyvC(Hr)JgwpB@3={Vs)!{Nwpt2v*XHEP;m+}eKd1#9NLg@< zc$*N}~s|p3V=M^5zb}n7N-ryan<3JvR=>a#&?@pmv^feOA2?=RUK0od<;B#$9 zQ8|9idxmW$YRt3gIc`z6=_i%^a>QaI)NYM(95r=+@*c3gHvwn2YLJZAJ-9%Sn|rUD zbE72s#SdTk@k&fq{oM^#O-f;YEEkl}Dmgc!xwmWW_ zW0o5I9Upgc6^pMqd2*B9iAuiK0!r67GY1U|ft9aGjVqXT}` zzka3|a86gEI<0siGs(G>HBW}#G`g7Bnwk{+Pxau05SXLZr6Sd0d?qune zd1DeSLn}lRGPqD#&tk(Z6 z*nd&;=o(T9ozv1Ybto}p*(}8;vv9uTtg0+yG#4!~;dYpFVft z5Ap%os(pZ$%Lrp)>U{O#vW0CGOU9U$p`AImt1d~gEf^YG;N~&uNHq-|K02~tE`+z&AIT%?u?WFv+WA5I(We4PwV_f}+q5`z3Tzs?BfO^ObOy zUXbzfTUg68J03M7`vA@RMT{cBz3OM%sgZICzYhhL8U`nhVr;h)jB z0+d57bT_xfv{dS%eUJuB?^rwqm!#N_+sx%`e)B_(h~F8Wz7ok=18whejQ1YG?4|{4 zWdo&J#64&D3;o}!+K!&J{FP2Twn73$Ms3j@^PcwyS;jP3LQCwZG}9N6qdTfUAG+)Q zC*yyvSf&i=HDfl)7)ED8akMp2k20xv6;K)?khX75Z=nGfGA}Sq<3CghhwnsO^`42K z*yN^fx!@yob~-n0P_dsdVvZS@K)?UW-S2B)|-+ZnaAa9iHJZ2)B zX_-*A?ZT5rt_A3@*p2G%1a3w6m|MTls7id}T$gy#xZskk32pJBdL5!HBp46N7hrMz|J5+YnzWT*HXLpDnm%nwhh%bMN)qHn;IhHsG1TLmQRt_g-E}R`c&&Y>K zw@tll%CkW_DzWL93Dvbqqe zF$LKJf7#_x--e6xglZjkOT{pS$hzG7TPj;-T60O-f*1BR?RB6^#%!Ijc(bL+wYc)N z666+=U|LiA!1iR}pY45KbI3%GrN#OwpQZl8WT7`6|X@L05Nlq>ezo&WKmdGqHA4-C!TBqS{6!=={|22SB|`OKBd zjauT}%EgfLT@2!cmmy-((*DKn6G?$BOzKo7KXW?MojQf_By>TY_;Oa1_R}8^ZNB;V zxn97*4<e#XYogyt1$z+QpzsxAfWpCr#MK0_CeF3NDVnL&%;H%4PN9S?v9#cs=o_hMjd_fX zbq>tBQKfkAsQquA)h40ltsg2mQJk|?UNjVFQIWEkv50?ORbwaL;j)zKPaH2Yb{LB0 z+3Vl$_ug{ci6~jyE3;@S<~>NR3Huxe0AN3LKLLNg-Rf|ZseOruC_oog_S%~qh=`HY zP2FT)BFuKBOtV<9x_6nDXF3-5qs!08xWJq4IROhrLBZ!xNY3%ps4N5PJzI;eIsjCs z>dzKFuMtlaYICGfb3a@vd)ebxXIO=@^RUA2>YH1LXzi(o{DyeCajvp|e$c{Rts5zX zTbD)bv`%ReNOSf9(9Tp&=!IcY*N|#vp=jHWxZ>vCEtQa5Qxabpn2z^}eo9kN48FB_ z;KEN2KC?Sl9YtB9baVth2@h?)0^~q>Tv~KgxOHzyu~0@YL&F7k%-sCYL{;QH0H*ywyWHc z2co*-gE`b|U|XhS@7Jr4g({U3Zt6JK__(Tka6@GVcQ~Z0$CeKXBp5*zyOu}wzWU;E z=YkPdsU#WXoM+s7q|r`XNXj~;YfNeG3gDzc3UQAv`^uDb`uFq^qXl53s>Jj<4` zX7ZD?3Gur>TmQT!yk<%zCd40~byCHD?t&%V!DYG6*9{6}?&bz+kvjJbXY!(DU*1@!&Q{-EC#x_59X&$u;*yyi!_7(Iw0BQa>RNSKyR~ zjYqBwQY{Lq@w(ZJ>pQofa_MMaCW0ktd4?%zso!?}8BQG)_}s|l(+K&o|Ke>B(ARXK z+W2CGbU6FU%yv;MS1Hro^$1V*!)c>SpP~32lb9io=D8QOe1Kw@V@F?GHd0l%d}c+k zrB1hmn|>q|yw}pIpxxa=2i@=paG{J)Y5G3dBP(q&m8Hrpz~x>$@Yz=KmOk|4cgIXgYN9T(dVE7Z#DnEW=jYy60Q&b$vYqdV6$I>X+QF`~^~{I8%F9%YN+j zB;-=9TrRX;tM%Go8E)e>dHB?E(7w3rIv<#XL9D*RKZiLnceH<= zirfdt?=)R*z^VnafQpi}pbzuf&)Q9sW^+$T01Ir)EM4QujLYtIz7exZHSXe9`OaJ7 zNweESrHB*8r8&{3i@D%+N&`+-yGyZ`>x!<$tP-MBzjkpTUfSvPZxq9J3M~Vfmsxv*YzU}3pn9Cg2?vm{5;F9%x z6e!+Zwe56>le2Yb3mh5S+1c9C+|ni@vIQs}{m!MFp(4IM%Plj%tywZgx3U43;&Y|e z$3OH~h_mi9!(b59pBa;3heuk~6u@)NExM_1nKe5Tvb~GucI`=8crs7}))6hEmY98X z=(SU6ogoT21S-zj2mGQ3PKuXB7{g`ef@4YPB+X|6Ng(rOGvwBnHShd%VZ!5%b_sg+ zG)#Ac9o35N=h7gTG6ln}IFxoVTF zBjHf4nIq;uoQGczv4jU8$z#$H-l`tkD?gC!a$#|MdIzp`bM^6OMSaRkx98JbC%{nm ztA7F_A=GC%+gv--*~t(MH|J7vKF&20@A}ZsUX~fxyBKYq11@)Jdt%z8pfbfC>5HV# z>UJk^Hlx9eh*P)HYgY3c>7#-8CLvaG{yJh?ttp@m{y1`qCk$GLWLfu@KL4e~NuM-@ zV-dHBOAn0NKPPK`2O{3e(|VE`ker@FE=NsR4m;N7oRdoc8MpNm@4c9{rkChjni~IB z3ME$@f8^43+<%c{+p@(bC8%8|k+8F&C|43VXqGS7Hn@7D(*E)N3=pRWjLx)pK8N#A zy6yTZ{ESeBHTEi5uBTrB-_Telx+)mg>m9B8{kb(Z3;*sUCe-tv;_+V>4dxB9#e2fD zcoS%U6UR8^oapN{9;bKT3C?cX?ncN)|5d0DTZ+ZOvlRxZR4%SIL_4EqWoywuTg`Y* z5o_>{4l++`dVcl3jO^cY55`c3nv| zp&`L`IE8$FvEFL;jyEyHaiY~UY~$O2s#StkV)Nkx#>nsffi?;l5U3aEJ2vh>;&G@g zGSdX(E*NCxSxi@DjmLm%>S{+8`$q~}$vSuL0!&fbC4G7C?BZr;L~hju7IxN=NF_3s zvke(M+4A)b8@cA7+%s*Z!A}Rqsyf;R94%zOqn+s*AP(Ih#x;a+0e*Y-X!g%PXfwh-~0!_e^oeft9u`CK~Bx+H5COuHWSRr z*VC2f%gH#u+XpmG4GCabIZ-NgtKPerGdQ~;C3Gnq@d<9m2O2jm6~^V?2*+|A-CYJv zvVI)gCPL^>ioC+pfI*A8&|bPx2}_@C)>f~odj9Y)Ya2^9?0QD-yq@si2VCb91T^)g z5t&(=F?U0ig5nH5PgWyQ2;JRMjuhDSvfj9>x83!sv-VTu3!nZXtf4wFzxtvr{onl% zOM2;LUprZZ%jZ`icsp5@9I6?nlVMge$Z0mfcDB&!P%y>fq2eIuHL>jEC;)vpv;bkIulN<=Uuy zOX@f_558K;UQDc)+}3XbNtlc_gi2w^G&KiOMn>*tXyS2+n2rVXLY0PSHGNILP5oIf zKoRouKl$@7isF}B=A?bPFZp*kj_H0GTpOex6=7Wyn}u)}k@;7&L}%>;3=Fbm3Dh+i z<}S6=)tF7R(%xDM5w*mFJHt%9?HqMR6A9t#N}RIJ#=xX4@_Uul)+&~c$9DUP&9K)H zIVhvaK1z_vcXUgjG-8n7KdAuSb~f&rD^+RNe6js?=RV+J^QQ4sCm9#KW<9@mwwesK zOK^X#9vMab;tQb`crC4H+^Ow-D;-uGFI$+2q&e&Lk`QX`Zf@@RyVvy~QvN7YMfYbB>^kn74#kuXi3&Hd>DWpW55~9z#Uo<8w zfNgi|&pJxQHk`32dn-4@{gq0&EIsV&l471>VLT<8CThQ-=%0|1@SU!%J(=N0cbDmO zq$yIE-5wKq{T>rKKdA;Y&p^+#9SQK=UJo!L)uBT~8L=6;dV2Nu4s3l+9gE-|SZQv4 z&uFJTd4hB1u*q@S4m4{AGRfnmnMHADwo|7_+$?3|E$lOjhuaOU&_Xi(Q#p6~OC@Hm*jh@4jL*WKFzIE!xtG z$ghv^;3c75SNMe28dkNtoDBJIqH7^DRq z*V4-#IWi3jm}8BMV(hdVSZqDXbA3?7WWC<0S`178zxf6e*H_6ky~CX68&^peXFHJ% z9NxDzptSOY(iS(1NEr+1=^3%Hx7CoQ2rRK(b*rW&QJNoGaVfNv2Q#Fnbh#!~XlCH^ z*`~vIMIMyD>d|@yu?@-&zv+G)6WW%4W&3rwL3J@WnN93}3izh@-==zrpjU=ZT{gL4 zS)ua9P;`BbtgIz<07%n{qJuq6&w9R;i)CKN?ZsotK0{42QfbSuu8~sZNcnS zB5S(s@iM>{_TzsNzM~C;sqcxsDEDQB<}R(3U~A{HhgcldHhK|ewq=p3q)5eFy%Tu! zJ;LwXh`gNLdjC0xAvrs&CKyuOv|6LL4+%Dn>I8Orce=W=TI0n_pML*;3Oj37C1 zV$NC-z67{B3GR$?32J!kxAmZiYy6)e|F5dVh~wgK28W@8n6y)&dk=9W&#fx$JDVGq zZ9@y`sKUKu#Q@-hlq7KCs6`?#Qi#v+~Nm-ZdO9i4czt)_XB7a6~mY z^%?$N2KQ2}Ti0f9{rhcK9;tbZFuYncws7s+({^8pynTPkro41sv{QZwzvg<42Id%7 zuTUWyZQULPz-4zYg*VzylU7FvRk<)cD9{&mAad(>*#dX{cK?Kp?n=KAbr9ymUgGS7H*xBIWAVp+;rp z^8uo4BHPYx%2#3we~!GL&aKM^!;#%{(|sWhx_5m+#w%7ug)Jb}oz3mzP;iKK@g`Ie zJe_N;dj99R`uo%wqmv(L(UwD(((?J4F`)(FP(^g{>M}mc#dgQzrDfJ^0*)FMKwVfv zwDXQ8JZ8tXz1Y|y1?ylJqHfZQsgW^e9c7$rg5=aPR z2*f%Yg3*euM3$d2A7xDiq@{duTn=3h$E@X3=so6Or_HWAOt6dqe{L;k)q_cVtQv0K zW7cfn(!JN-5Is7?c5U>UvYEC0c{UW$GrTS3&+`TGe!b7n%ss)Uraj7X^W{>V!bDkg zF5e1%*+@_CKMOGRB9KUNUIYXJV`diKVDA2A_le0A#$oGz;@Zhmw>ER!8%vW{J$F2q z+|$2|xImzfB2MSTRLtJ}s=SrRQuI|a`>;GM_(+9Ry9ed8^p^;`+8kIH&_E#eje$B zgo;un!8Veo+DU};jEr6-TN~&0yi9ldT*;GX%sN+|3G{eJVegGRp4PN%Zw%j@kdfXs z@v(s!0sWD&d20m%B{}UqcJ`)4y;J?S7uA1&JlxQ-5Xeb`kB{@yvr+#PT8 zGJw#xmUC%=7h?m-qAS(rlGE`As1$AwB`6p2r39B)^)fo zsS~(BOW;dU|C|M2!4EzU$A2du`1NxC>?huOPL6mjjgTN`H%Ud(iF2Z3W?(YP?TSW? zq9g`4NNyFS`VMxxdYl4gry*hNdPAN=F1IGoT_V^EJyR2p1}WF@`&rQxxOL2(Ma*gc z)!l~QP$fz#ekfmg*&p9@Pz{$}QGB3i){t6vrYQYb73|yXm@{6ntFcnZGu3ew2hAGD zhAyO~RlVg++{K2VrrANW>#r({2%pyfzMCduur~Ad4CA`L4ui&}?IV^`xDNe8EOKV4 z6X!Ck^W!L)Q9#=9rkEZTSmScOjhC%)9e35jfWa-}h8-QuAZ69bYuhhsISpt`C@HUc zi`pD!2C+{0;oUo6_4$#V5bv>iuUv5V=#FLMHx^1clZLn>IJ7+;>g%?e9Ys>v6o#{k1o6~+`_DqE7C`8x9C^ye>)iU zbV$3HF8PRBP|rz4<$^R&Rbt%~9-Zz2m;F< zV?i?79Uf{ss=WN`ap?N2bG0oUQF;c$?aF>m>n%zdvVEz# zNzT233?iRh!2!Ec><_;VbB)t+~@$Bd`kH1p_0`m$ZL*RtMw-D4`0+ zHdJOd=E)7O4#?j5_<30VN3vKkm!s?D$Ca7mj${R$vVB{ppyQ4hh)>y>C`;LKZyCgq zyh(9+B##?0Egk528-1r|nI6xrHt=V!qCjYfFX(OHTHTwRwoT<-XYU*xaE?y7CpjSnMT9(u50nd*q-wa^~D zQ40@V`hv|uB}#kEdx_o5KxV!446Pao>86~M14U`C*DZUOR<3MVgq#g48~nZvln?9d zR`9NtPm@taWCg>|Zb~Z2Y30r`+Ka50b}8=`hpxdkjcZ`^(Wa4nN_Q-}L$#lz9gb0{ z8rj@6A+4EhENfZv+0Be4Y+3L_C`d%`L!OMfhj#{IP#s1slz0H*JNg`*#h&r+M**=?$THx z^ifk?Y*q%!`&mtfbAyN5Xe&82m|&WDcR{5Bj+{;%V2257rfeImZxSt-s-ERibEThl zz3Xixmm$t35N2?s2?m`^9B65yTBBLdBScJ}MXkm&{;ArAF2gB%jS@0Ma?C7XhY1{>L8Dp*hp+T#3%hVtuU1~m+en&&rJv>DvsV^L zSiOGdS6`>HVeJGG(LQ(3@kNOv1*Od)Xb_Cd%)BJW{?`kMKR!ufV}*PSqCD14yo7kC zz1%6dwA(ThnOC^cVguBMHe8nCc|3y+H;@*{r%vy7Q;b$fGp*_PXmo5`bUx~NHds&g zF}cL;6BEP)E+7{-t>Bq9eXV!$K1I#Al|BD@Ze#YrSYp9w-K(%<5Z`WB^T~e88scdK8ME~ z$4w{S4PY9W%lUTh#*uJniX!jFIV*;XFPar(IdbOSBvdKdssSaM3mfAIcd+FhYTsr` zxVFDOH;m4^GLxe^+l&PsPn6GcRz`>zj$x|V22$zrwE&Qq&u$R-sx%s}SmLT_i%)J6 zuEscV+6RYnYKyjQ*-xAx(H1h3?BN&Dj=v(H%dO;nz&FDzRNNj{()3bfsaI{tX#Yoh z@_LCVpxBP$xiC;nh9lf z_+)Q}bvE4gCfod*kt99M{AnRn(U{RK?_~5H$JA^WtjTjxaKOT}(!9~;ivrl(Fjv0p z``#iv)q+;K8nAZ^6K&T!sDR4`zbVZU9ks?8zxa(Qyu&Q_EQjm^q@kjSn!S?~txtW$ zmGzhE?re()^--|s2bw*KjUN%J{>y>xLYD1zo*Ssk^i}u?o<~foO*CW-trN11wU?`F zukg-TU-! Date: Tue, 28 May 2024 21:09:05 +0100 Subject: [PATCH 52/60] fix: dashboard performance (#28609) Co-authored-by: Elizabeth Thompson Co-authored-by: Joe Li --- pyproject.toml | 2 +- requirements/base.txt | 7 +- requirements/development.txt | 11 +- .../dashboards/DashboardCard.test.tsx | 158 ++++++++++++++++++ .../src/features/dashboards/DashboardCard.tsx | 39 ++++- .../DashboardList/DashboardList.test.jsx | 2 +- .../src/pages/DashboardList/index.tsx | 26 +++ .../src/views/CRUD/hooks.test.tsx | 105 ++++++++++++ superset-frontend/src/views/CRUD/hooks.ts | 2 + 9 files changed, 338 insertions(+), 14 deletions(-) create mode 100644 superset-frontend/src/features/dashboards/DashboardCard.test.tsx create mode 100644 superset-frontend/src/views/CRUD/hooks.test.tsx diff --git a/pyproject.toml b/pyproject.toml index af6a15dbac9fc..2e20fae77b777 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ "cryptography>=42.0.4, <43.0.0", "deprecation>=2.1.0, <2.2.0", "flask>=2.2.5, <3.0.0", - "flask-appbuilder>=4.4.1, <5.0.0", + "flask-appbuilder>=4.5.0, <5.0.0", "flask-caching>=2.1.0, <3", "flask-compress>=1.13, <2.0", "flask-talisman>=1.0.0, <2.0", diff --git a/requirements/base.txt b/requirements/base.txt index 6a68e505249d4..1b19d3a9205f6 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -15,8 +15,6 @@ apispec[yaml]==6.3.0 # via flask-appbuilder apsw==3.46.0.0 # via shillelagh -async-timeout==4.0.3 - # via redis attrs==23.2.0 # via # cattrs @@ -93,8 +91,6 @@ dnspython==2.6.1 # via email-validator email-validator==2.1.1 # via flask-appbuilder -exceptiongroup==1.2.1 - # via cattrs flask==2.3.3 # via # apache-superset @@ -109,7 +105,7 @@ flask==2.3.3 # flask-session # flask-sqlalchemy # flask-wtf -flask-appbuilder==4.4.1 +flask-appbuilder==4.5.0 # via apache-superset flask-babel==2.0.0 # via flask-appbuilder @@ -360,7 +356,6 @@ typing-extensions==4.12.0 # via # alembic # apache-superset - # cattrs # flask-limiter # limits # shillelagh diff --git a/requirements/development.txt b/requirements/development.txt index 5fdc102ea08d6..5b99fd81b6157 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -10,6 +10,8 @@ # via # -r requirements/base.in # -r requirements/development.in +appnope==0.1.4 + # via ipython astroid==3.1.0 # via pylint boto3==1.34.112 @@ -175,7 +177,9 @@ protobuf==4.23.0 psycopg2-binary==2.9.6 # via apache-superset pure-sasl==0.6.2 - # via thrift-sasl + # via + # pyhive + # thrift-sasl pydata-google-auth==1.7.0 # via pandas-gbq pydruid==0.6.9 @@ -184,7 +188,7 @@ pyee==11.0.1 # via playwright pyfakefs==5.3.5 # via apache-superset -pyhive[presto]==0.7.0 +pyhive[hive_pure_sasl]==0.7.0 # via apache-superset pyinstrument==4.4.0 # via apache-superset @@ -228,10 +232,9 @@ tableschema==1.20.10 thrift==0.16.0 # via # apache-superset + # pyhive # thrift-sasl thrift-sasl==0.4.3 - # via apache-superset -tomli==2.0.1 # via # build # coverage diff --git a/superset-frontend/src/features/dashboards/DashboardCard.test.tsx b/superset-frontend/src/features/dashboards/DashboardCard.test.tsx new file mode 100644 index 0000000000000..f1080c0e1f0cf --- /dev/null +++ b/superset-frontend/src/features/dashboards/DashboardCard.test.tsx @@ -0,0 +1,158 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { MemoryRouter } from 'react-router-dom'; +import { FeatureFlag, SupersetClient } from '@superset-ui/core'; +import * as uiCore from '@superset-ui/core'; + +import { render, screen, waitFor } from 'spec/helpers/testing-library'; + +import DashboardCard from './DashboardCard'; + +const mockDashboard = { + id: 1, + dashboard_title: 'Sample Dashboard', + certified_by: 'John Doe', + certification_details: 'Certified on 2022-01-01', + published: true, + url: '/dashboard/1', + thumbnail_url: '/thumbnails/1.png', + changed_on_delta_humanized: '2 days ago', + owners: [ + { id: 1, name: 'Alice', first_name: 'Alice', last_name: 'Doe' }, + { id: 2, name: 'Bob', first_name: 'Bob', last_name: 'Smith' }, + ], + changed_by_name: 'John Doe', + changed_by: 'john.doe@example.com', +}; + +const mockHasPerm = jest.fn().mockReturnValue(true); +const mockOpenDashboardEditModal = jest.fn(); +const mockSaveFavoriteStatus = jest.fn(); +const mockHandleBulkDashboardExport = jest.fn(); +const mockOnDelete = jest.fn(); + +let isFeatureEnabledMock: jest.MockInstance; + +beforeAll(() => { + isFeatureEnabledMock = jest + .spyOn(uiCore, 'isFeatureEnabled') + .mockImplementation(() => true); +}); + +afterAll(() => { + // @ts-ignore + isFeatureEnabledMock.mockClear(); +}); + +beforeEach(() => { + render( + + + , + ); +}); + +it('Renders the dashboard title', () => { + const titleElement = screen.getByText('Sample Dashboard'); + expect(titleElement).toBeInTheDocument(); +}); + +it('Renders the certification details', () => { + const certificationDetailsElement = screen.getByLabelText(/certified/i); + expect(certificationDetailsElement).toBeInTheDocument(); +}); + +it('Renders the published status', () => { + const publishedElement = screen.getByText(/published/i); + expect(publishedElement).toBeInTheDocument(); +}); + +it('Renders the modified date', () => { + const modifiedDateElement = screen.getByText('Modified 2 days ago'); + expect(modifiedDateElement).toBeInTheDocument(); +}); + +it('should fetch thumbnail when dashboard has no thumbnail URL and feature flag is enabled', async () => { + const mockGet = jest.spyOn(SupersetClient, 'get').mockResolvedValue({ + response: new Response( + JSON.stringify({ thumbnail_url: '/new-thumbnail.png' }), + ), + json: () => Promise.resolve({ thumbnail_url: '/new-thumbnail.png' }), + }); + const { rerender } = render( + true} + bulkSelectEnabled={false} + loading={false} + saveFavoriteStatus={() => {}} + favoriteStatus={false} + handleBulkDashboardExport={() => {}} + onDelete={() => {}} + />, + ); + await waitFor(() => { + expect(mockGet).toHaveBeenCalledWith({ + endpoint: '/api/v1/dashboard/1', + }); + }); + rerender( + true} + bulkSelectEnabled={false} + loading={false} + saveFavoriteStatus={() => {}} + favoriteStatus={false} + handleBulkDashboardExport={() => {}} + onDelete={() => {}} + />, + ); + mockGet.mockRestore(); +}); diff --git a/superset-frontend/src/features/dashboards/DashboardCard.tsx b/superset-frontend/src/features/dashboards/DashboardCard.tsx index e977c62f52dbd..a494a92d3c731 100644 --- a/superset-frontend/src/features/dashboards/DashboardCard.tsx +++ b/superset-frontend/src/features/dashboards/DashboardCard.tsx @@ -16,9 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { Link, useHistory } from 'react-router-dom'; -import { isFeatureEnabled, FeatureFlag, t, useTheme } from '@superset-ui/core'; +import { + isFeatureEnabled, + FeatureFlag, + t, + useTheme, + SupersetClient, +} from '@superset-ui/core'; import { CardStyles } from 'src/views/CRUD/utils'; import { AntdDropdown } from 'src/components'; import { Menu } from 'src/components/Menu'; @@ -62,6 +68,35 @@ function DashboardCard({ const canExport = hasPerm('can_export'); const theme = useTheme(); + + const [thumbnailUrl, setThumbnailUrl] = useState(null); + const [fetchingThumbnail, setFetchingThumbnail] = useState(false); + + useEffect(() => { + // fetch thumbnail only if it's not already fetched + if ( + !fetchingThumbnail && + dashboard.id && + (thumbnailUrl === undefined || thumbnailUrl === null) && + isFeatureEnabled(FeatureFlag.Thumbnails) + ) { + // fetch thumbnail + if (dashboard.thumbnail_url) { + // set to empty string if null so that we don't + // keep fetching the thumbnail + setThumbnailUrl(dashboard.thumbnail_url || ''); + return; + } + setFetchingThumbnail(true); + SupersetClient.get({ + endpoint: `/api/v1/dashboard/${dashboard.id}`, + }).then(({ json = {} }) => { + setThumbnailUrl(json.thumbnail_url || ''); + setFetchingThumbnail(false); + }); + } + }, [dashboard, thumbnailUrl]); + const menu = (

{canEdit && openDashboardEditModal && ( diff --git a/superset-frontend/src/pages/DashboardList/DashboardList.test.jsx b/superset-frontend/src/pages/DashboardList/DashboardList.test.jsx index fe307ee791448..8ba60ca2856ff 100644 --- a/superset-frontend/src/pages/DashboardList/DashboardList.test.jsx +++ b/superset-frontend/src/pages/DashboardList/DashboardList.test.jsx @@ -162,7 +162,7 @@ describe('DashboardList', () => { const callsD = fetchMock.calls(/dashboard\/\?q/); expect(callsD).toHaveLength(1); expect(callsD[0][0]).toMatchInlineSnapshot( - `"http://localhost/api/v1/dashboard/?q=(order_column:changed_on_delta_humanized,order_direction:desc,page:0,page_size:25)"`, + `"http://localhost/api/v1/dashboard/?q=(order_column:changed_on_delta_humanized,order_direction:desc,page:0,page_size:25,select_columns:!(id,dashboard_title,published,url,slug,changed_by,changed_on_delta_humanized,owners.id,owners.first_name,owners.last_name,owners,tags.id,tags.name,tags.type,status,certified_by,certification_details,changed_on))"`, ); }); diff --git a/superset-frontend/src/pages/DashboardList/index.tsx b/superset-frontend/src/pages/DashboardList/index.tsx index 2e5a5a2cd87be..2c80e094f3045 100644 --- a/superset-frontend/src/pages/DashboardList/index.tsx +++ b/superset-frontend/src/pages/DashboardList/index.tsx @@ -111,6 +111,27 @@ const Actions = styled.div` color: ${({ theme }) => theme.colors.grayscale.base}; `; +const DASHBOARD_COLUMNS_TO_FETCH = [ + 'id', + 'dashboard_title', + 'published', + 'url', + 'slug', + 'changed_by', + 'changed_on_delta_humanized', + 'owners.id', + 'owners.first_name', + 'owners.last_name', + 'owners', + 'tags.id', + 'tags.name', + 'tags.type', + 'status', + 'certified_by', + 'certification_details', + 'changed_on', +]; + function DashboardList(props: DashboardListProps) { const { addDangerToast, addSuccessToast, user } = props; @@ -135,6 +156,11 @@ function DashboardList(props: DashboardListProps) { 'dashboard', t('dashboard'), addDangerToast, + undefined, + undefined, + undefined, + undefined, + DASHBOARD_COLUMNS_TO_FETCH, ); const dashboardIds = useMemo(() => dashboards.map(d => d.id), [dashboards]); const [saveFavoriteStatus, favoriteStatus] = useFavoriteStatus( diff --git a/superset-frontend/src/views/CRUD/hooks.test.tsx b/superset-frontend/src/views/CRUD/hooks.test.tsx new file mode 100644 index 0000000000000..94b03fd72aa15 --- /dev/null +++ b/superset-frontend/src/views/CRUD/hooks.test.tsx @@ -0,0 +1,105 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import { renderHook } from '@testing-library/react-hooks'; +import { JsonResponse, SupersetClient } from '@superset-ui/core'; + +import { useListViewResource } from './hooks'; + +describe('useListViewResource', () => { + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('should fetch data with correct query parameters', async () => { + const pageIndex = 0; // Declare and initialize the pageIndex variable + const pageSize = 10; // Declare and initialize the pageSize variable + const baseFilters = [{ id: 'status', operator: 'equals', value: 'active' }]; + + const fetchSpy = jest.spyOn(SupersetClient, 'get').mockResolvedValue({ + json: { + result: { + dashboard_title: 'New Title', + slug: '/new', + json_metadata: '{"something":"foo"}', + owners: [{ id: 1, first_name: 'Al', last_name: 'Pacino' }], + roles: [], + }, + }, + } as unknown as JsonResponse); + + const { result } = renderHook(() => + useListViewResource('example', 'Example', jest.fn()), + ); + result.current.fetchData({ + pageIndex, + pageSize, + sortBy: [{ id: 'foo' }], // Change the type of sortBy from string to SortColumn[] + filters: baseFilters, + }); + + expect(fetchSpy).toHaveBeenNthCalledWith(2, { + endpoint: + '/api/v1/example/?q=(filters:!((col:status,opr:equals,value:active)),order_column:foo,order_direction:asc,page:0,page_size:10)', + }); + }); + + it('should pass the selectColumns to the fetch call', async () => { + const pageIndex = 0; // Declare and initialize the pageIndex variable + const pageSize = 10; // Declare and initialize the pageSize variable + const baseFilters = [{ id: 'status', operator: 'equals', value: 'active' }]; + const selectColumns = ['id', 'name']; + + const fetchSpy = jest.spyOn(SupersetClient, 'get').mockResolvedValue({ + json: { + result: { + dashboard_title: 'New Title', + slug: '/new', + json_metadata: '{"something":"foo"}', + owners: [{ id: 1, first_name: 'Al', last_name: 'Pacino' }], + roles: [], + }, + }, + } as unknown as JsonResponse); + + const { result } = renderHook(() => + useListViewResource( + 'example', + 'Example', + jest.fn(), + undefined, + undefined, + undefined, + undefined, + selectColumns, + ), + ); + + result.current.fetchData({ + pageIndex, + pageSize, + sortBy: [{ id: 'foo' }], // Change the type of sortBy from string to SortColumn[] + filters: baseFilters, + }); + + expect(fetchSpy).toHaveBeenNthCalledWith(2, { + endpoint: + '/api/v1/example/?q=(filters:!((col:status,opr:equals,value:active)),order_column:foo,order_direction:asc,page:0,page_size:10,select_columns:!(id,name))', + }); + }); +}); diff --git a/superset-frontend/src/views/CRUD/hooks.ts b/superset-frontend/src/views/CRUD/hooks.ts index 129734fc8bcc5..6fa167d93447a 100644 --- a/superset-frontend/src/views/CRUD/hooks.ts +++ b/superset-frontend/src/views/CRUD/hooks.ts @@ -77,6 +77,7 @@ export function useListViewResource( defaultCollectionValue: D[] = [], baseFilters?: FilterValue[], // must be memoized initialLoadingState = true, + selectColumns?: string[], ) { const [state, setState] = useState>({ count: 0, @@ -162,6 +163,7 @@ export function useListViewResource( page: pageIndex, page_size: pageSize, ...(filterExps.length ? { filters: filterExps } : {}), + ...(selectColumns?.length ? { select_columns: selectColumns } : {}), }); return SupersetClient.get({ From 07b2449bd777cf04a266f1de3d72af6874b9c305 Mon Sep 17 00:00:00 2001 From: Eyal Ezer Date: Tue, 28 May 2024 16:17:41 -0500 Subject: [PATCH 53/60] refactor: Unify all json.(loads|dumps) usage to utils.json (#28702) Co-authored-by: Eyal Ezer --- .pylintrc | 2 +- .../annotation_layers/annotations/schemas.py | 7 +- superset/async_events/async_query_manager.py | 2 +- superset/charts/api.py | 2 +- superset/charts/data/api.py | 11 ++- superset/commands/chart/export.py | 4 +- superset/commands/chart/importers/v1/utils.py | 4 +- superset/commands/chart/warm_up_cache.py | 2 +- superset/commands/dashboard/export.py | 6 +- superset/commands/dashboard/importers/v0.py | 2 +- .../commands/dashboard/importers/v1/utils.py | 2 +- superset/commands/dashboard/update.py | 2 +- superset/commands/database/export.py | 4 +- .../commands/database/importers/v1/utils.py | 2 +- superset/commands/database/validate.py | 4 +- superset/commands/dataset/export.py | 8 +- superset/commands/dataset/importers/v0.py | 2 +- .../commands/dataset/importers/v1/utils.py | 2 +- superset/commands/explore/get.py | 3 +- superset/commands/query/export.py | 4 +- superset/commands/report/alert.py | 2 +- superset/commands/report/create.py | 2 +- superset/commands/report/execute.py | 2 +- superset/commands/report/update.py | 2 +- superset/common/query_object.py | 3 +- superset/connectors/sqla/models.py | 6 +- superset/daos/dashboard.py | 2 +- superset/daos/report.py | 2 +- superset/dashboards/api.py | 2 +- superset/dashboards/schemas.py | 10 +-- superset/databases/api.py | 2 +- superset/databases/schemas.py | 4 +- superset/datasets/api.py | 2 +- superset/datasets/schemas.py | 2 +- superset/db_engine_specs/base.py | 3 +- superset/db_engine_specs/bigquery.py | 3 +- superset/db_engine_specs/databricks.py | 2 +- superset/db_engine_specs/druid.py | 3 +- superset/db_engine_specs/gsheets.py | 2 +- superset/db_engine_specs/postgres.py | 3 +- superset/db_engine_specs/presto.py | 3 +- superset/db_engine_specs/snowflake.py | 2 +- superset/db_engine_specs/trino.py | 3 +- superset/embedded/view.py | 6 +- superset/examples/bart_lines.py | 2 +- superset/examples/birth_names.py | 2 +- superset/examples/deck.py | 2 +- superset/examples/helpers.py | 2 +- superset/examples/misc_dashboard.py | 2 +- superset/examples/paris.py | 2 +- superset/examples/sf_population_polygons.py | 2 +- .../examples/supported_charts_dashboard.py | 2 +- superset/examples/tabbed_dashboard.py | 2 +- superset/examples/world_bank.py | 3 +- superset/extensions/pylint.py | 60 +++++++++++++ superset/forms.py | 3 +- superset/importexport/api.py | 2 +- superset/jinja_context.py | 2 +- .../migrations/shared/migrate_viz/base.py | 2 +- superset/migrations/shared/native_filters.py | 2 +- superset/migrations/shared/utils.py | 5 +- ...31_db0c65b146bd_update_slice_model_json.py | 3 +- ...a_rewriting_url_from_shortner_with_new_.py | 2 +- ...8-19_67a6ac9b727b_update_spatial_params.py | 3 +- ...11-06_21e88bc06c02_annotation_migration.py | 3 +- ...8-02-13_08-07_e866bd2d4976_smaller_grid.py | 3 +- ...06ae5eb46_cal_heatmap_metric_to_metrics.py | 3 +- ...6-04_11-12_c5756bec8b47_time_grain_sqla.py | 3 +- ...09-52_afb7730f6a9c_remove_empty_filters.py | 3 +- ...-20_4451805bbaa1_remove_double_percents.py | 3 +- ...-06-13_14-54_bddc498dd179_adhoc_filters.py | 3 +- ...31_80a67c5192fa_single_pie_chart_metric.py | 3 +- ..._migrate_num_period_compare_and_period_.py | 2 +- ...f3fed1fe_convert_dashboard_v1_positions.py | 2 +- .../2018-08-01_11-47_7fcdcde0761c_.py | 2 +- ..._migrate_time_range_for_default_filters.py | 3 +- ...12-11_22-03_fb13d49b72f9_better_filters.py | 2 +- ...bc82_add_parent_ids_in_dashboard_layout.py | 2 +- .../2019-06-28_13-17_ab8c66efdd01_resample.py | 2 +- ...019-10-10_13-52_1495eb914ad3_time_range.py | 2 +- ...d1d_reconvert_legacy_filters_into_adhoc.py | 2 +- ...3_3325d4caccc8_dashboard_scoped_filters.py | 2 +- ..._f9a30386bd74_cleanup_time_grainularity.py | 3 +- ...-24_620241d1153f_update_time_grain_sqla.py | 3 +- ...5563a02_migrate_iframe_to_dash_markdown.py | 2 +- ...0de1855_add_uuid_column_to_import_mixin.py | 6 +- ...649a77_migrate_x_dateunit_in_time_range.py | 2 +- ...add_granularity_to_charts_where_missing.py | 3 +- ...2-32_41ce8799acc3_rename_pie_label_type.py | 3 +- ...c1e5a7b_legacy_force_directed_to_echart.py | 3 +- ...e479899_rename_filter_configuration_in_.py | 3 +- ...5e7_remove_dataset_health_check_message.py | 2 +- ..._country_map_use_lowercase_country_name.py | 3 +- ...ff221_migrate_filter_sets_to_new_format.py | 2 +- ...95_migrate_native_filters_to_new_schema.py | 2 +- ...370a_fix_schemas_allowed_for_csv_upload.py | 4 +- ...migrate_pivot_table_v2_heatmaps_to_new_.py | 3 +- ...add_type_to_native_filter_configuration.py | 2 +- ...e2e_migrate_timeseries_limit_metric_to_.py | 3 +- ...-15_32646df09c64_update_time_grain_sqla.py | 3 +- ...acd_rename_to_schemas_allowed_for_file_.py | 6 +- ...1_rename_big_viz_total_form_data_fields.py | 2 +- ...move_pivot_table_v2_legacy_order_by_to_.py | 2 +- ...944_change_adhoc_filter_b_from_none_to_.py | 3 +- ..._a9422eeaae74_new_dataset_models_take_2.py | 6 +- ...074e4_deprecate_time_range_endpoints_v2.py | 3 +- ...dbaba_rm_time_range_endpoints_from_qc_3.py | 5 +- ...fix_table_chart_conditional_formatting_.py | 3 +- ...1d9b25135_remove_filter_bar_orientation.py | 3 +- ...c0a3ea245b61_remove_show_native_filters.py | 3 +- ...b5b83_invert_horizontal_bar_chart_order.py | 3 +- ...24_b5ea9d343307_bar_chart_stack_options.py | 3 +- ..._12-30_7e67aecbf3f1_chart_ds_constraint.py | 2 +- ...1ddfd_convert_key_value_entries_to_json.py | 2 +- ...ea966691069_cross_filter_global_scoping.py | 2 +- ...e_obsolete_druid_nosql_slice_parameters.py | 2 +- ...280_cleanup_erroneous_parent_filter_ids.py | 2 +- ...54_ee179a490af9_deckgl_path_width_units.py | 2 +- ...e8_add_percent_calculation_type_funnel_.py | 3 +- ...1b217cd8cd_big_number_kpi_single_metric.py | 3 +- ..._update_charts_with_old_time_comparison.py | 2 +- superset/models/core.py | 7 +- superset/models/dashboard.py | 5 +- superset/models/helpers.py | 6 +- superset/models/slice.py | 5 +- superset/models/sql_lab.py | 2 +- superset/queries/saved_queries/api.py | 2 +- superset/reports/notifications/email.py | 2 +- superset/reports/notifications/slack.py | 2 +- superset/result_set.py | 5 +- superset/security/manager.py | 2 +- superset/sql_lab.py | 10 +-- superset/sqllab/api.py | 10 +-- .../sqllab/execution_context_convertor.py | 10 +-- superset/sqllab/sqllab_execution_context.py | 3 +- superset/tasks/cache.py | 2 +- superset/utils/csv.py | 4 +- .../dashboard_filter_scopes_converter.py | 2 +- superset/utils/hashing.py | 2 +- superset/utils/json.py | 65 +++++++++++--- superset/utils/lock.py | 2 +- superset/utils/log.py | 2 +- superset/utils/mock_data.py | 2 +- superset/utils/schema.py | 7 +- superset/views/api.py | 7 +- superset/views/base.py | 26 +++--- superset/views/chart/views.py | 6 +- superset/views/core.py | 19 ++-- superset/views/dashboard/views.py | 6 +- superset/views/datasource/views.py | 2 +- superset/views/key_value.py | 3 +- superset/views/sql_lab/views.py | 5 +- superset/views/sqllab.py | 2 +- superset/views/tags.py | 6 +- superset/views/utils.py | 2 +- superset/viz.py | 11 ++- .../advanced_data_type/api_tests.py | 2 +- .../annotation_layers/api_tests.py | 3 +- .../async_events/api_tests.py | 2 +- .../available_domains/api_tests.py | 3 +- tests/integration_tests/base_api_tests.py | 2 +- tests/integration_tests/base_tests.py | 2 +- tests/integration_tests/cache_tests.py | 3 +- tests/integration_tests/charts/api_tests.py | 2 +- .../charts/commands_tests.py | 2 +- .../charts/data/api_tests.py | 2 +- tests/integration_tests/commands_test.py | 2 +- tests/integration_tests/core_tests.py | 7 +- .../css_templates/api_tests.py | 2 +- tests/integration_tests/dashboard_utils.py | 2 +- .../integration_tests/dashboards/api_tests.py | 2 +- .../dashboards/commands_tests.py | 2 +- .../integration_tests/dashboards/dao_tests.py | 2 +- .../dashboards/filter_state/api_tests.py | 2 +- .../security/security_dataset_tests.py | 3 +- .../security/security_rbac_tests.py | 2 +- .../integration_tests/databases/api_tests.py | 10 +-- .../databases/commands/upload_test.py | 3 +- tests/integration_tests/datasets/api_tests.py | 2 +- .../integration_tests/datasource/api_tests.py | 2 +- tests/integration_tests/datasource_tests.py | 2 +- .../dict_import_export_tests.py | 2 +- tests/integration_tests/explore/api_tests.py | 2 +- .../explore/form_data/api_tests.py | 2 +- .../explore/form_data/commands_tests.py | 2 +- .../explore/permalink/api_tests.py | 2 +- .../fixtures/tabbed_dashboard.py | 2 +- .../fixtures/world_bank_dashboard.py | 2 +- .../integration_tests/import_export_tests.py | 2 +- .../key_value/commands/create_test.py | 2 +- .../key_value/commands/delete_test.py | 2 +- .../key_value/commands/fixtures.py | 2 +- .../key_value/commands/get_test.py | 2 +- .../key_value/commands/update_test.py | 2 +- .../key_value/commands/upsert_test.py | 2 +- tests/integration_tests/log_api_tests.py | 2 +- ...7e67aecbf3f1_chart_ds_constraint__tests.py | 3 +- ...rm_time_range_endpoints_from_qc_3__test.py | 3 +- ...78868b6_migrating_legacy_treemap__tests.py | 2 +- .../fb13d49b72f9_better_filters__tests.py | 3 +- tests/integration_tests/model_tests.py | 2 +- tests/integration_tests/queries/api_tests.py | 2 +- .../queries/saved_queries/api_tests.py | 2 +- tests/integration_tests/reports/api_tests.py | 2 +- .../reports/commands_tests.py | 2 +- tests/integration_tests/reports/utils.py | 2 +- tests/integration_tests/security/api_tests.py | 3 +- .../security/guest_token_security_tests.py | 2 +- .../security/row_level_security_tests.py | 2 +- tests/integration_tests/security_tests.py | 2 +- tests/integration_tests/sql_lab/api_tests.py | 3 +- tests/integration_tests/sqllab_tests.py | 2 +- tests/integration_tests/tags/api_tests.py | 2 +- tests/integration_tests/thumbnails_tests.py | 2 +- tests/integration_tests/users/api_tests.py | 3 +- tests/integration_tests/utils/__init__.py | 3 +- tests/integration_tests/utils_tests.py | 79 ++++++++--------- .../commands/importers/v1/utils_test.py | 3 +- tests/unit_tests/databases/api_test.py | 2 +- .../commands/importers/v1/import_test.py | 2 +- .../datasets/commands/export_test.py | 3 +- .../commands/importers/v1/import_test.py | 2 +- .../db_engine_specs/test_bigquery.py | 2 +- .../db_engine_specs/test_databricks.py | 2 +- .../unit_tests/db_engine_specs/test_duckdb.py | 2 +- .../db_engine_specs/test_gsheets.py | 2 +- .../db_engine_specs/test_snowflake.py | 2 +- .../unit_tests/db_engine_specs/test_trino.py | 2 +- tests/unit_tests/importexport/api_test.py | 2 +- tests/unit_tests/jinja_context_test.py | 2 +- tests/unit_tests/migrations/viz/utils.py | 2 +- tests/unit_tests/models/core_test.py | 2 +- tests/unit_tests/queries/dao_test.py | 2 +- tests/unit_tests/utils/json_tests.py | 86 +++++++++++++------ 234 files changed, 530 insertions(+), 480 deletions(-) create mode 100644 superset/extensions/pylint.py diff --git a/.pylintrc b/.pylintrc index 5f51e9fcff3ef..e11376fc1053b 100644 --- a/.pylintrc +++ b/.pylintrc @@ -36,7 +36,7 @@ persistent=yes # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. -load-plugins= +load-plugins=superset.extensions.pylint # Use multiple processes to speed up Pylint. jobs=2 diff --git a/superset/annotation_layers/annotations/schemas.py b/superset/annotation_layers/annotations/schemas.py index 516241b9e3b44..6ca96a4a7491d 100644 --- a/superset/annotation_layers/annotations/schemas.py +++ b/superset/annotation_layers/annotations/schemas.py @@ -19,8 +19,7 @@ from marshmallow import fields, Schema, ValidationError from marshmallow.validate import Length -from superset.exceptions import SupersetException -from superset.utils import json as json_utils +from superset.utils import json openapi_spec_methods_override = { "get": {"get": {"summary": "Get an annotation layer"}}, @@ -51,8 +50,8 @@ def validate_json(value: Union[bytes, bytearray, str]) -> None: try: - json_utils.validate_json(value) - except SupersetException as ex: + json.validate_json(value) + except json.JSONDecodeError as ex: raise ValidationError("JSON not valid") from ex diff --git a/superset/async_events/async_query_manager.py b/superset/async_events/async_query_manager.py index 1007176e818f3..84b20d753ce0c 100644 --- a/superset/async_events/async_query_manager.py +++ b/superset/async_events/async_query_manager.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging import uuid from typing import Any, Literal, Optional @@ -23,6 +22,7 @@ import redis from flask import Flask, Request, request, Response, session +from superset.utils import json from superset.utils.core import get_user_id logger = logging.getLogger(__name__) diff --git a/superset/charts/api.py b/superset/charts/api.py index 4034c8ef2740e..d32f1f665ae14 100644 --- a/superset/charts/api.py +++ b/superset/charts/api.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. # pylint: disable=too-many-lines -import json import logging from datetime import datetime from io import BytesIO @@ -81,6 +80,7 @@ from superset.models.slice import Slice from superset.tasks.thumbnails import cache_chart_thumbnail from superset.tasks.utils import get_current_user +from superset.utils import json from superset.utils.screenshots import ChartScreenshot, DEFAULT_CHART_WINDOW_SIZE from superset.utils.urls import get_url_path from superset.views.base_api import ( diff --git a/superset/charts/data/api.py b/superset/charts/data/api.py index e902d5738a65c..932a666738757 100644 --- a/superset/charts/data/api.py +++ b/superset/charts/data/api.py @@ -17,7 +17,6 @@ from __future__ import annotations import contextlib -import json import logging from typing import Any, TYPE_CHECKING @@ -46,7 +45,7 @@ from superset.exceptions import QueryObjectValidationError from superset.extensions import event_logger from superset.models.sql_lab import Query -from superset.utils import json as json_utils +from superset.utils import json from superset.utils.core import ( create_zip, DatasourceType, @@ -129,7 +128,7 @@ def get_data(self, pk: int) -> Response: try: json_body = json.loads(chart.query_context) - except (TypeError, json.decoder.JSONDecodeError): + except (TypeError, json.JSONDecodeError): json_body = None if json_body is None: @@ -171,7 +170,7 @@ def get_data(self, pk: int) -> Response: try: form_data = json.loads(chart.params) - except (TypeError, json.decoder.JSONDecodeError): + except (TypeError, json.JSONDecodeError): form_data = {} return self._get_data_response( @@ -395,9 +394,9 @@ def _process_data(query_data: Any) -> Any: ) if result_format == ChartDataResultFormat.JSON: - response_data = json_utils.dumps( + response_data = json.dumps( {"result": result["queries"]}, - default=json_utils.json_int_dttm_ser, + default=json.json_int_dttm_ser, ignore_nan=True, ) resp = make_response(response_data, 200) diff --git a/superset/commands/chart/export.py b/superset/commands/chart/export.py index dc24a14540465..a84dfcca147db 100644 --- a/superset/commands/chart/export.py +++ b/superset/commands/chart/export.py @@ -16,7 +16,6 @@ # under the License. # isort:skip_file -import json import logging from collections.abc import Iterator from typing import Callable @@ -30,6 +29,7 @@ from superset.models.slice import Slice from superset.utils.dict_import_export import EXPORT_VERSION from superset.utils.file import get_filename +from superset.utils import json logger = logging.getLogger(__name__) @@ -64,7 +64,7 @@ def _file_content(model: Slice) -> str: if payload.get("params"): try: payload["params"] = json.loads(payload["params"]) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: logger.info("Unable to decode `params` field: %s", payload["params"]) payload["version"] = EXPORT_VERSION diff --git a/superset/commands/chart/importers/v1/utils.py b/superset/commands/chart/importers/v1/utils.py index f1b38e7ddc454..39ca49a5d5ffc 100644 --- a/superset/commands/chart/importers/v1/utils.py +++ b/superset/commands/chart/importers/v1/utils.py @@ -16,7 +16,6 @@ # under the License. import copy -import json from inspect import isclass from typing import Any @@ -25,6 +24,7 @@ from superset.migrations.shared.migrate_viz import processors from superset.migrations.shared.migrate_viz.base import MigrateViz from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import AnnotationType, get_user @@ -117,7 +117,7 @@ def migrate_chart(config: dict[str, Any]) -> dict[str, Any]: # also update `query_context` try: query_context = json.loads(output.get("query_context") or "{}") - except (json.decoder.JSONDecodeError, TypeError): + except (json.JSONDecodeError, TypeError): query_context = {} if "form_data" in query_context: query_context["form_data"] = output["params"] diff --git a/superset/commands/chart/warm_up_cache.py b/superset/commands/chart/warm_up_cache.py index 2e5c0ac3a3aed..ea794c2842dd5 100644 --- a/superset/commands/chart/warm_up_cache.py +++ b/superset/commands/chart/warm_up_cache.py @@ -18,7 +18,6 @@ from typing import Any, Optional, Union -import simplejson as json from flask import g from superset.commands.base import BaseCommand @@ -29,6 +28,7 @@ ) from superset.extensions import db from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import error_msg_from_exception from superset.views.utils import get_dashboard_extra_filters, get_form_data, get_viz from superset.viz import viz_types diff --git a/superset/commands/dashboard/export.py b/superset/commands/dashboard/export.py index d6f73696439e4..fe3a6b8eab871 100644 --- a/superset/commands/dashboard/export.py +++ b/superset/commands/dashboard/export.py @@ -16,7 +16,6 @@ # under the License. # isort:skip_file -import json import logging import random import string @@ -36,6 +35,7 @@ from superset.models.slice import Slice from superset.utils.dict_import_export import EXPORT_VERSION from superset.utils.file import get_filename +from superset.utils import json logger = logging.getLogger(__name__) @@ -126,7 +126,7 @@ def _file_content(model: Dashboard) -> str: if value: try: payload[new_name] = json.loads(value) - except (TypeError, json.decoder.JSONDecodeError): + except (TypeError, json.JSONDecodeError): logger.info("Unable to decode `%s` field: %s", key, value) payload[new_name] = {} @@ -176,7 +176,7 @@ def _export( if value: try: payload[new_name] = json.loads(value) - except (TypeError, json.decoder.JSONDecodeError): + except (TypeError, json.JSONDecodeError): logger.info("Unable to decode `%s` field: %s", key, value) payload[new_name] = {} diff --git a/superset/commands/dashboard/importers/v0.py b/superset/commands/dashboard/importers/v0.py index 48dcb230ef9a4..a9ee3e484e1c3 100644 --- a/superset/commands/dashboard/importers/v0.py +++ b/superset/commands/dashboard/importers/v0.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging import time from copy import copy @@ -32,6 +31,7 @@ from superset.migrations.shared.native_filters import migrate_dashboard from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from superset.utils import json from superset.utils.dashboard_filter_scopes_converter import ( convert_filter_scopes, copy_filter_scopes, diff --git a/superset/commands/dashboard/importers/v1/utils.py b/superset/commands/dashboard/importers/v1/utils.py index 09be75a6ea6ab..f10afd12bc9ee 100644 --- a/superset/commands/dashboard/importers/v1/utils.py +++ b/superset/commands/dashboard/importers/v1/utils.py @@ -15,13 +15,13 @@ # specific language governing permissions and limitations # under the License. -import json import logging from typing import Any from superset import db, security_manager from superset.commands.exceptions import ImportFailedError from superset.models.dashboard import Dashboard +from superset.utils import json from superset.utils.core import get_user logger = logging.getLogger(__name__) diff --git a/superset/commands/dashboard/update.py b/superset/commands/dashboard/update.py index d35fb6b28e5dd..890422602dd68 100644 --- a/superset/commands/dashboard/update.py +++ b/superset/commands/dashboard/update.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from typing import Any, Optional @@ -37,6 +36,7 @@ from superset.extensions import db from superset.models.dashboard import Dashboard from superset.tags.models import ObjectType +from superset.utils import json logger = logging.getLogger(__name__) diff --git a/superset/commands/database/export.py b/superset/commands/database/export.py index fefe86adce586..97333a80aaaa1 100644 --- a/superset/commands/database/export.py +++ b/superset/commands/database/export.py @@ -16,7 +16,6 @@ # under the License. # isort:skip_file import functools -import json import logging from typing import Any, Callable from collections.abc import Iterator @@ -30,6 +29,7 @@ from superset.utils.dict_import_export import EXPORT_VERSION from superset.utils.file import get_filename from superset.utils.ssh_tunnel import mask_password_info +from superset.utils import json logger = logging.getLogger(__name__) @@ -37,7 +37,7 @@ def parse_extra(extra_payload: str) -> dict[str, Any]: try: extra = json.loads(extra_payload) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: logger.info("Unable to decode `extra` field: %s", extra_payload) return {} diff --git a/superset/commands/database/importers/v1/utils.py b/superset/commands/database/importers/v1/utils.py index 17b8488b4416d..56d31b03e1998 100644 --- a/superset/commands/database/importers/v1/utils.py +++ b/superset/commands/database/importers/v1/utils.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. -import json from typing import Any from superset import app, db, security_manager @@ -25,6 +24,7 @@ from superset.exceptions import SupersetSecurityException from superset.models.core import Database from superset.security.analytics_db_safety import check_sqlalchemy_uri +from superset.utils import json def import_database( diff --git a/superset/commands/database/validate.py b/superset/commands/database/validate.py index e550f51d70a4b..65df1ed1e149b 100644 --- a/superset/commands/database/validate.py +++ b/superset/commands/database/validate.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from contextlib import closing from typing import Any, Optional @@ -33,6 +32,7 @@ from superset.errors import ErrorLevel, SupersetError, SupersetErrorType from superset.extensions import event_logger from superset.models.core import Database +from superset.utils import json BYPASS_VALIDATION_ENGINES = {"bigquery"} @@ -82,7 +82,7 @@ def run(self) -> None: ) try: encrypted_extra = json.loads(serialized_encrypted_extra) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: encrypted_extra = {} # try to connect diff --git a/superset/commands/dataset/export.py b/superset/commands/dataset/export.py index 9646bffc67c50..70cce0291a0ab 100644 --- a/superset/commands/dataset/export.py +++ b/superset/commands/dataset/export.py @@ -16,7 +16,6 @@ # under the License. # isort:skip_file -import json import logging from collections.abc import Iterator from typing import Callable @@ -31,6 +30,7 @@ from superset.utils.dict_import_export import EXPORT_VERSION from superset.utils.file import get_filename from superset.utils.ssh_tunnel import mask_password_info +from superset.utils import json logger = logging.getLogger(__name__) @@ -63,14 +63,14 @@ def _file_content(model: SqlaTable) -> str: if payload.get(key): try: payload[key] = json.loads(payload[key]) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: logger.info("Unable to decode `%s` field: %s", key, payload[key]) for key in ("metrics", "columns"): for attributes in payload.get(key, []): if attributes.get("extra"): try: attributes["extra"] = json.loads(attributes["extra"]) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: logger.info( "Unable to decode `extra` field: %s", attributes["extra"] ) @@ -108,7 +108,7 @@ def _export( if payload.get("extra"): try: payload["extra"] = json.loads(payload["extra"]) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: logger.info("Unable to decode `extra` field: %s", payload["extra"]) if ssh_tunnel := DatabaseDAO.get_ssh_tunnel(model.database.id): diff --git a/superset/commands/dataset/importers/v0.py b/superset/commands/dataset/importers/v0.py index 6c1d79779e90b..14be54174a9f3 100644 --- a/superset/commands/dataset/importers/v0.py +++ b/superset/commands/dataset/importers/v0.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from typing import Any, Callable, Optional @@ -34,6 +33,7 @@ TableColumn, ) from superset.models.core import Database +from superset.utils import json from superset.utils.dict_import_export import DATABASES_KEY logger = logging.getLogger(__name__) diff --git a/superset/commands/dataset/importers/v1/utils.py b/superset/commands/dataset/importers/v1/utils.py index 0d2226f724277..da39be4721c0c 100644 --- a/superset/commands/dataset/importers/v1/utils.py +++ b/superset/commands/dataset/importers/v1/utils.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import gzip -import json import logging import re from typing import Any @@ -33,6 +32,7 @@ from superset.connectors.sqla.models import SqlaTable from superset.models.core import Database from superset.sql_parse import Table +from superset.utils import json from superset.utils.core import get_user logger = logging.getLogger(__name__) diff --git a/superset/commands/explore/get.py b/superset/commands/explore/get.py index d0d71c1eec496..535ed8ee32be9 100644 --- a/superset/commands/explore/get.py +++ b/superset/commands/explore/get.py @@ -19,7 +19,6 @@ from abc import ABC from typing import Any, cast, Optional -import simplejson as json from flask import request from flask_babel import lazy_gettext as _ from sqlalchemy.exc import SQLAlchemyError @@ -38,7 +37,7 @@ from superset.explore.exceptions import WrongEndpointError from superset.explore.permalink.exceptions import ExplorePermalinkGetFailedError from superset.extensions import security_manager -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.views.utils import ( get_datasource_info, get_form_data, diff --git a/superset/commands/query/export.py b/superset/commands/query/export.py index db3379ab816d5..e63cde5f28a79 100644 --- a/superset/commands/query/export.py +++ b/superset/commands/query/export.py @@ -16,7 +16,6 @@ # under the License. # isort:skip_file -import json import logging from collections.abc import Iterator from typing import Callable @@ -29,6 +28,7 @@ from superset.commands.query.exceptions import SavedQueryNotFoundError from superset.daos.query import SavedQueryDAO from superset.utils.dict_import_export import EXPORT_VERSION +from superset.utils import json logger = logging.getLogger(__name__) @@ -90,7 +90,7 @@ def _export( if "extra" in payload: try: payload["extra"] = json.loads(payload["extra"]) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: logger.info("Unable to decode `extra` field: %s", payload["extra"]) payload["version"] = EXPORT_VERSION diff --git a/superset/commands/report/alert.py b/superset/commands/report/alert.py index 0e5d5401f7001..30861bddaa2d9 100644 --- a/superset/commands/report/alert.py +++ b/superset/commands/report/alert.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json import logging from operator import eq, ge, gt, le, lt, ne from timeit import default_timer @@ -39,6 +38,7 @@ ) from superset.reports.models import ReportSchedule, ReportScheduleValidatorType from superset.tasks.utils import get_executor +from superset.utils import json from superset.utils.core import override_user from superset.utils.retries import retry_call diff --git a/superset/commands/report/create.py b/superset/commands/report/create.py index e73da467d12dc..ed1889e8b3321 100644 --- a/superset/commands/report/create.py +++ b/superset/commands/report/create.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from typing import Any, Optional @@ -40,6 +39,7 @@ ReportScheduleType, ) from superset.reports.types import ReportScheduleExtra +from superset.utils import json logger = logging.getLogger(__name__) diff --git a/superset/commands/report/execute.py b/superset/commands/report/execute.py index d521ac161f612..1540fa70d8096 100644 --- a/superset/commands/report/execute.py +++ b/superset/commands/report/execute.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from datetime import datetime, timedelta from typing import Any, Optional, Union @@ -67,6 +66,7 @@ from superset.reports.notifications.base import NotificationContent from superset.reports.notifications.exceptions import NotificationError from superset.tasks.utils import get_executor +from superset.utils import json from superset.utils.core import HeaderDataType, override_user from superset.utils.csv import get_chart_csv_data, get_chart_dataframe from superset.utils.decorators import logs_context diff --git a/superset/commands/report/update.py b/superset/commands/report/update.py index f5ff0ca1583f5..ad54f44f0618d 100644 --- a/superset/commands/report/update.py +++ b/superset/commands/report/update.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from typing import Any, Optional @@ -37,6 +36,7 @@ from superset.daos.report import ReportScheduleDAO from superset.exceptions import SupersetSecurityException from superset.reports.models import ReportSchedule, ReportScheduleType, ReportState +from superset.utils import json logger = logging.getLogger(__name__) diff --git a/superset/common/query_object.py b/superset/common/query_object.py index 35b1d2974fcd3..209e6f0029d68 100644 --- a/superset/common/query_object.py +++ b/superset/common/query_object.py @@ -17,7 +17,6 @@ # pylint: disable=invalid-name from __future__ import annotations -import json import logging from datetime import datetime from pprint import pformat @@ -36,7 +35,7 @@ ) from superset.sql_parse import sanitize_clause from superset.superset_typing import Column, Metric, OrderBy -from superset.utils import pandas_postprocessing +from superset.utils import json, pandas_postprocessing from superset.utils.core import ( DTTM_ALIAS, find_duplicates, diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index 8c74dfd589fbf..a566079b0fcab 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -19,14 +19,12 @@ import builtins import dataclasses -import json import logging import re from collections import defaultdict from collections.abc import Hashable from dataclasses import dataclass, field from datetime import datetime, timedelta -from json.decoder import JSONDecodeError from typing import Any, Callable, cast import dateutil.parser @@ -118,7 +116,7 @@ QueryObjectDict, ResultSetColumnType, ) -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.backports import StrEnum from superset.utils.core import GenericDataType, MediumText @@ -1051,7 +1049,7 @@ def get_perm(self) -> str | None: def currency_json(self) -> dict[str, str | None] | None: try: return json.loads(self.currency or "{}") or None - except (TypeError, JSONDecodeError) as exc: + except (TypeError, json.JSONDecodeError) as exc: logger.error( "Unable to load currency json: %r. Leaving empty.", exc, exc_info=True ) diff --git a/superset/daos/dashboard.py b/superset/daos/dashboard.py index eef46362e2d9a..55288a11a8841 100644 --- a/superset/daos/dashboard.py +++ b/superset/daos/dashboard.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json import logging from datetime import datetime from typing import Any @@ -38,6 +37,7 @@ from superset.models.dashboard import Dashboard, id_or_slug_filter from superset.models.embedded_dashboard import EmbeddedDashboard from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import get_user_id from superset.utils.dashboard_filter_scopes_converter import copy_filter_scopes diff --git a/superset/daos/report.py b/superset/daos/report.py index b5db391ec4880..4662f325878d6 100644 --- a/superset/daos/report.py +++ b/superset/daos/report.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json import logging from datetime import datetime from typing import Any @@ -34,6 +33,7 @@ ReportScheduleType, ReportState, ) +from superset.utils import json from superset.utils.core import get_user_id logger = logging.getLogger(__name__) diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py index ff6f5f5f48d78..5d3616361f371 100644 --- a/superset/dashboards/api.py +++ b/superset/dashboards/api.py @@ -16,7 +16,6 @@ # under the License. # pylint: disable=too-many-lines import functools -import json import logging from datetime import datetime from io import BytesIO @@ -84,6 +83,7 @@ from superset.models.embedded_dashboard import EmbeddedDashboard from superset.tasks.thumbnails import cache_dashboard_thumbnail from superset.tasks.utils import get_current_user +from superset.utils import json from superset.utils.screenshots import DashboardScreenshot from superset.utils.urls import get_url_path from superset.views.base_api import ( diff --git a/superset/dashboards/schemas.py b/superset/dashboards/schemas.py index 60eb50918e923..33fafcb1d5bdb 100644 --- a/superset/dashboards/schemas.py +++ b/superset/dashboards/schemas.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import re from typing import Any, Union @@ -22,9 +21,8 @@ from marshmallow.validate import Length, ValidationError from superset import security_manager -from superset.exceptions import SupersetException from superset.tags.models import TagType -from superset.utils import json as json_utils +from superset.utils import json get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}} get_export_ids_schema = {"type": "array", "items": {"type": "integer"}} @@ -89,8 +87,8 @@ def validate_json(value: Union[bytes, bytearray, str]) -> None: try: - json_utils.validate_json(value) - except SupersetException as ex: + json.validate_json(value) + except json.JSONDecodeError as ex: raise ValidationError("JSON not valid") from ex @@ -99,7 +97,7 @@ def validate_json_metadata(value: Union[bytes, bytearray, str]) -> None: return try: value_obj = json.loads(value) - except json.decoder.JSONDecodeError as ex: + except json.JSONDecodeError as ex: raise ValidationError("JSON not valid") from ex errors = DashboardJSONMetadataSchema().validate(value_obj, partial=False) if errors: diff --git a/superset/databases/api.py b/superset/databases/api.py index 31db3ceacce85..2c0aff8da03da 100644 --- a/superset/databases/api.py +++ b/superset/databases/api.py @@ -18,7 +18,6 @@ from __future__ import annotations -import json import logging from datetime import datetime, timedelta from io import BytesIO @@ -120,6 +119,7 @@ from superset.models.core import Database from superset.sql_parse import Table from superset.superset_typing import FlaskResponse +from superset.utils import json from superset.utils.core import error_msg_from_exception, parse_js_uri_path_item from superset.utils.oauth2 import decode_oauth2_state from superset.utils.ssh_tunnel import mask_password_info diff --git a/superset/databases/schemas.py b/superset/databases/schemas.py index e6f6eaa12e37a..7dbaf0243a42b 100644 --- a/superset/databases/schemas.py +++ b/superset/databases/schemas.py @@ -20,7 +20,6 @@ from __future__ import annotations import inspect -import json import os from pathlib import Path from typing import Any, TypedDict @@ -53,6 +52,7 @@ from superset.exceptions import CertificateException, SupersetSecurityException from superset.models.core import ConfigurationMethod, Database from superset.security.analytics_db_safety import check_sqlalchemy_uri +from superset.utils import json from superset.utils.core import markdown, parse_ssl_cert database_schemas_query_schema = { @@ -349,7 +349,7 @@ def build_sqlalchemy_uri( serialized_encrypted_extra = data.get("masked_encrypted_extra") or "{}" try: encrypted_extra = json.loads(serialized_encrypted_extra) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: encrypted_extra = {} data["sqlalchemy_uri"] = engine_spec.build_sqlalchemy_uri( diff --git a/superset/datasets/api.py b/superset/datasets/api.py index 0b793392d734c..0f14be1a6d175 100644 --- a/superset/datasets/api.py +++ b/superset/datasets/api.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. # pylint: disable=too-many-lines -import json import logging from datetime import datetime from io import BytesIO @@ -66,6 +65,7 @@ GetOrCreateDatasetSchema, openapi_spec_methods_override, ) +from superset.utils import json from superset.utils.core import parse_boolean_string from superset.views.base import DatasourceFilter from superset.views.base_api import ( diff --git a/superset/datasets/schemas.py b/superset/datasets/schemas.py index 5ce0621675958..54b433d377998 100644 --- a/superset/datasets/schemas.py +++ b/superset/datasets/schemas.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from datetime import datetime from typing import Any @@ -26,6 +25,7 @@ from superset.datasets.models import Dataset from superset.exceptions import SupersetMarshmallowValidationError +from superset.utils import json get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}} get_export_ids_schema = {"type": "array", "items": {"type": "integer"}} diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py index fafea897f1958..6df0dc61aaa61 100644 --- a/superset/db_engine_specs/base.py +++ b/superset/db_engine_specs/base.py @@ -18,7 +18,6 @@ from __future__ import annotations -import json import logging import re import warnings @@ -72,7 +71,7 @@ ResultSetColumnType, SQLAColumnType, ) -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.core import ColumnSpec, GenericDataType from superset.utils.hashing import md5_sha_from_str from superset.utils.network import is_hostname_valid, is_port_open diff --git a/superset/db_engine_specs/bigquery.py b/superset/db_engine_specs/bigquery.py index 4fff5ab3d7fbe..7693e48da22f8 100644 --- a/superset/db_engine_specs/bigquery.py +++ b/superset/db_engine_specs/bigquery.py @@ -18,7 +18,6 @@ from __future__ import annotations import contextlib -import json import re import urllib from datetime import datetime @@ -48,7 +47,7 @@ from superset.exceptions import SupersetException from superset.sql_parse import Table from superset.superset_typing import ResultSetColumnType -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.hashing import md5_sha_from_str try: diff --git a/superset/db_engine_specs/databricks.py b/superset/db_engine_specs/databricks.py index 3f72931626893..d487f682aed6b 100644 --- a/superset/db_engine_specs/databricks.py +++ b/superset/db_engine_specs/databricks.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json from datetime import datetime from typing import Any, TYPE_CHECKING, TypedDict, Union @@ -33,6 +32,7 @@ from superset.db_engine_specs.base import BaseEngineSpec, BasicParametersMixin from superset.db_engine_specs.hive import HiveEngineSpec from superset.errors import ErrorLevel, SupersetError, SupersetErrorType +from superset.utils import json from superset.utils.network import is_hostname_valid, is_port_open if TYPE_CHECKING: diff --git a/superset/db_engine_specs/druid.py b/superset/db_engine_specs/druid.py index 7cd85ec924cf9..9dc366aa5bef4 100644 --- a/superset/db_engine_specs/druid.py +++ b/superset/db_engine_specs/druid.py @@ -17,7 +17,6 @@ from __future__ import annotations -import json import logging from datetime import datetime from typing import Any, TYPE_CHECKING @@ -29,7 +28,7 @@ from superset.db_engine_specs.base import BaseEngineSpec from superset.db_engine_specs.exceptions import SupersetDBAPIConnectionError from superset.exceptions import SupersetException -from superset.utils import core as utils +from superset.utils import core as utils, json if TYPE_CHECKING: from superset.connectors.sqla.models import TableColumn diff --git a/superset/db_engine_specs/gsheets.py b/superset/db_engine_specs/gsheets.py index 7606e93b5009f..e876aca8defdf 100644 --- a/superset/db_engine_specs/gsheets.py +++ b/superset/db_engine_specs/gsheets.py @@ -18,7 +18,6 @@ from __future__ import annotations import contextlib -import json import logging import re from re import Pattern @@ -43,6 +42,7 @@ from superset.db_engine_specs.shillelagh import ShillelaghEngineSpec from superset.errors import ErrorLevel, SupersetError, SupersetErrorType from superset.exceptions import SupersetException +from superset.utils import json if TYPE_CHECKING: from superset.models.core import Database diff --git a/superset/db_engine_specs/postgres.py b/superset/db_engine_specs/postgres.py index bba2157e0ae31..015d5c52f240c 100644 --- a/superset/db_engine_specs/postgres.py +++ b/superset/db_engine_specs/postgres.py @@ -17,7 +17,6 @@ from __future__ import annotations -import json import logging import re from datetime import datetime @@ -37,7 +36,7 @@ from superset.exceptions import SupersetException, SupersetSecurityException from superset.models.sql_lab import Query from superset.sql_parse import SQLScript -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.core import GenericDataType if TYPE_CHECKING: diff --git a/superset/db_engine_specs/presto.py b/superset/db_engine_specs/presto.py index 4f3b82af6007c..5e0b433e1e11f 100644 --- a/superset/db_engine_specs/presto.py +++ b/superset/db_engine_specs/presto.py @@ -30,7 +30,6 @@ from urllib import parse import pandas as pd -import simplejson as json from flask import current_app from flask_babel import gettext as __, lazy_gettext as _ from packaging.version import Version @@ -60,7 +59,7 @@ ) from superset.result_set import destringify from superset.superset_typing import ResultSetColumnType -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.core import GenericDataType if TYPE_CHECKING: diff --git a/superset/db_engine_specs/snowflake.py b/superset/db_engine_specs/snowflake.py index 137cc4e00ee06..3d394385ee376 100644 --- a/superset/db_engine_specs/snowflake.py +++ b/superset/db_engine_specs/snowflake.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging import re from datetime import datetime @@ -39,6 +38,7 @@ from superset.db_engine_specs.postgres import PostgresBaseEngineSpec from superset.errors import ErrorLevel, SupersetError, SupersetErrorType from superset.models.sql_lab import Query +from superset.utils import json if TYPE_CHECKING: from superset.models.core import Database diff --git a/superset/db_engine_specs/trino.py b/superset/db_engine_specs/trino.py index 08a38894e6645..eea00877d9fe9 100644 --- a/superset/db_engine_specs/trino.py +++ b/superset/db_engine_specs/trino.py @@ -22,7 +22,6 @@ import time from typing import Any, TYPE_CHECKING -import simplejson as json from flask import current_app from sqlalchemy.engine.reflection import Inspector from sqlalchemy.engine.url import URL @@ -42,7 +41,7 @@ from superset.models.sql_lab import Query from superset.sql_parse import Table from superset.superset_typing import ResultSetColumnType -from superset.utils import core as utils +from superset.utils import core as utils, json if TYPE_CHECKING: from superset.models.core import Database diff --git a/superset/embedded/view.py b/superset/embedded/view.py index a260e33b5e553..05490726f3119 100644 --- a/superset/embedded/view.py +++ b/superset/embedded/view.py @@ -24,7 +24,7 @@ from superset import event_logger, is_feature_enabled from superset.daos.dashboard import EmbeddedDashboardDAO from superset.superset_typing import FlaskResponse -from superset.utils import json as json_utils +from superset.utils import json from superset.views.base import BaseSupersetView, common_bootstrap_payload @@ -86,7 +86,7 @@ def embedded( return self.render_template( "superset/spa.html", entry="embedded", - bootstrap_data=json_utils.dumps( - bootstrap_data, default=json_utils.pessimistic_json_iso_dttm_ser + bootstrap_data=json.dumps( + bootstrap_data, default=json.pessimistic_json_iso_dttm_ser ), ) diff --git a/superset/examples/bart_lines.py b/superset/examples/bart_lines.py index efbb83020156b..8b3b315226528 100644 --- a/superset/examples/bart_lines.py +++ b/superset/examples/bart_lines.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import pandas as pd import polyline @@ -22,6 +21,7 @@ from superset import db from superset.sql_parse import Table +from superset.utils import json from ..utils.database import get_example_database from .helpers import get_example_url, get_table_connector_registry diff --git a/superset/examples/birth_names.py b/superset/examples/birth_names.py index 7b7928c53210e..229734057ceb9 100644 --- a/superset/examples/birth_names.py +++ b/superset/examples/birth_names.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import textwrap from typing import Union @@ -28,6 +27,7 @@ from superset.models.dashboard import Dashboard from superset.models.slice import Slice from superset.sql_parse import Table +from superset.utils import json from superset.utils.core import DatasourceType from ..utils.database import get_example_database diff --git a/superset/examples/deck.py b/superset/examples/deck.py index 326977054e87a..b0cb65b03fc2a 100644 --- a/superset/examples/deck.py +++ b/superset/examples/deck.py @@ -14,11 +14,11 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from superset import db from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import DatasourceType from .helpers import ( diff --git a/superset/examples/helpers.py b/superset/examples/helpers.py index 76310b404636c..b865e2dfca935 100644 --- a/superset/examples/helpers.py +++ b/superset/examples/helpers.py @@ -16,13 +16,13 @@ # under the License. """Loads datasets, dashboards and slices in a new superset instance""" -import json import os from typing import Any from superset import app, db from superset.connectors.sqla.models import SqlaTable from superset.models.slice import Slice +from superset.utils import json BASE_URL = "https://github.com/apache-superset/examples-data/blob/master/" diff --git a/superset/examples/misc_dashboard.py b/superset/examples/misc_dashboard.py index aa8d03749550a..825dc6352c8e3 100644 --- a/superset/examples/misc_dashboard.py +++ b/superset/examples/misc_dashboard.py @@ -14,11 +14,11 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import textwrap from superset import db from superset.models.dashboard import Dashboard +from superset.utils import json from .helpers import update_slice_ids diff --git a/superset/examples/paris.py b/superset/examples/paris.py index 1cd6c84d92d1d..990aa01ca6c30 100644 --- a/superset/examples/paris.py +++ b/superset/examples/paris.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import pandas as pd from sqlalchemy import inspect, String, Text @@ -22,6 +21,7 @@ import superset.utils.database as database_utils from superset import db from superset.sql_parse import Table +from superset.utils import json from .helpers import get_example_url, get_table_connector_registry diff --git a/superset/examples/sf_population_polygons.py b/superset/examples/sf_population_polygons.py index d4754887c72fa..4fa59db721a69 100644 --- a/superset/examples/sf_population_polygons.py +++ b/superset/examples/sf_population_polygons.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import pandas as pd from sqlalchemy import BigInteger, Float, inspect, Text @@ -22,6 +21,7 @@ import superset.utils.database as database_utils from superset import db from superset.sql_parse import Table +from superset.utils import json from .helpers import get_example_url, get_table_connector_registry diff --git a/superset/examples/supported_charts_dashboard.py b/superset/examples/supported_charts_dashboard.py index ae0962fc17245..49141eb73cf62 100644 --- a/superset/examples/supported_charts_dashboard.py +++ b/superset/examples/supported_charts_dashboard.py @@ -17,7 +17,6 @@ # pylint: disable=too-many-lines -import json import textwrap from sqlalchemy import inspect @@ -27,6 +26,7 @@ from superset.models.dashboard import Dashboard from superset.models.slice import Slice from superset.sql_parse import Table +from superset.utils import json from superset.utils.core import DatasourceType from ..utils.database import get_example_database diff --git a/superset/examples/tabbed_dashboard.py b/superset/examples/tabbed_dashboard.py index cc735ec4ecf69..bbc11e77306ae 100644 --- a/superset/examples/tabbed_dashboard.py +++ b/superset/examples/tabbed_dashboard.py @@ -16,11 +16,11 @@ # under the License. """Loads datasets, dashboards and slices in a new superset instance""" -import json import textwrap from superset import db from superset.models.dashboard import Dashboard +from superset.utils import json from .helpers import update_slice_ids diff --git a/superset/examples/world_bank.py b/superset/examples/world_bank.py index 7b6b3749213ca..afbb6a994a831 100644 --- a/superset/examples/world_bank.py +++ b/superset/examples/world_bank.py @@ -16,7 +16,6 @@ # under the License. """Loads datasets, dashboards and slices in a new superset instance""" -import json import os import pandas as pd @@ -38,7 +37,7 @@ from superset.models.dashboard import Dashboard from superset.models.slice import Slice from superset.sql_parse import Table -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.core import DatasourceType diff --git a/superset/extensions/pylint.py b/superset/extensions/pylint.py new file mode 100644 index 0000000000000..1cf9821f44606 --- /dev/null +++ b/superset/extensions/pylint.py @@ -0,0 +1,60 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import os + +from astroid import nodes +from pylint.checkers import BaseChecker +from pylint.lint import PyLinter + + +class JSONLibraryImportChecker(BaseChecker): + name = "json-library-import-checker" + priority = -1 + msgs = { + "C9999": ( + "Disallowed json import used, use superset.utils.json instead", + "disallowed-import", + "Used when a disallowed import is used in a specific file.", + ), + } + exclude_files = [ + "setup.py", + "superset/utils/json.py", + "superset/config.py", + "superset/cli/update.py", + "superset/key_value/types.py", + "superset/translations/utils.py", + "superset/extensions/__init__.py", + ] + path_strip_prefix = os.getcwd() + os.sep + + def visit_import(self, node: nodes.Import) -> None: + file = (node.root().file).replace(self.path_strip_prefix, "", 1) + if file not in self.exclude_files: + for module_name, _ in node.names: + if module_name in ["json", "simplejson"]: + self.add_message("disallowed-import", node=node) + + def visit_importfrom(self, node: nodes.ImportFrom) -> None: + file = (node.root().file).replace(self.path_strip_prefix, "", 1) + if file not in self.exclude_files: + if node.modname in ["json", "simplejson"]: + self.add_message("disallowed-import", node=node) + + +def register(linter: PyLinter) -> None: + linter.register_checker(JSONLibraryImportChecker(linter)) diff --git a/superset/forms.py b/superset/forms.py index a808da74b21ec..59f2826953a39 100644 --- a/superset/forms.py +++ b/superset/forms.py @@ -16,12 +16,13 @@ # under the License. """Contains the logic to create cohesive forms on the explore view""" -import json from typing import Any, Optional from flask_appbuilder.fieldwidgets import BS3TextFieldWidget from wtforms import Field +from superset.utils import json + class JsonListField(Field): widget = BS3TextFieldWidget() diff --git a/superset/importexport/api.py b/superset/importexport/api.py index fe170d2593a0c..0d3906b1a1361 100644 --- a/superset/importexport/api.py +++ b/superset/importexport/api.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from datetime import datetime from io import BytesIO from zipfile import is_zipfile, ZipFile @@ -30,6 +29,7 @@ from superset.commands.importers.v1.assets import ImportAssetsCommand from superset.commands.importers.v1.utils import get_contents_from_bundle from superset.extensions import event_logger +from superset.utils import json from superset.views.base_api import BaseSupersetApi, requires_form_data, statsd_metrics diff --git a/superset/jinja_context.py b/superset/jinja_context.py index 4a036d76963db..8d59eade155b8 100644 --- a/superset/jinja_context.py +++ b/superset/jinja_context.py @@ -16,7 +16,6 @@ # under the License. """Defines the templating context for SQL Lab""" -import json import re from datetime import datetime from functools import lru_cache, partial @@ -35,6 +34,7 @@ from superset.constants import LRU_CACHE_MAX_SIZE from superset.exceptions import SupersetTemplateException from superset.extensions import feature_flag_manager +from superset.utils import json from superset.utils.core import ( convert_legacy_filters_into_adhoc, get_user_email, diff --git a/superset/migrations/shared/migrate_viz/base.py b/superset/migrations/shared/migrate_viz/base.py index 83d27cdd4ba91..1be039165920e 100644 --- a/superset/migrations/shared/migrate_viz/base.py +++ b/superset/migrations/shared/migrate_viz/base.py @@ -17,7 +17,6 @@ from __future__ import annotations import copy -import json from typing import Any from sqlalchemy import and_, Column, Integer, String, Text @@ -27,6 +26,7 @@ from superset import conf from superset.constants import TimeGrain from superset.migrations.shared.utils import paginated_update, try_load_json +from superset.utils import json Base = declarative_base() diff --git a/superset/migrations/shared/native_filters.py b/superset/migrations/shared/native_filters.py index 05b9f4033fabc..6e04928fabc2b 100644 --- a/superset/migrations/shared/native_filters.py +++ b/superset/migrations/shared/native_filters.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from collections import defaultdict from textwrap import dedent from typing import Any @@ -23,6 +22,7 @@ from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from superset.utils import json from superset.utils.dashboard_filter_scopes_converter import convert_filter_scopes diff --git a/superset/migrations/shared/utils.py b/superset/migrations/shared/utils.py index 208d839bc183d..17e5b4128e46b 100644 --- a/superset/migrations/shared/utils.py +++ b/superset/migrations/shared/utils.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging import os import time @@ -29,6 +28,8 @@ from sqlalchemy.exc import NoSuchTableError from sqlalchemy.orm import Query, Session +from superset.utils import json + logger = logging.getLogger(__name__) DEFAULT_BATCH_SIZE = int(os.environ.get("BATCH_SIZE", 1000)) @@ -164,6 +165,6 @@ def paginated_update( def try_load_json(data: Optional[str]) -> dict[str, Any]: try: return data and json.loads(data) or {} - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: print(f"Failed to parse: {data}") return {} diff --git a/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py b/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py index 4eff93991ca6a..6de97648fa675 100644 --- a/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py +++ b/superset/migrations/versions/2017-01-24_12-31_db0c65b146bd_update_slice_model_json.py @@ -26,13 +26,12 @@ revision = "db0c65b146bd" down_revision = "f18570e03440" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py b/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py index 5df9a627399b6..00182f5eebfe4 100644 --- a/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py +++ b/superset/migrations/versions/2017-02-08_14-16_a99f2f7c195a_rewriting_url_from_shortner_with_new_.py @@ -26,7 +26,6 @@ revision = "a99f2f7c195a" down_revision = "db0c65b146bd" -import json # noqa: E402 from urllib import parse # noqa: E402 import sqlalchemy as sa # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py b/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py index df5c115372d4a..ec2fc2009e853 100644 --- a/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py +++ b/superset/migrations/versions/2017-12-08_08-19_67a6ac9b727b_update_spatial_params.py @@ -22,13 +22,12 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, String, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "67a6ac9b727b" diff --git a/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py b/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py index 9c28d6cc2384c..7cf379c468efb 100644 --- a/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py +++ b/superset/migrations/versions/2017-12-17_11-06_21e88bc06c02_annotation_migration.py @@ -22,13 +22,12 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, or_, String, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "21e88bc06c02" diff --git a/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py b/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py index 3a4a7634eb867..e97bfea6391c7 100644 --- a/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py +++ b/superset/migrations/versions/2018-02-13_08-07_e866bd2d4976_smaller_grid.py @@ -21,13 +21,12 @@ Create Date: 2018-02-13 08:07:40.766277 """ -import json - import sqlalchemy as sa from alembic import op from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json revision = "e866bd2d4976" down_revision = "21e88bc06c02" diff --git a/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py b/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py index 9c660b651a69a..30cb7e4bb220e 100644 --- a/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py +++ b/superset/migrations/versions/2018-04-10_11-19_bf706ae5eb46_cal_heatmap_metric_to_metrics.py @@ -22,13 +22,12 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, String, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json Base = declarative_base() diff --git a/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py b/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py index b0f00e219aec6..36ad22526d27e 100644 --- a/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py +++ b/superset/migrations/versions/2018-06-04_11-12_c5756bec8b47_time_grain_sqla.py @@ -26,13 +26,12 @@ revision = "c5756bec8b47" down_revision = "e502db2af7be" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py b/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py index ab11a2cf6c424..c9ea7b9b349ee 100644 --- a/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py +++ b/superset/migrations/versions/2018-06-07_09-52_afb7730f6a9c_remove_empty_filters.py @@ -26,13 +26,12 @@ revision = "afb7730f6a9c" down_revision = "c5756bec8b47" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py b/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py index 7f51ac06a567d..1786ae37e60fe 100644 --- a/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py +++ b/superset/migrations/versions/2018-06-13_10-20_4451805bbaa1_remove_double_percents.py @@ -27,8 +27,6 @@ down_revision = "bddc498dd179" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import ( # noqa: E402 Column, @@ -41,6 +39,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py b/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py index e3b891d29cca9..8ebcc104e8aa1 100644 --- a/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py +++ b/superset/migrations/versions/2018-06-13_14-54_bddc498dd179_adhoc_filters.py @@ -27,13 +27,12 @@ down_revision = "80a67c5192fa" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 from superset.utils.core import ( # noqa: E402 convert_legacy_filters_into_adhoc, split_adhoc_filters_into_base_filters, diff --git a/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py b/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py index d25a37cbaccf2..302dda2a51e6b 100644 --- a/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py +++ b/superset/migrations/versions/2018-06-14_14-31_80a67c5192fa_single_pie_chart_metric.py @@ -27,13 +27,12 @@ down_revision = "afb7730f6a9c" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py b/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py index 79fbce331f697..685c45c631319 100644 --- a/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py +++ b/superset/migrations/versions/2018-07-05_15-19_3dda56f1c4c6_migrate_num_period_compare_and_period_.py @@ -25,7 +25,6 @@ # revision identifiers, used by Alembic. import datetime -import json import isodate from alembic import op @@ -33,6 +32,7 @@ from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json from superset.utils.date_parser import parse_human_timedelta revision = "3dda56f1c4c6" diff --git a/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py b/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py index f5af630a89997..b57f4f3e9f172 100644 --- a/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py +++ b/superset/migrations/versions/2018-07-22_11-59_bebcf3fed1fe_convert_dashboard_v1_positions.py @@ -24,7 +24,6 @@ # revision identifiers, used by Alembic. import collections -import json import sys import uuid from functools import reduce @@ -35,6 +34,7 @@ from sqlalchemy.orm import relationship from superset import db +from superset.utils import json revision = "bebcf3fed1fe" down_revision = "fc480c87706c" diff --git a/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py b/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py index 111cea4506bf5..6f5220197d541 100644 --- a/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py +++ b/superset/migrations/versions/2018-08-01_11-47_7fcdcde0761c_.py @@ -23,7 +23,6 @@ """ # revision identifiers, used by Alembic. -import json import re import sqlalchemy as sa @@ -31,6 +30,7 @@ from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json revision = "7fcdcde0761c" down_revision = "c18bd4186f15" diff --git a/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py b/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py index 74b276e2760bb..d1f68979cc465 100644 --- a/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py +++ b/superset/migrations/versions/2018-11-12_13-31_4ce8df208545_migrate_time_range_for_default_filters.py @@ -23,13 +23,12 @@ """ # revision identifiers, used by Alembic. -import json - from alembic import op from sqlalchemy import Column, Integer, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json revision = "4ce8df208545" down_revision = "55e910a74826" diff --git a/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py b/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py index 7b6676d5536c8..c2af161f73c62 100644 --- a/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py +++ b/superset/migrations/versions/2018-12-11_22-03_fb13d49b72f9_better_filters.py @@ -22,7 +22,6 @@ """ -import json import logging from alembic import op @@ -30,6 +29,7 @@ from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "fb13d49b72f9" diff --git a/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py b/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py index 61cb3c62ffc71..b78af79e34634 100644 --- a/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py +++ b/superset/migrations/versions/2019-04-09_16-27_80aa3f04bc82_add_parent_ids_in_dashboard_layout.py @@ -22,7 +22,6 @@ """ -import json import logging from alembic import op @@ -30,6 +29,7 @@ from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "80aa3f04bc82" diff --git a/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py b/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py index ea45104ee7a05..7ca0d5eacb8dd 100644 --- a/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py +++ b/superset/migrations/versions/2019-06-28_13-17_ab8c66efdd01_resample.py @@ -26,7 +26,6 @@ revision = "ab8c66efdd01" down_revision = "d7c1a0d6f2da" -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py b/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py index 40f7bf8f3b11f..a1b0fca3df6eb 100644 --- a/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py +++ b/superset/migrations/versions/2019-10-10_13-52_1495eb914ad3_time_range.py @@ -22,7 +22,6 @@ """ -import json import logging from alembic import op @@ -31,6 +30,7 @@ from superset import db from superset.legacy import update_time_range +from superset.utils import json # revision identifiers, used by Alembic. revision = "1495eb914ad3" diff --git a/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py b/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py index a9f013f4089c2..a969bc9ba15b6 100644 --- a/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py +++ b/superset/migrations/versions/2019-11-06_15-23_78ee127d0d1d_reconvert_legacy_filters_into_adhoc.py @@ -27,7 +27,6 @@ down_revision = "c2acd2cf3df2" import copy # noqa: E402 -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -35,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 from superset.utils.core import ( # noqa: E402 convert_legacy_filters_into_adhoc, ) diff --git a/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py b/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py index f925b54b26888..f37aa3e87200e 100644 --- a/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py +++ b/superset/migrations/versions/2020-02-07_14-13_3325d4caccc8_dashboard_scoped_filters.py @@ -23,7 +23,6 @@ """ # revision identifiers, used by Alembic. -import json import logging from alembic import op @@ -32,6 +31,7 @@ from sqlalchemy.orm import relationship from superset import db +from superset.utils import json from superset.utils.dashboard_filter_scopes_converter import convert_filter_scopes revision = "3325d4caccc8" diff --git a/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py b/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py index fd1469a6dfc11..f85cf5db9c1fb 100644 --- a/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py +++ b/superset/migrations/versions/2020-03-25_10-42_f9a30386bd74_cleanup_time_grainularity.py @@ -26,13 +26,12 @@ revision = "f9a30386bd74" down_revision = "b5998378c225" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py b/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py index 3492d77dd18aa..2f9e7cc56614f 100644 --- a/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py +++ b/superset/migrations/versions/2020-04-29_09-24_620241d1153f_update_time_grain_sqla.py @@ -26,14 +26,13 @@ revision = "620241d1153f" down_revision = "f9a30386bd74" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, ForeignKey, Integer, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db, db_engine_specs # noqa: E402 from superset.databases.utils import make_url_safe # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py b/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py index c59abc8d46bcc..404d8b3511c82 100644 --- a/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py +++ b/superset/migrations/versions/2020-08-12_00-24_978245563a02_migrate_iframe_to_dash_markdown.py @@ -22,7 +22,6 @@ """ -import json import logging import uuid from collections import defaultdict @@ -33,6 +32,7 @@ from sqlalchemy.orm import relationship from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "978245563a02" diff --git a/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py b/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py index e92c1f0650f3a..57c9917ce46e5 100644 --- a/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py +++ b/superset/migrations/versions/2020-09-28_17-57_b56500de1855_add_uuid_column_to_import_mixin.py @@ -22,9 +22,7 @@ """ -import json import os -from json.decoder import JSONDecodeError from uuid import uuid4 import sqlalchemy as sa @@ -35,7 +33,7 @@ from superset import db from superset.migrations.shared.utils import assign_uuids -from superset.utils import core as utils +from superset.utils import core as utils, json # revision identifiers, used by Alembic. revision = "b56500de1855" @@ -81,7 +79,7 @@ class ImportMixin: def update_position_json(dashboard, session, uuid_map): try: layout = json.loads(dashboard.position_json or "{}") - except JSONDecodeError: + except json.JSONDecodeError: layout = {} for object_ in layout.values(): diff --git a/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py b/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py index f56007fd0ddf9..5718458fc7b7a 100644 --- a/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py +++ b/superset/migrations/versions/2021-01-23_16-25_260bf0649a77_migrate_x_dateunit_in_time_range.py @@ -26,7 +26,6 @@ revision = "260bf0649a77" down_revision = "c878781977c6" -import json # noqa: E402 import re # noqa: E402 import sqlalchemy as sa # noqa: E402 @@ -38,6 +37,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 from superset.utils.date_parser import DateRangeMigration # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py b/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py index 133db66497769..cda2a9b41120e 100644 --- a/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py +++ b/superset/migrations/versions/2021-02-04_09-34_070c043f2fdb_add_granularity_to_charts_where_missing.py @@ -26,13 +26,12 @@ revision = "070c043f2fdb" down_revision = "41ce8799acc3" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import and_, Boolean, Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py b/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py index 7e84392b11efa..f5bdaf9725c57 100644 --- a/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py +++ b/superset/migrations/versions/2021-02-10_12-32_41ce8799acc3_rename_pie_label_type.py @@ -26,13 +26,12 @@ revision = "41ce8799acc3" down_revision = "e11ccdd12658" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import and_, Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py b/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py index 862a629c16e0c..5a8dbb934e533 100644 --- a/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py +++ b/superset/migrations/versions/2021-02-14_11-46_1412ec1e5a7b_legacy_force_directed_to_echart.py @@ -22,13 +22,12 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, String, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "1412ec1e5a7b" diff --git a/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py b/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py index d738b0e6d2c02..4610545458c7f 100644 --- a/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py +++ b/superset/migrations/versions/2021-03-24_09-47_989bbe479899_rename_filter_configuration_in_.py @@ -26,13 +26,12 @@ revision = "989bbe479899" down_revision = "67da9ef1ef9c" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py b/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py index adcc04fdaad2e..ceb7c49408aec 100644 --- a/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py +++ b/superset/migrations/versions/2021-04-07_07-21_134cea61c5e7_remove_dataset_health_check_message.py @@ -26,7 +26,6 @@ revision = "134cea61c5e7" down_revision = "301362411006" -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py b/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py index a303d12c860e1..a16caedeb9b02 100644 --- a/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py +++ b/superset/migrations/versions/2021-04-09_16-14_085f06488938_country_map_use_lowercase_country_name.py @@ -22,13 +22,12 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, String, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "085f06488938" diff --git a/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py b/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py index 13cfab0a43336..a7f85e510680c 100644 --- a/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py +++ b/superset/migrations/versions/2021-04-12_12-38_fc3a3a8ff221_migrate_filter_sets_to_new_format.py @@ -26,7 +26,6 @@ revision = "fc3a3a8ff221" down_revision = "085f06488938" -import json # noqa: E402 from collections.abc import Iterable # noqa: E402 from typing import Any # noqa: E402 @@ -35,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py b/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py index 44bbc0c964403..ab60f9d00c1f4 100644 --- a/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py +++ b/superset/migrations/versions/2021-04-29_15-32_f1410ed7ec95_migrate_native_filters_to_new_schema.py @@ -26,7 +26,6 @@ revision = "f1410ed7ec95" down_revision = "d416d0d715cc" -import json # noqa: E402 from collections.abc import Iterable # noqa: E402 from typing import Any # noqa: E402 @@ -35,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py b/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py index 6d8c1a4a1bdde..92f63d2f8eb4a 100644 --- a/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py +++ b/superset/migrations/versions/2021-08-02_16-39_e323605f370a_fix_schemas_allowed_for_csv_upload.py @@ -22,7 +22,6 @@ """ -import json import logging from alembic import op @@ -30,6 +29,7 @@ from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "e323605f370a" @@ -55,7 +55,7 @@ def upgrade(): for database in session.query(Database).all(): try: extra = json.loads(database.extra) - except json.decoder.JSONDecodeError as ex: + except json.JSONDecodeError as ex: logging.warning(str(ex)) continue diff --git a/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py b/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py index 861f163c3c066..f49a37a105159 100644 --- a/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py +++ b/superset/migrations/versions/2021-08-03_15-36_143b6f2815da_migrate_pivot_table_v2_heatmaps_to_new_.py @@ -26,13 +26,12 @@ revision = "143b6f2815da" down_revision = "e323605f370a" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import and_, Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py b/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py index 32b5b1ade5e14..92371482840bf 100644 --- a/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py +++ b/superset/migrations/versions/2021-08-31_11-37_021b81fe4fbb_add_type_to_native_filter_configuration.py @@ -26,7 +26,6 @@ revision = "021b81fe4fbb" down_revision = "07071313dd52" -import json # noqa: E402 import logging # noqa: E402 import sqlalchemy as sa # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py b/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py index 449cf72734e79..537d73c85856b 100644 --- a/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py +++ b/superset/migrations/versions/2021-09-27_11-31_60dc453f4e2e_migrate_timeseries_limit_metric_to_.py @@ -26,13 +26,12 @@ revision = "60dc453f4e2e" down_revision = "3ebe0993c770" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import and_, Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py b/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py index f3cd97ccaa423..aa87f30369ba5 100644 --- a/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py +++ b/superset/migrations/versions/2021-10-12_11-15_32646df09c64_update_time_grain_sqla.py @@ -26,13 +26,12 @@ revision = "32646df09c64" down_revision = "60dc453f4e2e" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py b/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py index 370cf508c4691..d017fac53922b 100644 --- a/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py +++ b/superset/migrations/versions/2021-11-11_04-18_0ca9e5f1dacd_rename_to_schemas_allowed_for_file_.py @@ -26,7 +26,6 @@ revision = "0ca9e5f1dacd" down_revision = "b92d69a6643c" -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() @@ -51,7 +51,7 @@ def upgrade(): for database in session.query(Database).all(): try: extra = json.loads(database.extra) - except json.decoder.JSONDecodeError as ex: + except json.JSONDecodeError as ex: logging.warning(str(ex)) continue @@ -73,7 +73,7 @@ def downgrade(): for database in session.query(Database).all(): try: extra = json.loads(database.extra) - except json.decoder.JSONDecodeError as ex: + except json.JSONDecodeError as ex: logging.warning(str(ex)) continue diff --git a/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py b/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py index 11a46a919e418..f2e8407add4f2 100644 --- a/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py +++ b/superset/migrations/versions/2021-12-13_14-06_fe23025b9441_rename_big_viz_total_form_data_fields.py @@ -26,7 +26,6 @@ revision = "fe23025b9441" down_revision = "3ba29ecbaac5" -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py b/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py index 7740e23da4a6c..f9ee00b7052b5 100644 --- a/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py +++ b/superset/migrations/versions/2021-12-17_16-56_31bb738bd1d2_move_pivot_table_v2_legacy_order_by_to_.py @@ -27,7 +27,6 @@ down_revision = "fe23025b9441" -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -35,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py b/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py index 3c0eb784486ee..9085ea05d300e 100644 --- a/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py +++ b/superset/migrations/versions/2022-03-02_16-41_7293b0ca7944_change_adhoc_filter_b_from_none_to_.py @@ -27,13 +27,12 @@ down_revision = "ab9a9d86e695" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py b/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py index 1b3c95dc3217b..9618dd98ffefd 100644 --- a/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py +++ b/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py @@ -26,7 +26,6 @@ revision = "a9422eeaae74" down_revision = "ad07e4fdbaba" -import json # noqa: E402 import os # noqa: E402 from datetime import datetime # noqa: E402 from typing import Optional, Union # noqa: E402 @@ -50,6 +49,7 @@ from superset.extensions import encrypted_field_factory # noqa: E402 from superset.migrations.shared.utils import assign_uuids # noqa: E402 from superset.sql_parse import extract_table_references, Table # noqa: E402 +from superset.utils import json # noqa: E402 from superset.utils.core import MediumText # noqa: E402 Base = declarative_base() @@ -579,7 +579,7 @@ def print_update_count(): if schema: try: extra_json = json.loads(extra) if extra else {} - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: extra_json = {} extra_json["schema"] = schema updates["extra_json"] = json.dumps(extra_json) @@ -771,7 +771,7 @@ def print_update_count(): ) in session.execute(query): try: extra = json.loads(extra_json) if extra_json else {} - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: extra = {} updated_extra = {**extra} updates = {} diff --git a/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py b/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py index 2d0f01477f3b3..9b9a67f3feb70 100644 --- a/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py +++ b/superset/migrations/versions/2022-04-04_15-04_b0d0249074e4_deprecate_time_range_endpoints_v2.py @@ -22,13 +22,12 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "b0d0249074e4" diff --git a/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py b/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py index 2087bc3e0ff5a..7b8709838429f 100644 --- a/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py +++ b/superset/migrations/versions/2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3.py @@ -26,13 +26,12 @@ revision = "ad07e4fdbaba" down_revision = "cecc6bf46990" -import json # noqa: E402 - import sqlalchemy as sa # noqa: E402 from alembic import op # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() @@ -47,7 +46,7 @@ class Slice(Base): def upgrade_slice(slc: Slice): try: query_context = json.loads(slc.query_context) - except json.decoder.JSONDecodeError: + except json.JSONDecodeError: return query_context.get("form_data", {}).pop("time_range_endpoints", None) diff --git a/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py b/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py index 37b28c0aca340..dc86babffb9b2 100644 --- a/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py +++ b/superset/migrations/versions/2022-08-16_15-23_6d3c6f9d665d_fix_table_chart_conditional_formatting_.py @@ -22,13 +22,12 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, String, Text from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "6d3c6f9d665d" diff --git a/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py b/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py index 86ee15350f0ee..6b4dc27b85cd1 100644 --- a/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py +++ b/superset/migrations/versions/2022-11-28_17-51_4ce1d9b25135_remove_filter_bar_orientation.py @@ -26,13 +26,12 @@ revision = "4ce1d9b25135" down_revision = "deb4c9d4a4ef" -import json # noqa: E402 - import sqlalchemy as sa # noqa: E402 from alembic import op # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py b/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py index 3954a7cb9a5b1..7be7162d2963e 100644 --- a/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py +++ b/superset/migrations/versions/2023-02-28_14-46_c0a3ea245b61_remove_show_native_filters.py @@ -26,13 +26,12 @@ revision = "c0a3ea245b61" down_revision = "9c2a5681ddfd" -import json # noqa: E402 - import sqlalchemy as sa # noqa: E402 from alembic import op # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py b/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py index df97cdb210abe..f060a596dc890 100644 --- a/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py +++ b/superset/migrations/versions/2023-03-05_10-06_d0ac08bb5b83_invert_horizontal_bar_chart_order.py @@ -26,13 +26,12 @@ revision = "d0ac08bb5b83" down_revision = "c0a3ea245b61" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import and_, Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py b/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py index 983384b3ff41d..c5bce59ce65fe 100644 --- a/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py +++ b/superset/migrations/versions/2023-03-17_13-24_b5ea9d343307_bar_chart_stack_options.py @@ -26,13 +26,12 @@ revision = "b5ea9d343307" down_revision = "d0ac08bb5b83" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py b/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py index 7b877d17e213f..4507ea7368d53 100644 --- a/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py +++ b/superset/migrations/versions/2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint.py @@ -26,7 +26,6 @@ revision = "7e67aecbf3f1" down_revision = "07f9a902af1b" -import json # noqa: E402 import logging # noqa: E402 import sqlalchemy as sa # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py b/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py index fd1d728f0dc32..ccc199df5e827 100644 --- a/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py +++ b/superset/migrations/versions/2023-05-01_12-03_9c2a5681ddfd_convert_key_value_entries_to_json.py @@ -27,7 +27,6 @@ down_revision = "f3c2d8ec8595" import io # noqa: E402 -import json # noqa: E402 import pickle # noqa: E402 from alembic import op # noqa: E402 @@ -37,6 +36,7 @@ from superset import db # noqa: E402 from superset.migrations.shared.utils import paginated_update # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() VALUE_MAX_SIZE = 2**24 - 1 diff --git a/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py b/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py index 52128f8fdaf0a..3eb7af7bb9c66 100644 --- a/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py +++ b/superset/migrations/versions/2023-05-11_12-41_4ea966691069_cross_filter_global_scoping.py @@ -27,7 +27,6 @@ down_revision = "7e67aecbf3f1" import copy # noqa: E402 -import json # noqa: E402 import logging # noqa: E402 import sqlalchemy as sa # noqa: E402 @@ -36,6 +35,7 @@ from superset import db # noqa: E402 from superset.migrations.shared.utils import paginated_update # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() logger = logging.getLogger(__name__) diff --git a/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py b/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py index 4104c2a593801..1c6e9c2419f39 100644 --- a/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py +++ b/superset/migrations/versions/2023-07-18_15-30_863adcf72773_delete_obsolete_druid_nosql_slice_parameters.py @@ -26,7 +26,6 @@ revision = "863adcf72773" down_revision = "6d05b0a70c89" -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -34,6 +33,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py b/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py index a41dea497697c..f728e20679214 100644 --- a/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py +++ b/superset/migrations/versions/2023-07-19_16-48_a23c6f8b1280_cleanup_erroneous_parent_filter_ids.py @@ -27,7 +27,6 @@ down_revision = "863adcf72773" -import json # noqa: E402 import logging # noqa: E402 from alembic import op # noqa: E402 @@ -35,6 +34,7 @@ from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py b/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py index 8110c42dc7796..25042dd6826db 100644 --- a/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py +++ b/superset/migrations/versions/2023-07-19_17-54_ee179a490af9_deckgl_path_width_units.py @@ -22,7 +22,6 @@ """ -import json import logging from alembic import op @@ -30,6 +29,7 @@ from sqlalchemy.ext.declarative import declarative_base from superset import db +from superset.utils import json # revision identifiers, used by Alembic. revision = "ee179a490af9" diff --git a/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py b/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py index 5811cb4b3d2ad..7f89235cf2ea3 100644 --- a/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py +++ b/superset/migrations/versions/2023-12-15_17-58_06dd9ff00fe8_add_percent_calculation_type_funnel_.py @@ -22,14 +22,13 @@ """ -import json - from alembic import op from sqlalchemy import Column, Integer, String, Text from sqlalchemy.ext.declarative import declarative_base from superset import db from superset.migrations.shared.utils import paginated_update +from superset.utils import json # revision identifiers, used by Alembic. revision = "06dd9ff00fe8" diff --git a/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py b/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py index 84466b5480464..e09e6fa647f5d 100644 --- a/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py +++ b/superset/migrations/versions/2024-03-01_10-47_be1b217cd8cd_big_number_kpi_single_metric.py @@ -27,14 +27,13 @@ down_revision = "17fcea065655" -import json # noqa: E402 - from alembic import op # noqa: E402 from sqlalchemy import Column, Integer, String, Text # noqa: E402 from sqlalchemy.ext.declarative import declarative_base # noqa: E402 from superset import db # noqa: E402 from superset.migrations.shared.utils import paginated_update # noqa: E402 +from superset.utils import json # noqa: E402 Base = declarative_base() diff --git a/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py b/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py index c349344f566b5..dcdc3f0b44877 100644 --- a/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py +++ b/superset/migrations/versions/2024-05-10_18-02_f84fde59123a_update_charts_with_old_time_comparison.py @@ -22,7 +22,6 @@ """ -import json import logging from copy import deepcopy from datetime import datetime, timedelta @@ -35,6 +34,7 @@ from superset import db from superset.migrations.shared.utils import paginated_update +from superset.utils import json from superset.utils.date_parser import get_since_until # revision identifiers, used by Alembic. diff --git a/superset/models/core.py b/superset/models/core.py index 2d7e57929526d..b933c1694faaf 100755 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -22,7 +22,6 @@ from __future__ import annotations import builtins -import json import logging import textwrap from ast import literal_eval @@ -76,7 +75,7 @@ from superset.result_set import SupersetResultSet from superset.sql_parse import Table from superset.superset_typing import OAuth2ClientConfig, ResultSetColumnType -from superset.utils import cache as cache_util, core as utils, json as json_utils +from superset.utils import cache as cache_util, core as utils, json from superset.utils.backports import StrEnum from superset.utils.core import DatasourceName, get_username from superset.utils.oauth2 import get_oauth2_access_token @@ -601,7 +600,7 @@ def column_needs_conversion(df_series: pd.Series) -> bool: for col, coltype in df.dtypes.to_dict().items(): if coltype == numpy.object_ and column_needs_conversion(df[col]): - df[col] = df[col].apply(json_utils.json_dumps_w_dates) + df[col] = df[col].apply(json.json_dumps_w_dates) return df @property @@ -957,7 +956,7 @@ def get_pk_constraint(self, table: Table) -> dict[str, Any]: def _convert(value: Any) -> Any: try: - return json_utils.base_json_conv(value) + return json.base_json_conv(value) except TypeError: return None diff --git a/superset/models/dashboard.py b/superset/models/dashboard.py index f478583246e21..6e6989bf9e954 100644 --- a/superset/models/dashboard.py +++ b/superset/models/dashboard.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json import logging import uuid from collections import defaultdict @@ -51,7 +50,7 @@ from superset.tasks.thumbnails import cache_dashboard_thumbnail from superset.tasks.utils import get_current_user from superset.thumbnails.digest import get_dashboard_digest -from superset.utils import core as utils, json as json_utils +from superset.utils import core as utils, json metadata = Model.metadata # pylint: disable=no-member config = app.config @@ -372,7 +371,7 @@ def export_dashboards( # pylint: disable=too-many-locals return json.dumps( {"dashboards": copied_dashboards, "datasources": eager_datasources}, - cls=json_utils.DashboardEncoder, + cls=json.DashboardEncoder, indent=4, ) diff --git a/superset/models/helpers.py b/superset/models/helpers.py index 100391086ccd4..dffb285663d47 100644 --- a/superset/models/helpers.py +++ b/superset/models/helpers.py @@ -19,14 +19,12 @@ import builtins import dataclasses -import json import logging import re import uuid from collections import defaultdict from collections.abc import Hashable from datetime import datetime, timedelta -from json.decoder import JSONDecodeError from typing import Any, cast, NamedTuple, Optional, TYPE_CHECKING, Union import dateutil.parser @@ -88,7 +86,7 @@ OrderBy, QueryObjectDict, ) -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.core import ( GenericDataType, get_column_name, @@ -597,7 +595,7 @@ class ExtraJSONMixin: def extra(self) -> dict[str, Any]: try: return json.loads(self.extra_json or "{}") or {} - except (TypeError, JSONDecodeError) as exc: + except (TypeError, json.JSONDecodeError) as exc: logger.error( "Unable to load an extra json: %r. Leaving empty.", exc, exc_info=True ) diff --git a/superset/models/slice.py b/superset/models/slice.py index 2a0734b1071cb..bc89b5b7c4685 100644 --- a/superset/models/slice.py +++ b/superset/models/slice.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json import logging from typing import Any, TYPE_CHECKING from urllib import parse @@ -45,7 +44,7 @@ from superset.tasks.thumbnails import cache_chart_thumbnail from superset.tasks.utils import get_current_user from superset.thumbnails.digest import get_chart_digest -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.viz import BaseViz, viz_types if TYPE_CHECKING: @@ -289,7 +288,7 @@ def get_query_context(self) -> QueryContext | None: return self.get_query_context_factory().create( **json.loads(self.query_context) ) - except json.decoder.JSONDecodeError as ex: + except json.JSONDecodeError as ex: logger.error("Malformed json in slice's query context", exc_info=True) logger.exception(ex) return None diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py index 4e948b58e90e1..3c26c6c12fb81 100644 --- a/superset/models/sql_lab.py +++ b/superset/models/sql_lab.py @@ -24,7 +24,6 @@ from datetime import datetime from typing import Any, Optional, TYPE_CHECKING -import simplejson as json import sqlalchemy as sqla from flask import current_app from flask_appbuilder import Model @@ -59,6 +58,7 @@ ) from superset.sql_parse import CtasMethod, extract_tables_from_jinja_sql, Table from superset.sqllab.limiting_factor import LimitingFactor +from superset.utils import json from superset.utils.core import ( get_column_name, LongText, diff --git a/superset/queries/saved_queries/api.py b/superset/queries/saved_queries/api.py index 57ef2dab14c88..cd7b04193ff86 100644 --- a/superset/queries/saved_queries/api.py +++ b/superset/queries/saved_queries/api.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from datetime import datetime from io import BytesIO @@ -54,6 +53,7 @@ get_export_ids_schema, openapi_spec_methods_override, ) +from superset.utils import json from superset.views.base_api import ( BaseSupersetModelRestApi, requires_form_data, diff --git a/superset/reports/notifications/email.py b/superset/reports/notifications/email.py index b8da60b9092b7..d9ac6dca22a27 100644 --- a/superset/reports/notifications/email.py +++ b/superset/reports/notifications/email.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging import textwrap from dataclasses import dataclass @@ -29,6 +28,7 @@ from superset.reports.models import ReportRecipientType from superset.reports.notifications.base import BaseNotification from superset.reports.notifications.exceptions import NotificationError +from superset.utils import json from superset.utils.core import HeaderDataType, send_email_smtp from superset.utils.decorators import statsd_gauge diff --git a/superset/reports/notifications/slack.py b/superset/reports/notifications/slack.py index a7072ca20c4d5..b70cab4435da2 100644 --- a/superset/reports/notifications/slack.py +++ b/superset/reports/notifications/slack.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from collections.abc import Sequence from io import IOBase @@ -43,6 +42,7 @@ NotificationParamException, NotificationUnprocessableException, ) +from superset.utils import json from superset.utils.core import get_email_address_list from superset.utils.decorators import statsd_gauge from superset.utils.slack import get_slack_client diff --git a/superset/result_set.py b/superset/result_set.py index 38ca9453a59c4..f4303a7f80d4b 100644 --- a/superset/result_set.py +++ b/superset/result_set.py @@ -17,7 +17,6 @@ """Superset wrapper around pyarrow.Table.""" import datetime -import json import logging from typing import Any, Optional @@ -28,7 +27,7 @@ from superset.db_engine_specs import BaseEngineSpec from superset.superset_typing import DbapiDescription, DbapiResult, ResultSetColumnType -from superset.utils import core as utils, json as json_utils +from superset.utils import core as utils, json from superset.utils.core import GenericDataType logger = logging.getLogger(__name__) @@ -61,7 +60,7 @@ def dedup(l: list[str], suffix: str = "__", case_sensitive: bool = True) -> list def stringify(obj: Any) -> str: - return json_utils.dumps(obj, default=json_utils.json_iso_dttm_ser) + return json.dumps(obj, default=json.json_iso_dttm_ser) def stringify_values(array: NDArray[Any]) -> NDArray[Any]: diff --git a/superset/security/manager.py b/superset/security/manager.py index 009fd662fdb33..722ac363a072e 100644 --- a/superset/security/manager.py +++ b/superset/security/manager.py @@ -17,7 +17,6 @@ # pylint: disable=too-many-lines """A set of constants and methods to manage permissions and security""" -import json import logging import re import time @@ -69,6 +68,7 @@ ) from superset.sql_parse import extract_tables_from_jinja_sql, Table from superset.superset_typing import Metric +from superset.utils import json from superset.utils.core import ( DatasourceName, DatasourceType, diff --git a/superset/sql_lab.py b/superset/sql_lab.py index d2e6680fbb82a..0e77c5a902312 100644 --- a/superset/sql_lab.py +++ b/superset/sql_lab.py @@ -58,7 +58,7 @@ ) from superset.sqllab.limiting_factor import LimitingFactor from superset.sqllab.utils import write_ipc_buffer -from superset.utils import json as json_utils +from superset.utils import json from superset.utils.core import ( override_user, QuerySource, @@ -348,13 +348,9 @@ def _serialize_payload( ) -> Union[bytes, str]: logger.debug("Serializing to msgpack: %r", use_msgpack) if use_msgpack: - return msgpack.dumps( - payload, default=json_utils.json_iso_dttm_ser, use_bin_type=True - ) + return msgpack.dumps(payload, default=json.json_iso_dttm_ser, use_bin_type=True) - return json_utils.dumps( - payload, default=json_utils.json_iso_dttm_ser, ignore_nan=True - ) + return json.dumps(payload, default=json.json_iso_dttm_ser, ignore_nan=True) def _serialize_and_expand_data( diff --git a/superset/sqllab/api.py b/superset/sqllab/api.py index df6506a5d2689..cdb331c19bc33 100644 --- a/superset/sqllab/api.py +++ b/superset/sqllab/api.py @@ -61,7 +61,7 @@ from superset.sqllab.utils import bootstrap_sqllab_data from superset.sqllab.validators import CanAccessQueryValidatorImpl from superset.superset_typing import FlaskResponse -from superset.utils import core as utils, json as json_utils +from superset.utils import core as utils, json from superset.views.base import CsvResponse, generate_download_headers, json_success from superset.views.base_api import BaseSupersetApi, requires_json, statsd_metrics @@ -131,9 +131,9 @@ def get(self) -> Response: result = bootstrap_sqllab_data(user_id) return json_success( - json_utils.dumps( + json.dumps( {"result": result}, - default=json_utils.json_iso_dttm_ser, + default=json.json_iso_dttm_ser, ignore_nan=True, ), 200, @@ -342,9 +342,9 @@ def get_results(self, **kwargs: Any) -> FlaskResponse: # Using pessimistic json serialization since some database drivers can return # unserializeable types at times - payload = json_utils.dumps( + payload = json.dumps( result, - default=json_utils.pessimistic_json_iso_dttm_ser, + default=json.pessimistic_json_iso_dttm_ser, ignore_nan=True, ) return json_success(payload, 200) diff --git a/superset/sqllab/execution_context_convertor.py b/superset/sqllab/execution_context_convertor.py index 9453faa152fc2..670f4ed2d5cb7 100644 --- a/superset/sqllab/execution_context_convertor.py +++ b/superset/sqllab/execution_context_convertor.py @@ -21,7 +21,7 @@ from superset.sqllab.command_status import SqlJsonExecutionStatus from superset.sqllab.utils import apply_display_max_row_configuration_if_require -from superset.utils import json as json_utils +from superset.utils import json logger = logging.getLogger(__name__) @@ -50,16 +50,16 @@ def set_payload( def serialize_payload(self) -> str: if self._exc_status == SqlJsonExecutionStatus.HAS_RESULTS: - return json_utils.dumps( + return json.dumps( apply_display_max_row_configuration_if_require( self.payload, self._max_row_in_display_configuration ), - default=json_utils.pessimistic_json_iso_dttm_ser, + default=json.pessimistic_json_iso_dttm_ser, ignore_nan=True, ) - return json_utils.dumps( + return json.dumps( {"query": self.payload}, - default=json_utils.json_int_dttm_ser, + default=json.json_int_dttm_ser, ignore_nan=True, ) diff --git a/superset/sqllab/sqllab_execution_context.py b/superset/sqllab/sqllab_execution_context.py index 7ab4459be3675..f67e2bf5a99a8 100644 --- a/superset/sqllab/sqllab_execution_context.py +++ b/superset/sqllab/sqllab_execution_context.py @@ -17,7 +17,6 @@ from __future__ import annotations import contextlib -import json import logging from dataclasses import dataclass from typing import Any, cast, TYPE_CHECKING @@ -28,7 +27,7 @@ from superset import is_feature_enabled from superset.models.sql_lab import Query from superset.sql_parse import CtasMethod -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.utils.core import apply_max_row_limit, get_user_id from superset.utils.dates import now_as_float from superset.views.utils import get_cta_schema_name diff --git a/superset/tasks/cache.py b/superset/tasks/cache.py index d2757aa22c4a2..d1051c8fcb89f 100644 --- a/superset/tasks/cache.py +++ b/superset/tasks/cache.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from typing import Any, Optional, Union from urllib import request @@ -30,6 +29,7 @@ from superset.models.dashboard import Dashboard from superset.models.slice import Slice from superset.tags.models import Tag, TaggedObject +from superset.utils import json from superset.utils.date_parser import parse_human_datetime from superset.utils.machine_auth import MachineAuthProvider from superset.utils.urls import get_url_path diff --git a/superset/utils/csv.py b/superset/utils/csv.py index 74a33187a582e..08848adde5396 100644 --- a/superset/utils/csv.py +++ b/superset/utils/csv.py @@ -22,8 +22,8 @@ import numpy as np import pandas as pd -import simplejson +from superset.utils import json from superset.utils.core import GenericDataType logger = logging.getLogger(__name__) @@ -107,7 +107,7 @@ def get_chart_dataframe( if content is None: return None - result = simplejson.loads(content.decode("utf-8")) + result = json.loads(content.decode("utf-8")) # need to convert float value to string to show full long number pd.set_option("display.float_format", lambda x: str(x)) df = pd.DataFrame.from_dict(result["result"][0]["data"]) diff --git a/superset/utils/dashboard_filter_scopes_converter.py b/superset/utils/dashboard_filter_scopes_converter.py index 6a3ead7c1449d..f3c09bc83a364 100644 --- a/superset/utils/dashboard_filter_scopes_converter.py +++ b/superset/utils/dashboard_filter_scopes_converter.py @@ -14,12 +14,12 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import logging from collections import defaultdict from typing import Any from superset.models.slice import Slice +from superset.utils import json logger = logging.getLogger(__name__) diff --git a/superset/utils/hashing.py b/superset/utils/hashing.py index 86ed736b08339..86c04657c5897 100644 --- a/superset/utils/hashing.py +++ b/superset/utils/hashing.py @@ -17,7 +17,7 @@ import hashlib from typing import Any, Callable, Optional -import simplejson as json +from superset.utils import json def md5_sha_from_str(val: str) -> str: diff --git a/superset/utils/json.py b/superset/utils/json.py index 9068a84bb306a..e3a530525bd6f 100644 --- a/superset/utils/json.py +++ b/superset/utils/json.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import decimal -import json import logging import uuid from datetime import date, datetime, time, timedelta @@ -25,20 +24,20 @@ import pandas as pd import simplejson from flask_babel.speaklater import LazyString +from simplejson import JSONDecodeError # noqa: F401 # pylint: disable=unused-import -from superset.exceptions import SupersetException from superset.utils.dates import datetime_to_epoch, EPOCH logging.getLogger("MARKDOWN").setLevel(logging.INFO) logger = logging.getLogger(__name__) -class DashboardEncoder(json.JSONEncoder): +class DashboardEncoder(simplejson.JSONEncoder): def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) self.sort_keys = True - def default(self, o: Any) -> Union[dict[Any, Any], str]: + def default(self, o: Any) -> Union[dict[Any, Any], str]: # type: ignore if isinstance(o, uuid.UUID): return str(o) try: @@ -47,7 +46,7 @@ def default(self, o: Any) -> Union[dict[Any, Any], str]: except Exception: # pylint: disable=broad-except if isinstance(o, datetime): return {"__datetime__": o.replace(microsecond=0).isoformat()} - return json.JSONEncoder(sort_keys=True).default(o) + return simplejson.JSONEncoder(sort_keys=True).default(o) def format_timedelta(time_delta: timedelta) -> str: @@ -172,40 +171,82 @@ def validate_json(obj: Union[bytes, bytearray, str]) -> None: :param obj: an object that should be parseable to JSON """ if obj: - try: - json.loads(obj) - except Exception as ex: - logger.error("JSON is not valid %s", str(ex), exc_info=True) - raise SupersetException("JSON is not valid") from ex + loads(obj) -def dumps( +def dumps( # pylint: disable=too-many-arguments obj: Any, default: Optional[Callable[[Any], Any]] = json_iso_dttm_ser, + allow_nan: bool = False, ignore_nan: bool = True, sort_keys: bool = False, + indent: Union[str, int, None] = None, + separators: Union[tuple[str, str], None] = None, + cls: Union[type[simplejson.JSONEncoder], None] = None, ) -> str: """ Dumps object to compatible JSON format :param obj: The serializable object :param default: function that should return a serializable version of obj + :param allow_nan: when set to True NaN values will be serialized :param ignore_nan: when set to True nan values will be ignored :param sort_keys: when set to True keys will be sorted + :param indent: when set elements and object members will be pretty-printed + :param separators: when specified dumps will use (item_separator, key_separator) + :param cls: custom `JSONEncoder` subclass :returns: String object in the JSON compatible form """ results_string = "" try: results_string = simplejson.dumps( - obj, default=default, ignore_nan=ignore_nan, sort_keys=sort_keys + obj, + default=default, + allow_nan=allow_nan, + ignore_nan=ignore_nan, + sort_keys=sort_keys, + indent=indent, + separators=separators, + cls=cls, ) except UnicodeDecodeError: results_string = simplejson.dumps( # type: ignore[call-overload] obj, default=default, + allow_nan=allow_nan, ignore_nan=ignore_nan, sort_keys=sort_keys, + indent=indent, + separators=separators, + cls=cls, encoding=None, ) return results_string + + +def loads( + obj: Union[bytes, bytearray, str], + encoding: Union[str, None] = None, + allow_nan: bool = False, + object_hook: Union[Callable[[dict[Any, Any]], Any], None] = None, +) -> Any: + """ + deserializable instance to a Python object. + + :param obj: The deserializable object + :param encoding: determines the encoding used to interpret the obj + :param allow_nan: if True it will allow the parser to accept nan values + :param object_hook: function that will be called to decode objects values + :returns: A Python object deserialized from string + """ + try: + return simplejson.loads( + obj, + encoding=encoding, + allow_nan=allow_nan, + object_hook=object_hook, + ) + except JSONDecodeError as ex: + logger.error("JSON is not valid %s", str(ex), exc_info=True) + raise ex diff --git a/superset/utils/lock.py b/superset/utils/lock.py index 7a84278f09b76..50bfb6d955dd0 100644 --- a/superset/utils/lock.py +++ b/superset/utils/lock.py @@ -17,7 +17,6 @@ from __future__ import annotations -import json import logging import uuid from collections.abc import Iterator @@ -28,6 +27,7 @@ from superset.exceptions import CreateKeyValueDistributedLockFailedException from superset.key_value.exceptions import KeyValueCreateFailedError from superset.key_value.types import KeyValueResource, PickleKeyValueCodec +from superset.utils import json LOCK_EXPIRATION = timedelta(seconds=30) logger = logging.getLogger(__name__) diff --git a/superset/utils/log.py b/superset/utils/log.py index cdf68437e9c36..4b9ebb50b989b 100644 --- a/superset/utils/log.py +++ b/superset/utils/log.py @@ -18,7 +18,6 @@ import functools import inspect -import json import logging import textwrap from abc import ABC, abstractmethod @@ -32,6 +31,7 @@ from sqlalchemy.exc import SQLAlchemyError from superset.extensions import stats_logger_manager +from superset.utils import json from superset.utils.core import get_user_id, LoggerLevel, to_int if TYPE_CHECKING: diff --git a/superset/utils/mock_data.py b/superset/utils/mock_data.py index 5013d0954cf97..cffa89719d49f 100644 --- a/superset/utils/mock_data.py +++ b/superset/utils/mock_data.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import decimal -import json import logging import os import random @@ -36,6 +35,7 @@ from superset import db from superset.sql_parse import Table +from superset.utils import json logger = logging.getLogger(__name__) diff --git a/superset/utils/schema.py b/superset/utils/schema.py index 7fd83d715b887..8994b87c1d9ce 100644 --- a/superset/utils/schema.py +++ b/superset/utils/schema.py @@ -18,8 +18,7 @@ from marshmallow import validate, ValidationError -from superset.exceptions import SupersetException -from superset.utils import json as json_utils +from superset.utils import json class OneOfCaseInsensitive(validate.OneOf): @@ -49,6 +48,6 @@ def validate_json(value: Union[bytes, bytearray, str]) -> None: :param value: an object that should be parseable to JSON """ try: - json_utils.validate_json(value) - except SupersetException as ex: + json.validate_json(value) + except json.JSONDecodeError as ex: raise ValidationError("JSON not valid") from ex diff --git a/superset/views/api.py b/superset/views/api.py index eef2b72bc73ca..8ef59cb4829a9 100644 --- a/superset/views/api.py +++ b/superset/views/api.py @@ -18,7 +18,6 @@ from typing import Any, TYPE_CHECKING -import simplejson as json from flask import request from flask_appbuilder import expose from flask_appbuilder.api import rison @@ -33,7 +32,7 @@ from superset.legacy import update_time_range from superset.models.slice import Slice from superset.superset_typing import FlaskResponse -from superset.utils import json as json_utils +from superset.utils import json from superset.utils.date_parser import get_since_until from superset.views.base import api, BaseSupersetView, handle_api_exception @@ -73,9 +72,7 @@ def query(self) -> FlaskResponse: query_context.raise_for_access() result = query_context.get_payload() payload_json = result["queries"] - return json_utils.dumps( - payload_json, default=json_utils.json_int_dttm_ser, ignore_nan=True - ) + return json.dumps(payload_json, default=json.json_int_dttm_ser, ignore_nan=True) @event_logger.log_this @api diff --git a/superset/views/base.py b/superset/views/base.py index 04583387bd8cb..be3af99147e81 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -83,7 +83,7 @@ from superset.reports.models import ReportRecipientType from superset.superset_typing import FlaskResponse from superset.translations.utils import get_language_pack -from superset.utils import core as utils, json as json_utils +from superset.utils import core as utils, json from superset.utils.filters import get_dataset_access_filters from .utils import bootstrap_user_data @@ -153,9 +153,7 @@ def json_error_response( payload = payload or {"error": f"{msg}"} return Response( - json_utils.dumps( - payload, default=json_utils.json_iso_dttm_ser, ignore_nan=True - ), + json.dumps(payload, default=json.json_iso_dttm_ser, ignore_nan=True), status=status, mimetype="application/json", ) @@ -170,9 +168,7 @@ def json_errors_response( payload["errors"] = [dataclasses.asdict(error) for error in errors] return Response( - json_utils.dumps( - payload, default=json_utils.json_iso_dttm_ser, ignore_nan=True - ), + json.dumps(payload, default=json.json_iso_dttm_ser, ignore_nan=True), status=status, mimetype="application/json; charset=utf-8", ) @@ -294,9 +290,7 @@ class BaseSupersetView(BaseView): @staticmethod def json_response(obj: Any, status: int = 200) -> FlaskResponse: return Response( - json_utils.dumps( - obj, default=json_utils.json_int_dttm_ser, ignore_nan=True - ), + json.dumps(obj, default=json.json_int_dttm_ser, ignore_nan=True), status=status, mimetype="application/json", ) @@ -312,8 +306,8 @@ def render_app_template( return self.render_template( "superset/spa.html", entry="spa", - bootstrap_data=json_utils.dumps( - payload, default=json_utils.pessimistic_json_iso_dttm_ser + bootstrap_data=json.dumps( + payload, default=json.pessimistic_json_iso_dttm_ser ), ) @@ -547,9 +541,9 @@ def show_unexpected_exception(ex: Exception) -> FlaskResponse: @superset_app.context_processor def get_common_bootstrap_data() -> dict[str, Any]: def serialize_bootstrap_data() -> str: - return json_utils.dumps( + return json.dumps( {"common": common_bootstrap_payload()}, - default=json_utils.pessimistic_json_iso_dttm_ser, + default=json.pessimistic_json_iso_dttm_ser, ) return {"bootstrap_data": serialize_bootstrap_data} @@ -630,8 +624,8 @@ def render_app_template(self) -> FlaskResponse: return self.render_template( "superset/spa.html", entry="spa", - bootstrap_data=json_utils.dumps( - payload, default=json_utils.pessimistic_json_iso_dttm_ser + bootstrap_data=json.dumps( + payload, default=json.pessimistic_json_iso_dttm_ser ), ) diff --git a/superset/views/chart/views.py b/superset/views/chart/views.py index e8ea621902001..340ded9b0d35e 100644 --- a/superset/views/chart/views.py +++ b/superset/views/chart/views.py @@ -22,7 +22,7 @@ from superset.constants import MODEL_VIEW_RW_METHOD_PERMISSION_MAP, RouteMethod from superset.models.slice import Slice from superset.superset_typing import FlaskResponse -from superset.utils import json as json_utils +from superset.utils import json from superset.views.base import DeleteMixin, DeprecateModelViewMixin, SupersetModelView from superset.views.chart.mixin import SliceMixin @@ -41,10 +41,10 @@ class SliceModelView( method_permission_name = MODEL_VIEW_RW_METHOD_PERMISSION_MAP def pre_add(self, item: "SliceModelView") -> None: - json_utils.validate_json(item.params) + json.validate_json(item.params) def pre_update(self, item: "SliceModelView") -> None: - json_utils.validate_json(item.params) + json.validate_json(item.params) security_manager.raise_for_ownership(item) def pre_delete(self, item: "SliceModelView") -> None: diff --git a/superset/views/core.py b/superset/views/core.py index 83dcbf0a0df2f..5f76b05a78817 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -23,7 +23,6 @@ from typing import Any, Callable, cast from urllib import parse -import simplejson as json from flask import abort, flash, g, redirect, render_template, request, Response from flask_appbuilder import expose from flask_appbuilder.security.decorators import ( @@ -71,7 +70,7 @@ from superset.models.sql_lab import Query from superset.models.user_attributes import UserAttribute from superset.superset_typing import FlaskResponse -from superset.utils import core as utils, json as json_utils +from superset.utils import core as utils, json from superset.utils.cache import etag_cache from superset.utils.core import ( DatasourceType, @@ -575,8 +574,8 @@ def explore( return self.render_template( "superset/basic.html", - bootstrap_data=json_utils.dumps( - bootstrap_data, default=json_utils.pessimistic_json_iso_dttm_ser + bootstrap_data=json.dumps( + bootstrap_data, default=json.pessimistic_json_iso_dttm_ser ), entry="explore", title=title, @@ -752,7 +751,7 @@ def warm_up_cache(self) -> FlaskResponse: ) return json_success( - json_utils.dumps( + json.dumps( [ { "slice_id" if key == "chart_id" else key: value @@ -764,7 +763,7 @@ def warm_up_cache(self) -> FlaskResponse: } for slc in slices ], - default=json_utils.base_json_conv, + default=json.base_json_conv, ), ) @@ -813,12 +812,12 @@ def dashboard( "superset/spa.html", entry="spa", title=dashboard.dashboard_title, # dashboard title is always visible - bootstrap_data=json_utils.dumps( + bootstrap_data=json.dumps( { "user": bootstrap_user_data(g.user, include_perms=True), "common": common_bootstrap_payload(), }, - default=json_utils.pessimistic_json_iso_dttm_ser, + default=json.pessimistic_json_iso_dttm_ser, ), standalone_mode=ReservedUrlParameters.is_standalone_mode(), ) @@ -918,8 +917,8 @@ def welcome(self) -> FlaskResponse: return self.render_template( "superset/spa.html", entry="spa", - bootstrap_data=json_utils.dumps( - payload, default=json_utils.pessimistic_json_iso_dttm_ser + bootstrap_data=json.dumps( + payload, default=json.pessimistic_json_iso_dttm_ser ), ) diff --git a/superset/views/dashboard/views.py b/superset/views/dashboard/views.py index 97735b9081b4b..2e88b4acd02b7 100644 --- a/superset/views/dashboard/views.py +++ b/superset/views/dashboard/views.py @@ -34,7 +34,7 @@ from superset.constants import MODEL_VIEW_RW_METHOD_PERMISSION_MAP, RouteMethod from superset.models.dashboard import Dashboard as DashboardModel from superset.superset_typing import FlaskResponse -from superset.utils import json as json_utils +from superset.utils import json from superset.views.base import ( BaseSupersetView, common_bootstrap_payload, @@ -159,8 +159,8 @@ def embedded( return self.render_template( "superset/spa.html", entry="embedded", - bootstrap_data=json_utils.dumps( - bootstrap_data, default=json_utils.pessimistic_json_iso_dttm_ser + bootstrap_data=json.dumps( + bootstrap_data, default=json.pessimistic_json_iso_dttm_ser ), ) diff --git a/superset/views/datasource/views.py b/superset/views/datasource/views.py index 27371a5d2e188..89907df000fa1 100644 --- a/superset/views/datasource/views.py +++ b/superset/views/datasource/views.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from collections import Counter from typing import Any @@ -39,6 +38,7 @@ from superset.models.core import Database from superset.sql_parse import Table from superset.superset_typing import FlaskResponse +from superset.utils import json from superset.utils.core import DatasourceType from superset.views.base import ( api, diff --git a/superset/views/key_value.py b/superset/views/key_value.py index e4d41cb2eb61a..3ba53073c7047 100644 --- a/superset/views/key_value.py +++ b/superset/views/key_value.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import simplejson as json from flask import request, Response from flask_appbuilder import expose from flask_appbuilder.hooks import before_request @@ -24,7 +23,7 @@ from superset import db, event_logger, is_feature_enabled from superset.models import core as models from superset.superset_typing import FlaskResponse -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.views.base import BaseSupersetView, deprecated, json_error_response diff --git a/superset/views/sql_lab/views.py b/superset/views/sql_lab/views.py index b2c05095914da..693299118d08a 100644 --- a/superset/views/sql_lab/views.py +++ b/superset/views/sql_lab/views.py @@ -16,7 +16,6 @@ # under the License. import logging -import simplejson as json from flask import request, Response from flask_appbuilder import expose from flask_appbuilder.models.sqla.interface import SQLAInterface @@ -28,7 +27,7 @@ from superset.constants import MODEL_VIEW_RW_METHOD_PERMISSION_MAP, RouteMethod from superset.models.sql_lab import Query, SavedQuery, TableSchema, TabState from superset.superset_typing import FlaskResponse -from superset.utils import json as json_utils +from superset.utils import json from superset.utils.core import get_user_id from superset.views.base import ( BaseSupersetView, @@ -140,7 +139,7 @@ def get(self, tab_state_id: int) -> FlaskResponse: if tab_state is None: return Response(status=404) return json_success( - json.dumps(tab_state.to_dict(), default=json_utils.json_iso_dttm_ser) + json.dumps(tab_state.to_dict(), default=json.json_iso_dttm_ser) ) @has_access_api diff --git a/superset/views/sqllab.py b/superset/views/sqllab.py index b4bfa5194f20d..5677237c4823c 100644 --- a/superset/views/sqllab.py +++ b/superset/views/sqllab.py @@ -16,7 +16,6 @@ # under the License. import contextlib -import simplejson as json from flask import request from flask_appbuilder import permission_name from flask_appbuilder.api import expose @@ -25,6 +24,7 @@ from superset import event_logger from superset.constants import MODEL_API_RW_METHOD_PERMISSION_MAP from superset.superset_typing import FlaskResponse +from superset.utils import json from .base import BaseSupersetView diff --git a/superset/views/tags.py b/superset/views/tags.py index f78b2b5edefda..0a161e823f983 100644 --- a/superset/views/tags.py +++ b/superset/views/tags.py @@ -26,7 +26,7 @@ from superset import db, is_feature_enabled from superset.superset_typing import FlaskResponse from superset.tags.models import Tag -from superset.utils import json as json_utils +from superset.utils import json from superset.views.base import SupersetModelView from .base import BaseSupersetView, json_success @@ -74,6 +74,4 @@ def tags(self) -> FlaskResponse: } for obj in query ] - return json_success( - json_utils.dumps(results, default=json_utils.json_int_dttm_ser) - ) + return json_success(json.dumps(results, default=json.json_int_dttm_ser)) diff --git a/superset/views/utils.py b/superset/views/utils.py index 2d8fcd68dabab..8c45b774aa613 100644 --- a/superset/views/utils.py +++ b/superset/views/utils.py @@ -22,7 +22,6 @@ import msgpack import pyarrow as pa -import simplejson as json from flask import flash, g, has_request_context, redirect, request from flask_appbuilder.security.sqla import models as ab_models from flask_appbuilder.security.sqla.models import User @@ -47,6 +46,7 @@ from superset.models.slice import Slice from superset.models.sql_lab import Query from superset.superset_typing import FormData +from superset.utils import json from superset.utils.core import DatasourceType from superset.utils.decorators import stats_timing from superset.viz import BaseViz diff --git a/superset/viz.py b/superset/viz.py index b06bb42186b00..43b85a29f20d8 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -37,7 +37,6 @@ import numpy as np import pandas as pd import polyline -import simplejson as json from dateutil import relativedelta as rdelta from deprecation import deprecated from flask import request @@ -66,7 +65,7 @@ VizData, VizPayload, ) -from superset.utils import core as utils, csv, json as json_utils +from superset.utils import core as utils, csv, json from superset.utils.cache import set_and_log_cache from superset.utils.core import ( apply_max_row_limit, @@ -440,8 +439,8 @@ def cache_timeout(self) -> int: @deprecated(deprecated_in="3.0") def get_json(self) -> str: - return json_utils.dumps( - self.get_payload(), default=json_utils.json_int_dttm_ser, ignore_nan=True + return json.dumps( + self.get_payload(), default=json.json_int_dttm_ser, ignore_nan=True ) @deprecated(deprecated_in="3.0") @@ -641,9 +640,9 @@ def get_df_payload( # pylint: disable=too-many-statements @staticmethod @deprecated(deprecated_in="3.0") def json_dumps(query_obj: Any, sort_keys: bool = False) -> str: - return json_utils.dumps( + return json.dumps( query_obj, - default=json_utils.json_int_dttm_ser, + default=json.json_int_dttm_ser, ignore_nan=True, sort_keys=sort_keys, ) diff --git a/tests/integration_tests/advanced_data_type/api_tests.py b/tests/integration_tests/advanced_data_type/api_tests.py index 5080617f074f2..4e0ad45d8986d 100644 --- a/tests/integration_tests/advanced_data_type/api_tests.py +++ b/tests/integration_tests/advanced_data_type/api_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json import prison from superset.utils.core import get_example_default_schema # noqa: F401 @@ -32,6 +31,7 @@ AdvancedDataTypeResponse, ) from superset.utils.core import FilterOperator, FilterStringOperators +from superset.utils import json target_resp: AdvancedDataTypeResponse = { diff --git a/tests/integration_tests/annotation_layers/api_tests.py b/tests/integration_tests/annotation_layers/api_tests.py index 20ca2da0f790a..49c88ae2920ff 100644 --- a/tests/integration_tests/annotation_layers/api_tests.py +++ b/tests/integration_tests/annotation_layers/api_tests.py @@ -17,14 +17,13 @@ # isort:skip_file """Unit tests for Superset""" -import json - import pytest import prison from sqlalchemy.sql import func import tests.integration_tests.test_app # noqa: F401 from superset import db +from superset.utils import json from superset.models.annotations import Annotation, AnnotationLayer from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/async_events/api_tests.py b/tests/integration_tests/async_events/api_tests.py index e7d40456a127b..66aef25c2e254 100644 --- a/tests/integration_tests/async_events/api_tests.py +++ b/tests/integration_tests/async_events/api_tests.py @@ -14,11 +14,11 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from typing import Optional from unittest import mock from superset.extensions import async_query_manager +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME from tests.integration_tests.test_app import app diff --git a/tests/integration_tests/available_domains/api_tests.py b/tests/integration_tests/available_domains/api_tests.py index 8838207d29094..8d7ea9ea92c26 100644 --- a/tests/integration_tests/available_domains/api_tests.py +++ b/tests/integration_tests/available_domains/api_tests.py @@ -14,8 +14,7 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json - +from superset.utils import json from tests.integration_tests.test_app import app diff --git a/tests/integration_tests/base_api_tests.py b/tests/integration_tests/base_api_tests.py index 1a65ce16684a2..de003ff945b6e 100644 --- a/tests/integration_tests/base_api_tests.py +++ b/tests/integration_tests/base_api_tests.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. # isort:skip_file -import json from unittest.mock import patch from tests.integration_tests.fixtures.world_bank_dashboard import ( @@ -32,6 +31,7 @@ from superset.extensions import appbuilder from superset.models.dashboard import Dashboard from superset.views.base_api import BaseSupersetModelRestApi, requires_json # noqa: F401 +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.conftest import with_config diff --git a/tests/integration_tests/base_tests.py b/tests/integration_tests/base_tests.py index b7b3199917872..77633d65642e9 100644 --- a/tests/integration_tests/base_tests.py +++ b/tests/integration_tests/base_tests.py @@ -19,7 +19,6 @@ from datetime import datetime import imp -import json from contextlib import contextmanager from typing import Any, Union, Optional from unittest.mock import Mock, patch, MagicMock @@ -43,6 +42,7 @@ from superset.models.core import Database from superset.models.dashboard import Dashboard from superset.utils.core import get_example_default_schema, shortid +from superset.utils import json from superset.utils.database import get_example_database from superset.views.base_api import BaseSupersetModelRestApi diff --git a/tests/integration_tests/cache_tests.py b/tests/integration_tests/cache_tests.py index b1bf2822f4299..88b20282f40a5 100644 --- a/tests/integration_tests/cache_tests.py +++ b/tests/integration_tests/cache_tests.py @@ -16,13 +16,12 @@ # under the License. """Unit tests for Superset with caching""" -import json - import pytest from superset import app, db # noqa: F401 from superset.common.db_query_status import QueryStatus from superset.extensions import cache_manager +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME from tests.integration_tests.fixtures.birth_names_dashboard import ( diff --git a/tests/integration_tests/charts/api_tests.py b/tests/integration_tests/charts/api_tests.py index 3b28cfbcaaec6..42df108de96e1 100644 --- a/tests/integration_tests/charts/api_tests.py +++ b/tests/integration_tests/charts/api_tests.py @@ -16,7 +16,6 @@ # under the License. """Unit tests for Superset""" -import json from io import BytesIO from unittest import mock from zipfile import is_zipfile, ZipFile @@ -38,6 +37,7 @@ from superset.models.slice import Slice from superset.reports.models import ReportSchedule, ReportScheduleType from superset.tags.models import ObjectType, Tag, TaggedObject, TagType +from superset.utils import json from superset.utils.core import get_example_default_schema from superset.utils.database import get_example_database # noqa: F401 from superset.viz import viz_types # noqa: F401 diff --git a/tests/integration_tests/charts/commands_tests.py b/tests/integration_tests/charts/commands_tests.py index 3601056fb70ed..1ee4658b88ffc 100644 --- a/tests/integration_tests/charts/commands_tests.py +++ b/tests/integration_tests/charts/commands_tests.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from unittest.mock import patch import pytest @@ -36,6 +35,7 @@ from superset.connectors.sqla.models import SqlaTable from superset.models.core import Database from superset.models.slice import Slice +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.fixtures.birth_names_dashboard import ( load_birth_names_dashboard_with_slices, # noqa: F401 diff --git a/tests/integration_tests/charts/data/api_tests.py b/tests/integration_tests/charts/data/api_tests.py index 6d70a1cd75a3c..58cfd9d494cb9 100644 --- a/tests/integration_tests/charts/data/api_tests.py +++ b/tests/integration_tests/charts/data/api_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json import unittest import copy from datetime import datetime @@ -64,6 +63,7 @@ AdhocMetricExpressionType, ExtraFiltersReasonType, ) +from superset.utils import json from superset.utils.database import get_example_database, get_main_database from superset.common.chart_data import ChartDataResultFormat, ChartDataResultType diff --git a/tests/integration_tests/commands_test.py b/tests/integration_tests/commands_test.py index 3215364e80056..83409fd02280f 100644 --- a/tests/integration_tests/commands_test.py +++ b/tests/integration_tests/commands_test.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import copy -import json import yaml from flask import g @@ -26,6 +25,7 @@ from superset.commands.importers.v1.utils import is_valid_config from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.fixtures.importexport import ( chart_config, diff --git a/tests/integration_tests/core_tests.py b/tests/integration_tests/core_tests.py index ed683c95c5b91..923fe4a6b9470 100644 --- a/tests/integration_tests/core_tests.py +++ b/tests/integration_tests/core_tests.py @@ -19,7 +19,6 @@ import datetime import doctest import html -import json import logging import random import unittest @@ -51,7 +50,7 @@ from superset.models.sql_lab import Query from superset.result_set import SupersetResultSet from superset.sql_parse import Table -from superset.utils import core as utils, json as json_utils +from superset.utils import core as utils, json from superset.utils.core import backend from superset.utils.database import get_example_database from superset.views.database.views import DatabaseView @@ -502,7 +501,7 @@ def test_dataframe_timezone(self): results = SupersetResultSet(list(data), [["data"]], BaseEngineSpec) df = results.to_pandas_df() data = dataframe.df_to_records(df) - json_str = json.dumps(data, default=json_utils.pessimistic_json_iso_dttm_ser) + json_str = json.dumps(data, default=json.pessimistic_json_iso_dttm_ser) self.assertDictEqual( data[0], {"data": pd.Timestamp("2017-11-18 21:53:00.219225+0100", tz=tz)} ) @@ -943,7 +942,7 @@ def test_feature_flag_serialization(self): encoded = json.dumps( {"FOO": lambda x: 1, "super": "set"}, - default=json_utils.pessimistic_json_iso_dttm_ser, + default=json.pessimistic_json_iso_dttm_ser, ) html_string = ( html.escape(encoded, quote=False) diff --git a/tests/integration_tests/css_templates/api_tests.py b/tests/integration_tests/css_templates/api_tests.py index dfb6f6e90f8e5..27754afd30f01 100644 --- a/tests/integration_tests/css_templates/api_tests.py +++ b/tests/integration_tests/css_templates/api_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json import pytest import prison from datetime import datetime @@ -28,6 +27,7 @@ from superset import db from superset.models.core import CssTemplate from superset.utils.database import get_example_database # noqa: F401 +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME diff --git a/tests/integration_tests/dashboard_utils.py b/tests/integration_tests/dashboard_utils.py index 98498cac04a1c..1b900ecbcc8a2 100644 --- a/tests/integration_tests/dashboard_utils.py +++ b/tests/integration_tests/dashboard_utils.py @@ -16,7 +16,6 @@ # under the License. """Utils to provide dashboards for tests""" -import json from typing import Optional from pandas import DataFrame # noqa: F401 @@ -26,6 +25,7 @@ from superset.models.core import Database from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import DatasourceType, get_example_default_schema diff --git a/tests/integration_tests/dashboards/api_tests.py b/tests/integration_tests/dashboards/api_tests.py index 614524cb2daed..bd7e230dbe5b2 100644 --- a/tests/integration_tests/dashboards/api_tests.py +++ b/tests/integration_tests/dashboards/api_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json from io import BytesIO from time import sleep from unittest.mock import ANY, patch @@ -38,6 +37,7 @@ from superset.models.slice import Slice from superset.tags.models import Tag, TaggedObject, TagType, ObjectType from superset.utils.core import backend, override_user +from superset.utils import json from tests.integration_tests.base_api_tests import ApiOwnersTestCaseMixin from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/dashboards/commands_tests.py b/tests/integration_tests/dashboards/commands_tests.py index 4c199372f9c5d..06edd6c6d0f18 100644 --- a/tests/integration_tests/dashboards/commands_tests.py +++ b/tests/integration_tests/dashboards/commands_tests.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import itertools -import json from unittest.mock import MagicMock, patch # noqa: F401 import pytest @@ -36,6 +35,7 @@ from superset.models.core import Database from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.fixtures.importexport import ( chart_config, diff --git a/tests/integration_tests/dashboards/dao_tests.py b/tests/integration_tests/dashboards/dao_tests.py index e030a49e2ef39..83ef02730b0a8 100644 --- a/tests/integration_tests/dashboards/dao_tests.py +++ b/tests/integration_tests/dashboards/dao_tests.py @@ -16,13 +16,13 @@ # under the License. # isort:skip_file import copy -import json import time from unittest.mock import patch import pytest import tests.integration_tests.test_app # pylint: disable=unused-import # noqa: F401 from superset import db, security_manager +from superset.utils import json from superset.daos.dashboard import DashboardDAO from superset.models.dashboard import Dashboard from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/dashboards/filter_state/api_tests.py b/tests/integration_tests/dashboards/filter_state/api_tests.py index e1b622dd1766c..b050a326d5ee4 100644 --- a/tests/integration_tests/dashboards/filter_state/api_tests.py +++ b/tests/integration_tests/dashboards/filter_state/api_tests.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from unittest.mock import patch # noqa: F401 import pytest @@ -30,6 +29,7 @@ from superset.extensions import cache_manager from superset.models.dashboard import Dashboard from superset.temporary_cache.utils import cache_key +from superset.utils import json from tests.integration_tests.fixtures.world_bank_dashboard import ( load_world_bank_dashboard_with_slices, # noqa: F401 load_world_bank_data, # noqa: F401 diff --git a/tests/integration_tests/dashboards/security/security_dataset_tests.py b/tests/integration_tests/dashboards/security/security_dataset_tests.py index 998c3db41767b..17a5c477e6b85 100644 --- a/tests/integration_tests/dashboards/security/security_dataset_tests.py +++ b/tests/integration_tests/dashboards/security/security_dataset_tests.py @@ -16,14 +16,13 @@ # under the License. """Unit tests for Superset""" -import json - import prison import pytest from flask import escape # noqa: F401 from superset import app from superset.daos.dashboard import DashboardDAO +from superset.utils import json from tests.integration_tests.constants import ADMIN_USERNAME, GAMMA_USERNAME from tests.integration_tests.dashboards.base_case import DashboardTestCase from tests.integration_tests.dashboards.consts import * # noqa: F403 diff --git a/tests/integration_tests/dashboards/security/security_rbac_tests.py b/tests/integration_tests/dashboards/security/security_rbac_tests.py index 0718d821b1410..797212d516908 100644 --- a/tests/integration_tests/dashboards/security/security_rbac_tests.py +++ b/tests/integration_tests/dashboards/security/security_rbac_tests.py @@ -16,7 +16,6 @@ # under the License. """Unit tests for Superset""" -import json from unittest import mock from unittest.mock import patch # noqa: F401 @@ -24,6 +23,7 @@ from superset.commands.dashboard.exceptions import DashboardForbiddenError from superset.daos.dashboard import DashboardDAO +from superset.utils import json from superset.utils.core import backend, override_user from tests.integration_tests.conftest import with_feature_flags from tests.integration_tests.constants import ( diff --git a/tests/integration_tests/databases/api_tests.py b/tests/integration_tests/databases/api_tests.py index a6deb942a2309..9f9882c99bde6 100644 --- a/tests/integration_tests/databases/api_tests.py +++ b/tests/integration_tests/databases/api_tests.py @@ -18,7 +18,6 @@ """Unit tests for Superset""" import dataclasses -import json from collections import defaultdict from io import BytesIO from unittest import mock @@ -49,6 +48,7 @@ from superset.models.core import Database, ConfigurationMethod from superset.reports.models import ReportSchedule, ReportScheduleType from superset.utils.database import get_example_database, get_main_database +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME, GAMMA_USERNAME from tests.integration_tests.fixtures.birth_names_dashboard import ( @@ -1013,14 +1013,14 @@ def test_create_database_json_validate(self): response = json.loads(rv.data.decode("utf-8")) expected_response = { "message": { + "extra": [ + "Field cannot be decoded by JSON. Expecting ',' " + "delimiter or ']': line 1 column 5 (char 4)" + ], "masked_encrypted_extra": [ "Field cannot be decoded by JSON. Expecting ':' " "delimiter: line 1 column 15 (char 14)" ], - "extra": [ - "Field cannot be decoded by JSON. Expecting ','" - " delimiter: line 1 column 5 (char 4)" - ], } } self.assertEqual(rv.status_code, 400) diff --git a/tests/integration_tests/databases/commands/upload_test.py b/tests/integration_tests/databases/commands/upload_test.py index 3093782d76b08..3e0eb55b77b18 100644 --- a/tests/integration_tests/databases/commands/upload_test.py +++ b/tests/integration_tests/databases/commands/upload_test.py @@ -17,8 +17,6 @@ from __future__ import annotations -import json - import pytest from flask.ctx import AppContext @@ -32,6 +30,7 @@ from superset.commands.database.uploaders.csv_reader import CSVReader from superset.connectors.sqla.models import SqlaTable from superset.models.core import Database +from superset.utils import json from superset.utils.core import override_user from superset.utils.database import get_or_create_db from tests.integration_tests.conftest import only_postgresql diff --git a/tests/integration_tests/datasets/api_tests.py b/tests/integration_tests/datasets/api_tests.py index 6cc3cc8828dc0..6a879e6995d24 100644 --- a/tests/integration_tests/datasets/api_tests.py +++ b/tests/integration_tests/datasets/api_tests.py @@ -16,7 +16,6 @@ # under the License. """Unit tests for Superset""" -import json import unittest from io import BytesIO from typing import Optional @@ -43,6 +42,7 @@ from superset.models.core import Database from superset.models.slice import Slice from superset.sql_parse import Table +from superset.utils import json from superset.utils.core import backend, get_example_default_schema from superset.utils.database import get_example_database, get_main_database from superset.utils.dict_import_export import export_to_dict diff --git a/tests/integration_tests/datasource/api_tests.py b/tests/integration_tests/datasource/api_tests.py index 044aead80acda..5cf29d5755f56 100644 --- a/tests/integration_tests/datasource/api_tests.py +++ b/tests/integration_tests/datasource/api_tests.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from unittest.mock import ANY, Mock, patch import pytest @@ -22,6 +21,7 @@ from superset import db, security_manager from superset.connectors.sqla.models import SqlaTable from superset.daos.exceptions import DatasourceTypeNotSupportedError +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME, GAMMA_USERNAME diff --git a/tests/integration_tests/datasource_tests.py b/tests/integration_tests/datasource_tests.py index 716e031e0c676..1b7fcb733b5a5 100644 --- a/tests/integration_tests/datasource_tests.py +++ b/tests/integration_tests/datasource_tests.py @@ -16,7 +16,6 @@ # under the License. """Unit tests for Superset""" -import json from contextlib import contextmanager from datetime import datetime, timedelta from unittest import mock @@ -36,6 +35,7 @@ from superset.daos.exceptions import DatasourceNotFound, DatasourceTypeNotSupportedError from superset.exceptions import SupersetGenericDBErrorException from superset.models.core import Database +from superset.utils import json from superset.utils.core import backend, get_example_default_schema # noqa: F401 from superset.utils.database import ( # noqa: F401 get_example_database, diff --git a/tests/integration_tests/dict_import_export_tests.py b/tests/integration_tests/dict_import_export_tests.py index ff25d1b40225a..2db17a77b50b6 100644 --- a/tests/integration_tests/dict_import_export_tests.py +++ b/tests/integration_tests/dict_import_export_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json import unittest from uuid import uuid4 @@ -29,6 +28,7 @@ from superset.connectors.sqla.models import SqlaTable, SqlMetric, TableColumn from superset.utils.database import get_example_database from superset.utils.dict_import_export import export_to_dict +from superset.utils import json from .base_tests import SupersetTestCase diff --git a/tests/integration_tests/explore/api_tests.py b/tests/integration_tests/explore/api_tests.py index dc410b23f121b..730e013f82718 100644 --- a/tests/integration_tests/explore/api_tests.py +++ b/tests/integration_tests/explore/api_tests.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from unittest.mock import patch import pytest @@ -27,6 +26,7 @@ from superset.explore.exceptions import DatasetAccessDeniedError from superset.extensions import cache_manager from superset.models.slice import Slice +from superset.utils import json from tests.integration_tests.fixtures.world_bank_dashboard import ( load_world_bank_dashboard_with_slices, # noqa: F401 load_world_bank_data, # noqa: F401 diff --git a/tests/integration_tests/explore/form_data/api_tests.py b/tests/integration_tests/explore/form_data/api_tests.py index 82bd7854bce5d..6057bb271f9b8 100644 --- a/tests/integration_tests/explore/form_data/api_tests.py +++ b/tests/integration_tests/explore/form_data/api_tests.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from unittest.mock import patch import pytest @@ -27,6 +26,7 @@ from superset.connectors.sqla.models import SqlaTable from superset.extensions import cache_manager from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import DatasourceType from tests.integration_tests.fixtures.world_bank_dashboard import ( load_world_bank_dashboard_with_slices, # noqa: F401 diff --git a/tests/integration_tests/explore/form_data/commands_tests.py b/tests/integration_tests/explore/form_data/commands_tests.py index b9ad7330140f2..979d0f2cf0b23 100644 --- a/tests/integration_tests/explore/form_data/commands_tests.py +++ b/tests/integration_tests/explore/form_data/commands_tests.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. -import json from unittest.mock import patch import pytest @@ -30,6 +29,7 @@ from superset.connectors.sqla.models import SqlaTable from superset.models.slice import Slice from superset.models.sql_lab import Query +from superset.utils import json from superset.utils.core import DatasourceType, get_example_default_schema from superset.utils.database import get_example_database from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/explore/permalink/api_tests.py b/tests/integration_tests/explore/permalink/api_tests.py index 0040619896317..a2410306121fa 100644 --- a/tests/integration_tests/explore/permalink/api_tests.py +++ b/tests/integration_tests/explore/permalink/api_tests.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from collections.abc import Iterator from typing import Any from uuid import uuid3 @@ -28,6 +27,7 @@ from superset.key_value.types import KeyValueResource, MarshmallowKeyValueCodec from superset.key_value.utils import decode_permalink_id, encode_permalink_key from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import DatasourceType from tests.integration_tests.fixtures.world_bank_dashboard import ( load_world_bank_dashboard_with_slices, # noqa: F401 diff --git a/tests/integration_tests/fixtures/tabbed_dashboard.py b/tests/integration_tests/fixtures/tabbed_dashboard.py index 15a871c7aea9e..d4ddff5796348 100644 --- a/tests/integration_tests/fixtures/tabbed_dashboard.py +++ b/tests/integration_tests/fixtures/tabbed_dashboard.py @@ -14,12 +14,12 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import pytest from superset import db from superset.models.dashboard import Dashboard +from superset.utils import json from superset.utils.core import shortid from tests.integration_tests.dashboards.superset_factory_util import create_dashboard diff --git a/tests/integration_tests/fixtures/world_bank_dashboard.py b/tests/integration_tests/fixtures/world_bank_dashboard.py index 56531d77817a8..34c718c200c21 100644 --- a/tests/integration_tests/fixtures/world_bank_dashboard.py +++ b/tests/integration_tests/fixtures/world_bank_dashboard.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json import string from random import choice, randint, random, uniform from typing import Any @@ -29,6 +28,7 @@ from superset.models.core import Database from superset.models.dashboard import Dashboard from superset.models.slice import Slice +from superset.utils import json from superset.utils.core import get_example_default_schema from superset.utils.database import get_example_database from tests.integration_tests.dashboard_utils import ( diff --git a/tests/integration_tests/import_export_tests.py b/tests/integration_tests/import_export_tests.py index 8f7352facfbc1..e4c9bff51e4c3 100644 --- a/tests/integration_tests/import_export_tests.py +++ b/tests/integration_tests/import_export_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json import unittest from tests.integration_tests.fixtures.birth_names_dashboard import ( load_birth_names_dashboard_with_slices, # noqa: F401 @@ -43,6 +42,7 @@ from superset.models.slice import Slice from superset.utils.core import DatasourceType, get_example_default_schema from superset.utils.database import get_example_database +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME diff --git a/tests/integration_tests/key_value/commands/create_test.py b/tests/integration_tests/key_value/commands/create_test.py index c16a9da474bdb..b18b9886d6ff9 100644 --- a/tests/integration_tests/key_value/commands/create_test.py +++ b/tests/integration_tests/key_value/commands/create_test.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json import pickle import pytest @@ -25,6 +24,7 @@ from superset.extensions import db from superset.key_value.exceptions import KeyValueCreateFailedError +from superset.utils import json from superset.utils.core import override_user from tests.integration_tests.key_value.commands.fixtures import ( admin, # noqa: F401 diff --git a/tests/integration_tests/key_value/commands/delete_test.py b/tests/integration_tests/key_value/commands/delete_test.py index 141547e56b51f..ac51fa640b0d3 100644 --- a/tests/integration_tests/key_value/commands/delete_test.py +++ b/tests/integration_tests/key_value/commands/delete_test.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json from typing import TYPE_CHECKING from uuid import UUID @@ -25,6 +24,7 @@ from flask_appbuilder.security.sqla.models import User from superset.extensions import db +from superset.utils import json from tests.integration_tests.key_value.commands.fixtures import ( admin, # noqa: F401 JSON_VALUE, diff --git a/tests/integration_tests/key_value/commands/fixtures.py b/tests/integration_tests/key_value/commands/fixtures.py index 31bcaadea5784..c0262124b6c4f 100644 --- a/tests/integration_tests/key_value/commands/fixtures.py +++ b/tests/integration_tests/key_value/commands/fixtures.py @@ -17,7 +17,6 @@ from __future__ import annotations -import json from collections.abc import Generator from typing import TYPE_CHECKING from uuid import UUID @@ -31,6 +30,7 @@ KeyValueResource, PickleKeyValueCodec, ) +from superset.utils import json from tests.integration_tests.test_app import app if TYPE_CHECKING: diff --git a/tests/integration_tests/key_value/commands/get_test.py b/tests/integration_tests/key_value/commands/get_test.py index bf5859dbb75e6..8ea4ccd87d9d4 100644 --- a/tests/integration_tests/key_value/commands/get_test.py +++ b/tests/integration_tests/key_value/commands/get_test.py @@ -16,7 +16,6 @@ # under the License. from __future__ import annotations -import json import uuid from datetime import datetime, timedelta from typing import TYPE_CHECKING @@ -24,6 +23,7 @@ from flask.ctx import AppContext from superset.extensions import db +from superset.utils import json from tests.integration_tests.key_value.commands.fixtures import ( ID_KEY, JSON_CODEC, diff --git a/tests/integration_tests/key_value/commands/update_test.py b/tests/integration_tests/key_value/commands/update_test.py index d8922ab2e9b2e..bb434ec3b98bf 100644 --- a/tests/integration_tests/key_value/commands/update_test.py +++ b/tests/integration_tests/key_value/commands/update_test.py @@ -16,13 +16,13 @@ # under the License. from __future__ import annotations -import json from typing import TYPE_CHECKING from flask.ctx import AppContext from flask_appbuilder.security.sqla.models import User from superset.extensions import db +from superset.utils import json from superset.utils.core import override_user from tests.integration_tests.key_value.commands.fixtures import ( admin, # noqa: F401 diff --git a/tests/integration_tests/key_value/commands/upsert_test.py b/tests/integration_tests/key_value/commands/upsert_test.py index a652c2ce7acf0..6ff61423f1a7f 100644 --- a/tests/integration_tests/key_value/commands/upsert_test.py +++ b/tests/integration_tests/key_value/commands/upsert_test.py @@ -16,13 +16,13 @@ # under the License. from __future__ import annotations -import json from typing import TYPE_CHECKING from flask.ctx import AppContext from flask_appbuilder.security.sqla.models import User from superset.extensions import db +from superset.utils import json from superset.utils.core import override_user from tests.integration_tests.key_value.commands.fixtures import ( admin, # noqa: F401 diff --git a/tests/integration_tests/log_api_tests.py b/tests/integration_tests/log_api_tests.py index cd55b6270e678..fae09754aa9b5 100644 --- a/tests/integration_tests/log_api_tests.py +++ b/tests/integration_tests/log_api_tests.py @@ -18,7 +18,6 @@ """Unit tests for Superset""" from datetime import datetime, timedelta -import json from typing import Optional from unittest.mock import ANY @@ -29,6 +28,7 @@ from superset import db from superset.models.core import Log from superset.views.log.api import LogRestApi +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.conftest import with_feature_flags # noqa: F401 from tests.integration_tests.constants import ( diff --git a/tests/integration_tests/migrations/7e67aecbf3f1_chart_ds_constraint__tests.py b/tests/integration_tests/migrations/7e67aecbf3f1_chart_ds_constraint__tests.py index 320c3bc210155..f1772404dc083 100644 --- a/tests/integration_tests/migrations/7e67aecbf3f1_chart_ds_constraint__tests.py +++ b/tests/integration_tests/migrations/7e67aecbf3f1_chart_ds_constraint__tests.py @@ -15,9 +15,10 @@ # specific language governing permissions and limitations # under the License. -import json from importlib import import_module +from superset.utils import json + chart_ds_constraint = import_module( "superset.migrations.versions." "2023-03-27_12-30_7e67aecbf3f1_chart_ds_constraint", ) diff --git a/tests/integration_tests/migrations/ad07e4fdbaba_rm_time_range_endpoints_from_qc_3__test.py b/tests/integration_tests/migrations/ad07e4fdbaba_rm_time_range_endpoints_from_qc_3__test.py index 7d95b65dea628..d8db954379db8 100644 --- a/tests/integration_tests/migrations/ad07e4fdbaba_rm_time_range_endpoints_from_qc_3__test.py +++ b/tests/integration_tests/migrations/ad07e4fdbaba_rm_time_range_endpoints_from_qc_3__test.py @@ -14,9 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from importlib import import_module +from superset.utils import json + rm_time_range_endpoints_from_qc_3 = import_module( "superset.migrations.versions." "2022-04-18_11-20_ad07e4fdbaba_rm_time_range_endpoints_from_qc_3", diff --git a/tests/integration_tests/migrations/c747c78868b6_migrating_legacy_treemap__tests.py b/tests/integration_tests/migrations/c747c78868b6_migrating_legacy_treemap__tests.py index e67d87fa13e09..0fd9276121060 100644 --- a/tests/integration_tests/migrations/c747c78868b6_migrating_legacy_treemap__tests.py +++ b/tests/integration_tests/migrations/c747c78868b6_migrating_legacy_treemap__tests.py @@ -14,10 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from superset.app import SupersetApp from superset.migrations.shared.migrate_viz import MigrateTreeMap +from superset.utils import json treemap_form_data = """{ "adhoc_filters": [ diff --git a/tests/integration_tests/migrations/fb13d49b72f9_better_filters__tests.py b/tests/integration_tests/migrations/fb13d49b72f9_better_filters__tests.py index 60a6c5e819745..28cfd5a7b61fe 100644 --- a/tests/integration_tests/migrations/fb13d49b72f9_better_filters__tests.py +++ b/tests/integration_tests/migrations/fb13d49b72f9_better_filters__tests.py @@ -14,9 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from importlib import import_module +from superset.utils import json + better_filters = import_module( "superset.migrations.versions." "2018-12-11_22-03_fb13d49b72f9_better_filters", ) diff --git a/tests/integration_tests/model_tests.py b/tests/integration_tests/model_tests.py index df806b04b50fe..458168009be13 100644 --- a/tests/integration_tests/model_tests.py +++ b/tests/integration_tests/model_tests.py @@ -15,8 +15,8 @@ # specific language governing permissions and limitations # under the License. # isort:skip_file -import json from superset.utils.core import DatasourceType +from superset.utils import json import unittest from unittest import mock diff --git a/tests/integration_tests/queries/api_tests.py b/tests/integration_tests/queries/api_tests.py index e38c489436f2e..2819c23b4141d 100644 --- a/tests/integration_tests/queries/api_tests.py +++ b/tests/integration_tests/queries/api_tests.py @@ -19,7 +19,6 @@ from datetime import datetime, timedelta from unittest import mock -import json import random import string @@ -32,6 +31,7 @@ from superset.common.db_query_status import QueryStatus from superset.models.core import Database from superset.utils.database import get_example_database, get_main_database +from superset.utils import json from superset.models.sql_lab import Query from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/queries/saved_queries/api_tests.py b/tests/integration_tests/queries/saved_queries/api_tests.py index 7c51bb8b4a87f..da203a7139b23 100644 --- a/tests/integration_tests/queries/saved_queries/api_tests.py +++ b/tests/integration_tests/queries/saved_queries/api_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json from datetime import datetime from io import BytesIO from typing import Optional @@ -34,6 +33,7 @@ from superset.models.core import FavStar from superset.models.sql_lab import SavedQuery from superset.utils.database import get_example_database +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME, GAMMA_SQLLAB_USERNAME diff --git a/tests/integration_tests/reports/api_tests.py b/tests/integration_tests/reports/api_tests.py index 4f63a5ab7e3e3..180ac81e2a5fe 100644 --- a/tests/integration_tests/reports/api_tests.py +++ b/tests/integration_tests/reports/api_tests.py @@ -19,7 +19,6 @@ from datetime import datetime, timedelta from unittest.mock import patch -import json import pytz @@ -42,6 +41,7 @@ ReportState, ) from superset.utils.database import get_example_database +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.conftest import with_feature_flags from tests.integration_tests.constants import ADMIN_USERNAME, GAMMA_USERNAME diff --git a/tests/integration_tests/reports/commands_tests.py b/tests/integration_tests/reports/commands_tests.py index fd271b84d615b..30d183485238f 100644 --- a/tests/integration_tests/reports/commands_tests.py +++ b/tests/integration_tests/reports/commands_tests.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from contextlib import contextmanager from datetime import datetime, timedelta, timezone from typing import Optional @@ -77,6 +76,7 @@ NotificationParamException, ) from superset.tasks.types import ExecutorType +from superset.utils import json from superset.utils.database import get_example_database from tests.integration_tests.fixtures.birth_names_dashboard import ( load_birth_names_dashboard_with_slices, # noqa: F401 diff --git a/tests/integration_tests/reports/utils.py b/tests/integration_tests/reports/utils.py index 8a7f1db4a6405..c963efc840a34 100644 --- a/tests/integration_tests/reports/utils.py +++ b/tests/integration_tests/reports/utils.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. -import json from contextlib import contextmanager from typing import Any, Optional from uuid import uuid4 @@ -35,6 +34,7 @@ ReportScheduleType, ReportState, ) +from superset.utils import json from superset.utils.core import override_user from tests.integration_tests.test_app import app # noqa: F401 from tests.integration_tests.utils import read_fixture diff --git a/tests/integration_tests/security/api_tests.py b/tests/integration_tests/security/api_tests.py index 09e4477c9614b..1fff519bd4309 100644 --- a/tests/integration_tests/security/api_tests.py +++ b/tests/integration_tests/security/api_tests.py @@ -17,8 +17,6 @@ # isort:skip_file """Tests for security api methods""" -import json - import jwt import pytest @@ -27,6 +25,7 @@ from superset.daos.dashboard import EmbeddedDashboardDAO from superset.models.dashboard import Dashboard from superset.utils.urls import get_url_host +from superset.utils import json from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.constants import ADMIN_USERNAME, GAMMA_USERNAME from tests.integration_tests.fixtures.birth_names_dashboard import ( diff --git a/tests/integration_tests/security/guest_token_security_tests.py b/tests/integration_tests/security/guest_token_security_tests.py index 1ccd6ed59a0e4..f4a515bb75c27 100644 --- a/tests/integration_tests/security/guest_token_security_tests.py +++ b/tests/integration_tests/security/guest_token_security_tests.py @@ -16,7 +16,6 @@ # under the License. """Unit tests for Superset""" -import json from unittest.mock import Mock, patch import pytest @@ -29,6 +28,7 @@ from superset.models.dashboard import Dashboard from superset.security.guest_token import GuestTokenResourceType # noqa: F401 from superset.sql_parse import Table # noqa: F401 +from superset.utils import json from superset.utils.core import get_example_default_schema from superset.utils.database import get_example_database from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/security/row_level_security_tests.py b/tests/integration_tests/security/row_level_security_tests.py index 48a95c54dd0b3..2c8a13a71f4d6 100644 --- a/tests/integration_tests/security/row_level_security_tests.py +++ b/tests/integration_tests/security/row_level_security_tests.py @@ -21,7 +21,6 @@ import pytest from flask import g -import json import prison from superset import db, security_manager, app # noqa: F401 @@ -30,6 +29,7 @@ GuestTokenResourceType, GuestUser, ) +from superset.utils import json from flask_babel import lazy_gettext as _ # noqa: F401 from flask_appbuilder.models.sqla import filters from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/security_tests.py b/tests/integration_tests/security_tests.py index 5eca7b4a67152..5b8e4f2ae00e7 100644 --- a/tests/integration_tests/security_tests.py +++ b/tests/integration_tests/security_tests.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. # isort:skip_file -import json import inspect import time import unittest @@ -45,6 +44,7 @@ get_example_default_schema, override_user, ) +from superset.utils import json from superset.utils.database import get_example_database from superset.utils.urls import get_url_host diff --git a/tests/integration_tests/sql_lab/api_tests.py b/tests/integration_tests/sql_lab/api_tests.py index 0c55dc3329010..282a0c993e261 100644 --- a/tests/integration_tests/sql_lab/api_tests.py +++ b/tests/integration_tests/sql_lab/api_tests.py @@ -18,7 +18,6 @@ """Unit tests for Superset""" import datetime -import json import random import csv import pandas as pd @@ -35,7 +34,7 @@ from superset.common.db_query_status import QueryStatus from superset.models.core import Database # noqa: F401 from superset.utils.database import get_example_database, get_main_database # noqa: F401 -from superset.utils import core as utils +from superset.utils import core as utils, json from superset.models.sql_lab import Query from tests.integration_tests.base_tests import SupersetTestCase diff --git a/tests/integration_tests/sqllab_tests.py b/tests/integration_tests/sqllab_tests.py index 8bbf7023a4044..3602097b20268 100644 --- a/tests/integration_tests/sqllab_tests.py +++ b/tests/integration_tests/sqllab_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Sql Lab""" -import json from datetime import datetime from textwrap import dedent @@ -45,6 +44,7 @@ ) from superset.sql_parse import CtasMethod from superset.utils.core import backend +from superset.utils import json from superset.utils.json import datetime_to_epoch # noqa: F401 from superset.utils.database import get_example_database, get_main_database diff --git a/tests/integration_tests/tags/api_tests.py b/tests/integration_tests/tags/api_tests.py index b62ee11a2be34..3f6e499449d53 100644 --- a/tests/integration_tests/tags/api_tests.py +++ b/tests/integration_tests/tags/api_tests.py @@ -17,7 +17,6 @@ # isort:skip_file """Unit tests for Superset""" -import json import prison from datetime import datetime @@ -40,6 +39,7 @@ from superset.common.db_query_status import QueryStatus # noqa: F401 from superset.models.core import Database # noqa: F401 from superset.utils.database import get_example_database, get_main_database # noqa: F401 +from superset.utils import json from superset.tags.models import ObjectType, Tag, TagType, TaggedObject from tests.integration_tests.constants import ADMIN_USERNAME, ALPHA_USERNAME from tests.integration_tests.fixtures.birth_names_dashboard import ( diff --git a/tests/integration_tests/thumbnails_tests.py b/tests/integration_tests/thumbnails_tests.py index 623f69d88f1fe..cbab3f84f92ba 100644 --- a/tests/integration_tests/thumbnails_tests.py +++ b/tests/integration_tests/thumbnails_tests.py @@ -17,7 +17,6 @@ # from superset import db # from superset.models.dashboard import Dashboard -import json import urllib.request from io import BytesIO from unittest import skipUnless @@ -32,6 +31,7 @@ from superset.models.dashboard import Dashboard from superset.models.slice import Slice from superset.tasks.types import ExecutorType +from superset.utils import json from superset.utils.screenshots import ChartScreenshot, DashboardScreenshot from superset.utils.urls import get_url_path from superset.utils.webdriver import WebDriverSelenium diff --git a/tests/integration_tests/users/api_tests.py b/tests/integration_tests/users/api_tests.py index e4fc7ddd77611..4153a5bd08fb0 100644 --- a/tests/integration_tests/users/api_tests.py +++ b/tests/integration_tests/users/api_tests.py @@ -17,11 +17,10 @@ # type: ignore """Unit tests for Superset""" -import json from unittest.mock import patch from superset import security_manager -from superset.utils import slack # noqa: F401 +from superset.utils import json, slack # noqa: F401 from tests.integration_tests.base_tests import SupersetTestCase from tests.integration_tests.conftest import with_config from tests.integration_tests.constants import ADMIN_USERNAME diff --git a/tests/integration_tests/utils/__init__.py b/tests/integration_tests/utils/__init__.py index d493d5b634640..c00f4379ae6f8 100644 --- a/tests/integration_tests/utils/__init__.py +++ b/tests/integration_tests/utils/__init__.py @@ -14,9 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from os import path +from superset.utils import json + FIXTURES_DIR = "tests/integration_tests/fixtures" diff --git a/tests/integration_tests/utils_tests.py b/tests/integration_tests/utils_tests.py index 8916d30631066..cbdea3f60b623 100644 --- a/tests/integration_tests/utils_tests.py +++ b/tests/integration_tests/utils_tests.py @@ -18,7 +18,6 @@ import uuid from datetime import date, datetime, time, timedelta from decimal import Decimal -import json import os import re from typing import Any, Optional @@ -66,13 +65,7 @@ zlib_decompress, DateColumn, ) -from superset.utils.json import ( - base_json_conv, - format_timedelta, - json_int_dttm_ser, - json_iso_dttm_ser, - validate_json, -) +from superset.utils import json from superset.utils.database import get_or_create_db from superset.utils import schema from superset.utils.hashing import md5_sha_from_str @@ -91,49 +84,49 @@ class TestUtils(SupersetTestCase): def test_json_int_dttm_ser(self): dttm = datetime(2020, 1, 1) ts = 1577836800000.0 - assert json_int_dttm_ser(dttm) == ts - assert json_int_dttm_ser(date(2020, 1, 1)) == ts - assert json_int_dttm_ser(datetime(1970, 1, 1)) == 0 - assert json_int_dttm_ser(date(1970, 1, 1)) == 0 - assert json_int_dttm_ser(dttm + timedelta(milliseconds=1)) == (ts + 1) - assert json_int_dttm_ser(np.int64(1)) == 1 + assert json.json_int_dttm_ser(dttm) == ts + assert json.json_int_dttm_ser(date(2020, 1, 1)) == ts + assert json.json_int_dttm_ser(datetime(1970, 1, 1)) == 0 + assert json.json_int_dttm_ser(date(1970, 1, 1)) == 0 + assert json.json_int_dttm_ser(dttm + timedelta(milliseconds=1)) == (ts + 1) + assert json.json_int_dttm_ser(np.int64(1)) == 1 with self.assertRaises(TypeError): - json_int_dttm_ser(np.datetime64()) + json.json_int_dttm_ser(np.datetime64()) def test_json_iso_dttm_ser(self): dttm = datetime(2020, 1, 1) dt = date(2020, 1, 1) t = time() - assert json_iso_dttm_ser(dttm) == dttm.isoformat() - assert json_iso_dttm_ser(dt) == dt.isoformat() - assert json_iso_dttm_ser(t) == t.isoformat() - assert json_iso_dttm_ser(np.int64(1)) == 1 + assert json.json_iso_dttm_ser(dttm) == dttm.isoformat() + assert json.json_iso_dttm_ser(dt) == dt.isoformat() + assert json.json_iso_dttm_ser(t) == t.isoformat() + assert json.json_iso_dttm_ser(np.int64(1)) == 1 assert ( - json_iso_dttm_ser(np.datetime64(), pessimistic=True) + json.json_iso_dttm_ser(np.datetime64(), pessimistic=True) == "Unserializable []" ) with self.assertRaises(TypeError): - json_iso_dttm_ser(np.datetime64()) + json.json_iso_dttm_ser(np.datetime64()) def test_base_json_conv(self): - assert isinstance(base_json_conv(np.bool_(1)), bool) - assert isinstance(base_json_conv(np.int64(1)), int) - assert isinstance(base_json_conv(np.array([1, 2, 3])), list) - assert base_json_conv(np.array(None)) is None - assert isinstance(base_json_conv({1}), list) - assert isinstance(base_json_conv(Decimal("1.0")), float) - assert isinstance(base_json_conv(uuid.uuid4()), str) - assert isinstance(base_json_conv(time()), str) - assert isinstance(base_json_conv(timedelta(0)), str) - assert isinstance(base_json_conv(b""), str) - assert isinstance(base_json_conv(b"\xff\xfe"), str) - assert base_json_conv(b"\xff") == "[bytes]" + assert isinstance(json.base_json_conv(np.bool_(1)), bool) + assert isinstance(json.base_json_conv(np.int64(1)), int) + assert isinstance(json.base_json_conv(np.array([1, 2, 3])), list) + assert json.base_json_conv(np.array(None)) is None + assert isinstance(json.base_json_conv({1}), list) + assert isinstance(json.base_json_conv(Decimal("1.0")), float) + assert isinstance(json.base_json_conv(uuid.uuid4()), str) + assert isinstance(json.base_json_conv(time()), str) + assert isinstance(json.base_json_conv(timedelta(0)), str) + assert isinstance(json.base_json_conv(b""), str) + assert isinstance(json.base_json_conv(b"\xff\xfe"), str) + assert json.base_json_conv(b"\xff") == "[bytes]" with pytest.raises(TypeError): - base_json_conv(np.datetime64()) + json.base_json_conv(np.datetime64()) def test_zlib_compression(self): json_str = '{"test": 1}' @@ -574,24 +567,26 @@ def test_merge_request_params_when_url_params_predefined(self): ) def test_format_timedelta(self): - self.assertEqual(format_timedelta(timedelta(0)), "0:00:00") - self.assertEqual(format_timedelta(timedelta(days=1)), "1 day, 0:00:00") - self.assertEqual(format_timedelta(timedelta(minutes=-6)), "-0:06:00") + self.assertEqual(json.format_timedelta(timedelta(0)), "0:00:00") + self.assertEqual(json.format_timedelta(timedelta(days=1)), "1 day, 0:00:00") + self.assertEqual(json.format_timedelta(timedelta(minutes=-6)), "-0:06:00") self.assertEqual( - format_timedelta(timedelta(0) - timedelta(days=1, hours=5, minutes=6)), + json.format_timedelta(timedelta(0) - timedelta(days=1, hours=5, minutes=6)), "-1 day, 5:06:00", ) self.assertEqual( - format_timedelta(timedelta(0) - timedelta(days=16, hours=4, minutes=3)), + json.format_timedelta( + timedelta(0) - timedelta(days=16, hours=4, minutes=3) + ), "-16 days, 4:03:00", ) def test_validate_json(self): valid = '{"a": 5, "b": [1, 5, ["g", "h"]]}' - self.assertIsNone(validate_json(valid)) + self.assertIsNone(json.validate_json(valid)) invalid = '{"a": 5, "b": [1, 5, ["g", "h]]}' - with self.assertRaises(SupersetException): - validate_json(invalid) + with self.assertRaises(json.JSONDecodeError): + json.validate_json(invalid) def test_convert_legacy_filters_into_adhoc_where(self): form_data = {"where": "a = 1"} diff --git a/tests/unit_tests/charts/commands/importers/v1/utils_test.py b/tests/unit_tests/charts/commands/importers/v1/utils_test.py index de3f805d8bdcf..754742e0dcaaa 100644 --- a/tests/unit_tests/charts/commands/importers/v1/utils_test.py +++ b/tests/unit_tests/charts/commands/importers/v1/utils_test.py @@ -15,9 +15,8 @@ # specific language governing permissions and limitations # under the License. -import json - from superset.commands.chart.importers.v1.utils import migrate_chart +from superset.utils import json def test_migrate_chart_area() -> None: diff --git a/tests/unit_tests/databases/api_test.py b/tests/unit_tests/databases/api_test.py index 86c20935d7979..43bc085405dfa 100644 --- a/tests/unit_tests/databases/api_test.py +++ b/tests/unit_tests/databases/api_test.py @@ -19,7 +19,6 @@ from __future__ import annotations -import json from datetime import datetime from io import BytesIO from typing import Any @@ -41,6 +40,7 @@ from superset.errors import ErrorLevel, SupersetError, SupersetErrorType from superset.exceptions import SupersetSecurityException from superset.sql_parse import Table +from superset.utils import json from tests.unit_tests.fixtures.common import ( create_columnar_file, create_csv_file, diff --git a/tests/unit_tests/databases/commands/importers/v1/import_test.py b/tests/unit_tests/databases/commands/importers/v1/import_test.py index ad18f0157cb6a..bf1237cd9e417 100644 --- a/tests/unit_tests/databases/commands/importers/v1/import_test.py +++ b/tests/unit_tests/databases/commands/importers/v1/import_test.py @@ -17,7 +17,6 @@ # pylint: disable=unused-argument, import-outside-toplevel, invalid-name import copy -import json import pytest from pytest_mock import MockFixture @@ -25,6 +24,7 @@ from superset import db from superset.commands.exceptions import ImportFailedError +from superset.utils import json def test_import_database(mocker: MockFixture, session: Session) -> None: diff --git a/tests/unit_tests/datasets/commands/export_test.py b/tests/unit_tests/datasets/commands/export_test.py index 9104e5b76ebd3..0dc01ed3e92ad 100644 --- a/tests/unit_tests/datasets/commands/export_test.py +++ b/tests/unit_tests/datasets/commands/export_test.py @@ -16,11 +16,10 @@ # under the License. # pylint: disable=import-outside-toplevel, unused-argument, unused-import -import json - from sqlalchemy.orm.session import Session from superset import db +from superset.utils import json def test_export(session: Session) -> None: diff --git a/tests/unit_tests/datasets/commands/importers/v1/import_test.py b/tests/unit_tests/datasets/commands/importers/v1/import_test.py index 6c306007d38fe..97fef4866fc55 100644 --- a/tests/unit_tests/datasets/commands/importers/v1/import_test.py +++ b/tests/unit_tests/datasets/commands/importers/v1/import_test.py @@ -17,7 +17,6 @@ # pylint: disable=import-outside-toplevel, unused-argument, unused-import, invalid-name import copy -import json import re import uuid from typing import Any @@ -33,6 +32,7 @@ DatasetForbiddenDataURI, ) from superset.commands.dataset.importers.v1.utils import validate_data_uri +from superset.utils import json def test_import_dataset(mocker: MockFixture, session: Session) -> None: diff --git a/tests/unit_tests/db_engine_specs/test_bigquery.py b/tests/unit_tests/db_engine_specs/test_bigquery.py index 13eecda09c760..b96c92f328cc8 100644 --- a/tests/unit_tests/db_engine_specs/test_bigquery.py +++ b/tests/unit_tests/db_engine_specs/test_bigquery.py @@ -17,7 +17,6 @@ # pylint: disable=line-too-long, import-outside-toplevel, protected-access, invalid-name -import json from datetime import datetime from typing import Optional @@ -30,6 +29,7 @@ from superset.sql_parse import Table from superset.superset_typing import ResultSetColumnType +from superset.utils import json from tests.unit_tests.db_engine_specs.utils import assert_convert_dttm from tests.unit_tests.fixtures.common import dttm # noqa: F401 diff --git a/tests/unit_tests/db_engine_specs/test_databricks.py b/tests/unit_tests/db_engine_specs/test_databricks.py index 204faed445356..77d7313dc7532 100644 --- a/tests/unit_tests/db_engine_specs/test_databricks.py +++ b/tests/unit_tests/db_engine_specs/test_databricks.py @@ -16,7 +16,6 @@ # under the License. # pylint: disable=unused-argument, import-outside-toplevel, protected-access -import json from datetime import datetime from typing import Optional @@ -25,6 +24,7 @@ from superset.db_engine_specs.databricks import DatabricksNativeEngineSpec from superset.errors import ErrorLevel, SupersetError, SupersetErrorType +from superset.utils import json from tests.unit_tests.db_engine_specs.utils import assert_convert_dttm from tests.unit_tests.fixtures.common import dttm # noqa: F401 diff --git a/tests/unit_tests/db_engine_specs/test_duckdb.py b/tests/unit_tests/db_engine_specs/test_duckdb.py index 37b8dd007472f..7fc3416c81aed 100644 --- a/tests/unit_tests/db_engine_specs/test_duckdb.py +++ b/tests/unit_tests/db_engine_specs/test_duckdb.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. -import json from datetime import datetime from typing import Optional @@ -23,6 +22,7 @@ from pytest_mock import MockerFixture from superset.config import VERSION_STRING +from superset.utils import json from tests.unit_tests.db_engine_specs.utils import assert_convert_dttm from tests.unit_tests.fixtures.common import dttm # noqa: F401 diff --git a/tests/unit_tests/db_engine_specs/test_gsheets.py b/tests/unit_tests/db_engine_specs/test_gsheets.py index b3d754a24ecf0..caa5414f9c10d 100644 --- a/tests/unit_tests/db_engine_specs/test_gsheets.py +++ b/tests/unit_tests/db_engine_specs/test_gsheets.py @@ -17,7 +17,6 @@ # pylint: disable=import-outside-toplevel, invalid-name, line-too-long -import json from typing import TYPE_CHECKING from urllib.parse import parse_qs, urlparse @@ -30,6 +29,7 @@ from superset.exceptions import SupersetException from superset.sql_parse import Table from superset.superset_typing import OAuth2ClientConfig +from superset.utils import json from superset.utils.oauth2 import decode_oauth2_state if TYPE_CHECKING: diff --git a/tests/unit_tests/db_engine_specs/test_snowflake.py b/tests/unit_tests/db_engine_specs/test_snowflake.py index dbbd58f000202..67ac88f69578b 100644 --- a/tests/unit_tests/db_engine_specs/test_snowflake.py +++ b/tests/unit_tests/db_engine_specs/test_snowflake.py @@ -17,7 +17,6 @@ # pylint: disable=import-outside-toplevel -import json from datetime import datetime from typing import Optional from unittest import mock @@ -27,6 +26,7 @@ from sqlalchemy.engine.url import make_url from superset.errors import ErrorLevel, SupersetError, SupersetErrorType +from superset.utils import json from tests.unit_tests.db_engine_specs.utils import assert_convert_dttm from tests.unit_tests.fixtures.common import dttm # noqa: F401 diff --git a/tests/unit_tests/db_engine_specs/test_trino.py b/tests/unit_tests/db_engine_specs/test_trino.py index c783780a45114..88608f1e387b0 100644 --- a/tests/unit_tests/db_engine_specs/test_trino.py +++ b/tests/unit_tests/db_engine_specs/test_trino.py @@ -16,7 +16,6 @@ # under the License. # pylint: disable=unused-argument, import-outside-toplevel, protected-access import copy -import json from datetime import datetime from typing import Any, Optional from unittest.mock import MagicMock, Mock, patch @@ -41,6 +40,7 @@ ) from superset.sql_parse import Table from superset.superset_typing import ResultSetColumnType, SQLAColumnType, SQLType +from superset.utils import json from superset.utils.core import GenericDataType from tests.unit_tests.db_engine_specs.utils import ( assert_column_spec, diff --git a/tests/unit_tests/importexport/api_test.py b/tests/unit_tests/importexport/api_test.py index ddbe8e285132b..f5443450ff4b3 100644 --- a/tests/unit_tests/importexport/api_test.py +++ b/tests/unit_tests/importexport/api_test.py @@ -17,7 +17,6 @@ # pylint: disable=invalid-name, import-outside-toplevel, unused-argument -import json from io import BytesIO from pathlib import Path from typing import Any @@ -26,6 +25,7 @@ from pytest_mock import MockFixture from superset import security_manager +from superset.utils import json def test_export_assets( diff --git a/tests/unit_tests/jinja_context_test.py b/tests/unit_tests/jinja_context_test.py index 441104c424abf..b53b3537eac8f 100644 --- a/tests/unit_tests/jinja_context_test.py +++ b/tests/unit_tests/jinja_context_test.py @@ -16,7 +16,6 @@ # under the License. # pylint: disable=invalid-name, unused-argument -import json from typing import Any import pytest @@ -37,6 +36,7 @@ ) from superset.models.core import Database from superset.models.slice import Slice +from superset.utils import json def test_filter_values_adhoc_filters() -> None: diff --git a/tests/unit_tests/migrations/viz/utils.py b/tests/unit_tests/migrations/viz/utils.py index 9da90c853fe19..d8eeb833e53d2 100644 --- a/tests/unit_tests/migrations/viz/utils.py +++ b/tests/unit_tests/migrations/viz/utils.py @@ -14,10 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json from typing import Any from superset.migrations.shared.migrate_viz import MigrateViz +from superset.utils import json TIMESERIES_SOURCE_FORM_DATA: dict[str, Any] = { "bottom_margin": 20, diff --git a/tests/unit_tests/models/core_test.py b/tests/unit_tests/models/core_test.py index 5ee521fc0a3d4..e653eee716168 100644 --- a/tests/unit_tests/models/core_test.py +++ b/tests/unit_tests/models/core_test.py @@ -16,7 +16,6 @@ # under the License. # pylint: disable=import-outside-toplevel -import json from datetime import datetime import pytest @@ -26,6 +25,7 @@ from superset.connectors.sqla.models import SqlaTable, TableColumn from superset.models.core import Database from superset.sql_parse import Table +from superset.utils import json def test_get_metrics(mocker: MockFixture) -> None: diff --git a/tests/unit_tests/queries/dao_test.py b/tests/unit_tests/queries/dao_test.py index dbca78a9d3d61..3d882cefbf832 100644 --- a/tests/unit_tests/queries/dao_test.py +++ b/tests/unit_tests/queries/dao_test.py @@ -14,7 +14,7 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import json +from superset.utils import json def test_column_attributes_on_query(): diff --git a/tests/unit_tests/utils/json_tests.py b/tests/unit_tests/utils/json_tests.py index a3d0a6d9d9ed9..2eb7f7c2a8d17 100644 --- a/tests/unit_tests/utils/json_tests.py +++ b/tests/unit_tests/utils/json_tests.py @@ -15,30 +15,64 @@ # specific language governing permissions and limitations # under the License. import datetime -import json +import math from unittest.mock import MagicMock import pytest -from superset.exceptions import SupersetException -from superset.utils.json import ( - dumps, - json_iso_dttm_ser, - pessimistic_json_iso_dttm_ser, - validate_json, -) +from superset.utils import json + + +def test_json_loads(): + serialized_data = ( + '{"str": "Hello World", "int": 123456789, "float": 0.12345, "bool": true}' + ) + data = json.loads(serialized_data) + assert data["str"] == "Hello World" + assert data["int"] == 123456789 + assert data["float"] == 0.12345 + assert data["bool"] is True + + +def test_json_loads_exception(): + invalid = '{"a": 5, "b": [1, 5, ["g", "h]]}' + with pytest.raises(json.JSONDecodeError) as excinfo: + json.loads(invalid) + assert ( + str(excinfo.value) + == "Unterminated string starting at: line 1 column 28 (char 27)" + ) + + +def test_json_loads_encoding(): + unicode_data = b'{"a": "\u0073\u0074\u0072"}' + data = json.loads(unicode_data) + assert data["a"] == "str" + utf16_data = b'\xff\xfe{\x00"\x00a\x00"\x00:\x00 \x00"\x00s\x00t\x00r\x00"\x00}\x00' + data = json.loads(utf16_data, encoding="utf-16") + assert data["a"] == "str" + + +def test_json_loads_allow_nan(): + serialized_data = '{"float": NaN}' + with pytest.raises(json.JSONDecodeError) as excinfo: + json.loads(serialized_data) + assert str(excinfo.value) == "Expecting value: line 1 column 11 (char 10)" + data = json.loads(serialized_data, allow_nan=True) + assert isinstance(data, object) + assert math.isnan(data["float"]) is True def test_json_dumps(): data = { - "str": "some string", + "str": "Hello World", "int": 123456789, "float": 0.12345, "bool": True, } - json_str = dumps(data, default=pessimistic_json_iso_dttm_ser) + json_str = json.dumps(data, default=json.pessimistic_json_iso_dttm_ser) reloaded_data = json.loads(json_str) - assert reloaded_data["str"] == "some string" + assert reloaded_data["str"] == "Hello World" assert reloaded_data["int"] == 123456789 assert reloaded_data["float"] == 0.12345 assert reloaded_data["bool"] is True @@ -50,7 +84,7 @@ def test_json_dumps_encoding(): "utf16": b"\xff\xfeH\x00e\x00l\x00l\x00o\x00 \x00W\x00o\x00r\x00l\x00d\x00", "bytes": b"\xff", } - json_str = dumps(data, default=pessimistic_json_iso_dttm_ser) + json_str = json.dumps(data, default=json.pessimistic_json_iso_dttm_ser) reloaded_data = json.loads(json_str) assert reloaded_data["utf8"] == "Hello World" assert reloaded_data["utf16"] == "Hello World" @@ -62,7 +96,7 @@ def test_json_iso_dttm_ser(): "datetime": datetime.datetime(2021, 1, 1, 0, 0, 0), "date": datetime.date(2021, 1, 1), } - json_str = json.dumps(data, default=json_iso_dttm_ser) + json_str = json.dumps(data, default=json.json_iso_dttm_ser) reloaded_data = json.loads(json_str) assert reloaded_data["datetime"] == "2021-01-01T00:00:00" assert reloaded_data["date"] == "2021-01-01" @@ -72,16 +106,14 @@ def test_pessimistic_json_iso_dttm_ser(): data = { "datetime": datetime.datetime(2021, 1, 1, 0, 0, 0), "date": datetime.date(2021, 1, 1), - "UNSERIALIZABLE": MagicMock(), } - json_str = json.dumps(data, default=pessimistic_json_iso_dttm_ser) + json_str = json.dumps(data, default=json.pessimistic_json_iso_dttm_ser) reloaded_data = json.loads(json_str) assert reloaded_data["datetime"] == "2021-01-01T00:00:00" assert reloaded_data["date"] == "2021-01-01" - assert ( - reloaded_data["UNSERIALIZABLE"] - == "Unserializable []" - ) + with pytest.raises(TypeError) as excinfo: + json.dumps({"UNSERIALIZABLE": MagicMock()}) + assert str(excinfo.value) == "_asdict() must return a dict, not MagicMock" def test_pessimistic_json_iso_dttm_ser_nonutf8(): @@ -89,7 +121,7 @@ def test_pessimistic_json_iso_dttm_ser_nonutf8(): "INVALID_UTF8_BYTES": b"\xff", } assert isinstance(data["INVALID_UTF8_BYTES"], bytes) - json_str = json.dumps(data, default=pessimistic_json_iso_dttm_ser) + json_str = json.dumps(data, default=json.pessimistic_json_iso_dttm_ser) reloaded_data = json.loads(json_str) assert reloaded_data["INVALID_UTF8_BYTES"] == "[bytes]" @@ -99,16 +131,18 @@ def test_pessimistic_json_iso_dttm_ser_utf16(): "VALID_UTF16_BYTES": b"\xff\xfeS0\x930k0a0o0\x16NLu", } assert isinstance(data["VALID_UTF16_BYTES"], bytes) - json_str = json.dumps(data, default=pessimistic_json_iso_dttm_ser) + json_str = json.dumps(data, default=json.pessimistic_json_iso_dttm_ser) reloaded_data = json.loads(json_str) assert reloaded_data["VALID_UTF16_BYTES"] == "こんにちは世界" def test_validate_json(): valid = '{"a": 5, "b": [1, 5, ["g", "h"]]}' - assert validate_json(valid) is None - + assert json.validate_json(valid) is None invalid = '{"a": 5, "b": [1, 5, ["g", "h]]}' - with pytest.raises(SupersetException) as excinfo: - validate_json(invalid) - assert str(excinfo.value) == "JSON is not valid" + with pytest.raises(json.JSONDecodeError) as excinfo: + json.validate_json(invalid) + assert ( + str(excinfo.value) + == "Unterminated string starting at: line 1 column 28 (char 27)" + ) From 6575cacc5d1cc59c7cacd9e186a1d05e76259183 Mon Sep 17 00:00:00 2001 From: SkinnyPigeon Date: Wed, 29 May 2024 03:03:42 +0200 Subject: [PATCH 54/60] feat(reports): allowing the email mutator to update recipients (#27851) --- superset/utils/core.py | 6 ++++++ tests/integration_tests/email_tests.py | 30 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/superset/utils/core.py b/superset/utils/core.py index 37a11ea7ff592..0e485d749c369 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -714,6 +714,7 @@ def send_email_smtp( # pylint: disable=invalid-name,too-many-arguments,too-many msg["CC"] = ", ".join(smtp_mail_cc) recipients = recipients + smtp_mail_cc + smtp_mail_bcc = [] if bcc: # don't add bcc in header smtp_mail_bcc = get_email_address_list(bcc) @@ -764,6 +765,11 @@ def send_email_smtp( # pylint: disable=invalid-name,too-many-arguments,too-many msg_mutator = config["EMAIL_HEADER_MUTATOR"] # the base notification returns the message without any editing. new_msg = msg_mutator(msg, **(header_data or {})) + new_to = new_msg["To"].split(", ") if "To" in new_msg else [] + new_cc = new_msg["Cc"].split(", ") if "Cc" in new_msg else [] + new_recipients = new_to + new_cc + smtp_mail_bcc + if set(new_recipients) != set(recipients): + recipients = new_recipients send_mime_email(smtp_mail_from, recipients, new_msg, config, dryrun=dryrun) diff --git a/tests/integration_tests/email_tests.py b/tests/integration_tests/email_tests.py index c8bc137062af9..12c2fc676b01e 100644 --- a/tests/integration_tests/email_tests.py +++ b/tests/integration_tests/email_tests.py @@ -90,6 +90,36 @@ def mutator(msg, **kwargs): assert msg.get_payload()[-1].get_payload() == mimeapp.get_payload() app.config["EMAIL_HEADER_MUTATOR"] = base_email_mutator + @mock.patch("superset.utils.core.send_mime_email") + def test_send_smtp_with_email_mutator_changing_recipients(self, mock_send_mime): + attachment = tempfile.NamedTemporaryFile() + attachment.write(b"attachment") + attachment.seek(0) + + # putting this into a variable so that we can reset after the test + base_email_mutator = app.config["EMAIL_HEADER_MUTATOR"] + + def mutator(msg, **kwargs): + msg.replace_header("To", "mutated") + return msg + + app.config["EMAIL_HEADER_MUTATOR"] = mutator + utils.send_email_smtp( + "to", "subject", "content", app.config, files=[attachment.name] + ) + assert mock_send_mime.called + call_args = mock_send_mime.call_args[0] + logger.debug(call_args) + assert call_args[0] == app.config["SMTP_MAIL_FROM"] + assert call_args[1] == ["mutated"] + msg = call_args[2] + assert msg["Subject"] == "subject" + assert msg["From"] == app.config["SMTP_MAIL_FROM"] + assert len(msg.get_payload()) == 2 + mimeapp = MIMEApplication("attachment") + assert msg.get_payload()[-1].get_payload() == mimeapp.get_payload() + app.config["EMAIL_HEADER_MUTATOR"] = base_email_mutator + @mock.patch("superset.utils.core.send_mime_email") def test_send_smtp_data(self, mock_send_mime): utils.send_email_smtp( From 5dfbab542422e6f68b020bc0bccf41caa3e1f248 Mon Sep 17 00:00:00 2001 From: Daniel Vaz Gaspar Date: Wed, 29 May 2024 10:51:28 +0100 Subject: [PATCH 55/60] fix: adds the ability to disallow SQL functions per engine (#28639) --- superset/config.py | 9 ++++ superset/db_engine_specs/base.py | 7 +++- superset/db_engine_specs/trino.py | 11 +++-- superset/exceptions.py | 15 +++++++ superset/sql_parse.py | 42 +++++++++++++++++++ .../unit_tests/db_engine_specs/test_trino.py | 24 ++++++----- tests/unit_tests/sql_parse_tests.py | 26 ++++++++++++ 7 files changed, 119 insertions(+), 15 deletions(-) diff --git a/superset/config.py b/superset/config.py index 3c92354322a1a..aa8178d086f91 100644 --- a/superset/config.py +++ b/superset/config.py @@ -1227,6 +1227,15 @@ def CSV_TO_HIVE_UPLOAD_DIRECTORY_FUNC( # pylint: disable=invalid-name # DB_SQLA_URI_VALIDATOR: Callable[[URL], None] | None = None +# A set of disallowed SQL functions per engine. This is used to restrict the use of +# unsafe SQL functions in SQL Lab and Charts. The keys of the dictionary are the engine +# names, and the values are sets of disallowed functions. +DISALLOWED_SQL_FUNCTIONS: dict[str, set[str]] = { + "postgresql": {"version", "query_to_xml", "inet_server_addr", "inet_client_addr"}, + "clickhouse": {"url"}, + "mysql": {"version"}, +} + # A function that intercepts the SQL to be executed and can alter it. # A common use case for this is around adding some sort of comment header to the SQL diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py index 6df0dc61aaa61..548fb390d8f89 100644 --- a/superset/db_engine_specs/base.py +++ b/superset/db_engine_specs/base.py @@ -62,7 +62,7 @@ from superset.constants import TimeGrain as TimeGrainConstants from superset.databases.utils import get_table_metadata, make_url_safe from superset.errors import ErrorLevel, SupersetError, SupersetErrorType -from superset.exceptions import OAuth2Error, OAuth2RedirectError +from superset.exceptions import DisallowedSQLFunction, OAuth2Error, OAuth2RedirectError from superset.sql_parse import ParsedQuery, SQLScript, Table from superset.superset_typing import ( OAuth2ClientConfig, @@ -1818,6 +1818,11 @@ def execute( # pylint: disable=unused-argument """ if not cls.allows_sql_comments: query = sql_parse.strip_comments_from_sql(query, engine=cls.engine) + disallowed_functions = current_app.config["DISALLOWED_SQL_FUNCTIONS"].get( + cls.engine, set() + ) + if sql_parse.check_sql_functions_exist(query, disallowed_functions, cls.engine): + raise DisallowedSQLFunction(disallowed_functions) if cls.arraysize: cursor.arraysize = cls.arraysize diff --git a/superset/db_engine_specs/trino.py b/superset/db_engine_specs/trino.py index eea00877d9fe9..600f236b487c9 100644 --- a/superset/db_engine_specs/trino.py +++ b/superset/db_engine_specs/trino.py @@ -22,7 +22,7 @@ import time from typing import Any, TYPE_CHECKING -from flask import current_app +from flask import current_app, Flask from sqlalchemy.engine.reflection import Inspector from sqlalchemy.engine.url import URL from sqlalchemy.exc import NoSuchTableError @@ -218,11 +218,14 @@ def execute_with_cursor( execute_result: dict[str, Any] = {} execute_event = threading.Event() - def _execute(results: dict[str, Any], event: threading.Event) -> None: + def _execute( + results: dict[str, Any], event: threading.Event, app: Flask + ) -> None: logger.debug("Query %d: Running query: %s", query_id, sql) try: - cls.execute(cursor, sql, query.database) + with app.app_context(): + cls.execute(cursor, sql, query.database) except Exception as ex: # pylint: disable=broad-except results["error"] = ex finally: @@ -230,7 +233,7 @@ def _execute(results: dict[str, Any], event: threading.Event) -> None: execute_thread = threading.Thread( target=_execute, - args=(execute_result, execute_event), + args=(execute_result, execute_event, current_app._get_current_object()), # pylint: disable=protected-access ) execute_thread.start() diff --git a/superset/exceptions.py b/superset/exceptions.py index 0315ee30f4f44..47cd511f8f209 100644 --- a/superset/exceptions.py +++ b/superset/exceptions.py @@ -358,6 +358,21 @@ def __init__(self, error: str): ) +class DisallowedSQLFunction(SupersetErrorException): + """ + Disallowed function found on SQL statement + """ + + def __init__(self, functions: set[str]): + super().__init__( + SupersetError( + message=f"SQL statement contains disallowed function(s): {functions}", + error_type=SupersetErrorType.SYNTAX_ERROR, + level=ErrorLevel.ERROR, + ) + ) + + class CreateKeyValueDistributedLockFailedException(Exception): """ Exception to signalize failure to acquire lock. diff --git a/superset/sql_parse.py b/superset/sql_parse.py index f32647042b0aa..192a998c3fbdc 100644 --- a/superset/sql_parse.py +++ b/superset/sql_parse.py @@ -39,6 +39,7 @@ from sqlparse import keywords from sqlparse.lexer import Lexer from sqlparse.sql import ( + Function, Identifier, IdentifierList, Parenthesis, @@ -223,6 +224,19 @@ def get_cte_remainder_query(sql: str) -> tuple[str | None, str]: return cte, remainder +def check_sql_functions_exist( + sql: str, function_list: set[str], engine: str | None = None +) -> bool: + """ + Check if the SQL statement contains any of the specified functions. + + :param sql: The SQL statement + :param function_list: The list of functions to search for + :param engine: The engine to use for parsing the SQL statement + """ + return ParsedQuery(sql, engine=engine).check_functions_exist(function_list) + + def strip_comments_from_sql(statement: str, engine: str | None = None) -> str: """ Strips comments from a SQL statement, does a simple test first @@ -743,6 +757,34 @@ def tables(self) -> set[Table]: self._tables = self._extract_tables_from_sql() return self._tables + def _check_functions_exist_in_token( + self, token: Token, functions: set[str] + ) -> bool: + if ( + isinstance(token, Function) + and token.get_name() is not None + and token.get_name().lower() in functions + ): + return True + if hasattr(token, "tokens"): + for inner_token in token.tokens: + if self._check_functions_exist_in_token(inner_token, functions): + return True + return False + + def check_functions_exist(self, functions: set[str]) -> bool: + """ + Check if the SQL statement contains any of the specified functions. + + :param functions: A set of functions to search for + :return: True if the statement contains any of the specified functions + """ + for statement in self._parsed: + for token in statement.tokens: + if self._check_functions_exist_in_token(token, functions): + return True + return False + def _extract_tables_from_sql(self) -> set[Table]: """ Extract all table references in a query. diff --git a/tests/unit_tests/db_engine_specs/test_trino.py b/tests/unit_tests/db_engine_specs/test_trino.py index 88608f1e387b0..3a2ac91ad623f 100644 --- a/tests/unit_tests/db_engine_specs/test_trino.py +++ b/tests/unit_tests/db_engine_specs/test_trino.py @@ -401,7 +401,7 @@ def test_handle_cursor_early_cancel( assert cancel_query_mock.call_args is None -def test_execute_with_cursor_in_parallel(mocker: MockerFixture): +def test_execute_with_cursor_in_parallel(app, mocker: MockerFixture): """Test that `execute_with_cursor` fetches query ID from the cursor""" from superset.db_engine_specs.trino import TrinoEngineSpec @@ -416,16 +416,20 @@ def _mock_execute(*args, **kwargs): mock_cursor.query_id = query_id mock_cursor.execute.side_effect = _mock_execute + with patch.dict( + "superset.config.DISALLOWED_SQL_FUNCTIONS", + {}, + clear=True, + ): + TrinoEngineSpec.execute_with_cursor( + cursor=mock_cursor, + sql="SELECT 1 FROM foo", + query=mock_query, + ) - TrinoEngineSpec.execute_with_cursor( - cursor=mock_cursor, - sql="SELECT 1 FROM foo", - query=mock_query, - ) - - mock_query.set_extra_json_key.assert_called_once_with( - key=QUERY_CANCEL_KEY, value=query_id - ) + mock_query.set_extra_json_key.assert_called_once_with( + key=QUERY_CANCEL_KEY, value=query_id + ) def test_get_columns(mocker: MockerFixture): diff --git a/tests/unit_tests/sql_parse_tests.py b/tests/unit_tests/sql_parse_tests.py index 3b80b7e01d1ac..6259d6272db6d 100644 --- a/tests/unit_tests/sql_parse_tests.py +++ b/tests/unit_tests/sql_parse_tests.py @@ -32,6 +32,7 @@ ) from superset.sql_parse import ( add_table_name, + check_sql_functions_exist, extract_table_references, extract_tables_from_jinja_sql, get_rls_for_table, @@ -1215,6 +1216,31 @@ def test_strip_comments_from_sql() -> None: ) +def test_check_sql_functions_exist() -> None: + """ + Test that comments are stripped out correctly. + """ + assert not ( + check_sql_functions_exist("select a, b from version", {"version"}, "postgresql") + ) + + assert check_sql_functions_exist("select version()", {"version"}, "postgresql") + + assert check_sql_functions_exist( + "select version from version()", {"version"}, "postgresql" + ) + + assert check_sql_functions_exist( + "select 1, a.version from (select version from version()) as a", + {"version"}, + "postgresql", + ) + + assert check_sql_functions_exist( + "select 1, a.version from (select version()) as a", {"version"}, "postgresql" + ) + + def test_sanitize_clause_valid(): # regular clauses assert sanitize_clause("col = 1") == "col = 1" From f0662475ad665d088ebcb1b9548ed28857846dc5 Mon Sep 17 00:00:00 2001 From: Seboeb <31070593+Seboeb@users.noreply.github.com> Date: Wed, 29 May 2024 19:25:05 +0200 Subject: [PATCH 56/60] chore: updated Dutch translations (#28710) Co-authored-by: Maxime Beauchemin --- .../translations/nl/LC_MESSAGES/messages.json | 13772 ++++++++++++---- .../translations/nl/LC_MESSAGES/messages.po | 6435 ++++---- 2 files changed, 13759 insertions(+), 6448 deletions(-) diff --git a/superset/translations/nl/LC_MESSAGES/messages.json b/superset/translations/nl/LC_MESSAGES/messages.json index f8bf17b32e32b..30c7676f2eeb3 100644 --- a/superset/translations/nl/LC_MESSAGES/messages.json +++ b/superset/translations/nl/LC_MESSAGES/messages.json @@ -2,7 +2,9 @@ "domain": "superset", "locale_data": { "superset": { - "22": [""], + "22": [ + "22" + ], "": { "domain": "superset", "plural_forms": "nplurals=2; plural=(n != 1)", @@ -18,7 +20,7 @@ "De database gaf een onverwachte foutmelding." ], "There is a syntax error in the SQL query. Perhaps there was a misspelling or a typo.": [ - "" + "Er is een syntax fout in de SQL query. Misschien was er een spelling of een typo." ], "The column was deleted or renamed in the database.": [ "De kolom werd verwijderd of hernoemd in de database." @@ -32,22 +34,30 @@ "The hostname provided can't be resolved.": [ "De opgegeven hostnaam kan niet worden gevonden." ], - "The port is closed.": ["De poort is gesloten."], + "The port is closed.": [ + "De poort is gesloten." + ], "The host might be down, and can't be reached on the provided port.": [ - "" + "De host is mogelijk niet beschikbaar en kan niet worden bereikt op de opgegeven poort." ], "Superset encountered an error while running a command.": [ - "een fout is opgetreden in Superset tijdens het uitvoeren van een commando." + "Een fout is opgetreden in Superset tijdens het uitvoeren van een commando." ], "Superset encountered an unexpected error.": [ "Er is een onverwachte fout opgetreden in Superset." ], - "The username provided when connecting to a database is not valid.": [""], - "The password provided when connecting to a database is not valid.": [""], + "The username provided when connecting to a database is not valid.": [ + "De opgegeven gebruikersnaam tijdens het verbinden met een database is niet geldig." + ], + "The password provided when connecting to a database is not valid.": [ + "Het opgegeven wachtwoord bij het verbinden met een database is niet geldig." + ], "Either the username or the password is wrong.": [ "Ofwel is de gebruikersnaam ofwel het wachtwoord verkeerd." ], - "Either the database is spelled incorrectly or does not exist.": [""], + "Either the database is spelled incorrectly or does not exist.": [ + "Of de database is onjuist gespeld of bestaat niet." + ], "The schema was deleted or renamed in the database.": [ "Het schema werd verwijderd of hernoemd in de database." ], @@ -55,37 +65,80 @@ "Gebruiker heeft niet de juiste permissies." ], "One or more parameters needed to configure a database are missing.": [ - "" + "Er ontbreken een of meer parameters die nodig zijn om een database te configureren." + ], + "The submitted payload has the incorrect format.": [ + "De ingediende payload heeft een onjuist formaat." + ], + "The submitted payload has the incorrect schema.": [ + "De ingediende payload heeft een onjuist schema." ], - "The submitted payload has the incorrect format.": [""], - "The submitted payload has the incorrect schema.": [""], "Results backend needed for asynchronous queries is not configured.": [ - "" + "Resultaten die nodig zijn voor asynchrone query's zijn niet geconfigureerd." + ], + "Database does not allow data manipulation.": [ + "Database staat geen gegevensmanipulatie toe." ], - "Database does not allow data manipulation.": [""], "The CTAS (create table as select) doesn't have a SELECT statement at the end. Please make sure your query has a SELECT as its last statement. Then, try running your query again.": [ - "" + "De CTAS (create table as select) heeft geen SELECT instructie aan het einde. Zorg ervoor dat uw query als laatste verklaring een SELECT heeft. Probeer vervolgens uw zoekopdracht opnieuw uit te voeren." + ], + "CVAS (create view as select) query has more than one statement.": [ + "CVAS (create view as select) query heeft meer dan één instructie." + ], + "CVAS (create view as select) query is not a SELECT statement.": [ + "CVAS (create view as select) query is geen SELECT instructie." + ], + "Query is too complex and takes too long to run.": [ + "Query is te complex en duurt te lang om te werken." + ], + "The database is currently running too many queries.": [ + "De database draait momenteel te veel query's." + ], + "One or more parameters specified in the query are malformed.": [ + "Een of meer parameters die in de query zijn opgegeven zijn ongeldig." + ], + "The object does not exist in the given database.": [ + "Het object bestaat niet in de opgegeven database." + ], + "The query has a syntax error.": [ + "De query heeft een syntax fout." + ], + "The results backend no longer has the data from the query.": [ + "De resultaten backend heeft de gegevens van de query niet meer." + ], + "The query associated with the results was deleted.": [ + "De query die is gekoppeld aan de resultaten is verwijderd." ], - "CVAS (create view as select) query has more than one statement.": [""], - "CVAS (create view as select) query is not a SELECT statement.": [""], - "Query is too complex and takes too long to run.": [""], - "The database is currently running too many queries.": [""], - "The object does not exist in the given database.": [""], - "The query has a syntax error.": [""], - "The results backend no longer has the data from the query.": [""], - "The query associated with the results was deleted.": [""], "The results stored in the backend were stored in a different format, and no longer can be deserialized.": [ + "De resultaten in de backend werden opgeslagen in een ander formaat en kunnen niet langer gedeserialiseerd worden." + ], + "The port number is invalid.": [ + "Het poortnummer is ongeldig." + ], + "Failed to start remote query on a worker.": [ + "Het starten van externe query op een werker is mislukt." + ], + "The database was deleted.": [ + "De database is verwijderd." + ], + "Custom SQL fields cannot contain sub-queries.": [ + "Aangepaste SQL velden mogen geen sub-query's bevatten." + ], + "The submitted payload failed validation.": [ + "De ingezonden payload kon niet worden gevalideerd." + ], + "Invalid certificate": [ + "Ongeldig certificaat" + ], + "The schema of the submitted payload is invalid.": [ + "Het schema van de ingediende payload is ongeldig." + ], + "The SQL is invalid and cannot be parsed.": [ "" ], - "The port number is invalid.": [""], - "Failed to start remote query on a worker.": [""], - "The database was deleted.": [""], - "Custom SQL fields cannot contain sub-queries.": [""], - "The submitted payload failed validation.": [""], - "Invalid certificate": ["Ongeldig certificaat"], - "The schema of the submitted payload is invalid.": [""], - "The SQL is invalid and cannot be parsed.": [""], - "File size must be less than or equal to %(max_size)s bytes": [""], + "File size must be less than or equal to %(max_size)s bytes": [ + "Bestandsgrootte moet kleiner of gelijk zijn aan %(max_size)s bytes" + ], "Unsafe return type for function %(func)s: %(value_type)s": [ "Onveilig terugkeertype voor functie %(func)s: %(value_type)s" ], @@ -101,80 +154,138 @@ "Please specify the Dataset ID for the ``%(name)s`` metric in the Jinja macro.": [ "" ], - "Metric ``%(metric_name)s`` not found in %(dataset_name)s.": [""], - "Only SELECT statements are allowed against this database.": [""], - "The query was killed after %(sqllab_timeout)s seconds. It might be too complex, or the database might be under heavy load.": [ + "Metric ``%(metric_name)s`` not found in %(dataset_name)s.": [ "" ], - "Results backend is not configured.": [""], + "Only SELECT statements are allowed against this database.": [ + "Alleen SELECT statements zijn toegestaan tegen deze database." + ], + "The query was killed after %(sqllab_timeout)s seconds. It might be too complex, or the database might be under heavy load.": [ + "De zoekopdracht is afgesloten na %(sqllab_timeout)s seconden. Het is mogelijk te ingewikkeld of de database wordt mogelijk zwaar belast." + ], + "Results backend is not configured.": [ + "Resultaten backend is niet geconfigureerd." + ], "CTAS (create table as select) can only be run with a query where the last statement is a SELECT. Please make sure your query has a SELECT as its last statement. Then, try running your query again.": [ - "" + "CTAS (create table as select) kan alleen worden uitgevoerd met een query waarbij de laatste bewering een SELECT is. Zorg ervoor dat uw query als laatste verklaring een SELECT heeft. Probeer vervolgens uw zoekopdracht opnieuw uit te voeren." ], "CVAS (create view as select) can only be run with a query with a single SELECT statement. Please make sure your query has only a SELECT statement. Then, try running your query again.": [ + "CVAS (create view as select) kan alleen worden uitgevoerd met een query met een enkele SELECT instructie. Zorg ervoor dat uw query alleen een SELECT instructie heeft. Probeer vervolgens uw zoekopdracht opnieuw uit te voeren." + ], + "Running statement %(statement_num)s out of %(statement_count)s": [ + "Lopende verklaring %(statement_num)s van %(statement_count)s" + ], + "Statement %(statement_num)s out of %(statement_count)s": [ + "Verklaring %(statement_num)s van %(statement_count)s" + ], + "You may have an error in your SQL statement. {message}": [ "" ], - "Running statement %(statement_num)s out of %(statement_count)s": [""], - "Statement %(statement_num)s out of %(statement_count)s": [""], - "You may have an error in your SQL statement. {message}": [""], - "Viz is missing a datasource": ["Viz mist een gegevensbron"], + "Viz is missing a datasource": [ + "Viz mist een gegevensbron" + ], "Applied rolling window did not return any data. Please make sure the source query satisfies the minimum periods defined in the rolling window.": [ - "" + "Toegepast rol-venster heeft geen data teruggegeven. Zorg ervoor dat de bronquery voldoet aan de minimale termijnen die zijn gedefinieerd in het rolvenster." ], "From date cannot be larger than to date": [ "Van datum kan niet groter zijn dan tot datum" ], - "Cached value not found": ["Cached waarde niet gevonden"], + "Cached value not found": [ + "Cached waarde niet gevonden" + ], "Columns missing in datasource: %(invalid_columns)s": [ "Kolommen ontbreken in databron: %(invalid_columns)s" ], - "Time Table View": ["Tijd tabelweergave"], - "Pick at least one metric": ["Kies ten minste één meeteenheid"], + "Time Table View": [ + "Tijd tabelweergave" + ], + "Pick at least one metric": [ + "Kies ten minste één metriek" + ], "When using 'Group By' you are limited to use a single metric": [ - "Bij gebruik van ‘Group By’ bent u beperkt tot het gebruik van één meeteenheid" + "Bij gebruik van ‘Group By’ bent u beperkt tot het gebruik van één metriek" + ], + "Calendar Heatmap": [ + "Kalender Heatmap" + ], + "Bubble Chart": [ + "Bubbelgrafiek" ], - "Calendar Heatmap": ["Kalender Heatmap"], - "Bubble Chart": ["Bubbelgrafiek"], "Please use 3 different metric labels": [ - "Gelieve 3 verschillende meeteenheid labels te gebruiken" + "Gelieve 3 verschillende metrische labels te gebruiken" ], "Pick a metric for x, y and size": [ - "Kies een meeteenheid voor x, y en grootte" + "Kies een metriek voor x, y en grootte" + ], + "Bullet Chart": [ + "Kogel diagram" + ], + "Pick a metric to display": [ + "Kies een metriek om weer te geven" + ], + "Time Series - Line Chart": [ + "Tijdreeks - Lijngrafiek" ], - "Bullet Chart": ["Kogel diagram"], - "Pick a metric to display": ["Kies een meeteenheid om weer te geven"], - "Time Series - Line Chart": ["Tijdreeks - Lijngrafiek"], "An enclosed time range (both start and end) must be specified when using a Time Comparison.": [ - "" + "Een afgesloten tijdvenster (zowel start als einde) moet worden gespecificeerd bij het gebruik van een Tijdsvergelijking." + ], + "Time Series - Bar Chart": [ + "Tijdreeks - Staafdiagram" + ], + "Time Series - Period Pivot": [ + "Tijdreeksen - Periode draaitabel" + ], + "Time Series - Percent Change": [ + "Tijdreeks - Procentuele verandering" + ], + "Time Series - Stacked": [ + "Tijdreeksen - Gestapeld" + ], + "Histogram": [ + "Histogram" ], - "Time Series - Bar Chart": ["Tijdreeks - Staafdiagram"], - "Time Series - Period Pivot": ["Tijdreeksen - Periode draaitabel"], - "Time Series - Percent Change": ["Tijdreeks - Procentuele verandering"], - "Time Series - Stacked": ["Tijdreeksen - Gestapeld"], - "Histogram": ["Histogram"], "Must have at least one numeric column specified": [ "Er moet minstens één numerieke kolom gespecificeerd zijn" ], - "Distribution - Bar Chart": ["Verdeling - Staafdiagram"], + "Distribution - Bar Chart": [ + "Verdeling - Staafdiagram" + ], "Can't have overlap between Series and Breakdowns": [ "Overlapping tussen Series en Breakdowns is niet mogelijk" ], "Pick at least one field for [Series]": [ "Kies minstens één veld voor [Series]" ], - "Sankey": ["Sankey"], + "Sankey": [ + "Sankey" + ], "Pick exactly 2 columns as [Source / Target]": [ "Kies precies 2 kolommen als [Bron / Doel]" ], "There's a loop in your Sankey, please provide a tree. Here's a faulty link: {}": [ - "" + "Er is een lus in uw Sankey, geef een boomstructuur. Hier is een onjuiste link: {}" + ], + "Directed Force Layout": [ + "Directed Force Layout" + ], + "Country Map": [ + "Landenkaart" + ], + "World Map": [ + "Wereld kaart" + ], + "Parallel Coordinates": [ + "Parallelle coördinaten" + ], + "Heatmap": [ + "Heatmap" + ], + "Horizon Charts": [ + "Horizon-grafieken" + ], + "Mapbox": [ + "Kaartbox" ], - "Directed Force Layout": ["Directed Force Layout"], - "Country Map": ["Landenkaart"], - "World Map": ["Wereld kaart"], - "Parallel Coordinates": ["Parallelle coördinaten"], - "Heatmap": ["Heatmap"], - "Horizon Charts": ["Horizon-grafieken"], - "Mapbox": ["Mapbox"], "[Longitude] and [Latitude] must be set": [ "[Lengtegraad] en [Breedtegraad] moeten worden ingesteld" ], @@ -190,31 +301,73 @@ "[Longitude] and [Latitude] columns must be present in [Group By]": [ "Kolommen [Lengtegraad] en [Breedtegraad] moeten aanwezig zijn in [Groepen per]" ], - "Deck.gl - Multiple Layers": ["Deck.gl - Meerdere Lagen"], - "Bad spatial key": ["Ongeldige ruimtelijke sleutel"], + "Deck.gl - Multiple Layers": [ + "Deck.gl - Meerdere Lagen" + ], + "Bad spatial key": [ + "Ongeldige ruimtelijke sleutel" + ], + "Invalid spatial point encountered: %(latlong)s": [ + "Ongeldig ruimtelijke punt aangetroffen: %(latlong)s" + ], "Encountered invalid NULL spatial entry, please consider filtering those out": [ - "" + "Ongeldige NULL spatial invoer ingevoerd, overweeg om deze uit te filteren" + ], + "Deck.gl - Scatter plot": [ + "Deck.gl - Scatter plot" + ], + "Deck.gl - Screen Grid": [ + "Deck.gl - Screen Grid" + ], + "Deck.gl - 3D Grid": [ + "Deck.gl - 3D Grid" + ], + "Deck.gl - Paths": [ + "Deck.gl - Paths" + ], + "Deck.gl - Polygon": [ + "Deck.gl - Polygon" + ], + "Deck.gl - 3D HEX": [ + "Deck.gl - 3D HEX" + ], + "Deck.gl - Heatmap": [ + "Deck.gl - Heatmap" + ], + "Deck.gl - Contour": [ + "Deck.gl - Contour" + ], + "Deck.gl - GeoJSON": [ + "Deck.gl - GeoJSON" + ], + "Deck.gl - Arc": [ + "Deck.gl - Arc" + ], + "Event flow": [ + "Gebeurtenis stroom" + ], + "Time Series - Paired t-test": [ + "Tijdreeks - Paired t-test" ], - "Deck.gl - Scatter plot": ["Deck.gl - Scatter plot"], - "Deck.gl - Screen Grid": ["Deck.gl - Screen Grid"], - "Deck.gl - 3D Grid": ["Deck.gl - 3D Grid"], - "Deck.gl - Paths": ["Deck.gl - Paths"], - "Deck.gl - Polygon": ["Deck.gl - Polygon"], - "Deck.gl - 3D HEX": ["Deck.gl - 3D HEX"], - "Deck.gl - GeoJSON": ["Deck.gl - GeoJSON"], - "Deck.gl - Arc": ["Deck.gl - Arc"], - "Event flow": ["Event flow"], - "Time Series - Paired t-test": ["Tijdreeks - Paired t-test"], "Time Series - Nightingale Rose Chart": [ "Tijdreeks - Nightingale Rose grafiek" ], - "Partition Diagram": ["Partition Diagram"], - "Invalid advanced data type: %(advanced_data_type)s": [""], + "Partition Diagram": [ + "Verdeel Diagram" + ], + "Please choose at least one groupby": [ + "Kies ten minste één \"groep bij\"" + ], + "Invalid advanced data type: %(advanced_data_type)s": [ + "Ongeldig geavanceerd gegevenstype: %(advanced_data_type)s" + ], "Deleted %(num)d annotation layer": [ "%(num)d Aantekeningenlaag verwijderd", "%(num)d aantekeninglagen verwijderd" ], - "All Text": ["Alle tekst"], + "All Text": [ + "Alle tekst" + ], "Deleted %(num)d annotation": [ "%(num)d aantekening verwijderd", "%(num)d aantekeningen verwijderd" @@ -223,10 +376,24 @@ "Verwijderde %(num)d grafiek", "Verwijderde %(num)d grafieken" ], - "Is certified": [""], - "Owned Created or Favored": [""], - "Total (%(aggfunc)s)": [""], - "Subtotal": [""], + "Is certified": [ + "Is gecertificeerd" + ], + "Has created by": [ + "Is aangemaakt door" + ], + "Created by me": [ + "Gemaakt door mij" + ], + "Owned Created or Favored": [ + "Eigenaar Gemaakt of Favoriet" + ], + "Total (%(aggfunc)s)": [ + "Totaal (%(aggfunc)s)" + ], + "Subtotal": [ + "Subtotaal" + ], "`confidence_interval` must be between 0 and 1 (exclusive)": [ "`confidence_interval` moet tussen 0 en 1 liggen (exclusief)" ], @@ -234,7 +401,7 @@ "onderste percentiel moet groter zijn dan 0 en kleiner dan 100. Moet lager zijn dan het bovenste percentiel." ], "upper percentile must be greater than 0 and less than 100. Must be higher than lower percentile.": [ - "" + "bovenste percentiel moet groter zijn dan 0 en minder dan 100. Moet hoger zijn dan lager percentieel." ], "`width` must be greater or equal to 0": [ "`breedte` moet groter of gelijk zijn aan 0" @@ -245,14 +412,36 @@ "`row_offset` must be greater than or equal to 0": [ "`rij_offset` moet groter zijn dan of gelijk aan 0" ], - "orderby column must be populated": [""], - "Chart has no query context saved. Please save the chart again.": [""], - "Request is incorrect: %(error)s": ["Verzoek is onjuist: %(error)s"], - "Request is not JSON": ["Verzoek is geen JSON"], - "Empty query result": [""], - "Owners are invalid": ["Eigenaren zijn ongeldig"], - "Some roles do not exist": ["Sommige rollen bestaan niet"], - "Datasource type is invalid": [""], + "orderby column must be populated": [ + "sorteren op kolom moet worden ingevuld" + ], + "Chart has no query context saved. Please save the chart again.": [ + "De grafiek heeft geen query context opgeslagen. Sla de grafiek opnieuw op." + ], + "Request is incorrect: %(error)s": [ + "Verzoek is onjuist: %(error)s" + ], + "Request is not JSON": [ + "Verzoek is geen JSON" + ], + "Empty query result": [ + "Lege query resultaat" + ], + "Owners are invalid": [ + "Eigenaren zijn ongeldig" + ], + "Some roles do not exist": [ + "Sommige rollen bestaan niet" + ], + "Datasource type is invalid": [ + "Gegevensbron type is ongeldig" + ], + "Datasource does not exist": [ + "Gegevensbron bestaat niet" + ], + "Query does not exist": [ + "Query bestaat niet" + ], "Annotation layer parameters are invalid.": [ "De parameters van de aantekeningenlaag zijn ongeldig." ], @@ -262,18 +451,27 @@ "Annotation layer could not be updated.": [ "Aantekeningenlaag kon niet worden bijgewerkt." ], - "Annotation layer not found.": ["Aantekeningenlaag niet gevonden."], + "Annotation layer not found.": [ + "Aantekeningenlaag niet gevonden." + ], + "Annotation layers could not be deleted.": [ + "Annotatielagen konden niet verwijderd worden." + ], "Annotation layer has associated annotations.": [ "Aantekeningenlaag heeft bijbehorende aantekeningen." ], - "Name must be unique": ["De naam moet uniek zijn"], + "Name must be unique": [ + "De naam moet uniek zijn" + ], "End date must be after start date": [ "Einddatum moet na begindatum liggen" ], "Short description must be unique for this layer": [ "Korte beschrijving moet uniek zijn voor deze laag" ], - "Annotation not found.": ["Aantekening niet gevonden."], + "Annotation not found.": [ + "Aantekening niet gevonden." + ], "Annotation parameters are invalid.": [ "Aantekening parameters zijn ongeldig." ], @@ -286,42 +484,75 @@ "Annotations could not be deleted.": [ "Aantekeningen konden niet worden verwijderd." ], + "There are associated alerts or reports: %(report_names)s": [ + "Er zijn bijbehorende meldingen of rapporten: %(report_names)s" + ], "Time string is ambiguous. Please specify [%(human_readable)s ago] or [%(human_readable)s later].": [ - "" + "Tijd string is dubbelzinnig. Specificeer [%(human_readable)s geleden] of [%(human_readable)s later]." ], "Cannot parse time string [%(human_readable)s]": [ "Kan tijdstring [%(human_readable)s] niet parsen" ], "Time delta is ambiguous. Please specify [%(human_readable)s ago] or [%(human_readable)s later].": [ - "" + "Tijddelta is dubbelzinnig. Geef [%(human_readable)s geleden] of [%(human_readable)s later]." + ], + "Database does not exist": [ + "Database bestaat niet" + ], + "Dashboards do not exist": [ + "Dashboards bestaan niet" ], - "Database does not exist": ["Database bestaat niet"], - "Dashboards do not exist": ["Dashboards bestaan niet"], "Datasource type is required when datasource_id is given": [ - "Datasourcetype is vereist wanneer datasource_id is gegeven" + "Gegevensbron type is vereist wanneer datasource_id is gegeven" + ], + "Chart parameters are invalid.": [ + "Grafiekparameters zijn ongeldig." + ], + "Chart could not be created.": [ + "Grafiek kon niet worden aangemaakt." + ], + "Chart could not be updated.": [ + "De grafiek kon niet worden bijgewerkt." ], - "Chart parameters are invalid.": ["Grafiekparameters zijn ongeldig."], - "Chart could not be created.": ["Grafiek kon niet worden aangemaakt."], - "Chart could not be updated.": ["De grafiek kon niet worden bijgewerkt."], "Charts could not be deleted.": [ "Grafieken konden niet worden verwijderd." ], "There are associated alerts or reports": [ "Er zijn geassocieerde waarschuwingen of rapporten" ], - "You don't have access to this chart.": [""], + "You don't have access to this chart.": [ + "U heeft geen toegang tot deze grafiek." + ], "Changing this chart is forbidden": [ "Het is verboden deze grafiek te wijzigen" ], "Import chart failed for an unknown reason": [ "Import grafiek mislukt om een onbekende reden" ], - "Error: %(error)s": [""], - "CSS template not found.": ["CSS sjabloon niet gevonden."], - "Must be unique": ["Moet uniek zijn"], + "Changing one or more of these dashboards is forbidden": [ + "Het wijzigen van een of meer van deze dashboards is verboden" + ], + "Chart not found": [ + "Grafiek niet gevonden" + ], + "Error: %(error)s": [ + "Fout: %(error)s" + ], + "CSS templates could not be deleted.": [ + "CSS-sjablonen konden niet worden verwijderd." + ], + "CSS template not found.": [ + "CSS sjabloon niet gevonden." + ], + "Must be unique": [ + "Moet uniek zijn" + ], "Dashboard parameters are invalid.": [ "Dashboard parameters zijn ongeldig." ], + "Dashboards could not be created.": [ + "Dashboards konden niet worden aangemaakt." + ], "Dashboard could not be updated.": [ "Dashboard kon niet worden bijgewerkt." ], @@ -337,17 +568,30 @@ "You don't have access to this dashboard.": [ "Je hebt geen toegang tot dit dashboard." ], - "No data in file": ["Geen gegevens in het bestand"], + "You don't have access to this embedded dashboard config.": [ + "U heeft geen toegang tot deze embedden dashboard configuratie." + ], + "No data in file": [ + "Geen gegevens in het bestand" + ], "Database parameters are invalid.": [ "Database parameters zijn ongeldig." ], - "A database with the same name already exists.": [""], - "Field is required": ["Veld is verplicht"], - "Field cannot be decoded by JSON. %(json_error)s": [""], + "A database with the same name already exists.": [ + "Een database met dezelfde naam bestaat al." + ], + "Field is required": [ + "Veld is verplicht" + ], + "Field cannot be decoded by JSON. %(json_error)s": [ + "Veld kan niet gedecodeerd worden door JSON. %(json_error)s" + ], "The metadata_params in Extra field is not configured correctly. The key %{key}s is invalid.": [ "De metadata_params in Extra veld is niet correct geconfigureerd. De sleutel %{key}s is ongeldig." ], - "Database not found.": ["Database niet gevonden."], + "Database not found.": [ + "Database niet gevonden." + ], "Database could not be created.": [ "Database kon niet worden aangemaakt." ], @@ -357,102 +601,218 @@ "Connection failed, please check your connection settings": [ "Verbinding mislukt, controleer uw verbindingsinstellingen" ], - "Cannot delete a database that has datasets attached": [""], + "Cannot delete a database that has datasets attached": [ + "Een database gekoppeld aan datasets kan niet worden verwijderd" + ], "Database could not be deleted.": [ "Database kon niet worden verwijderd." ], "Stopped an unsafe database connection": [ "Stopte een onveilige database connectie" ], - "Could not load database driver": ["Kon het database driver niet laden"], + "Could not load database driver": [ + "Kon het database driver niet laden" + ], "Unexpected error occurred, please check your logs for details": [ "Er is een onverwachte fout opgetreden, controleer uw logs voor details" ], - "No validator found (configured for the engine)": [""], + "no SQL validator is configured": [ + "geen SQL validator is geconfigureerd" + ], + "No validator found (configured for the engine)": [ + "Geen validator gevonden (geconfigureerd voor de engine)" + ], + "Was unable to check your query": [ + "Kon uw query niet controleren" + ], + "An unexpected error occurred": [ + "Een onverwachte fout is opgetreden" + ], "Import database failed for an unknown reason": [ "Import database mislukt om een onbekende reden" ], "Could not load database driver: {}": [ "Kon het database driver niet laden: {}" ], - "Engine \"%(engine)s\" cannot be configured through parameters.": [""], - "Database is offline.": [""], + "Engine \"%(engine)s\" cannot be configured through parameters.": [ + "Engine \"%(engine)s\" kan niet worden geconfigureerd met behulp van parameters." + ], + "Database is offline.": [ + "Database is offline." + ], "%(validator)s was unable to check your query.\nPlease recheck your query.\nException: %(ex)s": [ "%(validator)s was niet in staat om uw query te controleren.\nControleer uw query opnieuw.\nUitzondering: %(ex)s" ], - "A database port is required when connecting via SSH Tunnel.": [""], - "SSH Tunneling is not enabled": [""], - "Must provide credentials for the SSH Tunnel": [""], - "Cannot have multiple credentials for the SSH Tunnel": [""], - "The database was not found.": [""], - "Dataset %(name)s already exists": ["Dataset %(name)s bestaat al"], - "Database not allowed to change": ["Database mag niet wijzigen"], - "One or more columns do not exist": ["Een of meer kolommen bestaan niet"], + "no SQL validator is configured for %(engine_spec)s": [ + "er is geen SQL validator geconfigureerd voor %(engine_spec)s" + ], + "No validator named %(validator_name)s found (configured for the %(engine_spec)s engine)": [ + "Geen validator gevonden met de naam %(validator_name)s (geconfigureerd voor de %(engine_spec)s engine)" + ], + "SSH Tunnel could not be deleted.": [ + "SSH Tunnel kon niet worden verwijderd." + ], + "SSH Tunnel not found.": [ + "SSH Tunnel niet gevonden." + ], + "SSH Tunnel parameters are invalid.": [ + "SSH Tunnel parameters zijn ongeldig." + ], + "A database port is required when connecting via SSH Tunnel.": [ + "" + ], + "SSH Tunnel could not be updated.": [ + "SSH Tunnel kon niet worden bijgewerkt." + ], + "Creating SSH Tunnel failed for an unknown reason": [ + "Het creëren van SSH-tunnel is mislukt om onbekende reden" + ], + "SSH Tunneling is not enabled": [ + "SSH Tunneling is niet ingeschakeld" + ], + "Must provide credentials for the SSH Tunnel": [ + "Inloggegevens moeten beschikbaar zijn voor de SSH tunnel" + ], + "Cannot have multiple credentials for the SSH Tunnel": [ + "Kan niet meerdere inloggegevens hebben voor de SSH tunnel" + ], + "The database was not found.": [ + "De database is niet gevonden." + ], + "Dataset %(name)s already exists": [ + "Dataset %(name)s bestaat al" + ], + "Database not allowed to change": [ + "Database mag niet wijzigen" + ], + "One or more columns do not exist": [ + "Een of meer kolommen bestaan niet" + ], "One or more columns are duplicated": [ "Een of meer kolommen zijn gedupliceerd" ], - "One or more columns already exist": ["Een of meer kolommen bestaan al"], + "One or more columns already exist": [ + "Een of meer kolommen bestaan al" + ], "One or more metrics do not exist": [ - "Een of meer meeteenheden bestaan niet" + "Een of meer metrieken bestaan niet" ], "One or more metrics are duplicated": [ - "Een of meer meetgegevens zijn gedupliceerd" + "Een of meer metrieken zijn gedupliceerd" ], "One or more metrics already exist": [ - "Een of meer meetgegevens bestaan al" + "Een of meer metrieken bestaan al" ], "Table [%(table_name)s] could not be found, please double check your database connection, schema, and table name": [ - "" + "Tabel [%(table_name)s] kon niet worden gevonden. Controleer de database-verbinding, schema en tabelnaam" + ], + "Dataset does not exist": [ + "Dataset bestaat niet" + ], + "Dataset parameters are invalid.": [ + "Dataset parameters zijn ongeldig." + ], + "Dataset could not be created.": [ + "Dataset kon niet worden aangemaakt." + ], + "Dataset could not be updated.": [ + "Dataset kon niet worden bijgewerkt." + ], + "Datasets could not be deleted.": [ + "Data’s konden niet worden verwijderd." + ], + "Samples for dataset could not be retrieved.": [ + "Monsters van dataset konden niet worden opgehaald." ], - "Dataset does not exist": ["Dataset bestaat niet"], - "Dataset parameters are invalid.": ["Dataset parameters zijn ongeldig."], - "Dataset could not be created.": ["Dataset kon niet worden aangemaakt."], - "Dataset could not be updated.": ["Dataset kon niet worden bijgewerkt."], "Changing this dataset is forbidden": [ "Veranderen van deze dataset is verboden" ], "Import dataset failed for an unknown reason": [ "Import dataset mislukt om een onbekende reden" ], - "You don't have access to this dataset.": [""], - "Data URI is not allowed.": [""], - "Dataset column not found.": ["Dataset kolom niet gevonden."], - "Dataset column delete failed.": ["Dataset kolom verwijderen mislukt."], + "You don't have access to this dataset.": [ + "U hebt geen toegang tot deze dataset." + ], + "Dataset could not be duplicated.": [ + "Dataset kon niet worden gedupliceerd." + ], + "Data URI is not allowed.": [ + "Data-URI is niet toegestaan." + ], + "The provided table was not found in the provided database": [ + "De opgegeven tabel is niet gevonden in de opgegeven database" + ], + "Dataset column not found.": [ + "Dataset kolom niet gevonden." + ], + "Dataset column delete failed.": [ + "Dataset kolom verwijderen mislukt." + ], "Changing this dataset is forbidden.": [ "Het is verboden deze dataset te wijzigen." ], - "Dataset metric not found.": ["Dataset meeteenheid niet gevonden."], + "Dataset metric not found.": [ + "Dataset metriek niet gevonden." + ], "Dataset metric delete failed.": [ - "Dataset meetgegevens verwijderen mislukt." + "Dataset metriek verwijderen mislukt." + ], + "Form data not found in cache, reverting to chart metadata.": [ + "Formuliergegevens niet gevonden in de cache, terugzetten naar metagegevens van grafiek." + ], + "Form data not found in cache, reverting to dataset metadata.": [ + "Formuliergegevens niet gevonden in de cache, teruggezet naar dataset metadata." + ], + "[Missing Dataset]": [ + "[Ontbrekende Dataset]" ], - "Form data not found in cache, reverting to chart metadata.": [""], - "Form data not found in cache, reverting to dataset metadata.": [""], - "[Missing Dataset]": ["[Missing Dataset]"], "Saved queries could not be deleted.": [ "Opgeslagen zoekopdrachten konden niet worden verwijderd." ], - "Saved query not found.": ["Opgeslagen query niet gevonden."], + "Saved query not found.": [ + "Opgeslagen query niet gevonden." + ], "Import saved query failed for an unknown reason.": [ "Import opgeslagen query mislukt om een onbekende reden." ], "Saved query parameters are invalid.": [ "Opgeslagen query parameters zijn ongeldig." ], - "Invalid tab ids: %s(tab_ids)": [""], - "Dashboard does not exist": ["Het dashboard bestaat niet"], - "Chart does not exist": ["Grafiek bestaat niet"], + "Alert query returned more than one row. %(num_rows)s rows returned": [ + "Waarschuwing query is met meer dan één rij teruggekomen. %(num_rows)s rijen zijn geretourneerd" + ], + "Alert query returned more than one column. %(num_cols)s columns returned": [ + "Waarschuwing query is met meer dan één kolom geretourneerd. %(num_cols)s kolommen geretourneerd" + ], + "An error occurred when running alert query": [ + "Er is een fout opgetreden bij het uitvoeren van de waarschuwing query" + ], + "Invalid tab ids: %s(tab_ids)": [ + "Ongeldige tab id's: %s(tab_ids)" + ], + "Dashboard does not exist": [ + "Het dashboard bestaat niet" + ], + "Chart does not exist": [ + "Grafiek bestaat niet" + ], "Database is required for alerts": [ "Database is nodig voor waarschuwingen" ], - "Type is required": ["Type is vereist"], + "Type is required": [ + "Type is vereist" + ], "Choose a chart or dashboard not both": [ "Kies een grafiek of een dashboard, niet beide" ], + "Must choose either a chart or a dashboard": [ + "Je moet een grafiek of een dashboard kiezen" + ], "Please save your chart first, then try creating a new email report.": [ - "" + "Sla eerst je grafiek op, probeer dan een nieuw e-mailrapport te maken." ], "Please save your dashboard first, then try creating a new email report.": [ - "" + "Sla eerst je dashboard op, probeer dan een nieuwe e-mailrapportage aan te maken." ], "Report Schedule parameters are invalid.": [ "De parameters van het rapportageplanning zijn ongeldig." @@ -463,7 +823,9 @@ "Report Schedule could not be updated.": [ "Rapportage planning kon niet worden bijgewerkt." ], - "Report Schedule not found.": ["Rapportage planning niet gevonden."], + "Report Schedule not found.": [ + "Rapportage planning niet gevonden." + ], "Report Schedule delete failed.": [ "Rapportage planning verwijderen mislukt." ], @@ -476,7 +838,9 @@ "Report Schedule execution failed when generating a csv.": [ "Rapportage planning mislukt bij het genereren van een csv." ], - "Report Schedule execution failed when generating a dataframe.": [""], + "Report Schedule execution failed when generating a dataframe.": [ + "Rapport Schedule uitvoering mislukt bij het genereren van een dataframe." + ], "Report Schedule execution got an unexpected error.": [ "Rapportage planning uitvoering kreeg een onverwachte fout." ], @@ -486,7 +850,15 @@ "Report Schedule reached a working timeout.": [ "Rapportage planning heeft een werk time-out bereikt." ], - "Resource already has an attached report.": [""], + "A report named \"%(name)s\" already exists": [ + "Een rapport met de naam \"%(name)s\" bestaat al" + ], + "An alert named \"%(name)s\" already exists": [ + "Een melding genaamd \"%(name)s\" bestaat al" + ], + "Resource already has an attached report.": [ + "Deze bron heeft al een bijgevoegd rapport." + ], "Alert query returned more than one row.": [ "Alert query retourneerde meer dan één rij." ], @@ -511,52 +883,122 @@ "A timeout occurred while generating a csv.": [ "Er is een time-out opgetreden tijdens het genereren van een csv." ], - "A timeout occurred while generating a dataframe.": [""], + "A timeout occurred while generating a dataframe.": [ + "Er is een time-out opgetreden tijdens het genereren van een dataframe." + ], "Alert fired during grace period.": [ "Waarschuwing afgevuurd tijdens grace period." ], - "Alert ended grace period.": ["Waarschuwing beëindigd grace period."], - "Alert on grace period": ["Waarschuwing tijdens grace period"], + "Alert ended grace period.": [ + "Waarschuwing beëindigd grace period." + ], + "Alert on grace period": [ + "Waarschuwing tijdens grace period" + ], "Report Schedule state not found": [ "Rapport Schedule state niet gevonden" ], - "Report schedule unexpected error": ["Onverwachte fout in rapportschema"], + "Report schedule system error": [ + "Meld schema systeem fout" + ], + "Report schedule client error": [ + "Meld schema client fout" + ], + "Report schedule unexpected error": [ + "Onverwachte fout in rapportschema" + ], "Changing this report is forbidden": [ "Het is verboden dit rapport te wijzigen" ], "An error occurred while pruning logs ": [ "Er is een fout opgetreden tijdens opschonen van de logbestanden " ], + "RLS Rule not found.": [ + "RLB regel niet gevonden." + ], + "RLS rules could not be deleted.": [ + "RLB regels konden niet worden verwijderd." + ], + "The database could not be found": [ + "De database kon niet worden gevonden" + ], "The query estimation was killed after %(sqllab_timeout)s seconds. It might be too complex, or the database might be under heavy load.": [ - "" + "De zoekopdracht inschatting is gesloten na %(sqllab_timeout)s seconden. Het is mogelijk te ingewikkeld, of de database wordt mogelijk zwaar belast." ], "The database referenced in this query was not found. Please contact an administrator for further assistance or try again.": [ - "" + "De database waarnaar verwezen wordt in deze query is niet gevonden. Neem contact op met een beheerder voor verdere hulp of probeer het opnieuw." ], "The query associated with these results could not be found. You need to re-run the original query.": [ - "" + "De aan deze resultaten gekoppelde query kan niet worden gevonden. U moet de oorspronkelijke query opnieuw uitvoeren." + ], + "Cannot access the query": [ + "Kan geen toegang krijgen tot de query" ], - "Cannot access the query": [""], "Data could not be retrieved from the results backend. You need to re-run the original query.": [ - "" + "Gegevens kunnen niet worden opgehaald uit de resultaten in de backend. U moet de oorspronkelijke query opnieuw uitvoeren." ], "Data could not be deserialized from the results backend. The storage format might have changed, rendering the old data stake. You need to re-run the original query.": [ - "" + "Gegevens konden niet gedeserialiseerd worden vanuit de resultaten uit de backend. Het opslag formaat kan veranderd zijn, het weergeven van de oude data duur. U moet de originele query opnieuw uitvoeren." + ], + "Tag parameters are invalid.": [ + "Tag parameters zijn ongeldig." + ], + "Tag could not be created.": [ + "Tag kon niet worden aangemaakt." + ], + "Tag could not be updated.": [ + "Tag kon niet worden bijgewerkt." + ], + "Tag could not be deleted.": [ + "De tag kon niet worden verwijderd." + ], + "Tagged Object could not be deleted.": [ + "Het getagde object kon niet worden verwijderd." + ], + "An error occurred while creating the value.": [ + "Fout opgetreden tijdens het aanmaken van de waarde." + ], + "An error occurred while accessing the value.": [ + "Er is een fout opgetreden tijdens het openen van de waarde." + ], + "An error occurred while deleting the value.": [ + "Er is een fout opgetreden tijdens het verwijderen van de waarde." + ], + "An error occurred while updating the value.": [ + "Fout opgetreden tijdens het bijwerken van de waarde." + ], + "You don't have permission to modify the value.": [ + "Je hebt geen toestemming om de waarde te wijzigen." + ], + "Resource was not found.": [ + "Bron is niet gevonden." + ], + "Invalid result type: %(result_type)s": [ + "Ongeldig resultaattype: %(result_type)s" + ], + "Columns missing in dataset: %(invalid_columns)s": [ + "Kolommen ontbreken in dataset: %(invalid_columns)s" + ], + "Time Grain must be specified when using Time Shift.": [ + "Tijdsinterval moet worden gespecificeerd bij gebruik van Tijdverschuiving." + ], + "A time column must be specified when using a Time Comparison.": [ + "Een tijdkolom moet worden opgegeven bij het gebruik van een Tijdvergelijking." + ], + "The chart does not exist": [ + "De grafiek bestaat niet" + ], + "The chart datasource does not exist": [ + "De grafiek gegevensbron bestaat niet" + ], + "The chart query context does not exist": [ + "De query context van de grafiek bestaat niet" ], - "An error occurred while creating the value.": [""], - "An error occurred while accessing the value.": [""], - "An error occurred while deleting the value.": [""], - "An error occurred while updating the value.": [""], - "You don't have permission to modify the value.": [""], - "Invalid result type: %(result_type)s": [""], - "Time Grain must be specified when using Time Shift.": [""], - "A time column must be specified when using a Time Comparison.": [""], - "The chart does not exist": ["De grafiek bestaat niet"], "Duplicate column/metric labels: %(labels)s. Please make sure all columns and metrics have a unique label.": [ - "" + "Dupliceer kolom/metriek labels: %(labels)s. Zorg ervoor dat alle kolommen en statistieken een uniek label hebben." ], "The following entries in `series_columns` are missing in `columns`: %(columns)s. ": [ - "" + "De volgende vermeldingen in `series_columns` ontbreken in `columns`: %(columns)s. " ], "`operation` property of post processing object undefined": [ "`operation` eigenschap van post processing object ongedefinieerd" @@ -564,7 +1006,12 @@ "Unsupported post processing operation: %(operation)s": [ "Niet-ondersteunde nabewerking: %(operation)s" ], - "[desc]": [""], + "[asc]": [ + "[asc]" + ], + "[desc]": [ + "[desc]" + ], "Error in jinja expression in fetch values predicate: %(msg)s": [ "Fout in jinja expressie in fetch values predicate: %(msg)s" ], @@ -572,10 +1019,10 @@ "Query voor virtuele gegevensverzameling moet alleen-lezen zijn" ], "Error in jinja expression in RLS filters: %(msg)s": [ - "Fout in jinja expressie in RLS filters: %(msg)s" + "Fout in jinja expressie in RLB filters: %(msg)s" ], "Metric '%(metric)s' does not exist": [ - "Meeteenheid “%(metric)s” bestaat niet" + "Metriek “%(metric)s” bestaat niet" ], "Db engine did not return all queried columns": [ "Db engine retourneerde niet alle opgevraagde kolommen" @@ -589,116 +1036,220 @@ "Only single queries supported": [ "Alleen enkelvoudige query’s worden ondersteund" ], - "Columns": ["Kolommen"], - "Show Column": ["Toon Kolom"], - "Add Column": ["Kolom toevoegen"], - "Edit Column": ["Kolom toevoegen"], + "Columns": [ + "Kolommen" + ], + "Show Column": [ + "Toon Kolom" + ], + "Add Column": [ + "Kolom toevoegen" + ], + "Edit Column": [ + "Kolom toevoegen" + ], "Whether to make this column available as a [Time Granularity] option, column has to be DATETIME or DATETIME-like": [ - "" + "Of deze kolom nu beschikbaar moet worden gemaakt als een [Tijd Granulariteit] optie, de kolom moet DATUMTIJD of DATUMTIJD-achtig zijn" ], "Whether this column is exposed in the `Filters` section of the explore view.": [ - "" + "Of deze kolom is blootgesteld in het `Filters` gedeelte van het verkenningsoverzicht." ], "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.": [ - "" + "Het gegevenstype dat werd afgeleid door de database. Het kan nodig zijn om in sommige gevallen een type handmatig in te voeren voor expression-gedefinieerde kolommen. In de meeste gevallen zouden gebruikers dit niet hoeven te veranderen." ], - "Column": ["Kolom"], - "Verbose Name": ["Verklarende naam"], - "Description": ["Omschrijving"], - "Groupable": ["Groepeerbaar"], - "Filterable": ["Filterbaar"], - "Table": ["Tabel"], - "Expression": ["Expressie"], - "Is temporal": ["Is tijdelijk"], - "Datetime Format": ["Datumtijd Formaat"], - "Type": ["Type"], - "Business Data Type": [""], - "Invalid date/timestamp format": ["Ongeldig datum/tijdstempel formaat"], - "Metrics": ["Meeteenheden"], - "Show Metric": ["Toon meeteenheid"], - "Add Metric": ["Voeg meeteenheid toe"], - "Edit Metric": ["Bewerk meeteenheid"], - "Metric": ["Meeteenheid"], - "SQL Expression": ["SQL Expressie"], - "D3 Format": ["D3 Formaat"], - "Extra": ["Extra"], - "Warning Message": ["Waarschuwing"], - "Tables": ["Tabellen"], - "Show Table": ["Toon tabel"], - "Import a table definition": ["Importeer een tabeldefinitie"], - "Edit Table": ["Bewerk tabel"], - "The list of charts associated with this table. By altering this datasource, you may change how these associated charts behave. Also note that charts need to point to a datasource, so this form will fail at saving if removing charts from a datasource. If you want to change the datasource for a chart, overwrite the chart from the 'explore view'": [ - "" + "Column": [ + "Kolom" ], - "Timezone offset (in hours) for this datasource": [ - "Tijdzone-offset (in uren) voor deze databron" + "Verbose Name": [ + "Verklarende naam" ], - "Name of the table that exists in the source database": [ - "Naam van de tabel die bestaat in de brondatabase" + "Description": [ + "Omschrijving" ], - "Schema, as used only in some databases like Postgres, Redshift and DB2": [ - "Schema, zoals alleen gebruikt in sommige databases zoals Postgres, Redshift en DB2" + "Groupable": [ + "Groepeerbaar" ], - "This fields acts a Superset view, meaning that Superset will run a query against this string as a subquery.": [ - "Dit veld werkt als een Superset view, wat betekent dat Superset een query zal uitvoeren tegen deze string als een subquery." + "Filterable": [ + "Filterbaar" ], - "Predicate applied when fetching distinct value to populate the filter control component. Supports jinja template syntax. Applies only when `Enable Filter Select` is on.": [ - "" + "Table": [ + "Tabel" ], - "Redirects to this endpoint when clicking on the table from the table list": [ - "" + "Expression": [ + "Expressie" ], - "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": [ - "" + "Is temporal": [ + "Is tijdelijk" ], - "Whether the table was generated by the 'Visualize' flow in SQL Lab": [ - "Geeft aan of de tabel werd gegenereerd door de “Visualize” stroom in SQL Lab" + "Datetime Format": [ + "Datumtijd Opmaak" ], - "A set of parameters that become available in the query using Jinja templating syntax": [ - "Een set parameters die beschikbaar worden in de query met behulp van Jinja templating syntax" + "Type": [ + "Type" ], - "Duration (in seconds) of the caching timeout for this table. A timeout of 0 indicates that the cache never expires. Note this defaults to the database timeout if undefined.": [ - "" + "Business Data Type": [ + "Bedrijfsgegevenstype" ], - "Allow column names to be changed to case insensitive format, if supported (e.g. Oracle, Snowflake).": [ - "" + "Invalid date/timestamp format": [ + "Ongeldig datum/tijdstempel opmaak" ], - "Datasets can have a main temporal column (main_dttm_col), but can also have secondary time columns. When this attribute is true, whenever the secondary columns are filtered, the same filter is applied to the main datetime column.": [ - "" + "Metrics": [ + "Metrieken" + ], + "Show Metric": [ + "Toon metriek" + ], + "Add Metric": [ + "Voeg metriek toe" + ], + "Edit Metric": [ + "Bewerk Metriek" + ], + "Metric": [ + "Metriek" + ], + "SQL Expression": [ + "SQL Expressie" + ], + "D3 Format": [ + "D3 Formaat" + ], + "Extra": [ + "Extra" + ], + "Warning Message": [ + "Waarschuwing" + ], + "Tables": [ + "Tabellen" + ], + "Show Table": [ + "Toon tabel" + ], + "Import a table definition": [ + "Importeer een tabeldefinitie" + ], + "Edit Table": [ + "Bewerk tabel" + ], + "The list of charts associated with this table. By altering this datasource, you may change how these associated charts behave. Also note that charts need to point to a datasource, so this form will fail at saving if removing charts from a datasource. If you want to change the datasource for a chart, overwrite the chart from the 'explore view'": [ + "De lijst met grafieken die gekoppeld zijn aan deze tabel. Door het wijzijgen van deze gegevensbron kan je aanpassen maken hoe deze bijbehorende grafieken zich gedragen. Houd er ook rekening mee dat grafieken naar een gegevensbron moeten wijzen, dus dit formulier zal niet opgeslagen kunnen worden bij het verwijderen van grafieken uit een gegevensbron. Als je de gegevensbron voor een grafiek wilt wijzigen, overschrijf je de grafiek van de 'verken weergave'" + ], + "Timezone offset (in hours) for this datasource": [ + "Tijdzone-offset (in uren) voor deze databron" + ], + "Name of the table that exists in the source database": [ + "Naam van de tabel die bestaat in de brondatabase" + ], + "Schema, as used only in some databases like Postgres, Redshift and DB2": [ + "Schema, zoals alleen gebruikt in sommige databases zoals Postgres, Redshift en DB2" + ], + "This fields acts a Superset view, meaning that Superset will run a query against this string as a subquery.": [ + "Dit veld werkt als een Superset view, wat betekent dat Superset een query zal uitvoeren tegen deze string als een subquery." + ], + "Predicate applied when fetching distinct value to populate the filter control component. Supports jinja template syntax. Applies only when `Enable Filter Select` is on.": [ + "Voorspelling toegepast bij het ophalen van verschillende waarde om het filter besturingscomponent te vullen. Ondersteunt jinja template syntax. Geldt alleen wanneer `Filter Selecteren inschakelen` is ingeschakeld." + ], + "Redirects to this endpoint when clicking on the table from the table list": [ + "Schakelt door naar dit eindpunt bij het klikken op de tabel vanuit de tabellijst" + ], + "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": [ + "Of de vervolgkeuzelijst van het filter in de filtersectie van de verkenningsweergave moet worden gevuld met een lijst met afzonderlijke waarden die direct uit de backend worden opgehaald" + ], + "Whether the table was generated by the 'Visualize' flow in SQL Lab": [ + "Geeft aan of de tabel werd gegenereerd door de “Visualize” stroom in SQL Lab" + ], + "A set of parameters that become available in the query using Jinja templating syntax": [ + "Een set parameters die beschikbaar worden in de query met behulp van Jinja templating syntax" + ], + "Duration (in seconds) of the caching timeout for this table. A timeout of 0 indicates that the cache never expires. Note this defaults to the database timeout if undefined.": [ + "Duur (in seconden) van de caching time-out voor deze tabel. Een time-out van 0 geeft aan dat de cache nooit verloopt. Merk op dat deze standaard de database time-out heeft als deze niet gedefinieerd is." + ], + "Allow column names to be changed to case insensitive format, if supported (e.g. Oracle, Snowflake).": [ + "Toestaan dat kolomnamen worden gewijzigd in geval van ongevoelig formaat, indien ondersteund (bijv. Oracle, Sneeuwflake)." + ], + "Datasets can have a main temporal column (main_dttm_col), but can also have secondary time columns. When this attribute is true, whenever the secondary columns are filtered, the same filter is applied to the main datetime column.": [ + "Datasets kunnen een hoofdtijdelijke kolom hebben (main_dttm_col), maar kunnen ook secundaire tijdkolommen hebben. Wanneer dit attribuut waar is, wanneer de secundaire kolommen worden gefilterd, wordt hetzelfde filter toegepast op de hoofddatetime kolom." + ], + "Associated Charts": [ + "Gerelateerde grafieken" + ], + "Changed By": [ + "Gewijzigd door" + ], + "Database": [ + "Database" + ], + "Last Changed": [ + "Laatste wijziging" + ], + "Enable Filter Select": [ + "Inschakelen Filter Keuze" + ], + "Schema": [ + "Schema" + ], + "Default Endpoint": [ + "Standaard eindpunt" + ], + "Offset": [ + "Verschuiving" + ], + "Cache Timeout": [ + "Buffer Timeout" + ], + "Table Name": [ + "Tabel Naam" + ], + "Fetch Values Predicate": [ + "Waarden ophalen Predicaat" + ], + "Owners": [ + "Eigenaars" + ], + "Main Datetime Column": [ + "Kolom Hoofd Datumtijd" + ], + "SQL Lab View": [ + "SQL Lab Weergave" + ], + "Template parameters": [ + "Sjabloon parameters" + ], + "Modified": [ + "Gewijzigd" ], - "Associated Charts": ["Gerelateerde grafieken"], - "Changed By": ["Gewijzigd door"], - "Database": ["Database"], - "Last Changed": ["Laatste wijziging"], - "Enable Filter Select": ["Inschakelen Filter Keuze"], - "Schema": ["Schema"], - "Default Endpoint": ["Standaard eindpunt"], - "Offset": ["Offset"], - "Cache Timeout": ["Cache Timeout"], - "Table Name": ["Tabel Naam"], - "Fetch Values Predicate": ["Waarden ophalen Predicaat"], - "Owners": ["Eigenaars"], - "Main Datetime Column": ["Kolom Hoofd Datumtijd"], - "SQL Lab View": ["SQL Lab View"], - "Template parameters": ["Template parameters"], - "Modified": ["Gewijzigd"], "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.": [ - "" + "De tabel is aangemaakt. Als onderdeel van dit tweestapsconfiguratieproces moet u nu op de knop bewerken door de nieuwe tabel om te configureren." ], "Deleted %(num)d css template": [ "Verwijderde %(num)d css sjabloon", "Verwijderde %(num)d css sjablonen" ], - "Dataset schema is invalid, caused by: %(error)s": [""], + "Dataset schema is invalid, caused by: %(error)s": [ + "Dataset schema is ongeldig, veroorzaakt door: %(error)s" + ], "Deleted %(num)d dashboard": [ "Verwijderde %(num)d dashboard", "Verwijderde %(num)d dashboards" ], - "Title or Slug": ["Titel of Slug"], - "Role": ["Rol"], - "Table name undefined": ["Tabelnaam niet gedefinieerd"], + "Title or Slug": [ + "Titel of Slug" + ], + "Role": [ + "Rol" + ], + "Invalid state.": [ + "Ongeldige status." + ], + "Table name undefined": [ + "Tabelnaam niet gedefinieerd" + ], + "Upload Enabled": [ + "Uploaden Ingeschakeld" + ], "Invalid connection string, a valid string usually follows: backend+driver://user:password@database-host/database-name": [ - "" + "Ongeldige connectie string, een geldige tekenreeks: backend+driver://user:password@database-host/database-name" ], "Field cannot be decoded by JSON. %(msg)s": [ "Veld kan niet gedecodeerd worden door JSON. %(msg)s" @@ -707,60 +1258,120 @@ "De metadata_params in Extra veld is niet correct geconfigureerd. De sleutel %(key)s is ongeldig." ], "An engine must be specified when passing individual parameters to a database.": [ - "" + "Een engine moet worden opgegeven wanneer individuele parameters worden doorgegeven aan een database." ], "Engine spec \"InvalidEngine\" does not support being configured via individual parameters.": [ - "" + "Engine spec \"InvalidEngine\" ondersteunt het niet om te worden geconfigureerd via individuele parameters." ], "Deleted %(num)d dataset": [ "Verwijderde %(num)d dataset", "Verwijderde %(num)d datasets" ], - "Null or Empty": ["Nul of Leeg"], + "Null or Empty": [ + "Nul of Leeg" + ], "Please check your query for syntax errors at or near \"%(syntax_error)s\". Then, try running your query again.": [ - "" + "Controleer uw query voor syntax fouten bij of in de buurt \"%(syntax_error)s\". Probeer daarna uw zoekopdracht opnieuw uit te voeren." + ], + "Second": [ + "Seconde" + ], + "5 second": [ + "5 seconden" + ], + "30 second": [ + "30 seconden" + ], + "Minute": [ + "Minuut" + ], + "5 minute": [ + "5 minuten" + ], + "10 minute": [ + "10 minuten" + ], + "15 minute": [ + "15 minuten" + ], + "30 minute": [ + "30 minuten" + ], + "Hour": [ + "Uur" + ], + "6 hour": [ + "6 uur" + ], + "Day": [ + "Dag" + ], + "Week": [ + "Week" + ], + "Month": [ + "Maand" + ], + "Quarter": [ + "Kwartaal" + ], + "Year": [ + "Jaar" + ], + "Week starting Sunday": [ + "Week beginnend op zondag" + ], + "Week starting Monday": [ + "Week beginnend op maandag" + ], + "Week ending Saturday": [ + "Week beginnend op zaterdag" + ], + "Week ending Sunday": [ + "Week eindigt Zondag" + ], + "Username": [ + "Gebruikersnaam" + ], + "Password": [ + "Wachtwoord" + ], + "Hostname or IP address": [ + "Hostnaam of IP-adres" + ], + "Database port": [ + "Database poort" + ], + "Database name": [ + "Database naam" + ], + "Additional parameters": [ + "Additionele parameters" + ], + "Use an encrypted connection to the database": [ + "Gebruik een versleutelde verbinding met de database" + ], + "Use an ssh tunnel connection to the database": [ + "Gebruik een ssh tunnel verbinding met de database" ], - "Second": ["Seconde"], - "5 second": [""], - "30 second": [""], - "Minute": ["Minuut"], - "5 minute": ["5 minuten"], - "10 minute": ["10 minuten"], - "15 minute": ["15 minuten"], - "30 minute": [""], - "Hour": ["Uur"], - "6 hour": [""], - "Day": ["Dag"], - "Week": ["Week"], - "Month": ["Maand"], - "Quarter": ["Kwartaal"], - "Year": ["Jaar"], - "Week starting Sunday": ["Week beginnend op zondag"], - "Week starting Monday": ["Week beginnend op maandag"], - "Week ending Saturday": ["Week beginnend op zaterdag"], - "Username": ["Gebruikersnaam"], - "Password": ["Wachtwoord"], - "Hostname or IP address": ["Hostnaam of IP-adres"], - "Database port": ["Database poort"], - "Database name": ["Database naam"], - "Additional parameters": [""], - "Use an encrypted connection to the database": [""], - "Use an ssh tunnel connection to the database": [""], "Unable to connect. Verify that the following roles are set on the service account: \"BigQuery Data Viewer\", \"BigQuery Metadata Viewer\", \"BigQuery Job User\" and the following permissions are set \"bigquery.readsessions.create\", \"bigquery.readsessions.getData\"": [ - "" + "Kan geen verbinding maken. Controleer of de volgende rollen zijn ingesteld op het service account: \"BigQuery Data Viewer\", \"BigQuery Metadata Viewer\", \"BigQuery Job User\" en de volgende permissies zijn ingesteld \"bigquery. eadsessions.create\", \"bigquery.readsessions.getData\"" ], "The table \"%(table)s\" does not exist. A valid table must be used to run this query.": [ - "" + "De tabel \"%(table)s\" bestaat niet. Een geldige tabel moet worden gebruikt om deze query uit te voeren." ], "We can't seem to resolve column \"%(column)s\" at line %(location)s.": [ - "" + "Het lijkt erop dat de kolom \"%(column)s\" op regel %(location)s niet kan worden opgelost." ], "The schema \"%(schema)s\" does not exist. A valid schema must be used to run this query.": [ - "" + "The schema \"%(schema)s\" bestaat niet. Een geldig schema moet worden gebruikt om deze query uit te voeren." ], "Either the username \"%(username)s\" or the password is incorrect.": [ "Either the username “%(username)s” or the password is incorrect." ], + "Unknown Doris server host \"%(hostname)s\".": [ + "Onbekende Doris server host \"%(hostname)s\"." + ], "The host \"%(hostname)s\" might be down and can't be reached.": [ "De host “%(hostname)s” is misschien down en kan niet worden bereikt." ], @@ -768,9 +1379,11 @@ "Kan geen verbinding maken met database “%(database)s”." ], "Please check your query for syntax errors near \"%(server_error)s\". Then, try running your query again.": [ - "" + "Controleer uw query voor syntax fouten bij of in de buurt \"%(server_error)s\". Probeer daarna uw zoekopdracht opnieuw uit te voeren." + ], + "We can't seem to resolve the column \"%(column_name)s\"": [ + "Het lijkt erop dat we de kolom \"%(column_name)s \" niet kunnen oplossen" ], - "We can't seem to resolve the column \"%(column_name)s\"": [""], "Either the username \"%(username)s\", password, or database name \"%(database)s\" is incorrect.": [ "Ofwel is de gebruikersnaam “%(username)s”, ofwel het wachtwoord, ofwel de databasenaam “%(database)s” niet correct." ], @@ -790,59 +1403,137 @@ "De gebruikersnaam “%(username)s” bestaat niet." ], "The user/password combination is not valid (Incorrect password for user).": [ - "" + "De combinatie van gebruiker/wachtwoord is niet geldig (onjuist wachtwoord voor gebruiker)." + ], + "Could not connect to database: \"%(database)s\"": [ + "Kan niet verbinden met de database: \"%(database)s\"" + ], + "Could not resolve hostname: \"%(host)s\".": [ + "Kan de hostname niet omzetten: \"%(host)s\"." + ], + "Port out of range 0-65535": [ + "Poort buiten bereik 0-65535" ], - "Could not resolve hostname: \"%(host)s\".": [""], - "Port out of range 0-65535": [""], "Invalid Connection String: Expecting String of the form 'ocient://user:pass@host:port/database'.": [ - "" + "Ongeldige Connectie String: Verwacht de vorm 'ocient://user:pass@host:port/database'." ], "Syntax Error: %(qualifier)s input \"%(input)s\" expecting \"%(expected)s": [ - "" + "Syntaxfout: %(qualifier)s invoer \"%(input)s\" verwacht \"%(expected)s" + ], + "Table or View \"%(table)s\" does not exist.": [ + "Tabel of Weergave \"%(table)s\" bestaat niet." + ], + "Invalid reference to column: \"%(column)s\"": [ + "Ongeldige verwijzing naar kolom: \"%(column)s\"" ], - "Invalid reference to column: \"%(column)s\"": [""], "The password provided for username \"%(username)s\" is incorrect.": [ "Het opgegeven wachtwoord voor gebruikersnaam “%(username)s” is onjuist." ], - "Please re-enter the password.": [""], + "Please re-enter the password.": [ + "Voer het wachtwoord opnieuw in." + ], "We can't seem to resolve the column \"%(column_name)s\" at line %(location)s.": [ - "" + "Het lijkt erop dat de kolom \"%(column_name)s\" op regel %(location)s niet kan worden opgelost." + ], + "Users are not allowed to set a search path for security reasons.": [ + "Gebruikers hebben geen toestemming om een zoekpad in te stellen om veiligheidsredenen." ], "The table \"%(table_name)s\" does not exist. A valid table must be used to run this query.": [ - "" + "De tabel \"%(table_name)s\" bestaat niet. Een geldige tabel moet worden gebruikt om deze query uit te voeren." ], "The schema \"%(schema_name)s\" does not exist. A valid schema must be used to run this query.": [ - "" + "The schema \"%(schema_name)s\" bestaat niet. Een geldig schema moet worden gebruikt om deze query uit te voeren." ], "Unable to connect to catalog named \"%(catalog_name)s\".": [ "Kan geen verbinding maken met catalogus genaamd “%(catalog_name)s”." ], - "Unknown Presto Error": ["Onbekende Presto Fout"], + "Unknown Presto Error": [ + "Onbekende Presto Fout" + ], "We were unable to connect to your database named \"%(database)s\". Please verify your database name and try again.": [ - "" + "We konden geen verbinding maken met uw database met de naam \"%(database)s\". Controleer uw databasenaam en probeer het opnieuw." + ], + "%(object)s does not exist in this database.": [ + "%(object)s bestaat niet in deze database." + ], + "Samples for datasource could not be retrieved.": [ + "Monsters voor gegevensbron konden niet worden opgehaald." + ], + "Changing this datasource is forbidden": [ + "Het wijzigen van deze gegevensbron is verboden" + ], + "Home": [ + "Startpagina" + ], + "Database Connections": [ + "Database Connecties" + ], + "Data": [ + "Gegevens" + ], + "Dashboards": [ + "Dashboards" + ], + "Charts": [ + "Grafieken" + ], + "Datasets": [ + "Datasets" + ], + "Plugins": [ + "Plug-ins" + ], + "Manage": [ + "Beheer" + ], + "CSS Templates": [ + "CSS-sjablonen" + ], + "SQL Lab": [ + "SQL-lab" + ], + "SQL": [ + "SQL" + ], + "Saved Queries": [ + "Opgeslagen Queries" + ], + "Query History": [ + "Query Geschiedenis" + ], + "Tags": [ + "Tags" + ], + "Action Log": [ + "Actie Log" + ], + "Security": [ + "Beveiliging" + ], + "Alerts & Reports": [ + "Waarschuwingen en rapporten" + ], + "Annotation Layers": [ + "Aantekeningen Lagen" + ], + "Row Level Security": [ + "Rij Level Beveiliging" + ], + "An error occurred while parsing the key.": [ + "Er is een fout opgetreden tijdens het parsen van de sleutel." + ], + "An error occurred while upserting the value.": [ + "Er is een fout opgetreden tijdens het upserten van de waarde." + ], + "Unable to encode value": [ + "Kan waarde niet coderen" + ], + "Unable to decode value": [ + "Kan waarde niet decoderen" + ], + "Invalid permalink key": [ + "Ongeldige permalink sleutel" ], - "%(object)s does not exist in this database.": [""], - "Home": ["Home"], - "Data": ["Gegevens"], - "Dashboards": ["Dashboards"], - "Charts": ["Grafieken"], - "Datasets": ["Datasets"], - "Plugins": ["Plugins"], - "Manage": ["Beheer"], - "CSS Templates": ["CSS-sjablonen"], - "SQL Lab": ["SQL-lab"], - "SQL": ["SQL"], - "Saved Queries": ["Opgeslagen Queries"], - "Query History": ["Query Geschiedenis"], - "Tags": [""], - "Action Log": ["Actie Log"], - "Security": ["Beveiliging"], - "Alerts & Reports": ["Waarschuwingen en rapporten"], - "Annotation Layers": ["Aantekeningen Lagen"], - "Row Level Security": [""], - "Unable to encode value": [""], - "Unable to decode value": [""], - "Invalid permalink key": [""], "Error while rendering virtual dataset query: %(msg)s": [ "Fout bij het renderen van de query van de virtuele dataset: %(msg)s" ], @@ -850,15 +1541,20 @@ "Een query voor een virtuele dataset kan niet uit meerdere statements bestaan" ], "Datetime column not provided as part table configuration and is required by this type of chart": [ - "" + "Datumtijdkolom niet opgegeven als deeltabel configuratie en is vereist voor dit type grafiek" + ], + "Empty query?": [ + "Lege query?" ], - "Empty query?": ["Lege query?"], "Unknown column used in orderby: %(col)s": [ "Onbekende kolom gebruikt in orderby: %(col)s" ], "Time column \"%(col)s\" does not exist in dataset": [ "Tijdkolom “%(col)s” bestaat niet in dataset" ], + "error_message": [ + "fout_melding" + ], "Filter value list cannot be empty": [ "Filterwaardenlijst kan niet leeg zijn" ], @@ -885,62 +1581,136 @@ "Verwijderde %(num)d rapport schema", "Verwijderde %(num)d rapport schema’s" ], - "Value must be greater than 0": ["Waarde moet groter zijn dan 0"], - "Custom width of the screenshot in pixels": [""], - "Screenshot width must be between %(min)spx and %(max)spx": [""], + "Value must be greater than 0": [ + "Waarde moet groter zijn dan 0" + ], + "Custom width of the screenshot in pixels": [ + "Aangepaste breedte van de schermafbeelding in pixels" + ], + "Screenshot width must be between %(min)spx and %(max)spx": [ + "Schermafbeelding breedte moet liggen tussen %(min)spx en %(max)spx" + ], "\n Error: %(text)s\n ": [ "\n Fout: %(text)s\n " ], - "EMAIL_REPORTS_CTA": [""], - "%(name)s.csv": ["%(name)s.csv"], - "%(prefix)s %(title)s": ["%(prefix)s %(title)s"], + "EMAIL_REPORTS_CTA": [ + "EMAIL_REPORTS_CTA" + ], + "%(name)s.csv": [ + "%(name)s.csv" + ], + "%(prefix)s %(title)s": [ + "%(prefix)s %(title)s" + ], "*%(name)s*\n\n%(description)s\n\n<%(url)s|Explore in Superset>\n\n%(table)s\n": [ - "" + "*%(name)s*\n\n%(description)s\n\n<%(url)s| Verken in Superset>\n\n%(table)s\n" + ], + "*%(name)s*\n\n%(description)s\n\nError: %(text)s\n": [ + "*%(name)s*\n\n%(description)s\n\nFout: %(text)s\n" + ], + "Deleted %(num)d rules": [ + "Verwijderde %(num)d regels", + "Verwijderde %(num)d regels" ], - "*%(name)s*\n\n%(description)s\n\nError: %(text)s\n": [""], "%(dialect)s cannot be used as a data source for security reasons.": [ "%(dialect)s kunnen om veiligheidsredenen niet als gegevensbron worden gebruikt." ], - "Guest user cannot modify chart payload": [""], - "Failed to execute %(query)s": [""], + "Guest user cannot modify chart payload": [ + "Gastgebruiker kan de grafiek-payload niet wijzigen" + ], + "You don't have the rights to alter %(resource)s": [ + "Je hebt geen rechten om %(resource)s te wijzigen" + ], + "Failed to execute %(query)s": [ + "Uitvoeren van %(query)s is mislukt" + ], "Please check your template parameters for syntax errors and make sure they match across your SQL query and Set Parameters. Then, try running your query again.": [ - "" + "Controleer uw template parameters voor syntax fouten en zorg ervoor dat deze overeenkomen met de SQL query en Set Parameters. Probeer daarna uw query opnieuw uit te voeren." ], "The parameter %(parameters)s in your query is undefined.": [ - "", - "The following parameters in your query are undefined: %(parameters)s." + "De parameter %(parameters)s in uw query is niet gedefinieerd.", + "De volgende parameters in uw zoekopdracht zijn ongedefinieerd: %(parameters)s." + ], + "The query contains one or more malformed template parameters.": [ + "De query bevat een of meer ongeldige sjabloonparameters." ], - "The query contains one or more malformed template parameters.": [""], "Please check your query and confirm that all template parameters are surround by double braces, for example, \"{{ ds }}\". Then, try running your query again.": [ + "Controleer uw query en bevestig dat alle sjabloonparameters omringd worden door dubbele haakjes, bijvoorbeeld \"{{ ds }}\". Probeer daarna uw query opnieuw uit te voeren." + ], + "Tag name is invalid (cannot contain ':')": [ + "Tag naam is ongeldig (mag geen ':') bevatten" + ], + "Tag could not be found.": [ + "Tag kon niet worden gevonden." + ], + "Is custom tag": [ + "Is aangepaste tag" + ], + "Scheduled task executor not found": [ + "Geplande taakuitvoerder niet gevonden" + ], + "Record Count": [ + "Record Aantal" + ], + "No records found": [ + "Geen gegevens gevonden" + ], + "Filter List": [ + "Filter Lijst" + ], + "Search": [ + "Zoek" + ], + "Refresh": [ + "Vernieuwen" + ], + "Import dashboards": [ + "Importeer dashboards" + ], + "Import Dashboard(s)": [ + "Importeer Dashboard(s)" + ], + "File": [ + "Bestand" + ], + "Choose File": [ + "Kies Bestand" + ], + "Upload": [ + "Upload" + ], + "Use the edit button to change this field": [ + "Gebruik de bewerk knop om dit veld te wijzigen" + ], + "Test Connection": [ + "Test Connectie" + ], + "Unsupported clause type: %(clause)s": [ + "Niet-ondersteunde clausule type: %(clause)s" + ], + "Invalid metric object: %(metric)s": [ + "Ongeldig metriek object: %(metric)s" + ], + "Unable to calculate such a date delta": [ "" ], - "Tag name is invalid (cannot contain ':')": [""], - "Record Count": ["Record Aantal"], - "No records found": ["Geen gegevens gevonden"], - "Filter List": ["Filter Lijst"], - "Search": ["Zoek"], - "Refresh": ["Vernieuwen"], - "Import dashboards": ["Importeer dashboards"], - "Import Dashboard(s)": ["Importeer Dashboard(s)"], - "File": ["Bestand"], - "Choose File": ["Kies Bestand"], - "Upload": ["Upload"], - "Use the edit button to change this field": [""], - "Test Connection": ["Test Connectie"], - "Unsupported clause type: %(clause)s": [""], - "Invalid metric object: %(metric)s": [""], - "Unable to calculate such a date delta": [""], "Unable to find such a holiday: [%(holiday)s]": [ "Niet in staat om zo’n holiday te vinden: [%(holiday)s]" ], - "DB column %(col_name)s has unknown type: %(value_type)s": [""], + "DB column %(col_name)s has unknown type: %(value_type)s": [ + "DB kolom %(col_name)s heeft onbekend type: %(value_type)s" + ], "percentiles must be a list or tuple with two numeric values, of which the first is lower than the second value": [ - "" + "percentielen moeten een lijst of tuple zijn met twee numerieke waarden, waarvan de eerste lager is dan de tweede waarde" + ], + "`compare_columns` must have the same length as `source_columns`.": [ + "`compare_columns` moet dezelfde lengte hebben als `source_columns`." + ], + "`compare_type` must be `difference`, `percentage` or `ratio`": [ + "`compare_type` moet `verschillen`, `percentage` of `ratio` zijn" ], - "`compare_columns` must have the same length as `source_columns`.": [""], - "`compare_type` must be `difference`, `percentage` or `ratio`": [""], "Column \"%(column)s\" is not numeric or does not exists in the query results.": [ - "" + "Kolom \"%(column)s\" is niet numeriek of bestaat niet in de zoekresultaten." ], "`rename_columns` must have the same length as `columns`.": [ "`rename_columns` moet dezelfde lengte hebben als `columns`." @@ -948,9 +1718,15 @@ "Invalid cumulative operator: %(operator)s": [ "Ongeldige cumulative operator: %(operator)s" ], - "Invalid geohash string": ["Ongeldige geohash string"], - "Invalid longitude/latitude": ["Ongeldige longitude/latitude"], - "Invalid geodetic string": ["Ongeldige geodetic string"], + "Invalid geohash string": [ + "Ongeldige geohash string" + ], + "Invalid longitude/latitude": [ + "Ongeldige longitude/latitude" + ], + "Invalid geodetic string": [ + "Ongeldige geodetic string" + ], "Pivot operation requires at least one index": [ "Pivot bewerking vereist ten minste één index" ], @@ -960,11 +1736,15 @@ "`prophet` package not installed": [ "`prophet` package niet geïnstalleerd" ], - "Time grain missing": ["Time grain ontbreekt"], + "Time grain missing": [ + "Time grain ontbreekt" + ], "Unsupported time grain: %(time_grain)s": [ "Niet-ondersteunde time grain: %(time_grain)s" ], - "Periods must be a whole number": [""], + "Periods must be a whole number": [ + "Perioden moeten een heel getal zijn" + ], "Confidence interval must be between 0 and 1 (exclusive)": [ "Confidence interval moet tussen 0 en 1 liggen (exclusief)" ], @@ -974,11 +1754,21 @@ "DataFrame include at least one series": [ "DataFrame bevat ten minste één reeks" ], + "Label already exists": [ + "Label bestaat al" + ], + "Resample operation requires DatetimeIndex": [ + "Hermonsteren bewerking vereist DatumtijdIndex" + ], "Undefined window for rolling operation": [ "Onbepaald venster voor rolling operation" ], - "Window must be > 0": [""], - "Invalid rolling_type: %(type)s": ["Ongeldig rolling_type: %(type)s"], + "Window must be > 0": [ + "Venster moet > 0 zijn" + ], + "Invalid rolling_type: %(type)s": [ + "Ongeldig rolling_type: %(type)s" + ], "Invalid options for %(rolling_type)s: %(options)s": [ "Ongeldige opties voor %(rolling_type)s: %(options)s" ], @@ -994,171 +1784,392 @@ "Invalid numpy function: %(operator)s": [ "Ongeldige numpy functie: %(operator)s" ], - "json isn't valid": ["json is ongeldig"], - "Export to YAML": ["Export naar YAML"], - "Export to YAML?": ["Export naar YAML?"], - "Delete": ["Verwijder"], - "Delete all Really?": ["Ben je zeker dat je alles wil verwijderen?"], - "Is favorite": ["Is favoriet"], - "Is tagged": [""], + "Unexpected time range: %(error)s": [ + "Onverwacht tijdsbereik: %(error)s" + ], + "json isn't valid": [ + "json is ongeldig" + ], + "Export to YAML": [ + "Export naar YAML" + ], + "Export to YAML?": [ + "Export naar YAML?" + ], + "Delete": [ + "Verwijder" + ], + "Delete all Really?": [ + "Ben je zeker dat je alles wil verwijderen?" + ], + "Is favorite": [ + "Is favoriet" + ], + "Is tagged": [ + "Is getagd" + ], "The data source seems to have been deleted": [ "De gegevensbron lijkt te zijn verwijderd" ], "The user seems to have been deleted": [ "De gebruiker lijkt te zijn verwijderd" ], - "Error: %(msg)s": [""], - "Explore - %(table)s": ["Verken - %(table)s"], - "Explore": ["Verken"], - "Chart [{}] has been saved": ["Grafiek [{}] is opgeslagen"], - "Chart [{}] has been overwritten": ["Grafiek [{}] is overschreven"], + "You don't have the rights to download as csv": [ + "Je hebt geen rechten om te downloaden als csv " + ], + "Error: permalink state not found": [ + "Fout: permalink status niet gevonden" + ], + "Error: %(msg)s": [ + "Fout: %(msg)s" + ], + "You don't have the rights to alter this chart": [ + "Je hebt geen rechten om deze grafiek te wijzigen" + ], + "You don't have the rights to create a chart": [ + "Je hebt geen rechten om een grafiek te maken" + ], + "Explore - %(table)s": [ + "Verken - %(table)s" + ], + "Explore": [ + "Verken" + ], + "Chart [{}] has been saved": [ + "Grafiek [{}] is opgeslagen" + ], + "Chart [{}] has been overwritten": [ + "Grafiek [{}] is overschreven" + ], + "You don't have the rights to alter this dashboard": [ + "Je het geen rechten om dit dashboard te wijzigen" + ], "Chart [{}] was added to dashboard [{}]": [ "Grafiek [{}] werd toegevoegd aan dashboard [{}]" ], + "You don't have the rights to create a dashboard": [ + "Je hebt geen rechten om een dashboard aan te maken" + ], "Dashboard [{}] just got created and chart [{}] was added to it": [ "Dashboard [{}] is zojuist aangemaakt en grafiek [{}] is eraan toegevoegd" ], "Malformed request. slice_id or table_name and db_name arguments are expected": [ - "" + "Misvormde aanvraag. slice_id of table_name en db_name argumenten worden verwacht" + ], + "Chart %(id)s not found": [ + "Grafiek %(id)s niet gevonden" ], - "Chart %(id)s not found": ["Grafiek %(id)s niet gevonden"], "Table %(table)s wasn't found in the database %(db)s": [ "Tabwl %(table)s werd niet gevonden in de database %(db)s" ], - "Show CSS Template": ["Toon CSS Template"], - "Add CSS Template": ["Voeg CSS Template toe"], - "Edit CSS Template": ["Bewerk CSS Template"], - "Template Name": ["Template Naam"], - "A human-friendly name": ["Een mensvriendelijke naam"], + "permalink state not found": [ + "permalink status niet gevonden" + ], + "Show CSS Template": [ + "Toon CSS Template" + ], + "Add CSS Template": [ + "Voeg CSS Template toe" + ], + "Edit CSS Template": [ + "Bewerk CSS Template" + ], + "Template Name": [ + "Template Naam" + ], + "A human-friendly name": [ + "Een mensvriendelijke naam" + ], "Used internally to identify the plugin. Should be set to the package name from the pluginʼs package.json": [ - "" + "Intern gebruikt om de plugin te identificeren. Moet worden ingesteld op de pakketnaam van de plugins package.json" ], "A full URL pointing to the location of the built plugin (could be hosted on a CDN for example)": [ - "" + "Een volledige URL die wijst naar de locatie van de plugin (kan bijvoorbeeld worden gehost op een CDN)" + ], + "Custom Plugins": [ + "Aangepaste Plugins" + ], + "Custom Plugin": [ + "Aangepaste Plugin" + ], + "Add a Plugin": [ + "Voeg een Plugin toe" + ], + "Edit Plugin": [ + "Bewerk Plugin" ], - "Custom Plugins": ["Custom Plugins"], - "Custom Plugin": ["Custom Plugin"], - "Add a Plugin": ["Voeg een Plugin toe"], - "Edit Plugin": ["Bewerk Plugin"], "The dataset associated with this chart no longer exists": [ "De dataset die bij deze grafiek hoort bestaat niet meer" ], - "Could not determine datasource type": ["Kon type databron niet bepalen"], - "Could not find viz object": ["Kon het viz object niet vinden"], - "Show Chart": ["Toon grafiek"], - "Add Chart": ["Voeg grafiek toe"], - "Edit Chart": ["Bewerk grafiek"], + "Could not determine datasource type": [ + "Kon type gegevensbron niet bepalen" + ], + "Could not find viz object": [ + "Kon het viz object niet vinden" + ], + "Show Chart": [ + "Toon grafiek" + ], + "Add Chart": [ + "Voeg grafiek toe" + ], + "Edit Chart": [ + "Bewerk grafiek" + ], "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.": [ - "" + "Deze parameters worden dynamisch gegenereerd bij het klikken op opslaan of overschrijven knop in de verkenningsweergave. Dit JSON-object is hier blootgesteld ter referentie en voor gevorderde gebruikers die mogelijk specifieke parameters willen wijzigen." ], "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.": [ "Duur (in seconden) van de caching timeout voor deze grafiek. Merk op dat dit standaard de datasource/tabel timeout is indien ongedefinieerd." ], - "Creator": ["Maker"], - "Datasource": ["Gegevensbron"], - "Last Modified": ["Laatst gewijzigd"], - "Parameters": ["Parameters"], - "Chart": ["Grafiek"], - "Name": ["Naam"], - "Visualization Type": ["Type visualisatie"], - "Show Dashboard": ["Toon Dashboard"], - "Add Dashboard": ["Voeg Dashboard toe"], - "Edit Dashboard": ["Bewerk Dashboard"], + "Creator": [ + "Maker" + ], + "Datasource": [ + "Gegevensbron" + ], + "Last Modified": [ + "Laatst gewijzigd" + ], + "Parameters": [ + "Parameters" + ], + "Chart": [ + "Grafiek" + ], + "Name": [ + "Naam" + ], + "Visualization Type": [ + "Type visualisatie" + ], + "Show Dashboard": [ + "Toon Dashboard" + ], + "Add Dashboard": [ + "Voeg Dashboard toe" + ], + "Edit Dashboard": [ + "Bewerk 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": [ - "" + "Dit json object beschrijft de positionering van de widgets in het dashboard. Het wordt dynamisch gegenereerd bij het aanpassen van de grootte en positie van widgets door te slepen en neer te zetten in de dashboard weergave" ], "The CSS for individual dashboards can be altered here, or in the dashboard view where changes are immediately visible": [ - "" + "De CSS voor individuele dashboards kan hier worden gewijzigd, of in de dashboard weergave waar wijzigingen direct zichtbaar zijn" ], "To get a readable URL for your dashboard": [ "Om een leesbare URL voor uw dashboard te krijgen" ], "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.": [ - "" + "Dit JSON-object wordt dynamisch gegenereerd bij het klikken op opslaan of overschrijven van de knop in de dashboard weergave. Het is hier blootgesteld ter referentie en voor gevorderde gebruikers die mogelijk specifieke parameters willen wijzigen." ], "Owners is a list of users who can alter the dashboard.": [ "Eigenaars is een lijst van gebruikers die het dashboard kunnen wijzigen." ], "Roles is a list which defines access to the dashboard. Granting a role access to a dashboard will bypass dataset level checks.If no roles are defined, regular access permissions apply.": [ - "" + "Rollen is een lijst die toegang tot het dashboard definieert. Het verlenen van een rol-toegang tot een dashboard zal controle op het dataset niveau omzeilen. Als er geen rollen zijn gedefinieerd, dan zijn reguliere toegangsrechten van toepassing." ], "Determines whether or not this dashboard is visible in the list of all dashboards": [ "Bepaalt of dit dashboard al dan niet zichtbaar is in de lijst van alle dashboards" ], - "Dashboard": ["Dashboard"], - "Title": ["Titel"], - "Slug": ["Slug"], - "Roles": ["Rollen"], - "Published": ["Gepubliceerd"], - "Position JSON": ["Positie JSON"], - "CSS": ["CSS"], - "JSON Metadata": ["JSON Metadata"], - "Export": ["Export"], - "Export dashboards?": ["Export dashboards?"], - "Only the following file extensions are allowed: %(allowed_extensions)s": [ - "Alleen de volgende bestandsextensies zijn toegestaan: %(allowed_extensions)s" + "Dashboard": [ + "Dashboard" ], - "Table name cannot contain a schema": [""], - "Select a database to upload the file to": [""], - "A dictionary with column names and their data types if you need to change the defaults. Example: {\"user_id\":\"int\"}. Check Python's Pandas library for supported data types.": [ - "" + "Title": [ + "Titel" ], - "Delimiter": ["Scheidingsteken"], - ",": [""], - ".": [""], - "Other": [""], - "Fail": ["Fout"], - "Replace": ["Vervang"], - "Append": ["Voeg toe"], - "Skip Initial Space": ["Eerste spatie overslaan"], - "Skip Blank Lines": ["Blanco regels overslaan"], - "Day First": [""], - "DD/MM format dates, international and European format": [""], - "Decimal Character": ["Decimaal teken"], - "Json list of the values that should be treated as null. Examples: [\"\"] for empty strings, [\"None\", \"N/A\"], [\"nan\", \"null\"]. Warning: Hive database supports only a single value": [ - "" + "Slug": [ + "Slak" + ], + "Roles": [ + "Rollen" + ], + "Published": [ + "Gepubliceerd" + ], + "Position JSON": [ + "Positie JSON" + ], + "CSS": [ + "CSS" + ], + "JSON Metadata": [ + "JSON Metadata" + ], + "Export": [ + "Exporteer" + ], + "Export dashboards?": [ + "Dashboards exporteren?" + ], + "CSV Upload": [ + "CSV Upload" + ], + "Select a file to be uploaded to the database": [ + "Selecteer een bestand om te uploaden naar de database" + ], + "Only the following file extensions are allowed: %(allowed_extensions)s": [ + "Alleen de volgende bestandsextensies zijn toegestaan: %(allowed_extensions)s" + ], + "Name of table to be created with CSV file": [ + "Tabel naam die gemaakt moet worden met een CSV-bestand" + ], + "Table name cannot contain a schema": [ + "Tafelnaam mag geen schema bevatten" + ], + "Select a database to upload the file to": [ + "Selecteer een database om het bestand naar te uploaden" + ], + "Column Data Types": [ + "Kolom gegevenstypen" + ], + "Select a schema if the database supports this": [ + "Selecteer een schema als de database dit ondersteunt" + ], + "Delimiter": [ + "Scheidingsteken" + ], + "Enter a delimiter for this data": [ + "Voer een scheidingsteken in voor deze gegevens" + ], + ",": [ + "," + ], + ".": [ + "." + ], + "Other": [ + "Overige" + ], + "If Table Already Exists": [ + "Als Tabel al bestaat" + ], + "What should happen if the table already exists": [ + "Wat moet er gebeuren als de tabel al bestaat" + ], + "Fail": [ + "Fout" + ], + "Replace": [ + "Vervang" + ], + "Append": [ + "Voeg toe" + ], + "Skip Initial Space": [ + "Eerste spatie overslaan" + ], + "Skip spaces after delimiter": [ + "Sla spaties over na het scheidingsteken" + ], + "Skip Blank Lines": [ + "Blanco regels overslaan" + ], + "Skip blank lines rather than interpreting them as Not A Number values": [ + "Sla lege regels over in plaats van ze te interpreteren als NaN waarden" + ], + "Columns To Be Parsed as Dates": [ + "Kolommen die als datums worden geparsed" + ], + "A comma separated list of columns that should be parsed as dates": [ + "Een door komma's gescheiden lijst van kolommen die als datums moeten worden geïnterpreteerd" + ], + "Day First": [ + "Dag Eerst" + ], + "DD/MM format dates, international and European format": [ + "DD/MM opmaak datums, internationaal en Europees formaat" + ], + "Decimal Character": [ + "Decimaal teken" + ], + "Character to interpret as decimal point": [ + "Teken te interpreteren als decimaalteken" + ], + "Null Values": [ + "Null Waarden" + ], + "Json list of the values that should be treated as null. Examples: [\"\"] for empty strings, [\"None\", \"N/A\"], [\"nan\", \"null\"]. Warning: Hive database supports only a single value": [ + "Json lijst van waarden die als nul moeten worden behandeld. Voorbeelden: [\"\"] voor lege strings, [\"None\", \"N/A\"], [\"nan\", \"null\"]. Waarschuwing: Hive database ondersteunt slechts een enkele waarde" + ], + "Index Column": [ + "Index Kolom" ], - "Index Column": ["Index Kolom"], "Column to use as the row labels of the dataframe. Leave empty if no index column": [ - "" + "Te gebruiken kolom als rij labels van de dataframe. Laat leeg als er geen index kolom is" + ], + "Dataframe Index": [ + "Dataframe Index" + ], + "Write dataframe index as a column": [ + "Schrijf dataframe index als een kolom" + ], + "Column Label(s)": [ + "Kolom Label(s)" ], - "Dataframe Index": ["Dataframe Index"], - "Column Label(s)": ["Kolom Label(s)"], "Column label for index column(s). If None is given and Dataframe Index is checked, Index Names are used": [ - "" + "Kolomlabel voor indexkolom(men). Als er geen is gegeven en de Dataframe Index is aangevinkt, worden indexnamen gebruikt" + ], + "Columns To Read": [ + "Kolommen om te Lezen" + ], + "Json list of the column names that should be read": [ + "Json lijst van de kolomnamen die moeten worden gelezen" + ], + "Overwrite Duplicate Columns": [ + "Overschrijf Dubbele Kolommen" ], "If duplicate columns are not overridden, they will be presented as \"X.1, X.2 ...X.x\"": [ - "" + "Als dubbele kolommen niet worden overschreven, worden ze gepresenteerd als \"X.1, X.2 ...X.x\"" + ], + "Header Row": [ + "Koptekst rij" ], - "Header Row": ["Koptekst rij"], "Row containing the headers to use as column names (0 is first line of data). Leave empty if there is no header row": [ - "" + "Rij met de headers om te gebruiken als kolomnamen (0 is de eerste regel van de gegevens). Laat leeg als er geen kopregel is" + ], + "Rows to Read": [ + "Te lezen rijen" + ], + "Number of rows of file to read": [ + "Aantal rijen van het bestand om te lezen" + ], + "Skip Rows": [ + "Rijen overslaan" + ], + "Number of rows to skip at start of file": [ + "Aantal rijen om over te slaan aan het begin van het bestand" ], - "Rows to Read": ["Te lezen rijen"], - "Skip Rows": ["Rijen overslaan"], "Name of table to be created from excel data.": [ "Naam van de tabel die moet worden aangemaakt op basis van excel-gegevens." ], - "Excel File": ["Excel bestand"], + "Excel File": [ + "Excel bestand" + ], "Select a Excel file to be uploaded to a database.": [ "Selecteer een Excel-bestand dat moet worden geüpload naar een database." ], - "Sheet Name": ["Naam tabblad"], + "Sheet Name": [ + "Naam tabblad" + ], "Strings used for sheet names (default is the first sheet).": [ "Strings gebruikt voor bladnamen (standaard is het eerste blad)." ], "Specify a schema (if database flavor supports this).": [ "Geef een schema op (als de databasesmaak dit ondersteunt)." ], - "Table Exists": ["De tabel bestaat reeds"], + "Table Exists": [ + "De tabel bestaat reeds" + ], "If table exists do one of the following: Fail (do nothing), Replace (drop and recreate table) or Append (insert data).": [ - "" + "Als de tabel bestaat doe dan een van de volgende: Fout (niets doen), Vervang (verwijder en creëer tabel) of Toevoegen (voeg gegevens in)." ], "Row containing the headers to use as column names (0 is first line of data). Leave empty if there is no header row.": [ - "" + "Rij met de headers om te gebruiken als kolomnamen (0 is de eerste regel van gegevens). Laat leeg als er geen kopregel is." ], "Column to use as the row labels of the dataframe. Leave empty if no index column.": [ - "" + "Te gebruiken kolom als rij labels van de dataframe. Laat leeg als er geen index kolom is." ], "Number of rows to skip at start of file.": [ "Aantal rijen om over te slaan aan het begin van het bestand." @@ -1166,7 +2177,9 @@ "Number of rows of file to read.": [ "Aantal rijen van het te lezen bestand." ], - "Parse Dates": ["Bereken Data"], + "Parse Dates": [ + "Bereken Data" + ], "A comma separated list of columns that should be parsed as dates.": [ "Een door komma’s gescheiden lijst van kolommen die als datums moeten worden geparseerd." ], @@ -1177,26 +2190,46 @@ "Schrijf dataframe index als een kolom." ], "Column label for index column(s). If None is given and Dataframe Index is True, Index Names are used.": [ - "" + "Kolomlabel voor indexkolom(men). Als er geen wordt gegeven en de Dataframe Index waar is, worden Indexnamen gebruikt." + ], + "Null values": [ + "Nul waarden" ], - "Null values": ["Nul waarden"], "Json list of the values that should be treated as null. Examples: [\"\"], [\"None\", \"N/A\"], [\"nan\", \"null\"]. Warning: Hive database supports only single value. Use [\"\"] for empty string.": [ - "" + "Json lijst van waarden die als nul moeten worden behandeld. Voorbeelden: [\"\"], [\"None\", \"N/A\"], [\"nan\", \"null\"]. Waarschuwing: Hive database ondersteunt slechts één waarde. Gebruik [\"\"] voor lege string." + ], + "Name of table to be created from columnar data.": [ + "De naam van de tabel die gemaakt moet worden op basis van kolomgegevens." + ], + "Columnar File": [ + "Columnar bestand" + ], + "Select a Columnar file to be uploaded to a database.": [ + "Selecteer een kolom-bestand om te worden geüpload naar een database." + ], + "Use Columns": [ + "Gebruik Kolommen" ], - "Name of table to be created from columnar data.": [""], - "Columnar File": [""], - "Select a Columnar file to be uploaded to a database.": [""], - "Use Columns": [""], "Json list of the column names that should be read. If not None, only these columns will be read from the file.": [ - "" + "Json lijst met kolomnamen die moeten worden gelezen. Indien niet geen, dan worden alleen deze kolommen uit het bestand gelezen." + ], + "Databases": [ + "Databases" + ], + "Show Database": [ + "Toon Database" + ], + "Add Database": [ + "Voeg Database toe" + ], + "Edit Database": [ + "Bewerk Database" + ], + "Expose this DB in SQL Lab": [ + "Expose deze DB in SQL Lab" ], - "Databases": ["Databases"], - "Show Database": ["Toon Database"], - "Add Database": ["Voeg Database toe"], - "Edit Database": ["Bewerk Database"], - "Expose this DB in SQL Lab": ["Expose deze DB in SQL Lab"], "Operate the database in asynchronous mode, meaning that the queries are executed on remote workers as opposed to on the web server itself. This assumes that you have a Celery worker setup as well as a results backend. Refer to the installation docs for more information.": [ - "" + "Beheren van de database in asynchrone modus, wat betekent dat de query's worden uitgevoerd op externe werkers in tegenstelling tot op de webserver zelf. Dit veronderstelt dat u zowel een Celery werker als een resultaten backend heeft. Raadpleeg de installatie documenten voor meer informatie." ], "Allow CREATE TABLE AS option in SQL Lab": [ "Sta de CREATE TABLE AS optie toe in SQL Lab" @@ -1205,3508 +2238,9044 @@ "Sta de CREATE VIEW AS optie toe in SQL Lab" ], "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in SQL Lab": [ - "" + "Gebruikers toestaan niet-SELECT statements uit te voeren (UPDATE, DELETE, CREATE, ...) in SQL Lab" ], "When allowing CREATE TABLE AS option in SQL Lab, this option forces the table to be created in this schema": [ "Wanneer de CREATE TABLE AS optie in SQL Lab wordt toegestaan, dwingt deze optie de tabel om in dit schema aangemaakt te worden" ], "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.": [ - "" + "Indien Presto, alle zoekopdrachten in SQL Lab zullen worden uitgevoerd als de momenteel ingelogde gebruiker die toestemming moet hebben om ze uit te voeren.
Als Hive en hive.server2.enable.doAs is ingeschakeld, worden de zoekopdrachten als serviceaccount uitgevoerd, maar imiteer de momenteel ingelogde gebruiker via hive.server2.proxy.user eigenschap." ], "Duration (in seconds) of the caching timeout for charts of this database. A timeout of 0 indicates that the cache never expires. Note this defaults to the global timeout if undefined.": [ - "" + "Duur (in seconden) van de caching time-out voor grafieken van deze database. Een time-out van 0 geeft aan dat de cache nooit verloopt. Merk op dat dit standaard de globale time-out is indien niet gedefinieerd." ], "If selected, please set the schemas allowed for csv upload in Extra.": [ "Indien geselecteerd, gelieve de toegestane schema’s voor csv upload in Extra in te stellen." ], - "Expose in SQL Lab": ["Expose in SQL Lab"], - "Allow CREATE TABLE AS": ["Sta CREATE TABLE AS toe"], - "Allow CREATE VIEW AS": ["Sta CREATE VIEW AS toe"], - "Allow DML": ["DML toestaan"], - "CTAS Schema": ["CTAS Schema"], - "SQLAlchemy URI": ["SQLAlchemy URI"], - "Chart Cache Timeout": ["Cache time-out"], - "Secure Extra": ["Secure Extra"], - "Root certificate": ["Root certificaat"], - "Async Execution": ["Async uitvoering"], - "Impersonate the logged on user": ["De aangemelde gebruiker imiteren"], - "Allow Csv Upload": ["Csv upload toestaan"], - "Backend": ["Backend"], + "Expose in SQL Lab": [ + "Weergeven in SQL Lab" + ], + "Allow CREATE TABLE AS": [ + "Sta CREATE TABLE AS toe" + ], + "Allow CREATE VIEW AS": [ + "Sta CREATE VIEW AS toe" + ], + "Allow DML": [ + "DML toestaan" + ], + "CTAS Schema": [ + "CTAS Schema" + ], + "SQLAlchemy URI": [ + "SQLAlchemy URI" + ], + "Chart Cache Timeout": [ + "Cache time-out" + ], + "Secure Extra": [ + "Beveilig Extra" + ], + "Root certificate": [ + "Root certificaat" + ], + "Async Execution": [ + "Async uitvoering" + ], + "Impersonate the logged on user": [ + "De aangemelde gebruiker imiteren" + ], + "Allow Csv Upload": [ + "Csv upload toestaan" + ], + "Backend": [ + "Backend" + ], "Extra field cannot be decoded by JSON. %(msg)s": [ "Extra veld kan niet gedecodeerd worden door JSON. %(msg)s" ], "Invalid connection string, a valid string usually follows:'DRIVER://USER:PASSWORD@DB-HOST/DATABASE-NAME'

Example:'postgresql://user:password@your-postgres-db/database'

": [ - "" + "Ongeldige connectie string, een geldige string volgt algemeen: 'DRIVER://USER:PASSWORD@DB-HOST/DATABASE-NAAM'

Voorbeeld: 'postgresql://user:password@your-postgres-db/database'

" + ], + "CSV to Database configuration": [ + "CSV naar Database configuratie" ], - "CSV to Database configuration": ["CSV naar Database configuratie"], "Database \"%(database_name)s\" schema \"%(schema_name)s\" is not allowed for csv uploads. Please contact your Superset Admin.": [ - "" + "Database \"%(database_name)s\" schema \"%(schema_name)s\" is niet toegestaan voor csv uploads. Neem contact op met uw Superset Admin." ], "Unable to upload CSV file \"%(filename)s\" to table \"%(table_name)s\" in database \"%(db_name)s\". Error message: %(error_msg)s": [ - "" + "Kan CSV-bestand niet uploaden \"%(filename)s\" voor tabel \"%(table_name)s\" in database \"%(db_name)s\". Foutmelding: %(error_msg)s" ], "CSV file \"%(csv_filename)s\" uploaded to table \"%(table_name)s\" in database \"%(db_name)s\"": [ "CSV-bestand “%(csv_filename)s” geüpload naar tabel “%(table_name)s” in database “%(db_name)s”" ], - "Excel to Database configuration": ["Excel naar Database configuratie"], + "Excel to Database configuration": [ + "Excel naar Database configuratie" + ], "Database \"%(database_name)s\" schema \"%(schema_name)s\" is not allowed for excel uploads. Please contact your Superset Admin.": [ - "" + "Database \"%(database_name)s\" schema \"%(schema_name)s\" is niet toegestaan voor Excel uploads. Neem contact op met uw Superset Admin." ], "Unable to upload Excel file \"%(filename)s\" to table \"%(table_name)s\" in database \"%(db_name)s\". Error message: %(error_msg)s": [ - "" + "Kan Excel-bestand niet uploaden \"%(filename)s\" voor tabel \"%(table_name)s\" in database \"%(db_name)s\". Foutmelding: %(error_msg)s" ], "Excel file \"%(excel_filename)s\" uploaded to table \"%(table_name)s\" in database \"%(db_name)s\"": [ - "" + "Excel-bestand \"%(excel_filename)s\" geüpload naar tabel \"%(table_name)s\" in database \"%(db_name)s\"" + ], + "Columnar to Database configuration": [ + "Kolom naar Database configuratie" ], - "Columnar to Database configuration": [""], "Multiple file extensions are not allowed for columnar uploads. Please make sure all files are of the same extension.": [ - "" + "Meerdere bestandsextensies zijn niet toegestaan voor kolomuploads. Zorg ervoor dat alle bestanden van dezelfde extensie zijn." ], "Database \"%(database_name)s\" schema \"%(schema_name)s\" is not allowed for columnar uploads. Please contact your Superset Admin.": [ - "" + "Database \"%(database_name)s\" schema \"%(schema_name)s\" is niet toegestaan voor kolomuploads. Neem contact op met uw Superset Admin." ], "Unable to upload Columnar file \"%(filename)s\" to table \"%(table_name)s\" in database \"%(db_name)s\". Error message: %(error_msg)s": [ - "" + "Kan het kolombestand \"%(filename)s\" niet uploaden naar de tabel \"%(table_name)s\" in de database \"%(db_name)s\". Foutmelding: %(error_msg)s" ], "Columnar file \"%(columnar_filename)s\" uploaded to table \"%(table_name)s\" in database \"%(db_name)s\"": [ - "" + "Kolombestand \"%(columnar_filename)s\" geüpload naar tabel \"%(table_name)s\" in database \"%(db_name)s\"" + ], + "Request missing data field.": [ + "Verzoek om ontbrekend data veld." ], - "Request missing data field.": ["Verzoek om ontbrekend data veld."], "Duplicate column name(s): %(columns)s": [ "Dubbele kolomnaam (of -namen): %(columns)s" ], - "Logs": ["Logs"], - "Show Log": ["Toon Log"], - "Add Log": ["Voeg Log toe"], - "Edit Log": ["Bewerk Log"], - "User": ["Gebruiker"], - "Action": ["Actie"], - "dttm": ["dttm"], - "JSON": ["JSON"], - "Time Range": [""], - "Time Column": [""], - "Time Grain": [""], - "Time Granularity": [""], - "Time": ["Tijd"], - "A reference to the [Time] configuration, taking granularity into account": [ - "" + "Logs": [ + "Logboek" ], - "Aggregate": [""], - "Raw records": [""], - "Certified by %s": ["Gecertificeerd door %s"], - "description": ["omschrijving"], - "bolt": ["bolt"], - "Changing this control takes effect instantly": [ - "Het veranderen van deze controleknop heeft onmiddellijk effect" + "Show Log": [ + "Toon Log" ], - "Show info tooltip": [""], - "SQL expression": ["SQL expressie"], - "Label": ["Label"], - "function type icon": [""], - "string type icon": [""], - "numeric type icon": [""], - "boolean type icon": [""], - "temporal type icon": [""], - "Advanced analytics": ["Geavanceerde analytics"], - "This section contains options that allow for advanced analytical post processing of query results": [ - "Dit onderdeel bevat opties die geavanceerde analytische nabewerking van queryresultaten mogelijk maken" + "Add Log": [ + "Voeg Log toe" ], - "Rolling window": ["Rollend venster"], - "Rolling function": ["Rolfunctie"], - "None": ["Geen"], - "Defines a rolling window function to apply, works along with the [Periods] text box": [ - "" + "Edit Log": [ + "Bewerk Log" ], - "Periods": ["Periodes"], - "Defines the size of the rolling window function, relative to the time granularity selected": [ - "Bepaalt de grootte van de rolvenster functie, ten opzichte van de geselecteerde tijdgranulariteit" + "User": [ + "Gebruiker" ], - "Min periods": ["Min periodes"], - "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": [ - "" + "Action": [ + "Actie" ], - "Time comparison": ["Tijdsvergelijking"], - "Time shift": ["Time shift"], - "1 day ago": [""], - "1 week ago": [""], - "28 days ago": [""], - "52 weeks ago": [""], - "1 year ago": [""], - "104 weeks ago": [""], - "2 years ago": [""], - "156 weeks ago": [""], - "3 years ago": [""], - "Overlay one or more timeseries from a relative time period. Expects relative time deltas in natural language (example: 24 hours, 7 days, 52 weeks, 365 days). Free text is supported.": [ - "" + "dttm": [ + "dttm" ], - "Calculation type": ["Soort berekening"], - "Difference": [""], - "Percentage change": [""], - "Ratio": [""], - "How to display time shifts: as individual lines; as the difference between the main time series and each time shift; as the percentage change; or as the ratio between series and time shifts.": [ - "" + "JSON": [ + "JSON" ], - "Resample": [""], - "Rule": ["Regel"], - "1 minutely frequency": [""], - "1 calendar day frequency": [""], - "7 calendar day frequency": [""], - "1 month start frequency": [""], - "1 month end frequency": [""], - "Pandas resample rule": ["Pandas resample regel"], - "Fill method": [""], - "Null imputation": [""], - "Linear interpolation": [""], - "Forward values": [""], - "Backward values": [""], - "Pandas resample method": ["Pandas resample methode"], - "Annotations and Layers": [""], - "Left": [""], - "Top": [""], - "Chart Title": [""], - "X Axis": ["X As"], - "X Axis Title": [""], - "X AXIS TITLE BOTTOM MARGIN": [""], - "Y Axis": ["Y As"], - "Y Axis Title": [""], - "Y Axis Title Margin": [""], - "Y Axis Title Position": [""], - "Query": ["Query"], - "Predictive Analytics": [""], - "Enable forecast": [""], - "Enable forecasting": [""], - "Forecast periods": [""], - "How many periods into the future do we want to predict": [""], - "Confidence interval": [""], - "Width of the confidence interval. Should be between 0 and 1": [""], - "Yearly seasonality": [""], - "Yes": ["Ja"], - "No": ["Nee"], - "Should yearly seasonality be applied. An integer value will specify Fourier order of seasonality.": [ - "" + "Untitled Query": [ + "Naamloze Query" ], - "Weekly seasonality": [""], - "Should weekly seasonality be applied. An integer value will specify Fourier order of seasonality.": [ - "" + "Time Range": [ + "Tijdsbereik" ], - "Daily seasonality": [""], - "Should daily seasonality be applied. An integer value will specify Fourier order of seasonality.": [ - "" + "Time Column": [ + "Tijd Kolom" ], - "Time related form attributes": ["Tijdgerelateerde vormattributen"], - "Datasource & Chart Type": [""], - "Chart ID": ["Grafiek ID"], - "The id of the active chart": ["Het id van de actieve grafiek"], - "Cache Timeout (seconds)": ["Cache Timeout (seconden)"], - "The number of seconds before expiring the cache": [ - "Het aantal seconden voor het verstrijken van de cache" + "Time Grain": [ + "Tijdsinterval" ], - "URL Parameters": [""], - "Extra url parameters for use in Jinja templated queries": [""], - "Extra Parameters": [""], - "Extra parameters that any plugins can choose to set for use in Jinja templated queries": [ - "" + "Time Granularity": [ + "Tijd Granulariteit" ], - "Color Scheme": [""], - "Contribution Mode": [""], - "Row": ["Rij"], - "Series": ["Series"], - "Calculate contribution per series or row": [""], - "Y-Axis Sort By": [""], - "X-Axis Sort By": [""], - "Decides which column to sort the base axis by.": [""], - "Force categorical": [""], - "Treat values as categorical.": [""], - "Decides which measure to sort the base axis by.": [""], - "Dimensions contain qualitative values such as names, dates, or geographical data. Use dimensions to categorize, segment, and reveal the details in your data. Dimensions affect the level of detail in the view.": [ - "" + "Time": [ + "Tijd" ], - "Add dataset columns here to group the pivot table columns.": [""], - "Dimension": [""], - "Defines the grouping of entities. Each series is represented by a specific color in the chart.": [ - "" + "A reference to the [Time] configuration, taking granularity into account": [ + "Een verwijzing naar de [Time] configuratie, rekening houdend met granulariteit" ], - "Entity": ["Entiteit"], - "This defines the element to be plotted on the chart": [ - "Dit definieert het element dat op de grafiek moet worden uitgezet" + "Aggregate": [ + "Aggregate" ], - "Filters": ["Filters"], - "Select one or many metrics to display. You can use an aggregation function on a column or write custom SQL to create a metric.": [ - "" + "Raw records": [ + "Ruwe records" ], - "Select a metric to display. You can use an aggregation function on a column or write custom SQL to create a metric.": [ - "" + "Category name": [ + "Categorie naam" ], - "Right Axis Metric": [""], - "Sort by": ["Sorteer op"], - "This metric is used to define row selection criteria (how the rows are sorted) if a series or row limit is present. If not defined, it reverts to the first metric (where appropriate).": [ - "" + "Total value": [ + "Totaal waarde" ], - "Bubble Size": [""], - "Metric used to calculate bubble size": [""], - "The dataset column/metric that returns the values on your chart's x-axis.": [ - "" + "Minimum value": [ + "Minimale waarde" ], - "The dataset column/metric that returns the values on your chart's y-axis.": [ - "" + "Maximum value": [ + "Maximale waarde" ], - "Color Metric": [""], - "A metric to use for color": ["Een meeteenheid te gebruiken voor kleur"], - "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": [ - "" + "Average value": [ + "Gemiddelde waarde" ], - "Drop a temporal column here or click": [""], - "Y-axis": [""], - "Dimension to use on y-axis.": [""], - "X-axis": [""], - "Dimension to use on x-axis.": [""], - "The type of visualization to display": [ - "Het type visualisatie dat moet worden weergegeven" + "Certified by %s": [ + "Gecertificeerd door %s" ], - "Fixed Color": [""], - "Use this to define a static color for all circles": [ - "Gebruik dit om een statische kleur te definiëren voor alle cirkels" + "description": [ + "omschrijving" ], - "Linear Color Scheme": [""], - "30 seconds": ["30 seconden"], - "1 minute": ["1 minuut"], - "5 minutes": ["5 minuten"], - "30 minutes": ["30 minuten"], - "1 hour": ["1 uur"], - "week": ["week"], - "month": ["maand"], - "year": ["jaar"], - "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`": [ - "" + "bolt": [ + "bliksem" ], - "Select a time grain for the visualization. The grain is the time interval represented by a single point on the chart.": [ - "" + "Changing this control takes effect instantly": [ + "Het veranderen van deze controleknop heeft onmiddellijk effect" ], - "This control filters the whole chart based on the selected time range. All relative times, e.g. \"Last month\", \"Last 7 days\", \"now\", etc. are evaluated on the server using the server's local time (sans timezone). All tooltips and placeholder times are expressed in UTC (sans timezone). The timestamps are then evaluated by the database using the engine's local timezone. Note one can explicitly set the timezone per the ISO 8601 format if specifying either the start and/or end time.": [ - "" + "Show info tooltip": [ + "Toon info tooltip" ], - "Row limit": ["Rij limiet"], - "Limits the number of the rows that are computed in the query that is the source of the data used for this chart.": [ - "" + "SQL expression": [ + "SQL expressie" ], - "Sort Descending": [""], - "If enabled, this control sorts the results/values descending, otherwise it sorts the results ascending.": [ - "" + "Column datatype": [ + "Kolom gegevenstype" ], - "Series limit": ["Serie limiet"], - "Limits the number of series that get displayed. A joined subquery (or an extra phase where subqueries are not supported) is applied to limit the number of series that get fetched and rendered. This feature is useful when grouping by high cardinality column(s) though does increase the query complexity and cost.": [ - "" + "Column name": [ + "Kolomnaam" ], - "Y Axis Format": ["Y-as Formaat"], - "Currency format": [""], - "Time format": [""], - "The color scheme for rendering chart": [ - "Het kleurenschema voor de rendering grafiek" + "Label": [ + "Label" ], - "Whether to truncate metrics": [""], - "D3 format syntax: https://github.com/d3/d3-format": [""], - "Only applies when \"Label Type\" is set to show values.": [""], - "Only applies when \"Label Type\" is not set to a percentage.": [""], - "Adaptive formatting": [""], - "Original value": ["Originele waarde"], - "Duration in ms (66000 => 1m 6s)": [""], - "Duration in ms (1.40008 => 1ms 400µs 80ns)": [""], - "D3 time format syntax: https://github.com/d3/d3-time-format": [""], - "Stack Trace:": [""], - "No results were returned for this query. If you expected results to be returned, ensure any filters are configured properly and the datasource contains data for the selected time range.": [ - "" + "Metric name": [ + "Metriek naam" ], - "No Results": [""], - "Found invalid orderby options": [""], - "Invalid input": [""], - "Unexpected error: ": [""], - "(no description, click to see stack trace)": [""], - "Issue 1000 - The dataset is too large to query.": [""], - "Issue 1001 - The database is under an unusual load.": [""], - "An error occurred": ["Er is een fout opgetreden"], - "is expected to be an integer": [""], - "is expected to be a number": [""], - "is expected to be a Mapbox URL": [""], - "Value cannot exceed %s": [""], - "cannot be empty": [""], - "Filters for comparison must have a value": [""], - "Domain": [""], - "hour": ["uur"], - "day": ["dag"], - "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": [ - "" + "unknown type icon": [ + "onbekend type icoon" ], - "Chart Options": [""], - "Cell Size": [""], - "The size of the square cell, in pixels": [""], - "Cell Padding": [""], - "The distance between cells, in pixels": [""], - "Cell Radius": [""], - "The pixel radius": [""], - "Color Steps": [""], - "The number color \"steps\"": [""], - "Time Format": [""], - "Legend": [""], - "Whether to display the legend (toggles)": [""], - "Show Values": [""], - "Whether to display the numerical values within the cells": [""], - "Show Metric Names": [""], - "Whether to display the metric name as a title": [""], - "Number Format": [""], - "Correlation": [""], - "Visualizes how a metric has changed over a time using a color scale and a calendar view. Gray values are used to indicate missing values and the linear color scheme is used to encode the magnitude of each day's value.": [ - "" + "function type icon": [ + "functie type icoon" ], - "Business": [""], - "Comparison": [""], - "Intensity": [""], - "Pattern": [""], - "Report": [""], - "Trend": [""], - "less than {min} {name}": [""], - "between {down} and {up} {name}": [""], - "more than {max} {name}": [""], - "Sort by metric": [""], - "Whether to sort results by the selected metric in descending order.": [ - "" + "string type icon": [ + "string type icoon" ], - "Number format": [""], - "Choose a number format": [""], - "Source": ["Bron"], - "Choose a source": [""], - "Target": [""], - "Choose a target": [""], - "Flow": [""], - "Showcases the flow or link between categories using thickness of chords. The value and corresponding thickness can be different for each side.": [ - "" + "numeric type icon": [ + "numeriek type icoon" ], - "Relationships between community channels": [""], - "Chord Diagram": [""], - "Circular": [""], - "Legacy": [""], - "Proportional": [""], - "Relational": [""], - "Country": [""], - "Which country to plot the map for?": [""], - "ISO 3166-2 Codes": [""], - "Column containing ISO 3166-2 codes of region/province/department in your table.": [ - "" + "boolean type icon": [ + "boolean type icoon" ], - "Metric to display bottom title": [""], - "Map": [""], - "Visualizes how a single metric varies across a country's principal subdivisions (states, provinces, etc) on a choropleth map. Each subdivision's value is elevated when you hover over the corresponding geographic boundary.": [ - "" + "temporal type icon": [ + "tijdelijk type icoon" ], - "2D": [""], - "Geo": [""], - "Range": [""], - "Stacked": [""], - "Sorry, there appears to be no data": [""], - "Event definition": [""], - "Event Names": [""], - "Columns to display": [""], - "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.": [ - "" + "Advanced analytics": [ + "Geavanceerde analytics" ], - "Minimum leaf node event count": [""], - "Leaf nodes that represent fewer than this number of events will be initially hidden in the visualization": [ - "" + "This section contains options that allow for advanced analytical post processing of query results": [ + "Dit onderdeel bevat opties die geavanceerde analytische nabewerking van queryresultaten mogelijk maken" ], - "Additional metadata": [""], - "Metadata": [""], - "Select any columns for metadata inspection": [""], - "Entity ID": [""], - "e.g., a \"user id\" column": [""], - "Max Events": [""], - "The maximum number of events to return, equivalent to the number of rows": [ - "" + "Rolling window": [ + "Rollend venster" ], - "Compares the lengths of time different activities take in a shared timeline view.": [ - "" + "Rolling function": [ + "Rolfunctie" ], - "Event Flow": [""], - "Progressive": [""], - "Axis ascending": [""], - "Axis descending": [""], - "Metric ascending": [""], - "Metric descending": [""], - "Heatmap Options": [""], - "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": [""], - "Rendering": [""], - "pixelated (Sharp)": [""], - "auto (Smooth)": [""], - "image-rendering CSS attribute of the canvas object that defines how the browser scales up the image": [ - "" + "None": [ + "Geen" ], - "Normalize Across": [""], - "x": [""], - "y": [""], - "Color will be shaded based the normalized (0% to 100%) value of a given cell against the other cells in the selected range: ": [ - "" + "Defines a rolling window function to apply, works along with the [Periods] text box": [ + "Definieert een rollend venster functie om toe te passen, werkt samen met het [Periods] tekstvak" ], - "x: values are normalized within each column": [""], - "y: values are normalized within each row": [""], - "heatmap: values are normalized across the entire heatmap": [""], - "Left Margin": [""], - "Left margin, in pixels, allowing for more room for axis labels": [""], - "Bottom Margin": [""], - "Bottom margin, in pixels, allowing for more room for axis labels": [""], - "Value bounds": [""], - "Hard value bounds applied for color coding. Is only relevant and applied when the normalization is applied against the whole heatmap.": [ - "" + "Periods": [ + "Periodes" ], - "Sort X Axis": [""], - "Sort Y Axis": [""], - "Show percentage": [""], - "Whether to include the percentage in the tooltip": [""], - "Normalized": [""], - "Whether to apply a normal distribution based on rank on the color scale": [ - "" + "Defines the size of the rolling window function, relative to the time granularity selected": [ + "Bepaalt de grootte van de rolvenster functie, ten opzichte van de geselecteerde tijdgranulariteit" ], - "Value Format": [""], - "Visualize a related metric across pairs of groups. Heatmaps excel at showcasing the correlation or strength between two groups. Color is used to emphasize the strength of the link between each pair of groups.": [ - "" + "Min periods": [ + "Min periodes" ], - "Sizes of vehicles": [""], - "Employment and education": [""], - "Density": [""], - "Predictive": [""], - "Single Metric": [""], - "Deprecated": [""], - "count": [""], - "cumulative": [""], - "percentile (exclusive)": [""], - "Select the numeric columns to draw the histogram": [""], - "No of Bins": [""], - "Select the number of bins for the histogram": [""], - "X Axis Label": [""], - "Y Axis Label": [""], - "Whether to normalize the histogram": [""], - "Cumulative": [""], - "Whether to make the histogram cumulative": [""], - "Distribution": [""], - "Take your data points, and group them into \"bins\" to see where the densest areas of information lie": [ - "" + "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": [ + "Het minimum aantal rolperiodes dat nodig is om een waarde weer te geven. Bijvoorbeeld, als je een cumulatief bedrag op 7 dagen doet, kan je je \"Min Period\" 7 willen hebben, zodat alle getoonde datapunten het totaal van 7 periodes zijn. Dit zal de \"aanloopperiode\" verbergen die plaatsvindt in de eerste 7 periodes" ], - "Population age data": [""], - "Contribution": ["Bijdrage"], - "Compute the contribution to the total": [ - "Bereken de bijdrage aan het totaal" + "Time comparison": [ + "Tijdsvergelijking" ], - "Series Height": [""], - "Pixel height of each series": [""], - "Value Domain": [""], - "series: Treat each series independently; overall: All series use the same scale; change: Show changes compared to the first data point in each series": [ - "" + "Time shift": [ + "Tijdverschuiving" ], - "Compares how a metric changes over time between different groups. Each group is mapped to a row and change over time is visualized bar lengths and color.": [ - "" + "1 day ago": [ + "1 dag geleden" ], - "Horizon Chart": [""], - "Dark Cyan": [""], - "Gold": [""], - "Dim Gray": [""], - "Longitude": [""], - "Column containing longitude data": [""], - "Latitude": [""], - "Column containing latitude data": [""], - "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.": [ - "" + "1 week ago": [ + "1 week geleden" ], - "Points": [""], - "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": [ - "" + "28 days ago": [ + "28 dagen geleden" ], - "Point Radius Unit": [""], - "Pixels": [""], - "The unit of measure for the specified point radius": [""], - "Labelling": [""], - "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.": [ - "" + "30 days ago": [ + "30 dagen geleden" ], - "Cluster label aggregator": [""], - "sum": [""], - "mean": [""], - "std": [""], - "var": [""], - "Aggregate function applied to the list of points in each cluster to produce the cluster label.": [ - "" + "52 weeks ago": [ + "52 weken geleden" ], - "Visual Tweaks": [""], - "Live render": [""], - "Points and clusters will update as the viewport is being changed": [""], - "Map Style": [""], - "Streets": [""], - "Dark": [""], - "Satellite Streets": [""], - "Outdoors": [""], - "Base layer map style. See Mapbox documentation: %s": [""], - "Opacity": ["Opaciteit"], - "Opacity of all clusters, points, and labels. Between 0 and 1.": [""], - "RGB Color": [""], - "The color for points and clusters in RGB": [""], - "Viewport": [""], - "Default longitude": [""], - "Longitude of default viewport": [""], - "Default latitude": [""], - "Latitude of default viewport": [""], - "Zoom": [""], - "Zoom level of the map": [""], - "One or many controls to group by. If grouping, latitude and longitude columns must be present.": [ - "" + "1 year ago": [ + "1 jaar geleden" ], - "Light mode": [""], - "Dark mode": [""], - "MapBox": [""], - "Scatter": [""], - "Transformable": [""], - "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": [""], - "Table that visualizes paired t-tests, which are used to understand statistical differences between groups.": [ - "" + "104 weeks ago": [ + "104 weken geleden" ], - "Paired t-test Table": [""], - "Statistical": [""], - "Tabular": [""], - "Options": [""], - "Data Table": [""], - "Whether to display the interactive data table": [""], - "Include Series": [""], - "Include series name as an axis": [""], - "Ranking": [""], - "Plots the individual metrics for each row in the data vertically and links them together as a line. This chart is useful for comparing multiple metrics across all of the samples or rows in the data.": [ - "" + "2 years ago": [ + "2 jaar geleden" ], - "Directional": [""], - "Time Series Options": [""], - "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": [""], - "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": [""], - "Use the Advanced Analytics options below": [""], - "Settings for time series": [""], - "Date Time Format": [""], - "Partition Limit": [""], - "The maximum number of subdivisions of each group; lower values are pruned first": [ - "" + "156 weeks ago": [ + "156 weken geleden" ], - "Partition Threshold": [""], - "Partitions whose height to parent height proportions are below this value are pruned": [ - "" + "3 years ago": [ + "3 jaar geleden" ], - "Log Scale": [""], - "Use a log scale": [""], - "Equal Date Sizes": [""], - "Check to force date partitions to have the same height": [""], - "Rich Tooltip": [""], - "The rich tooltip shows a list of all series for that point in time": [ - "" + "Overlay one or more timeseries from a relative time period. Expects relative time deltas in natural language (example: 24 hours, 7 days, 52 weeks, 365 days). Free text is supported.": [ + "Een of meer timeseries van een relatieve tijdsperiode overlappen. Verwacht de relatieve tijddeltas in de natuurlijke taal (bijvoorbeeld: 24 uur, 7 dagen, 52 weken, 365 dagen). Vrije tekst wordt ondersteund." ], - "Rolling Window": [""], - "Rolling Function": [""], - "cumsum": [""], - "Min Periods": [""], - "Time Comparison": [""], - "Time Shift": [""], - "30 days": ["30 dagen"], - "Overlay one or more timeseries from a relative time period. Expects relative time deltas in natural language (example: 24 hours, 7 days, 52 weeks, 365 days). Free text is supported.": [ - "" + "Calculation type": [ + "Soort berekening" ], - "1T": [""], - "1H": [""], - "1D": [""], - "7D": [""], - "1M": [""], - "1AS": [""], - "Method": ["Methode"], - "asfreq": [""], - "bfill": [""], - "ffill": [""], - "median": [""], - "Part of a Whole": [""], - "Compare the same summarized metric across multiple groups.": [""], - "Partition Chart": [""], - "Categorical": [""], - "Use Area Proportions": [""], - "Check if the Rose Chart should use segment area instead of segment radius for proportioning": [ - "" + "Actual values": [ + "Werkelijke waarden" ], - "A polar coordinate chart where the circle is broken into wedges of equal angle, and the value represented by any wedge is illustrated by its area, rather than its radius or sweep angle.": [ - "" + "Difference": [ + "Verschil" ], - "Nightingale Rose Chart": [""], - "Advanced-Analytics": [""], - "Multi-Layers": [""], - "Source / Target": [""], - "Choose a source and a target": [""], - "Limiting rows may result in incomplete data and misleading charts. Consider filtering or grouping source/target names instead.": [ - "" + "Percentage change": [ + "Percentage wijziging" ], - "Visualizes the flow of different group's values through different stages of a system. New stages in the pipeline are visualized as nodes or layers. The thickness of the bars or edges represent the metric being visualized.": [ - "" + "Ratio": [ + "Verhouding" ], - "Demographics": [""], - "Survey Responses": [""], - "Sankey Diagram": [""], - "Percentages": [""], - "Sankey Diagram with Loops": [""], - "Country Field Type": [""], - "code International Olympic Committee (cioc)": [""], - "code ISO 3166-1 alpha-2 (cca2)": [""], - "code ISO 3166-1 alpha-3 (cca3)": [""], - "The country code standard that Superset should expect to find in the [country] column": [ - "" + "How to display time shifts: as individual lines; as the difference between the main time series and each time shift; as the percentage change; or as the ratio between series and time shifts.": [ + "Hoe tijdsverschuivingen te tonen: als individuele regels; als verschil tussen de hoofdtijdreeks en elke keer verschuiven; als het percentage verandert; of als de verhouding tussen reeksen en tijdverschuivingen." ], - "Show Bubbles": [""], - "Whether to display bubbles on top of countries": [""], - "Max Bubble Size": [""], - "Choose whether a country should be shaded by the metric, or assigned a color based on a categorical color palette": [ - "" + "Resample": [ + "Opnieuw bemonsteren" ], - "Country Column": [""], - "3 letter code of the country": [""], - "Metric that defines the size of the bubble": [""], - "Bubble Color": [""], - "Country Color Scheme": [""], - "A map of the world, that can indicate values in different countries.": [ - "" + "Rule": [ + "Regel" ], - "Multi-Dimensions": [""], - "Multi-Variables": [""], - "Popular": [""], - "deck.gl charts": [""], - "Pick a set of deck.gl charts to layer on top of one another": [""], - "Select charts": [""], - "Error while fetching charts": [""], - "Compose multiple layers together to form complex visuals.": [""], - "deck.gl Multiple Layers": [""], - "deckGL": [""], - "Start Longitude & Latitude": [""], - "Point to your spatial columns": [""], - "End Longitude & Latitude": [""], - "Arc": [""], - "Target Color": [""], - "Color of the target location": [""], - "Categorical Color": [""], - "Pick a dimension from which categorical colors are defined": [""], - "Stroke Width": [""], - "Advanced": ["Geavanceerd"], - "Plot the distance (like flight paths) between origin and destination.": [ - "" + "1 minutely frequency": [ + "1 minuut frequentie" ], - "deck.gl Arc": [""], - "3D": [""], - "Web": [""], - "Threshold: ": [""], - "The size of each cell in meters": [""], - "The function to use when aggregating points into groups": [""], - "Contours": [""], - "Define contour layers. Isolines represent a collection of line segments that serparate the area above and below a given threshold. Isobands represent a collection of polygons that fill the are containing values in a given threshold range.": [ - "" + "1 hourly frequency": [ + "frequentie elk uur" ], - "Weight": [""], - "Metric used as a weight for the grid's coloring": [""], - "Uses Gaussian Kernel Density Estimation to visualize spatial distribution of data": [ - "" + "1 calendar day frequency": [ + "1 dag kalender frequentie" ], - "Spatial": ["Ruimtelijk"], - "GeoJson Settings": [""], - "pixels": [""], - "Point Radius Scale": [""], - "The GeoJsonLayer takes in GeoJSON formatted data and renders it as interactive polygons, lines and points (circles, icons and/or texts).": [ - "" + "7 calendar day frequency": [ + "7 kalenderdag frequentie" ], - "deck.gl Geojson": [""], - "Height": ["Hoogte"], - "Metric used to control height": [""], - "Visualize geospatial data like 3D buildings, landscapes, or objects in grid view.": [ - "" + "1 month start frequency": [ + "1 maand start frequentie" ], - "deck.gl Grid": [""], - "Intensity is the value multiplied by the weight to obtain the final weight": [ - "" + "1 month end frequency": [ + "1 maand eind frequentie" ], - "Intensity Radius": [""], - "Intensity Radius is the radius at which the weight is distributed": [""], - "Dynamic Aggregation Function": [""], - "p1": [""], - "p5": [""], - "p95": [""], - "p99": [""], - "Overlays a hexagonal grid on a map, and aggregates data within the boundary of each cell.": [ - "" + "1 year start frequency": [ + "1 jaar start frequentie" ], - "deck.gl 3D Hexagon": [""], - "Polyline": [""], - "Visualizes connected points, which form a path, on a map.": [""], - "deck.gl Path": [""], - "Polygon Column": [""], - "Polygon Encoding": [""], - "Elevation": [""], - "Polygon Settings": [""], - "Opacity, expects values between 0 and 100": [""], - "Number of buckets to group data": [""], - "How many buckets should the data be grouped in.": [""], - "Bucket break points": [""], - "List of n+1 values for bucketing metric into n buckets.": [""], - "Emit Filter Events": [""], - "Whether to apply filter when items are clicked": [""], - "Multiple filtering": [""], - "Allow sending multiple polygons as a filter event": [""], - "Visualizes geographic areas from your data as polygons on a Mapbox rendered map. Polygons can be colored using a metric.": [ - "" + "1 year end frequency": [ + "1 jaar eind frequentie" ], - "deck.gl Polygon": [""], - "Category": [""], - "Point Size": [""], - "Point Unit": [""], - "Radius in kilometers": [""], - "Radius in miles": [""], - "Minimum Radius": [""], - "Minimum radius size of the circle, in pixels. As the zoom level changes, this insures that the circle respects this minimum radius.": [ - "" + "Pandas resample rule": [ + "Pandas resample regel" ], - "Maximum Radius": [""], - "Maximum radius size of the circle, in pixels. As the zoom level changes, this insures that the circle respects this maximum radius.": [ - "" + "Fill method": [ + "Vul methode" ], - "Point Color": [""], - "A map that takes rendering circles with a variable radius at latitude/longitude coordinates": [ - "" + "Null imputation": [ + "Null imputatie" ], - "deck.gl Scatterplot": [""], - "Grid": [""], - "Aggregates data within the boundary of grid cells and maps the aggregated values to a dynamic color scale": [ - "" + "Zero imputation": [ + "Null imputatie" ], - "deck.gl Screen Grid": [""], - "For more information about objects are in context in the scope of this function, refer to the": [ - "" + "Linear interpolation": [ + "Lineaire interpolatie" ], - " source code of Superset's sandboxed parser": [""], - "This functionality is disabled in your environment for security reasons.": [ - "" + "Forward values": [ + "Waarden doorsturen" ], - "Ignore null locations": [""], - "Whether to ignore locations that are null": [""], - "Auto Zoom": [""], - "When checked, the map will zoom to your data after each query": [""], - "Select a dimension": [""], - "Extra data for JS": [""], - "List of extra columns made available in JavaScript functions": [""], - "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.": [ - "" + "Backward values": [ + "Achterwaartse waarden" ], - "JavaScript tooltip generator": [""], - "Define a function that receives the input and outputs the content for a tooltip": [ - "" + "Median values": [ + "Mediaan waarden" ], - "JavaScript onClick href": [""], - "Define a function that returns a URL to navigate to when user clicks": [ - "" + "Mean values": [ + "Gemiddelde waarden" ], - "Legend Format": [""], - "Choose the format for legend values": [""], - "Legend Position": [""], - "Choose the position of the legend": [""], - "Top right": [""], - "Bottom left": [""], - "Bottom right": [""], - "Lines column": [""], - "The database columns that contains lines information": [""], - "Line width": ["Lijndikte"], - "The width of the lines": [""], - "Fill Color": [""], - " Set the opacity to 0 if you do not want to override the color specified in the GeoJSON": [ - "" + "Sum values": [ + "Som waarden" ], - "Stroke Color": [""], - "Filled": [""], - "Whether to fill the objects": [""], - "Stroked": [""], - "Whether to display the stroke": [""], - "Extruded": [""], - "Whether to make the grid 3D": [""], - "Grid Size": [""], - "Defines the grid size in pixels": [""], - "Parameters related to the view and perspective on the map": [""], - "Longitude & Latitude": [""], - "Fixed point radius": [""], - "Multiplier": [""], - "Factor to multiply the metric by": [""], - "Lines encoding": [""], - "The encoding format of the lines": [""], - "geohash (square)": [""], - "Reverse Lat & Long": [""], - "GeoJson Column": [""], - "Select the geojson column": [""], - "Right Axis Format": [""], - "Show Markers": [""], - "Show data points as circle markers on the lines": [""], - "Y bounds": [""], - "Whether to display the min and max values of the Y-axis": [""], - "Y 2 bounds": [""], - "Line Style": [""], - "cardinal": [""], - "step-before": [""], - "Line interpolation as defined by d3.js": [""], - "Show Range Filter": [""], - "Whether to display the time range interactive selector": [""], - "Extra Controls": [""], - "Whether to show extra controls or not. Extra controls include things like making mulitBar charts stacked or side by side.": [ - "" + "Pandas resample method": [ + "Pandas resample methode" ], - "X Tick Layout": [""], - "The way the ticks are laid out on the X-axis": [""], - "X Axis Format": [""], - "Y Log Scale": [""], - "Use a log scale for the Y-axis": [""], - "Y Axis Bounds": [""], - "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.": [ - "" + "Annotations and Layers": [ + "Annotaties en lagen" ], - "Y Axis 2 Bounds": [""], - "X bounds": [""], - "Whether to display the min and max values of the X-axis": [""], - "Bar Values": [""], - "Show the value on top of the bar": [""], - "Stacked Bars": [""], - "Reduce X ticks": [""], - "Reduces the number of X-axis ticks to be rendered. If true, the x-axis will not 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.": [ - "" + "Left": [ + "Links" ], - "You cannot use 45° tick layout along with the time range filter": [""], - "Stacked Style": [""], - "stack": [""], - "Evolution": [""], - "A time series chart that visualizes how a related metric from multiple groups vary over time. Each group is visualized using a different color.": [ - "" + "Top": [ + "Bovenaan" ], - "Stretched style": [""], - "Stacked style": [""], - "Video game consoles": [""], - "Vehicle Types": [""], - "Time-series Area Chart (legacy)": [""], - "Continuous": [""], - "Line": [""], - "nvd3": [""], - "Metric used to order the limit if a series limit is present. If undefined reverts to the first metric (where appropriate).": [ - "" + "Chart Title": [ + "Grafiek Titel" ], - "Visualize how a metric changes over time using bars. Add a group by column to visualize group level metrics and how they change over time.": [ - "" + "X Axis": [ + "X As" ], - "Bar": [""], - "Box Plot": [""], - "X Log Scale": [""], - "Use a log scale for the X-axis": [""], - "Visualizes a metric across three dimensions of data in a single chart (X axis, Y axis, and bubble size). Bubbles from the same group can be showcased using bubble color.": [ - "" + "X Axis Title": [ + "X-as Titel" ], - "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": [""], - "KPI": [""], - "Showcases the progress of a single metric against a given target. The higher the fill, the closer the metric is to the target.": [ - "" + "X AXIS TITLE BOTTOM MARGIN": [ + "X AXIS TITEL ONDER MARGE" ], - "Visualizes many different time-series objects in a single chart. This chart is being deprecated and we recommend using the Time-series Chart instead.": [ - "" + "Y Axis": [ + "Y As" ], - "Time-series Percent Change": [""], - "Sort Bars": [""], - "Sort bars by x labels.": [""], - "Breakdowns": [""], - "Defines how each series is broken down": [""], - "Compares metrics from different categories using bars. Bar lengths are used to indicate the magnitude of each value and color is used to differentiate groups.": [ - "" + "Y Axis Title": [ + "Y-as Titel" ], - "Bar Chart (legacy)": [""], - "Additive": [""], - "Propagate": [""], - "Send range filter events to other charts": [""], - "Classic chart that visualizes how metrics change over time.": [""], - "Battery level over time": [""], - "Time-series Line Chart (legacy)": [""], - "Label Type": [""], - "Value": ["Waarde"], - "Percentage": [""], - "Category and Value": [""], - "Category and Percentage": [""], - "Category, Value and Percentage": [""], - "What should be shown on the label?": [""], - "Donut": [""], - "Do you want a donut or a pie?": [""], - "Show Labels": [""], - "Whether to display the labels. Note that the label only displays when the 5% threshold.": [ - "" + "Y Axis Title Margin": [ + "Y-as Titel Marge" ], - "Put labels outside": [""], - "Put the labels outside the pie?": [""], - "Frequency": [""], - "Year (freq=AS)": [""], - "Day (freq=D)": [""], - "4 weeks (freq=4W-MON)": [""], - "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.": [ - "" + "Y Axis Title Position": [ + "Y-as Titel Positie" ], - "Time-series Period Pivot": [""], - "Stack": [""], - "Show legend": [""], - "Whether to display a legend for the chart": [""], - "Margin": [""], - "Additional padding for legend.": [""], - "Scroll": [""], - "Plain": [""], - "Legend type": [""], - "Bottom": [""], - "Right": [""], - "Show Value": [""], - "Show series values on the chart": [""], - "Stack series on top of each other": [""], - "Only Total": [""], - "Only show the total value on the stacked chart, and not show on the selected category": [ - "" + "Query": [ + "Query" ], - "Percentage threshold": [""], - "Minimum threshold in percentage points for showing labels.": [""], - "Rich tooltip": [""], - "Shows a list of all series available at that point in time": [""], - "Tooltip time format": [""], - "Tooltip sort by metric": [""], - "Whether to sort tooltip by the selected metric in descending order.": [ - "" + "Predictive Analytics": [ + "Voorspelde Analyses" ], - "Tooltip": [""], - "Based on what should series be ordered on the chart and legend": [""], - "Sort series in ascending order": [""], - "Rotate x axis label": [""], - "Input field supports custom rotation. e.g. 30 for 30°": [""], - "Truncate X Axis. Can be overridden by specifying a min or max bound. Only applicable for numercal X axis.": [ - "" + "Enable forecast": [ + "Voorspelling inschakelen" ], - "X Axis Bounds": [""], - "Bounds for numerical X axis. Not applicable for temporal or categorical axes. 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.": [ - "" + "Enable forecasting": [ + "Voorspelling inschakelen" ], - "Minor ticks": [""], - "Show minor ticks on axes.": [""], - "Make the x-axis categorical": [""], - "Last available value seen on %s": [""], - "Not up to date": [""], - "No data": ["Geen data"], - "No data after filtering or data is NULL for the latest time record": [ - "" + "Forecast periods": [ + "Voorspel periodes" ], - "Try applying different filters or ensuring your datasource has data": [ - "" + "How many periods into the future do we want to predict": [ + "Hoeveel periodes in de toekomst willen we voorspellen" ], - "Big Number Font Size": [""], - "Tiny": [""], - "Small": [""], - "Normal": [""], - "Large": [""], - "Huge": [""], - "Subheader Font Size": [""], - "Data for %s": [""], - "Value difference between the time periods": [""], - "Percentage difference between the time periods": [""], - "Set the time range that will be used for the comparison metrics. For example, \"Year\" will compare to the same dates one year earlier. Use \"Inherit range from time filters\" to shift the comparison time rangeby the same length as your time range and use \"Custom\" to set a custom comparison range.": [ - "" + "Confidence interval": [ + "Betrouwbaarheidsinterval" ], - "Percent Difference format": [""], - "Comparison font size": [""], - "Add color for positive/negative change": [""], - "Adds color to the chart symbols based on the positive or negative change from the comparison value.": [ - "" + "Width of the confidence interval. Should be between 0 and 1": [ + "Breedte van het vertrouwensinterval. Moet tussen 0 en 1 zijn" ], - "Big Number with Time Period Comparison": [""], - "Subheader": [""], - "Description text that shows up below your Big Number": [""], - "Date format": [""], - "Force date format": [""], - "Use date formatting even when metric value is not a timestamp": [""], - "Apply conditional color formatting to metric": [""], - "Showcases a single metric front-and-center. Big number is best used to call attention to a KPI or the one thing you want your audience to focus on.": [ - "" + "Yearly seasonality": [ + "Jaarlijkse seizoensinvloeden" ], - "A Big Number": [""], - "With a subheader": [""], - "Big Number": ["Groot Getal"], - "Comparison Period Lag": [""], - "Based on granularity, number of time periods to compare against": [""], - "Comparison suffix": [""], - "Suffix to apply after the percentage display": [""], - "Show Timestamp": [""], - "Whether to display the timestamp": [""], - "Show Trend Line": [""], - "Whether to display the trend line": [""], - "Start y-axis at 0": [""], - "Start y-axis at zero. Uncheck to start y-axis at minimum value in the data.": [ - "" + "default": [ + "standaard" ], - "Fix to selected Time Range": [""], - "Fix the trend line to the full time range specified in case filtered results do not include the start or end dates": [ - "" + "Yes": [ + "Ja" ], - "Showcases a single number accompanied by a simple line chart, to call attention to an important metric along with its change over time or other dimension.": [ - "" + "No": [ + "Nee" ], - "Big Number with Trendline": ["Groot getal met trendlijn"], - "Whisker/outlier options": [""], - "Determines how whiskers and outliers are calculated.": [""], - "Min/max (no outliers)": [""], - "2/98 percentiles": [""], - "9/91 percentiles": [""], - "Categories to group by on the x-axis.": [""], - "Distribute across": [""], - "Columns to calculate distribution across.": [""], - "Also known as a box and whisker plot, this visualization compares the distributions of a related metric across multiple groups. The box in the middle emphasizes the mean, median, and inner 2 quartiles. The whiskers around each box visualize the min, max, range, and outer 2 quartiles.": [ - "" + "Should yearly seasonality be applied. An integer value will specify Fourier order of seasonality.": [ + "Moet jaarlijks seizoensgebondenheid worden toegepast. Een integerwaarde geeft Fourier volgorde van seizoensgebondenheid." ], - "ECharts": [""], - "Bubble size number format": [""], - "Opacity of bubbles, 0 means completely transparent, 1 means opaque": [ - "" + "Weekly seasonality": [ + "Wekelijkse seizoensinvloeden" ], - "X AXIS TITLE MARGIN": [""], - "Logarithmic x-axis": [""], - "Rotate y axis label": [""], - "Y AXIS TITLE MARGIN": [""], - "Logarithmic y-axis": [""], - "Truncate Y Axis": [""], - "Truncate Y Axis. Can be overridden by specifying a min or max bound.": [ - "" + "Should weekly seasonality be applied. An integer value will specify Fourier order of seasonality.": [ + "Moet wekelijkse seizoensgebondenheid worden toegepast. Een integer waarde geeft Fourier volgorde van seizoensgebondenheid." ], - "Display percents in the label and tooltip as the percent of the total value, from the first step of the funnel, or from the previous step in the funnel.": [ - "" + "Daily seasonality": [ + "Dagelijkse seizoensinvloeden" ], - "Calculate from first step": [""], - "Calculate from previous step": [""], - "Percent of total": [""], - "Labels": [""], - "Value and Percentage": [""], - "What should be shown as the label": [""], - "What should be shown as the tooltip label": [""], - "Whether to display the labels.": [""], - "Show Tooltip Labels": [""], - "Whether to display the tooltip labels.": [""], - "Showcases how a metric changes as the funnel progresses. This classic chart is useful for visualizing drop-off between stages in a pipeline or lifecycle.": [ - "" + "Should daily seasonality be applied. An integer value will specify Fourier order of seasonality.": [ + "Moet dagelijks seizoensgebondenheid worden toegepast. Een integer waarde geeft Fourier volgorde van seizoensgebondenheid." ], - "Funnel Chart": [""], - "Sequential": [""], - "Columns to group by": [""], - "General": [""], - "Min": ["Min"], - "Minimum value on the gauge axis": [""], - "Max": ["Max"], - "Maximum value on the gauge axis": [""], - "Start angle": [""], - "Angle at which to start progress axis": [""], - "End angle": [""], - "Angle at which to end progress axis": [""], - "Font size": [""], - "Font size for axis labels, detail value and other text elements": [""], - "Value format": [""], - "Additional text to add before or after the value, e.g. unit": [""], - "Show pointer": [""], - "Whether to show the pointer": [""], - "Animation": [""], - "Whether to animate the progress and the value or just display them": [ - "" + "Time related form attributes": [ + "Tijdgerelateerde vormattributen" ], - "Axis": [""], - "Show axis line ticks": [""], - "Whether to show minor ticks on the axis": [""], - "Show split lines": [""], - "Whether to show the split lines on the axis": [""], - "Split number": [""], - "Number of split segments on the axis": [""], - "Progress": [""], - "Show progress": [""], - "Whether to show the progress of gauge chart": [""], - "Overlap": [""], - "Whether the progress bar overlaps when there are multiple groups of data": [ - "" + "Datasource & Chart Type": [ + "Gegevensbron & grafiektype" ], - "Round cap": [""], - "Style the ends of the progress bar with a round cap": [""], - "Intervals": [""], - "Interval bounds": [""], - "Comma-separated interval bounds, e.g. 2,4,5 for intervals 0-2, 2-4 and 4-5. Last number should match the value provided for MAX.": [ - "" + "Chart ID": [ + "Grafiek ID" ], - "Interval colors": [""], - "Comma-separated color picks for the intervals, e.g. 1,2,4. Integers denote colors from the chosen color scheme and are 1-indexed. Length must be matching that of interval bounds.": [ - "" + "The id of the active chart": [ + "Het id van de actieve grafiek" ], - "Uses a gauge to showcase progress of a metric towards a target. The position of the dial represents the progress and the terminal value in the gauge represents the target value.": [ - "" + "Cache Timeout (seconds)": [ + "Cache Timeout (seconden)" ], - "Gauge Chart": [""], - "Name of the source nodes": [""], - "Name of the target nodes": [""], - "Source category": [""], - "The category of source nodes used to assign colors. If a node is associated with more than one category, only the first will be used.": [ - "" + "The number of seconds before expiring the cache": [ + "Het aantal seconden voor het verstrijken van de cache" ], - "Target category": [""], - "Category of target nodes": [""], - "Chart options": [""], - "Layout": [""], - "Graph layout": [""], - "Force": [""], - "Layout type of graph": [""], - "Edge symbols": [""], - "Symbol of two ends of edge line": [""], - "None -> None": [""], - "None -> Arrow": [""], - "Circle -> Arrow": [""], - "Circle -> Circle": [""], - "Enable node dragging": [""], - "Whether to enable node dragging in force layout mode.": [""], - "Enable graph roaming": [""], - "Disabled": [""], - "Scale only": [""], - "Move only": [""], - "Scale and Move": [""], - "Whether to enable changing graph position and scaling.": [""], - "Node select mode": [""], - "Single": [""], - "Multiple": [""], - "Allow node selections": [""], - "Label threshold": [""], - "Minimum value for label to be displayed on graph.": [""], - "Node size": [""], - "Median node size, the largest node will be 4 times larger than the smallest": [ - "" + "URL Parameters": [ + "URL Parameters" ], - "Edge width": [""], - "Median edge width, the thickest edge will be 4 times thicker than the thinnest.": [ - "" + "Extra url parameters for use in Jinja templated queries": [ + "Extra url parameters voor gebruik in Jinja templated query's" ], - "Edge length": [""], - "Edge length between nodes": [""], - "Gravity": [""], - "Strength to pull the graph toward center": [""], - "Repulsion": [""], - "Repulsion strength between nodes": [""], - "Friction": [""], - "Friction between nodes": [""], - "Displays connections between entities in a graph structure. Useful for mapping relationships and showing which nodes are important in a network. Graph charts can be configured to be force-directed or circulate. If your data has a geospatial component, try the deck.gl Arc chart.": [ - "" + "Extra Parameters": [ + "Extra Parameters" ], - "Graph Chart": [""], - "Structural": [""], - "Legend Type": [""], - "Piecewise": [""], - "Hard value bounds applied for color coding.": [""], - "Y-Axis": [""], - "Whether to sort descending or ascending": [ - "Aflopend of oplopend sorteren" + "Extra parameters that any plugins can choose to set for use in Jinja templated queries": [ + "Extra parameters die plugins kunnen instellen voor gebruik in Jinja templated query's" ], - "Series type": [""], - "Smooth Line": [""], - "Step - start": [""], - "Step - middle": [""], - "Step - end": [""], - "Series chart type (line, bar etc)": [""], - "Stack series": [""], - "Area chart": [""], - "Draw area under curves. Only applicable for line types.": [""], - "Opacity of area chart.": [""], - "Marker": [""], - "Draw a marker on data points. Only applicable for line types.": [""], - "Marker size": [""], - "Size of marker. Also applies to forecast observations.": [""], - "Primary": [""], - "Secondary": [""], - "Primary or secondary y-axis": [""], - "Query A": [""], - "Query B": [""], - "Data Zoom": [""], - "Enable data zooming controls": [""], - "Minor Split Line": [""], - "Draw split lines for minor y-axis ticks": [""], - "Primary y-axis Bounds": [""], - "Bounds for the primary 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.": [ - "" + "Color Scheme": [ + "Kleurenschema" ], - "Primary y-axis format": [""], - "Logarithmic scale on primary y-axis": [""], - "Secondary y-axis Bounds": [""], - "Bounds for the secondary Y-axis. Only works when Independent Y-axis\n bounds are enabled. When left empty, the bounds are dynamically defined\n based on the min/max of the data. Note that this feature will only expand\n the axis range. It won't narrow the data's extent.": [ - "" + "Contribution Mode": [ + "Bijdraag modus" ], - "Secondary y-axis format": [""], - "Secondary currency format": [""], - "Secondary y-axis title": [""], - "Logarithmic scale on secondary y-axis": [""], - "Visualize two different series using the same x-axis. Note that both series can be visualized with a different chart type (e.g. 1 using bars and 1 using a line).": [ - "" + "Row": [ + "Rij" ], - "Put the labels outside of the pie?": [""], - "Label Line": [""], - "Draw line from Pie to label when labels outside?": [""], - "Whether to display the aggregate count": [""], - "Pie shape": [""], - "Outer Radius": [""], - "Outer edge of Pie chart": [""], - "Inner Radius": [""], - "Inner radius of donut hole": [""], - "The classic. Great for showing how much of a company each investor gets, what demographics follow your blog, or what portion of the budget goes to the military industrial complex.\n\n Pie charts can be difficult to interpret precisely. If clarity of relative proportion is important, consider using a bar or other chart type instead.": [ - "" + "Series": [ + "Series" ], - "Pie Chart": [""], - "Total: %s": [""], - "The maximum value of metrics. It is an optional configuration": [""], - "Label position": [""], - "Radar": [""], - "Customize Metrics": [""], - "Further customize how to display each metric": [""], - "Circle radar shape": [""], - "Radar render type, whether to display 'circle' shape.": [""], - "Visualize a parallel set of metrics across multiple groups. Each group is visualized using its own line of points and each metric is represented as an edge in the chart.": [ - "" + "Calculate contribution per series or row": [ + "Bereken bijdrage per reeks of rij" ], - "Radar Chart": [""], - "Primary Metric": [""], - "The primary metric is used to define the arc segment sizes": [""], - "Secondary Metric": [""], - "[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": [ - "" + "Y-Axis Sort By": [ + "Y-as Sorteren Op" ], - "When only a primary metric is provided, a categorical color scale is used.": [ - "" + "X-Axis Sort By": [ + "X-as Sorteren Op" ], - "When a secondary metric is provided, a linear color scale is used.": [ - "" + "Decides which column to sort the base axis by.": [ + "Bepaalt de kolom waarop de basisas gesorteerd moet worden." ], - "Hierarchy": [""], - "Sets the hierarchy levels of the chart. Each level is\n represented by one ring with the innermost circle as the top of the hierarchy.": [ - "" + "Y-Axis Sort Ascending": [ + "Y-as Sorteer Oplopend" ], - "Uses circles to visualize the flow of data through different stages of a system. Hover over individual paths in the visualization to understand the stages a value took. Useful for multi-stage, multi-group visualizing funnels and pipelines.": [ - "" + "X-Axis Sort Ascending": [ + "X-as Sorteer Oplopend" ], - "Sunburst Chart": [""], - "Multi-Levels": [""], - "When using other than adaptive formatting, labels may overlap": [""], - "Swiss army knife for visualizing data. Choose between step, line, scatter, and bar charts. This viz type has many customization options as well.": [ - "" + "Whether to sort ascending or descending on the base Axis.": [ + "Of er oplopend of aflopend moet worden gesorteerd op de basisas." ], - "Generic Chart": [""], - "zoom area": [""], - "restore zoom": [""], - "Series Style": [""], - "Area chart opacity": [""], - "Opacity of Area Chart. Also applies to confidence band.": [""], - "Marker Size": [""], - "Area charts are similar to line charts in that they represent variables with the same scale, but area charts stack the metrics on top of each other.": [ - "" + "Force categorical": [ + "Forceer categorisch" ], - "Area Chart": [""], - "AXIS TITLE MARGIN": [""], - "AXIS TITLE POSITION": [""], - "Logarithmic axis": [""], - "Draw split lines for minor axis ticks": [""], - "Truncate Axis": [""], - "It’s not recommended to truncate axis in Bar chart.": [""], - "Axis Bounds": [""], - "Bounds for the 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.": [ - "" + "Treat values as categorical.": [ + "Behandel waarden als categorisch." ], - "Chart Orientation": [""], - "Vertical": [""], - "Horizontal": [""], - "Bar Charts are used to show metrics as a series of bars.": [""], - "Bar Chart": [""], - "Line chart is used to visualize measurements taken over a given category. Line chart is a type of chart which displays information as a series of data points connected by straight line segments. It is a basic type of chart common in many fields.": [ - "" + "Decides which measure to sort the base axis by.": [ + "Besluit welke maatregel de basisas sorteert." ], - "Line Chart": [""], - "Scatter Plot has the horizontal axis in linear units, and the points are connected in order. It shows a statistical relationship between two variables.": [ - "" + "Dimensions": [ + "Dimensies" ], - "Scatter Plot": [""], - "Smooth-line is a variation of the line chart. Without angles and hard edges, Smooth-line sometimes looks smarter and more professional.": [ - "" + "Dimensions contain qualitative values such as names, dates, or geographical data. Use dimensions to categorize, segment, and reveal the details in your data. Dimensions affect the level of detail in the view.": [ + "Dimensies bevatten kwalitatieve waarden zoals namen, datums of geografische gegevens. Gebruik afmetingen om de dimensies te categoriseren, te segmenteren en de details in uw gegevens te onthullen. Afmetingen hebben invloed op het detailniveau in de weergave." ], - "Step type": [""], - "Start": ["Start"], - "End": ["Einde"], - "Defines whether the step should appear at the beginning, middle or end between two data points": [ - "" + "Add dataset columns here to group the pivot table columns.": [ + "Voeg hier dataset kolommen toe om de pivot tabel kolommen te groeperen." ], - "Stepped-line graph (also called step chart) is a variation of line chart but with the line forming a series of steps between data points. A step chart can be useful when you want to show the changes that occur at irregular intervals.": [ - "" + "Dimension": [ + "Dimensie" ], - "Stepped Line": [""], - "Id": [""], - "Name of the id column": [""], - "Parent": [""], - "Name of the column containing the id of the parent node": [""], - "Optional name of the data column.": [""], - "Root node id": [""], - "Id of root node of the tree.": [""], - "Metric for node values": [""], - "Tree layout": [""], - "Orthogonal": [""], - "Radial": [""], - "Layout type of tree": [""], - "Tree orientation": [""], - "Left to Right": [""], - "Right to Left": [""], - "Top to Bottom": [""], - "Bottom to Top": [""], - "Orientation of tree": [""], - "Node label position": [""], - "left": [""], - "top": [""], - "right": [""], - "bottom": [""], - "Position of intermediate node label on tree": [""], - "Child label position": [""], - "Position of child node label on tree": [""], - "Emphasis": [""], - "ancestor": [""], - "descendant": [""], - "Which relatives to highlight on hover": [""], - "Symbol": [""], - "Empty circle": [""], - "Circle": [""], - "Rectangle": [""], - "Triangle": [""], - "Diamond": [""], - "Pin": [""], - "Arrow": [""], - "Symbol size": [""], - "Size of edge symbols": [""], - "Visualize multiple levels of hierarchy using a familiar tree-like structure.": [ - "" + "Defines the grouping of entities. Each series is represented by a specific color in the chart.": [ + "Definieert de groepering van entiteiten. Elke serie wordt weergegeven door een specifieke kleur in de grafiek." ], - "Tree Chart": [""], - "Show Upper Labels": [""], - "Show labels when the node has children.": [""], - "Show hierarchical relationships of data, with the value represented by area, showing proportion and contribution to the whole.": [ - "" + "Entity": [ + "Entiteit" ], - "Treemap": ["Treemap"], - "Total": [""], - "Breaks down the series by the category specified in this control.\n This can help viewers understand how each category affects the overall value.": [ - "" + "This defines the element to be plotted on the chart": [ + "Dit definieert het element dat op de grafiek moet worden uitgezet" ], - "A waterfall chart is a form of data visualization that helps in understanding\n the cumulative effect of sequentially introduced positive or negative values.\n These intermediate values can either be time based or category based.": [ - "" + "Filters": [ + "Filters" ], - "page_size.all": [""], - "Loading...": ["Bezig met laden…"], - "Write a handlebars template to render the data": [""], - "must have a value": [""], - "A handlebars template that is applied to the data": [""], - "Include time": [""], - "Whether to include the time granularity as defined in the time section": [ - "" + "Select one or many metrics to display. You can use an aggregation function on a column or write custom SQL to create a metric.": [ + "Selecteer een of meerdere metrieken om weer te geven. U kunt een aggregatie functie gebruiken op een kolom of aangepaste SQL schrijven om een metriek te maken." ], - "Percentage metrics": [""], - "Select one or many metrics to display, that will be displayed in the percentages of total. Percentage metrics will be calculated only from data within the row limit. You can use an aggregation function on a column or write custom SQL to create a percentage metric.": [ - "" + "Select a metric to display. You can use an aggregation function on a column or write custom SQL to create a metric.": [ + "Selecteer een metriek om weer te geven. U kunt een aggregatie functie gebruiken op een kolom of aangepaste SQL schrijven om een metriek te maken." ], - "Show totals": [""], - "Show total aggregations of selected metrics. Note that row limit does not apply to the result.": [ - "" + "Right Axis Metric": [ + "Rechter As Metriek" ], - "Ordering": [""], - "Order results by selected columns": [""], - "Sort descending": ["Sorteer aflopend"], - "Server pagination": [""], - "Enable server side pagination of results (experimental feature)": [""], - "Server Page Length": [""], - "Rows per page, 0 means no pagination": [""], - "Query mode": [""], - "Group By, Metrics or Percentage Metrics must have a value": [""], - "You need to configure HTML sanitization to use CSS": [""], - "CSS Styles": [""], - "CSS applied to the chart": [""], - "Columns to group by on the columns": [""], - "Rows": ["Rijen"], - "Columns to group by on the rows": [""], - "Apply metrics on": [""], - "Use metrics as a top level group for columns or for rows": [""], - "Cell limit": [""], - "Limits the number of cells that get retrieved.": [""], - "Metric used to define how the top series are sorted if a series or cell limit is present. If undefined reverts to the first metric (where appropriate).": [ - "" + "Select a metric to display on the right axis": [ + "Selecteer een metriek om weer te geven op de rechter as" ], - "Aggregation function": [""], - "Count Unique Values": [""], - "Sum": [""], - "Median": [""], - "Sample Variance": [""], - "Sample Standard Deviation": [""], - "Minimum": [""], - "Maximum": [""], - "First": [""], - "Last": [""], - "Sum as Fraction of Total": [""], - "Sum as Fraction of Rows": [""], - "Sum as Fraction of Columns": [""], - "Count as Fraction of Total": [""], - "Count as Fraction of Rows": [""], - "Count as Fraction of Columns": [""], - "Aggregate function to apply when pivoting and computing the total rows and columns": [ - "" + "Sort by": [ + "Sorteer op" ], - "Show rows total": [""], - "Display row level total": [""], - "Show rows subtotal": [""], - "Display row level subtotal": [""], - "Show columns total": [""], - "Display column level total": [""], - "Show columns subtotal": [""], - "Display column level subtotal": [""], - "Transpose pivot": [""], - "Swap rows and columns": [""], - "Combine metrics": [""], - "Display metrics side by side within each column, as opposed to each column being displayed side by side for each metric.": [ - "" + "This metric is used to define row selection criteria (how the rows are sorted) if a series or row limit is present. If not defined, it reverts to the first metric (where appropriate).": [ + "Deze metriek wordt gebruikt om rij selectiecriteria te definiëren (hoe de rijen gesorteerd worden) als een rij limiet aanwezig is. Indien niet gedefinieerd, keert het terug naar de eerste metriek (indien gepast)." ], - "D3 time format for datetime columns": [""], - "Sort rows by": [""], - "key a-z": [""], - "key z-a": [""], - "value ascending": [""], - "value descending": [""], - "Change order of rows.": [""], - "Available sorting modes:": [""], - "By key: use row names as sorting key": [""], - "By value: use metric values as sorting key": [""], - "Sort columns by": [""], - "Change order of columns.": [""], - "By key: use column names as sorting key": [""], - "Rows subtotal position": [""], - "Position of row level subtotal": [""], - "Columns subtotal position": [""], - "Position of column level subtotal": [""], - "Conditional formatting": [""], - "Apply conditional color formatting to metrics": [""], - "Used to summarize a set of data by grouping together multiple statistics along two axes. Examples: Sales numbers by region and month, tasks by status and assignee, active users by age and location. Not the most visually stunning visualization, but highly informative and versatile.": [ - "" + "Bubble Size": [ + "Bubbel grootte" ], - "Pivot Table": ["Draaitabel"], - "Total (%(aggregatorName)s)": [""], - "Unknown input format": [""], - "search.num_records": [""], - "Search %s records": [""], - "page_size.show": [""], - "page_size.entries": [""], - "Shift + Click to sort by multiple columns": [""], - "Totals": [""], - "Timestamp format": [""], - "Page length": [""], - "Search box": [""], - "Whether to include a client-side search box": [""], - "Cell bars": [""], - "Whether to display a bar chart background in table columns": [""], - "Align +/-": [""], - "Whether to align background charts with both positive and negative values at 0": [ - "" + "Metric used to calculate bubble size": [ + "Metriek gebruikt voor het berekenen van de bubbel grootte" ], - "Color +/-": [""], - "Whether to colorize numeric values by whether they are positive or negative": [ - "" + "The dataset column/metric that returns the values on your chart's x-axis.": [ + "De dataset kolom/metriek die de waarden op de x-as van uw grafiek weergeeft." ], - "Allow columns to be rearranged": [""], - "Allow end user to drag-and-drop column headers to rearrange them. Note their changes won't persist for the next time they open the chart.": [ - "" + "The dataset column/metric that returns the values on your chart's y-axis.": [ + "De dataset kolom/metriek die de waarden op de y-as van uw grafiek weergeeft." ], - "Render columns in HTML format": [""], - "Render data in HTML format if applicable.": [""], - "Customize columns": [""], - "Further customize how to display each column": [""], - "Apply conditional color formatting to numeric columns": [""], - "Classic row-by-column spreadsheet like view of a dataset. Use tables to showcase a view into the underlying data or to show aggregated metrics.": [ - "" + "Color Metric": [ + "Kleur Metriek" ], - "Show": [""], - "Word Cloud": [""], - "Minimum Font Size": [""], - "Font size for the smallest value in the list": [""], - "Maximum Font Size": [""], - "Font size for the biggest value in the list": [""], - "Word Rotation": [""], - "Rotation to apply to words in the cloud": [""], - "Visualizes the words in a column that appear the most often. Bigger font corresponds to higher frequency.": [ - "" + "A metric to use for color": [ + "Een metriek te gebruiken voor kleur" ], - "N/A": [""], - "The query couldn't be loaded": ["De query kon niet geladen worden"], - "Your query has been scheduled. To see details of your query, navigate to Saved queries": [ - "Uw zoekopdracht is ingepland. Om de details van uw zoekopdracht te zien, navigeert u naar Opgeslagen zoekopdrachten" + "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": [ + "De tijdkolom voor de visualisatie. Merk op dat u willekeurige expressie kunt definiëren die een DATUMTIJD kolom in de tabel retourneert. Houd er ook rekening mee dat het filter hieronder wordt toegepast tegen deze kolom of expressie" ], - "Your query could not be scheduled": ["Uw vraag kon niet worden gepland"], - "Failed at retrieving results": ["Fout bij het ophalen van resultaten"], - "Unknown error": ["Onbekende fout"], - "Query was stopped.": ["Query is gestopt."], - "Failed at stopping query. %s": [""], - "Unable to migrate table schema state to backend. Superset will retry later. Please contact your administrator if this problem persists.": [ - "" + "Drop a temporal column here or click": [ + "Sleep hier een tijdelijke kolom of klik" ], - "Unable to migrate query state to backend. Superset will retry later. Please contact your administrator if this problem persists.": [ - "" + "Y-axis": [ + "Y-as" ], - "Unable to migrate query editor state to backend. Superset will retry later. Please contact your administrator if this problem persists.": [ - "" + "Dimension to use on y-axis.": [ + "Dimensie voor gebruik op de y-as." ], - "Unable to add a new tab to the backend. Please contact your administrator.": [ - "" + "X-axis": [ + "X-as" ], - "-- Note: Unless you save your query, these tabs will NOT persist if you clear your cookies or change browsers.\n\n": [ - "" + "Dimension to use on x-axis.": [ + "Dimensie voor gebruik op x-as." ], - "Copy of %s": ["Kopie van %s"], - "An error occurred while setting the active tab. Please contact your administrator.": [ - "Er is een fout opgetreden bij het instellen van het actieve tabblad. Neem contact op met uw beheerder." + "The type of visualization to display": [ + "Het type visualisatie dat moet worden weergegeven" ], - "An error occurred while fetching tab state": [ - "Er is een fout opgetreden tijdens het ophalen van de tabbladstatus" + "Fixed Color": [ + "Vaste kleur" ], - "An error occurred while removing tab. Please contact your administrator.": [ - "" + "Use this to define a static color for all circles": [ + "Gebruik dit om een statische kleur te definiëren voor alle cirkels" ], - "An error occurred while removing query. Please contact your administrator.": [ - "" + "Linear Color Scheme": [ + "Lineair kleurenschema" ], - "Your query could not be saved": [ - "Uw zoekopdracht kon niet worden opgeslagen" + "all": [ + "alle" ], - "Your query was not properly saved": [""], - "Your query was saved": ["Uw zoekopdracht werd opgeslagen"], - "Your query was updated": ["Uw zoekopdracht werd bijgewerkt"], - "Your query could not be updated": [ - "Uw zoekopdracht kon niet worden bijgewerkt" + "5 seconds": [ + "5 seconden" ], - "An error occurred while storing your query in the backend. To avoid losing your changes, please save your query using the \"Save Query\" button.": [ - "" + "30 seconds": [ + "30 seconden" ], - "An error occurred while fetching table metadata. Please contact your administrator.": [ - "Er is een fout opgetreden tijdens het ophalen van de metagegevens van de tabel. Neem contact op met uw beheerder." + "1 minute": [ + "1 minuut" ], - "An error occurred while expanding the table schema. Please contact your administrator.": [ - "Er is een fout opgetreden tijdens het uitbreiden van het tabelschema. Neem contact op met uw beheerder." + "5 minutes": [ + "5 minuten" ], - "An error occurred while collapsing the table schema. Please contact your administrator.": [ - "Er is een fout opgetreden tijdens het samenvouwen van het tabelschema. Neem contact op met uw beheerder." + "30 minutes": [ + "30 minuten" ], - "An error occurred while removing the table schema. Please contact your administrator.": [ - "Er is een fout opgetreden tijdens het verwijderen van het tabelschema. Neem contact op met uw beheerder." + "1 hour": [ + "1 uur" ], - "Shared query": ["Gedeelde zoekopdracht"], - "The datasource couldn't be loaded": [ - "De datasource kon niet geladen worden" + "1 day": [ + "1 dag" ], - "An error occurred while creating the data source": [ - "Er is een fout opgetreden bij het aanmaken van de gegevensbron" + "7 days": [ + "7 dagen" ], - "An error occurred while fetching function names.": [ - "Er is een fout opgetreden bij het ophalen van functienamen." + "week": [ + "week" ], - "SQL Lab uses your browser's local storage to store queries and results.\nCurrently, you are using %(currentUsage)s KB out of %(maxStorage)d KB storage space.\nTo keep SQL Lab from crashing, please delete some query tabs.\nYou can re-access these queries by using the Save feature before you delete the tab.\nNote that you will need to close other SQL Lab windows before you do this.": [ - "" + "week starting Sunday": [ + "week beginnend op Zondag" ], - "Primary key": [""], - "Foreign key": [""], - "Estimate selected query cost": [ - "Kostenraming van de geselecteerde zoekopdracht" + "week ending Saturday": [ + "week eindigt Zaterdag" ], - "Estimate cost": ["Kostenraming"], - "Cost estimate": ["Kostenraming"], - "Creating a data source and creating a new tab": [ - "Een gegevensbron maken en een nieuw tabblad maken" + "month": [ + "maand" ], - "Explore the result set in the data exploration view": [ - "Verken de resultaten in de gegevensverkenningsweergave" + "quarter": [ + "kwartaal" ], - "Source SQL": ["Bron SQL"], - "Executed SQL": [""], - "Run query": ["Zoekopdracht uitvoeren"], - "Stop query": ["Query stoppen"], - "New tab": ["Nieuw tabblad"], - "Keyboard shortcuts": [""], - "State": ["Status"], - "Duration": ["Duur"], - "Results": ["Resultaten"], - "Actions": ["Acties"], - "Success": ["Succes"], - "Failed": ["Mislukt"], - "Running": ["Running"], - "Fetching": [""], - "Offline": ["Offline"], - "Scheduled": ["Gepland"], - "Unknown Status": [""], - "Edit": ["Bewerk"], - "Data preview": ["Data preview"], - "Overwrite text in the editor with a query on this table": [ - "Overschrijf tekst in de editor met een query op deze tabel" + "year": [ + "jaar" ], - "Run query in a new tab": ["Query uitvoeren in een nieuw tabblad"], - "Remove query from log": ["Verwijder de query uit de log"], - "Unable to create chart without a query id.": [""], - "Save & Explore": ["Opslaan en verkennen"], - "Overwrite & Explore": ["Overschrijven en verkennen"], - "Save this query as a virtual dataset to continue exploring": [""], - "Download to CSV": ["Download naar CSV"], - "Copy to Clipboard": ["Kopieer naar Klembord"], - "Filter results": ["Filter resultaten"], - "The number of results displayed is limited to %(rows)d by the configuration DISPLAY_MAX_ROW. Please add additional limits/filters or download to csv to see more rows up to the %(limit)d limit.": [ - "" + "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`": [ + "De tijd granulariteit voor de visualisatie. Merk op dat u eenvoudige natuurlijke taal kunt typen en gebruiken zoals in `10 seconden`, `1 dag` of `56 weken`" + ], + "Select a time grain for the visualization. The grain is the time interval represented by a single point on the chart.": [ + "Selecteer een tijdsgranulariteit voor de visualisatie. De granulatie is het tijdsinterval dat wordt weergegeven door één punt in de grafiek." + ], + "This control filters the whole chart based on the selected time range. All relative times, e.g. \"Last month\", \"Last 7 days\", \"now\", etc. are evaluated on the server using the server's local time (sans timezone). All tooltips and placeholder times are expressed in UTC (sans timezone). The timestamps are then evaluated by the database using the engine's local timezone. Note one can explicitly set the timezone per the ISO 8601 format if specifying either the start and/or end time.": [ + "Dit bedieningselement filtert het hele diagram op basis van het geselecteerde tijdsbereik. Alle relatieve tijden, bijv. \"Vorige maand\", \"Laatste 7 dagen\", \"nu\", etc. worden geëvalueerd op de server door gebruik te maken van de lokale tijd (zonder tijdzone). Alle tooltips en placeholder tijdsaanduidingen worden uitgedrukt in UTC (zonder tijdzone). De tijdstempels worden vervolgens geëvalueerd in de database met behulp van de lokale tijdzone van de engine. Merk op dat de tijdzone per ISO 8601 formaat expliciet kan worden ingesteld als de start- en/of eindtijd wordt aangegeven." + ], + "Row limit": [ + "Rij limiet" + ], + "Limits the number of the rows that are computed in the query that is the source of the data used for this chart.": [ + "Beperkt het aantal rijen die zijn berekend in de query die de bron is van de gegevens die gebruikt worden voor deze grafiek." + ], + "Sort Descending": [ + "Sorteer Aflopend" + ], + "If enabled, this control sorts the results/values descending, otherwise it sorts the results ascending.": [ + "Indien ingeschakeld, sorteert deze controle de resultaten/waarden aflopend, anders worden de resultaten oplopend gesorteerd." + ], + "Series limit": [ + "Serie limiet" + ], + "Limits the number of series that get displayed. A joined subquery (or an extra phase where subqueries are not supported) is applied to limit the number of series that get fetched and rendered. This feature is useful when grouping by high cardinality column(s) though does increase the query complexity and cost.": [ + "Beperkt het aantal series die worden weergegeven. Een joined subquery (of een extra fase waar subquery's niet worden ondersteund) wordt toegepast om het aantal series dat wordt opgehaald en gerenderd te beperken. Deze functie is handig bij het groeperen van kolom(men) met een hoge kardinaliteit, maar verhoogt wel de query complexiteit en kosten." + ], + "Y Axis Format": [ + "Y-as Opmaak" + ], + "Currency format": [ + "Valuta opmaak" + ], + "Time format": [ + "Tijd opmaak" + ], + "The color scheme for rendering chart": [ + "Het kleurenschema voor de rendering grafiek" + ], + "Truncate Metric": [ + "Metriek Afkappen" + ], + "Whether to truncate metrics": [ + "Of de metrieken moeten worden afgekapt" + ], + "Show empty columns": [ + "Toon lege kolommen" + ], + "D3 format syntax: https://github.com/d3/d3-format": [ + "D3 format syntax: https://github.com/d3/d3-format" + ], + "Only applies when \"Label Type\" is set to show values.": [ + "Geldt alleen wanneer \"Label Type\" is ingesteld op toon waarden." + ], + "Only applies when \"Label Type\" is not set to a percentage.": [ + "Geldt alleen wanneer \"Label Type\" niet is ingesteld op een percentage." + ], + "Adaptive formatting": [ + "Adaptieve opmaak" + ], + "Original value": [ + "Originele waarde" + ], + "Duration in ms (66000 => 1m 6s)": [ + "Duur in ms (66000 => 1m 6s)" + ], + "Duration in ms (1.40008 => 1ms 400µs 80ns)": [ + "Duur in ms (1,40008 => 1ms 400μs 80ns)" + ], + "D3 time format syntax: https://github.com/d3/d3-time-format": [ + "D3 format syntax: https://github.com/d3/d3-time-format" + ], + "Oops! An error occurred!": [ + "Oeps! Er is een fout opgetreden!" + ], + "Stack Trace:": [ + "Stapeltracering:" + ], + "No results were returned for this query. If you expected results to be returned, ensure any filters are configured properly and the datasource contains data for the selected time range.": [ + "Geen resultaten gevonden voor deze zoekopdracht. Als u resultaten verwacht, zorg er dan voor dat alle filters correct zijn geconfigureerd en dat de gegevensbron gegevens bevat voor het geselecteerde tijdsbereik." + ], + "No Results": [ + "Geen Resultaten" + ], + "ERROR": [ + "FOUT" + ], + "Found invalid orderby options": [ + "Ongeldige order-opties gevonden" + ], + "Invalid input": [ + "Ongeldige invoer" + ], + "Unexpected error: ": [ + "Onverwachte fout: " + ], + "(no description, click to see stack trace)": [ + "(geen beschrijving, klik om de tracering te zien)" + ], + "Network error": [ + "Netwerk fout" + ], + "Request timed out": [ + "Verzoek is verlopen" + ], + "Issue 1000 - The dataset is too large to query.": [ + "Issue 1000 - De dataset is te groot om te vragen." + ], + "Issue 1001 - The database is under an unusual load.": [ + "Issue 1001 - De database staat onder een ongebruikelijke belasting." + ], + "An error occurred": [ + "Er is een fout opgetreden" + ], + "Sorry, an unknown error occurred.": [ + "Sorry, er is een onbekende fout opgetreden." + ], + "Sorry, there was an error saving this %s: %s": [ + "Sorry, er was een fout bij het opslaan van deze %s: %s" + ], + "You do not have permission to edit this %s": [ + "U bent niet bevoegd deze %s te bewerken" + ], + "is expected to be an integer": [ + "wordt verwacht een geheel getal te zijn" + ], + "is expected to be a number": [ + "wordt verwacht dat het een getal is" + ], + "is expected to be a Mapbox URL": [ + "wordt verwacht een Mapbox URL te zijn" + ], + "Value cannot exceed %s": [ + "Waarde kan niet hoger zijn dan %s" + ], + "cannot be empty": [ + "mag niet leeg zijn" + ], + "Filters for comparison must have a value": [ + "Filters voor vergelijking moeten een waarde hebben" + ], + "Domain": [ + "Domein" + ], + "hour": [ + "uur" + ], + "day": [ + "dag" + ], + "The time unit used for the grouping of blocks": [ + "De tijdeenheid die gebruikt wordt voor het groeperen van blokken" + ], + "Subdomain": [ + "Subdomein" + ], + "min": [ + "min" + ], + "The time unit for each block. Should be a smaller unit than domain_granularity. Should be larger or equal to Time Grain": [ + "De tijdeenheid voor elk blok. Moet een kleinere eenheid zijn dan domain_granularity. Moet groter of gelijk zijn aan tijdseenheid" + ], + "Chart Options": [ + "Grafiek Opties" + ], + "Cell Size": [ + "Cel grootte" + ], + "The size of the square cell, in pixels": [ + "De grootte van de vierkante cel, in pixels" + ], + "Cell Padding": [ + "Cel vulruimte" + ], + "The distance between cells, in pixels": [ + "De afstand tussen cellen, in pixels" + ], + "Cell Radius": [ + "Cel radius" + ], + "The pixel radius": [ + "De pixel radius" + ], + "Color Steps": [ + "Kleur Stappen" + ], + "The number color \"steps\"": [ + "De nummerkleur \"stappen\"" + ], + "Time Format": [ + "Tijd Opmaak" + ], + "Legend": [ + "Legenda" + ], + "Whether to display the legend (toggles)": [ + "Of de legenda moet worden weergegeven (schakelen)" + ], + "Show Values": [ + "Toon Waarden" + ], + "Whether to display the numerical values within the cells": [ + "Of de numerieke waarden binnen de cellen moeten worden weergegeven" + ], + "Show Metric Names": [ + "Toon Metriek Namen" + ], + "Whether to display the metric name as a title": [ + "Of de metriek naam als titel moet worden weergegeven" + ], + "Number Format": [ + "Nummer Opmaak" + ], + "Correlation": [ + "Correlatie" + ], + "Visualizes how a metric has changed over a time using a color scale and a calendar view. Gray values are used to indicate missing values and the linear color scheme is used to encode the magnitude of each day's value.": [ + "Visualiseert hoe een metriek in de loop der tijd is veranderd met behulp van een kleurenschaal en een kalenderweergave. Grijze waarden worden gebruikt om ontbrekende waarden aan te geven en het lineaire kleurenschema wordt gebruikt om de waarde van elke dag te coderen." + ], + "Business": [ + "Bedrijf" + ], + "Comparison": [ + "Vergelijken" + ], + "Intensity": [ + "Intensiteit" + ], + "Pattern": [ + "Patroon" + ], + "Report": [ + "Rapport" + ], + "Trend": [ + "Trend" + ], + "less than {min} {name}": [ + "minder dan {min} {name}" + ], + "between {down} and {up} {name}": [ + "tussen {down} en {up} {name}" + ], + "more than {max} {name}": [ + "meer dan {max} {name}" + ], + "Sort by metric": [ + "Sorteer op metriek" + ], + "Whether to sort results by the selected metric in descending order.": [ + "Of de resultaten in aflopende volgorde moeten worden gesorteerd op de geselecteerde metriek." + ], + "Number format": [ + "Nummer opmaak" + ], + "Choose a number format": [ + "Kies een getal opmaak" + ], + "Source": [ + "Bron" + ], + "Choose a source": [ + "Kies een bron" + ], + "Target": [ + "Doel" + ], + "Choose a target": [ + "Kies een doel" + ], + "Flow": [ + "Stroom" + ], + "Showcases the flow or link between categories using thickness of chords. The value and corresponding thickness can be different for each side.": [ + "Toont de stroom of koppel tussen categorieën met behulp van de dikte van koorden. De waarde en de bijbehorende dikte kunnen voor elke kant verschillend zijn." + ], + "Relationships between community channels": [ + "Relaties tussen community kanalen" + ], + "Chord Diagram": [ + "Koorden Diagram" + ], + "Circular": [ + "Rond" + ], + "Legacy": [ + "Verouderd" + ], + "Proportional": [ + "Proportioneel" + ], + "Relational": [ + "Relationeel" + ], + "Country": [ + "Land" + ], + "Which country to plot the map for?": [ + "Voor welk land moet de kaart worden getekend?" + ], + "ISO 3166-2 Codes": [ + "ISO 3166-2 Codes" + ], + "Column containing ISO 3166-2 codes of region/province/department in your table.": [ + "Kolom met ISO 3166-2 codes regionaal/provincie/afdeling in uw tabel." + ], + "Metric to display bottom title": [ + "Metriek om de ondertiteling weer te geven" + ], + "Map": [ + "Kaart" + ], + "Visualizes how a single metric varies across a country's principal subdivisions (states, provinces, etc) on a choropleth map. Each subdivision's value is elevated when you hover over the corresponding geographic boundary.": [ + "Visualiseert hoe een enkele metriek varieert over de belangrijkste onderverdelingen van een land (staten, provincies, enz.) op een choropleth-kaart. De waarde van elke onderverdeling wordt verhoogd wanneer u over de overeenkomstige geografische grens zweeft." + ], + "2D": [ + "2D" + ], + "Geo": [ + "Geo" + ], + "Range": [ + "Bereik" + ], + "Stacked": [ + "Gestapeld" + ], + "Sorry, there appears to be no data": [ + "Sorry, er lijken geen gegevens te zijn" + ], + "Event definition": [ + "Gebeurtenis definitie" + ], + "Event Names": [ + "Gebeurtenis Namen" + ], + "Columns to display": [ + "Kolommen om te tonen" + ], + "Order by entity id": [ + "Sorteer op entiteit 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.": [ + "Belangrijk! Selecteer dit als de tabel nog niet is gesorteerd op entiteit id, anders is er geen garantie dat alle gebeurtenissen voor elk entiteit worden teruggegeven." + ], + "Minimum leaf node event count": [ + "Minimum aantal gebeurtenissen per bladknoop" + ], + "Leaf nodes that represent fewer than this number of events will be initially hidden in the visualization": [ + "Eindknooppunten die minder dan dit aantal evenementen vertegenwoordigen worden in het begin verborgen in de visualisatie" + ], + "Additional metadata": [ + "Additionele metadata" + ], + "Metadata": [ + "Metadata" + ], + "Select any columns for metadata inspection": [ + "Selecteer alle kolommen voor metadata inspectie" + ], + "Entity ID": [ + "Entiteit ID" + ], + "e.g., a \"user id\" column": [ + "b.v. een \"gebruiker id\" kolom" + ], + "Max Events": [ + "Max Gebeurtenissen" + ], + "The maximum number of events to return, equivalent to the number of rows": [ + "Het maximum aantal te retourneren gebeurtenissen, gelijk aan het aantal rijen" + ], + "Compares the lengths of time different activities take in a shared timeline view.": [ + "Vergelijk de duur van de verschillende activiteiten in een gedeelde tijdlijnweergave." + ], + "Event Flow": [ + "Gebeurtenis Stroom" + ], + "Progressive": [ + "Progressief" + ], + "Axis ascending": [ + "As oplopend" + ], + "Axis descending": [ + "As aflopend" + ], + "Metric ascending": [ + "Metriek oplopend" + ], + "Metric descending": [ + "Metriek aflopend" + ], + "Heatmap Options": [ + "Heatmap Opties" + ], + "XScale Interval": [ + "XSchaal Interval" + ], + "Number of steps to take between ticks when displaying the X scale": [ + "Aantal stappen tussen ticks bij het weergeven van de X-schaal" + ], + "YScale Interval": [ + "YSchaal Interval" + ], + "Number of steps to take between ticks when displaying the Y scale": [ + "Aantal stappen tussen ticks bij het weergeven van de Y-schaal" + ], + "Rendering": [ + "Renderen" + ], + "pixelated (Sharp)": [ + "korrelig (Scherp)" + ], + "auto (Smooth)": [ + "auto (Glad)" + ], + "image-rendering CSS attribute of the canvas object that defines how the browser scales up the image": [ + "image-rendering CSS-attribuut van het canvasobject dat bepaalt hoe de browser de afbeelding schaalt" + ], + "Normalize Across": [ + "Normaliseren over de hele" + ], + "heatmap": [ + "heatmap" + ], + "x": [ + "x" + ], + "y": [ + "y" + ], + "Color will be shaded based the normalized (0% to 100%) value of a given cell against the other cells in the selected range: ": [ + "De kleur zal worden ingekleurd op basis van de genormaliseerde (0% tot 100%) waarde van een cel tegen de andere cellen in het geselecteerde bereik: " + ], + "x: values are normalized within each column": [ + "x: waarden worden binnen elke kolom genormaliseerd" + ], + "y: values are normalized within each row": [ + "y: waarden worden binnen elke rij genormaliseerd" + ], + "heatmap: values are normalized across the entire heatmap": [ + "heatmap: waarden worden genormaliseerd in de gehele heatmap" + ], + "Left Margin": [ + "Linker marge" + ], + "auto": [ + "auto" + ], + "Left margin, in pixels, allowing for more room for axis labels": [ + "Linker marge, in pixels, wat meer ruimte voor as labels mogelijk maakt" + ], + "Bottom Margin": [ + "Onderste marge" + ], + "Bottom margin, in pixels, allowing for more room for axis labels": [ + "Onderste marge, in pixels, wat meer ruimte voor as labels mogelijk maakt" + ], + "Value bounds": [ + "Waarde grenzen" + ], + "Hard value bounds applied for color coding. Is only relevant and applied when the normalization is applied against the whole heatmap.": [ + "Hard waarde grenzen toegepast voor kleurcodering. Is alleen relevant en toegepast wanneer de normalisatie wordt toegepast tegen de hele heatmap." + ], + "Sort X Axis": [ + "Sorteer X-as" + ], + "Sort Y Axis": [ + "Sorteer Y-as" + ], + "Show percentage": [ + "Toon percentage" + ], + "Whether to include the percentage in the tooltip": [ + "Of het percentage in de tooltip moet worden opgenomen" + ], + "Normalized": [ + "Genormaliseerd" + ], + "Whether to apply a normal distribution based on rank on the color scale": [ + "Of er een normale verdeling op basis van rang moet worden toegepast op de kleurschaal" + ], + "Value Format": [ + "Waarde Opmaak" + ], + "Visualize a related metric across pairs of groups. Heatmaps excel at showcasing the correlation or strength between two groups. Color is used to emphasize the strength of the link between each pair of groups.": [ + "Visualiseer een verwante metriek over paren van groepen. Heatmaps excelleren bij het tonen van de correlatie of sterkte tussen twee groepen. Kleur wordt gebruikt om de kracht van de link tussen elke groep te benadrukken." + ], + "Sizes of vehicles": [ + "Afmetingen van voertuigen" + ], + "Employment and education": [ + "Werkgelegenheid en onderwijs" + ], + "Density": [ + "Dichtheid" + ], + "Predictive": [ + "Voorspelling" + ], + "Single Metric": [ + "Enkele Metriek" + ], + "Deprecated": [ + "Verouderd" + ], + "to": [ + "naar" + ], + "count": [ + "tellen" + ], + "cumulative": [ + "cumulatief" + ], + "percentile (exclusive)": [ + "percentiel (exclusief)" + ], + "Select the numeric columns to draw the histogram": [ + "Selecteer de numerieke kolommen om het histogram te tekenen" + ], + "No of Bins": [ + "Aantal Bins" + ], + "Select the number of bins for the histogram": [ + "Selecteer het aantal groepen voor het histogram" + ], + "X Axis Label": [ + "X-as Label" + ], + "Y Axis Label": [ + "Y-as Label" + ], + "Whether to normalize the histogram": [ + "Of het histogram moet worden genormaliseerd" + ], + "Cumulative": [ + "Cumulatief" + ], + "Whether to make the histogram cumulative": [ + "Of het histogram cumulatief moet worden gemaakt" + ], + "Distribution": [ + "Verspreiding" + ], + "Take your data points, and group them into \"bins\" to see where the densest areas of information lie": [ + "Neem uw gegevenspunten mee en groepeer ze in \"groepen\" om te zien waar de dikste delen van informatie liggen" + ], + "Population age data": [ + "Populatie leeftijd data" + ], + "Contribution": [ + "Bijdrage" + ], + "Compute the contribution to the total": [ + "Bereken de bijdrage aan het totaal" + ], + "Series Height": [ + "Series hoogte" + ], + "Pixel height of each series": [ + "Pixelhoogte van elke serie" + ], + "Value Domain": [ + "Waarde Domein" + ], + "series": [ + "series" + ], + "overall": [ + "algemeen" + ], + "change": [ + "wijziging" + ], + "series: Treat each series independently; overall: All series use the same scale; change: Show changes compared to the first data point in each series": [ + "serie: Behandel elke serie onafhankelijk; in het algemeen: alle series gebruiken dezelfde schaal; wijziging: Toon wijzigingen vergeleken met het eerste gegevenspunt in elke serie" + ], + "Compares how a metric changes over time between different groups. Each group is mapped to a row and change over time is visualized bar lengths and color.": [ + "Vergelijkt hoe een metriek veranderd na verloop van tijd tussen verschillende groepen. Elke groep wordt toegewezen aan een rij en verandert na verloop van tijd weergegeven balklengtes en kleur." + ], + "Horizon Chart": [ + "Horizon grafiek" + ], + "Dark Cyan": [ + "Donker Cyaan" + ], + "Purple": [ + "Paars" + ], + "Gold": [ + "Goud" + ], + "Dim Gray": [ + "Grijs Dimmen" + ], + "Crimson": [ + "Donkerrood" + ], + "Forest Green": [ + "Bos Groen" + ], + "Longitude": [ + "Lengtegraad" + ], + "Column containing longitude data": [ + "Kolom met lengtegraad gegevens" + ], + "Latitude": [ + "Breedtegraad" + ], + "Column containing latitude data": [ + "Kolom met breedtegraad gegevens" + ], + "Clustering Radius": [ + "Clusteringsradius" + ], + "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.": [ + "De radius (in pixels) het algoritme zal gebruiken om een cluster te definiëren. Kies 0 om clustering uit te schakelen, maar houd er rekening mee dat een groot aantal punten (>1000) vertraging veroorzaakt." + ], + "Points": [ + "Punten" + ], + "Point Radius": [ + "Punt 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": [ + "De radius van individuele punten (punten die niet in een cluster zitten). Of een numerieke kolom of `Auto`, die het punt zal schalen gebaseerd op het grootste cluster" + ], + "Auto": [ + "Auto" + ], + "Point Radius Unit": [ + "Punt Radius Eenheid" + ], + "Pixels": [ + "Pixels" + ], + "Miles": [ + "Mijlen" + ], + "Kilometers": [ + "Kilometers" + ], + "The unit of measure for the specified point radius": [ + "De meeteenheid voor de opgegeven punt radius" + ], + "Labelling": [ + "Labelen" + ], + "label": [ + "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.": [ + "`count` is COUNT(*) als een groep wordt gebruikt. Numerieke kolommen worden samengevoegd met de aggregator. Niet-numerieke kolommen worden gebruikt om punten te labelen. Laat leeg om een aantal punten in elk cluster te krijgen." + ], + "Cluster label aggregator": [ + "Cluster label aggregator" + ], + "sum": [ + "som" + ], + "mean": [ + "gemiddelde" + ], + "max": [ + "max" + ], + "std": [ + "std" + ], + "var": [ + "var" + ], + "Aggregate function applied to the list of points in each cluster to produce the cluster label.": [ + "Aggregate functie toegepast op de lijst van punten in elke cluster om het clusterlabel te produceren." + ], + "Visual Tweaks": [ + "Visuele Aanpassingen" + ], + "Live render": [ + "Live render" + ], + "Points and clusters will update as the viewport is being changed": [ + "Punten en clusters worden bijgewerkt als de viewport wordt gewijzigd" + ], + "Map Style": [ + "Kaart Stijl" + ], + "Streets": [ + "Straten" + ], + "Dark": [ + "Donker" + ], + "Light": [ + "Licht" + ], + "Satellite Streets": [ + "Satelliet Straten" + ], + "Satellite": [ + "Satelliet" + ], + "Outdoors": [ + "Buitenshuis" + ], + "Base layer map style. See Mapbox documentation: %s": [ + "Basislaag kaartstijl. Zie Mapbox documentatie: %s" + ], + "Opacity": [ + "Opaciteit" + ], + "Opacity of all clusters, points, and labels. Between 0 and 1.": [ + "Ondoorzichtigheid van alle clusters, punten en labels. Tussen 0 en 1." + ], + "RGB Color": [ + "RGB kleur" + ], + "The color for points and clusters in RGB": [ + "De kleur voor punten en clusters in RGB" + ], + "Viewport": [ + "Weergavevenster" + ], + "Default longitude": [ + "Standaard lengtegraad" + ], + "Longitude of default viewport": [ + "Lengtegraad van standaard viewport" + ], + "Default latitude": [ + "Standaard breedtegraad" + ], + "Latitude of default viewport": [ + "Breedtegraad van standaard viewport" + ], + "Zoom": [ + "Zoom" + ], + "Zoom level of the map": [ + "Zoom niveau van de kaart" + ], + "One or many controls to group by. If grouping, latitude and longitude columns must be present.": [ + "Eén of meerdere besturingselementen om te groeperen. Als kolommen, breedtegraad en lengtegraad aanwezig moeten zijn." + ], + "Light mode": [ + "Lichte modus" + ], + "Dark mode": [ + "Donkere modus" + ], + "MapBox": [ + "KaartBox" + ], + "Scatter": [ + "Verspreiding" + ], + "Transformable": [ + "Transformabel" + ], + "Significance Level": [ + "Significantie Niveau" + ], + "Threshold alpha level for determining significance": [ + "Drempelwaarde alfa-niveau voor het bepalen van significantie" + ], + "p-value precision": [ + "p-waarde precisie" + ], + "Number of decimal places with which to display p-values": [ + "Aantal decimalen waarmee p-waarden worden weergegeven" + ], + "Lift percent precision": [ + "Percentage precisie opheffen" + ], + "Number of decimal places with which to display lift values": [ + "Aantal decimalen waarmee de liftwaarden worden weergegeven" + ], + "Table that visualizes paired t-tests, which are used to understand statistical differences between groups.": [ + "Tabel met daarin gekoppelde tests, die worden gebruikt om statistische verschillen tussen groepen te begrijpen." + ], + "Paired t-test Table": [ + "Gekoppelde t-test Tabel" + ], + "Statistical": [ + "Statistisch" + ], + "Tabular": [ + "Tabelvormig" + ], + "Options": [ + "Opties" + ], + "Data Table": [ + "Data Tabel" + ], + "Whether to display the interactive data table": [ + "Of de interactieve datatabel moet worden weergegeven" + ], + "Include Series": [ + "Includeer Serie" + ], + "Include series name as an axis": [ + "Voeg naam van de series toe aan een as" + ], + "Ranking": [ + "Ranglijst" + ], + "Plots the individual metrics for each row in the data vertically and links them together as a line. This chart is useful for comparing multiple metrics across all of the samples or rows in the data.": [ + "Tekent de individuele metrieken voor elke rij in de data verticaal en verbind ze als een lijn. Deze grafiek is handig voor het vergelijken van meerdere metrieken over alle samples of rijen in de data." + ], + "Directional": [ + "Directioneel" + ], + "Time Series Options": [ + "Tijd Series Opties" + ], + "Not Time Series": [ + "Geen Tijdserie" + ], + "Ignore time": [ + "Negeer tijd" + ], + "Time Series": [ + "Tijd Series" + ], + "Standard time series": [ + "Standaard tijdserie" + ], + "Aggregate Mean": [ + "Aggregate Gemiddelde" + ], + "Mean of values over specified period": [ + "Gemiddelde van waarden over de opgegeven periode" + ], + "Aggregate Sum": [ + "Aggregate Som" + ], + "Sum of values over specified period": [ + "Som van waarden over de opgegeven periode" + ], + "Metric change in value from `since` to `until`": [ + "Metriek verandering in waarde van `sinds` tot `tot`" + ], + "Percent Change": [ + "Percentage Wijziging" + ], + "Metric percent change in value from `since` to `until`": [ + "Metriek percentage verandering in waarde van `sinds` tot `tot`" + ], + "Factor": [ + "Factor" + ], + "Metric factor change from `since` to `until`": [ + "Metriek factor veranderen van `sinds` tot `tot`" + ], + "Advanced Analytics": [ + "Geavanceerde Analytics" + ], + "Use the Advanced Analytics options below": [ + "Gebruik de onderstaande geavanceerde Analytics opties" + ], + "Settings for time series": [ + "Instellingen voor tijdreeks" + ], + "Date Time Format": [ + "Datum Tijd Opmaak" + ], + "Partition Limit": [ + "Partitie Limiet" + ], + "The maximum number of subdivisions of each group; lower values are pruned first": [ + "Het maximale aantal onderverdelingen van elke groep; lagere waarden worden eerst verwijderd" + ], + "Partition Threshold": [ + "Partitie Drempelwaarde" + ], + "Partitions whose height to parent height proportions are below this value are pruned": [ + "Partities waarvan de hoogte ten opzichte van bovenliggende hoogte verhoudingen onder deze waarde liggen, worden verwijderd" + ], + "Log Scale": [ + "Log Schaal" + ], + "Use a log scale": [ + "Gebruik een log-schaal" + ], + "Equal Date Sizes": [ + "Gelijke datumgrootte" + ], + "Check to force date partitions to have the same height": [ + "Aanvinken om de datum partities te forceren dezelfde hoogte te hebben" + ], + "Rich Tooltip": [ + "Rijke Tooltip" + ], + "The rich tooltip shows a list of all series for that point in time": [ + "De rijke tooltip toont een lijst van alle series voor dat punt in tijd" + ], + "Rolling Window": [ + "Rollend Venster" + ], + "Rolling Function": [ + "Rollende fFnctie" + ], + "cumsum": [ + "cumsom" + ], + "Min Periods": [ + "Min Perioden" + ], + "Time Comparison": [ + "Tijdsvergelijking" + ], + "Time Shift": [ + "Tijdverschuiving" + ], + "1 week": [ + "1 week" + ], + "28 days": [ + "28 dagen" + ], + "30 days": [ + "30 dagen" + ], + "52 weeks": [ + "52 week" + ], + "1 year": [ + "1 jaar" + ], + "104 weeks": [ + "104 weken" + ], + "2 years": [ + "2 jaar" + ], + "156 weeks": [ + "156 weken" + ], + "3 years": [ + "3 jaar" + ], + "Overlay one or more timeseries from a relative time period. Expects relative time deltas in natural language (example: 24 hours, 7 days, 52 weeks, 365 days). Free text is supported.": [ + "Een of meer timeseries van een relatieve tijdsperiode overlappen. Verwacht de relatieve tijddeltas in de natuurlijke taal (bijvoorbeeld: 24 uur, 7 dagen, 52 weken, 365 dagen). Vrije tekst wordt ondersteund." + ], + "Actual Values": [ + "Werkelijke waarden" + ], + "1T": [ + "1T" + ], + "1H": [ + "1U" + ], + "1D": [ + "1D" + ], + "7D": [ + "7D" + ], + "1M": [ + "1M" + ], + "1AS": [ + "1AS" + ], + "Method": [ + "Methode" + ], + "asfreq": [ + "asfreq" + ], + "bfill": [ + "bfill" + ], + "ffill": [ + "ffill" + ], + "median": [ + "mediaan" + ], + "Part of a Whole": [ + "Deel van een geheel" + ], + "Compare the same summarized metric across multiple groups.": [ + "Vergelijk dezelfde samengevatte metriek over meerdere groepen." + ], + "Partition Chart": [ + "Verdeel Grafiek" + ], + "Categorical": [ + "Categorisch" + ], + "Use Area Proportions": [ + "Gebruik Gebied Proporties" + ], + "Check if the Rose Chart should use segment area instead of segment radius for proportioning": [ + "Controleer of de Rose Grafiek het segment gebied moet gebruiken in plaats van segmentstraal om de verhouding te geven" + ], + "A polar coordinate chart where the circle is broken into wedges of equal angle, and the value represented by any wedge is illustrated by its area, rather than its radius or sweep angle.": [ + "Een coördinatendiagram van de pool waar de cirkel wordt verdeeld in een wig van gelijke hoek, en de waarde die elke wig vertegenwoordigt, wordt geïllustreerd door zijn gebied, in plaats van zijn straal of veeg hoek." + ], + "Nightingale Rose Chart": [ + "Nachtelijke Rose Grafiek" + ], + "Advanced-Analytics": [ + "Geavanceerde Analytics" + ], + "Multi-Layers": [ + "Multi-Lagen" + ], + "Source / Target": [ + "Bron / Doel" + ], + "Choose a source and a target": [ + "Kies een bron en een doel" + ], + "Limiting rows may result in incomplete data and misleading charts. Consider filtering or grouping source/target names instead.": [ + "Rijen beperken kan leiden tot onvolledige data en misleidende grafieken. Overweeg het filteren of groeperen van bron/doelnamen." + ], + "Visualizes the flow of different group's values through different stages of a system. New stages in the pipeline are visualized as nodes or layers. The thickness of the bars or edges represent the metric being visualized.": [ + "Visualiseert de doorstroming van waarden van verschillende groepen door verschillende stadia van een systeem. Nieuwe stadia in de pijplijn worden weergegeven als knooppunten of lagen. De dikte van de balken of randen representeert de gevisualiseerde maatstaf." + ], + "Demographics": [ + "Demografisch" + ], + "Survey Responses": [ + "Enquête antwoorden" + ], + "Sankey Diagram": [ + "Sankey Diagram" + ], + "Percentages": [ + "Percentages" + ], + "Sankey Diagram with Loops": [ + "Sankey Diagram met Lussen" + ], + "Country Field Type": [ + "Land Veld Type" + ], + "Full name": [ + "Volledige naam" + ], + "code International Olympic Committee (cioc)": [ + "code Internationaal Olympisch Comité (cioc)" + ], + "code ISO 3166-1 alpha-2 (cca2)": [ + "code ISO 3166-1 alpha-2 (cca2)" + ], + "code ISO 3166-1 alpha-3 (cca3)": [ + "code ISO 3166-1 alpha-3 (cca3)" + ], + "The country code standard that Superset should expect to find in the [country] column": [ + "De landcode die Superset verwacht te vinden in de [land] kolom" + ], + "Show Bubbles": [ + "Toon bubbels" + ], + "Whether to display bubbles on top of countries": [ + "Of er bubbels bovenop landen moeten worden weergegeven" + ], + "Max Bubble Size": [ + "Max Bubbel Grootte" + ], + "Color by": [ + "Kleur op" + ], + "Choose whether a country should be shaded by the metric, or assigned a color based on a categorical color palette": [ + "Kies of een land moet worden schaduwd door de metriek of een kleur moet worden toegewezen gebaseerd op een categorisch kleurenpalet" + ], + "Country Column": [ + "Land Column" + ], + "3 letter code of the country": [ + "3 letter code van het land" + ], + "Metric that defines the size of the bubble": [ + "Metriek die de grootte van de bubbel definieert" + ], + "Bubble Color": [ + "Bubbel kleur" + ], + "Country Color Scheme": [ + "Land kleurenschema" + ], + "A map of the world, that can indicate values in different countries.": [ + "Een kaart van de wereld, die waarden in verschillende landen kan aangeven." + ], + "Multi-Dimensions": [ + "Multi-Dimensies" + ], + "Multi-Variables": [ + "Multi-Variabelen" + ], + "Popular": [ + "Populair" + ], + "deck.gl charts": [ + "deck.gl grafieken" + ], + "Pick a set of deck.gl charts to layer on top of one another": [ + "Kies een set deck.gl grafieken die bovenop elkaar moeten worden geplaatst" + ], + "Select charts": [ + "Selecteer grafieken" + ], + "Error while fetching charts": [ + "Fout bij het ophalen van grafieken" + ], + "Compose multiple layers together to form complex visuals.": [ + "Meerdere lagen samen samenstellen om complexe visuals te vormen." + ], + "deck.gl Multiple Layers": [ + "deck.gl Meerdere Lagen" + ], + "deckGL": [ + "deckGL" + ], + "Start (Longitude, Latitude): ": [ + "Start (lengtegraad, breedtegraad): " + ], + "End (Longitude, Latitude): ": [ + "Einde (lengtegraad, breedtegraad): " + ], + "Start Longitude & Latitude": [ + "Start Lengtegraad & Breedtegraad" + ], + "Point to your spatial columns": [ + "Punt naar uw ruimtelijke kolommen" + ], + "End Longitude & Latitude": [ + "Eind Lengtegraad & Breedtegraad" + ], + "Arc": [ + "Boog" + ], + "Target Color": [ + "Doel Kleur" + ], + "Color of the target location": [ + "Kleur van de doellocatie" + ], + "Categorical Color": [ + "Categorische Kleur" + ], + "Pick a dimension from which categorical colors are defined": [ + "Kies een dimensie van waaruit categorische kleuren worden gedefinieerd" + ], + "Stroke Width": [ + "Lijndikte" + ], + "Advanced": [ + "Geavanceerd" + ], + "Plot the distance (like flight paths) between origin and destination.": [ + "Teken de afstand (zoals vluchtpaden) tussen oorsprong en bestemming." + ], + "deck.gl Arc": [ + "deck.gl Boog" + ], + "3D": [ + "3D" + ], + "Web": [ + "Web" + ], + "Centroid (Longitude and Latitude): ": [ + "Centraal (Longitude en Latitude): " + ], + "Threshold: ": [ + "Drempelwaarde: " + ], + "The size of each cell in meters": [ + "Grootte van elke cel in meters" + ], + "Aggregation": [ + "Aggregatie" + ], + "The function to use when aggregating points into groups": [ + "De functie die gebruikt moet worden bij het aggregeren van punten in groepen" + ], + "Contours": [ + "Contours" + ], + "Define contour layers. Isolines represent a collection of line segments that serparate the area above and below a given threshold. Isobands represent a collection of polygons that fill the are containing values in a given threshold range.": [ + "Definieer contourlagen. Isolines vertegenwoordigen een verzameling lijnsegmenten die het gebied boven en onder een bepaalde drempel plaatsen. Isobands vertegenwoordigen een verzameling veelhoeken die de waarden in een bepaald drempelbereik vullen." + ], + "Weight": [ + "Gewicht" + ], + "Metric used as a weight for the grid's coloring": [ + "Metriek gebruikt als gewicht voor de kleur van het raster" + ], + "Uses Gaussian Kernel Density Estimation to visualize spatial distribution of data": [ + "Gebruikt Gaussian Kernel Density Inschatting om de ruimtelijke verspreiding van gegevens te visualiseren" + ], + "deck.gl Contour": [ + "deck.gl Contour" + ], + "Spatial": [ + "Ruimtelijk" + ], + "GeoJson Settings": [ + "GeoJson Instellingen" + ], + "Line width unit": [ + "Lijn breedte eenheid" + ], + "meters": [ + "meters" + ], + "pixels": [ + "pixels" + ], + "Point Radius Scale": [ + "Punt Radius Schaal" + ], + "The GeoJsonLayer takes in GeoJSON formatted data and renders it as interactive polygons, lines and points (circles, icons and/or texts).": [ + "De GeoJsonLayer neemt als GeoJSON geformatteerde gegevens in en geeft deze weer als interactieve polygonen, lijnen en punten (cirkels, pictogrammen en/of teksten)." + ], + "deck.gl Geojson": [ + "deck.gl Geojson" + ], + "Longitude and Latitude": [ + "Lengtegraad en breedtegraad" + ], + "Height": [ + "Hoogte" + ], + "Metric used to control height": [ + "Metriek gebruikt om de hoogte te regelen" + ], + "Visualize geospatial data like 3D buildings, landscapes, or objects in grid view.": [ + "Visualiseer geospatiële gegevens zoals 3D gebouwen, landschappen of objecten in rasterweergave." + ], + "deck.gl Grid": [ + "deck.gl Raster" + ], + "Intesity": [ + "Intensiteit" + ], + "Intensity is the value multiplied by the weight to obtain the final weight": [ + "Intensiteit is de waarde vermenigvuldigd met het gewicht om het uiteindelijke gewicht te verkrijgen" + ], + "Intensity Radius": [ + "Intensiteit Radius" + ], + "Intensity Radius is the radius at which the weight is distributed": [ + "Intensiteit Radius is de straal waarop het gewicht wordt verdeeld" + ], + "deck.gl Heatmap": [ + "deck.gl Heatmap" + ], + "Dynamic Aggregation Function": [ + "Dynamische Aggregatie Functie" + ], + "variance": [ + "variantie" + ], + "deviation": [ + "afwijking" + ], + "p1": [ + "p1" + ], + "p5": [ + "p5" + ], + "p95": [ + "p95" + ], + "p99": [ + "p99" + ], + "Overlays a hexagonal grid on a map, and aggregates data within the boundary of each cell.": [ + "Plaatst een hexagonaal raster over een kaart en aggregeert gegevens binnen de grenzen van elke cel." + ], + "deck.gl 3D Hexagon": [ + "deck.gl 3D-Zeshoek" + ], + "Polyline": [ + "Polylijn" + ], + "Visualizes connected points, which form a path, on a map.": [ + "Visualiseert verbonden punten, die een pad vormen, op een kaart." + ], + "deck.gl Path": [ + "deck.gl Pad" + ], + "name": [ + "naam" + ], + "Polygon Column": [ + "Polygoon Kolom" + ], + "Polygon Encoding": [ + "Polygoon Codering" + ], + "Elevation": [ + "Hoogte" + ], + "Polygon Settings": [ + "Polygoon Instellingen" + ], + "Opacity, expects values between 0 and 100": [ + "Ondoorzichtigheid, verwacht waarden tussen 0 en 100" + ], + "Number of buckets to group data": [ + "Aantal groepen om gegevens te groeperen" + ], + "How many buckets should the data be grouped in.": [ + "In hoeveel groepen moeten de gegevens worden gegroepeerd." + ], + "Bucket break points": [ + "Bucket breakpoints" + ], + "List of n+1 values for bucketing metric into n buckets.": [ + "Lijst van n+1 waarden voor het indelen van metriek in n groepen." + ], + "Emit Filter Events": [ + "Filtergebeurtenissen aflaten" + ], + "Whether to apply filter when items are clicked": [ + "Of er een filter moet worden toegepast wanneer er op items wordt geklikt" + ], + "Multiple filtering": [ + "Meerdere filters" + ], + "Allow sending multiple polygons as a filter event": [ + "Versturen van meerdere veelhoeken als filtergebeurtenis toestaan" + ], + "Visualizes geographic areas from your data as polygons on a Mapbox rendered map. Polygons can be colored using a metric.": [ + "Visualiseert geografische gebieden van uw gegevens als polygonen op een kaart die weergegeven wordt. Polygonen kunnen gekleurd worden met behulp van een metriek." + ], + "deck.gl Polygon": [ + "deck.gl Polygoon" + ], + "Category": [ + "Categorie" + ], + "Point Size": [ + "Punt Grootte" + ], + "Point Unit": [ + "Punt Eenheid" + ], + "Square meters": [ + "Vierkante meters" + ], + "Square kilometers": [ + "Vierkante kilometer" + ], + "Square miles": [ + "Vierkante mijlen" + ], + "Radius in meters": [ + "Radius in meters" + ], + "Radius in kilometers": [ + "Radius in kilometers" + ], + "Radius in miles": [ + "Radius in mijlen" + ], + "Minimum Radius": [ + "Minimale Radius" + ], + "Minimum radius size of the circle, in pixels. As the zoom level changes, this insures that the circle respects this minimum radius.": [ + "Minimale straal van de cirkel, in pixels. Als het zoomniveau verandert, zorgt dit ervoor dat de cirkel deze minimale straal respecteert." + ], + "Maximum Radius": [ + "Maximum Radius" + ], + "Maximum radius size of the circle, in pixels. As the zoom level changes, this insures that the circle respects this maximum radius.": [ + "Maximale straalgrootte van de cirkel, in pixels. Als het zoomniveau verandert, zorgt deze ervoor dat de cirkel deze maximale straal respecteert." + ], + "Point Color": [ + "Punt Kleur" + ], + "A map that takes rendering circles with a variable radius at latitude/longitude coordinates": [ + "Een kaart die het renderen van cirkels met een variabele straal neemt op breedtegraad / lengtegraad coördinaten" + ], + "deck.gl Scatterplot": [ + "deck.gl Spreidingsdiagram" + ], + "Grid": [ + "Raster" + ], + "Aggregates data within the boundary of grid cells and maps the aggregated values to a dynamic color scale": [ + "Combineert gegevens binnen de grens van rastercellen en brengt de geaggregeerde waarden naar een dynamische kleurschaal in kaart" + ], + "deck.gl Screen Grid": [ + "deck.gl Scherm Raster" + ], + "For more information about objects are in context in the scope of this function, refer to the": [ + "Voor meer informatie over objecten in de context van deze functie, verwijzen we naar de" + ], + " source code of Superset's sandboxed parser": [ + " broncode van Superset's sandboxed parser" + ], + "This functionality is disabled in your environment for security reasons.": [ + "Deze functionaliteit is uitgeschakeld in uw omgeving om veiligheidsredenen." + ], + "Ignore null locations": [ + "Negeer null locaties" + ], + "Whether to ignore locations that are null": [ + "Of locaties die null zijn, genegeerd moeten worden" + ], + "Auto Zoom": [ + "Auto Zoom" + ], + "When checked, the map will zoom to your data after each query": [ + "Wanneer aangevinkt, zal de kaart uw gegevens zoomen na elke zoekopdracht" + ], + "Select a dimension": [ + "Kies een dimensie" + ], + "Extra data for JS": [ + "Extra data voor JS" + ], + "List of extra columns made available in JavaScript functions": [ + "Lijst met extra kolommen beschikbaar gemaakt in JavaScript functies" + ], + "JavaScript data interceptor": [ + "JavaScript gegevens onderschepper" + ], + "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.": [ + "Definieer een javascript functie die de in de visualisatie gebruikte data array ontvangt en verwacht een aangepaste versie van die array te retourneren. Dit kan worden gebruikt om de eigenschappen van de gegevens, het filteren of de array te verrijken." + ], + "JavaScript tooltip generator": [ + "JavaScript tooltip generator" + ], + "Define a function that receives the input and outputs the content for a tooltip": [ + "Definieer een functie die de invoer ontvangt en de inhoud van een tooltip uitvoert" + ], + "JavaScript onClick href": [ + "JavaScript onClick href" + ], + "Define a function that returns a URL to navigate to when user clicks": [ + "Definieer een functie die een URL geeft om naar te navigeren wanneer de gebruiker klikt" + ], + "Legend Format": [ + "Legenda Opmaak" + ], + "Choose the format for legend values": [ + "Kies de opmaak voor legende waarden" + ], + "Legend Position": [ + "Legenda Positie" + ], + "Choose the position of the legend": [ + "Kies de positie van de legende" + ], + "Top left": [ + "Linksboven" + ], + "Top right": [ + "Rechtsboven" + ], + "Bottom left": [ + "Links onder" + ], + "Bottom right": [ + "Onder rechts" + ], + "Lines column": [ + "Lijnen kolom" + ], + "The database columns that contains lines information": [ + "De database kolommen die regels met informatie bevatten" + ], + "Line width": [ + "Lijndikte" + ], + "The width of the lines": [ + "De breedte van de lijnen" + ], + "Fill Color": [ + "Opvul kleur" + ], + " Set the opacity to 0 if you do not want to override the color specified in the GeoJSON": [ + " Zet de ondoorzichtigheid op 0 als je de kleur zoals aangegeven in GeoJSON niet wilt overschrijven" + ], + "Stroke Color": [ + "Lijnkleur" + ], + "Filled": [ + "Gevuld" + ], + "Whether to fill the objects": [ + "Of de objecten moeten worden gevuld" + ], + "Stroked": [ + "Omlijnd" + ], + "Whether to display the stroke": [ + "Of de lijn moet worden weergegeven" + ], + "Extruded": [ + "Geëxtrudeerd" + ], + "Whether to make the grid 3D": [ + "Of het raster 3D moet worden gemaakt" + ], + "Grid Size": [ + "Raster grootte" + ], + "Defines the grid size in pixels": [ + "Definieert de rastergrootte in pixels" + ], + "Parameters related to the view and perspective on the map": [ + "Parameters gerelateerd aan de weergave en perspectief op de kaart" + ], + "Longitude & Latitude": [ + "Lengtegraad & Breedtegraad" + ], + "Fixed point radius": [ + "Vaste punt radius" + ], + "Multiplier": [ + "Vermenigvuldiger" + ], + "Factor to multiply the metric by": [ + "Factor om de metriek te vermenigvuldigen met" + ], + "Lines encoding": [ + "Lijnen codering" + ], + "The encoding format of the lines": [ + "Het coderingsformaat van de lijnen" + ], + "geohash (square)": [ + "geohash (vierkant)" + ], + "Reverse Lat & Long": [ + "Omgekeerde breedtegraad & lengtegraad" + ], + "GeoJson Column": [ + "GeoJson Kolom" + ], + "Select the geojson column": [ + "Selecteer de kolom geojson" + ], + "Right Axis Format": [ + "Rechter As Opmaak" + ], + "Show Markers": [ + "Toon Markeringen" + ], + "Show data points as circle markers on the lines": [ + "Toon gegevenspunten als cirkelmarkeringen op de lijnen" + ], + "Y bounds": [ + "Y Grenzen" + ], + "Whether to display the min and max values of the Y-axis": [ + "Of de min en max waarden van de Y-as getoond moeten worden" + ], + "Y 2 bounds": [ + "Y 2 grenzen" + ], + "Line Style": [ + "Lijn Stijl" + ], + "linear": [ + "lineair" + ], + "basis": [ + "basis" + ], + "cardinal": [ + "kardinaal" + ], + "monotone": [ + "monotoon" + ], + "step-before": [ + "stap-voor" + ], + "step-after": [ + "stap-na" + ], + "Line interpolation as defined by d3.js": [ + "Lijn interpolatie zoals gedefinieerd door d3.js" + ], + "Show Range Filter": [ + "Toon Bereik Filter" + ], + "Whether to display the time range interactive selector": [ + "Of de interactieve selecter voor het tijdsbereik moet worden weergegeven" + ], + "Extra Controls": [ + "Extra bediening" + ], + "Whether to show extra controls or not. Extra controls include things like making mulitBar charts stacked or side by side.": [ + "Of er wel of niet extra besturingselementen moeten worden weergegeven. Extra bedieningselementen omvatten zaken als het gestapeld of naast elkaar maken van multi Staafdiagrammen." + ], + "X Tick Layout": [ + "X Tik Indeling" + ], + "flat": [ + "vlak" + ], + "staggered": [ + "trapsgewijs" + ], + "The way the ticks are laid out on the X-axis": [ + "De manier waarop de tikken worden uiteengezet op de X-as" + ], + "X Axis Format": [ + "X-as Opmaak" + ], + "Y Log Scale": [ + "Y Log Schaal" + ], + "Use a log scale for the Y-axis": [ + "Gebruik een log-schaal voor de Y-as" + ], + "Y Axis Bounds": [ + "Y-as Grenzen" + ], + "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.": [ + "Grenzen voor de Y-as. Wanneer leeg gelaten, worden de grenzen dynamisch gedefinieerd op basis van min/max van de gegevens. Merk op dat deze functie alleen de as groter maakt. Het zal de grootte van de gegevens niet verkleinen." + ], + "Y Axis 2 Bounds": [ + "Y-as 2 Grenzen" + ], + "X bounds": [ + "X Grenzen" + ], + "Whether to display the min and max values of the X-axis": [ + "Of de min en max waarden van de X-as getoond moeten worden" + ], + "Bar Values": [ + "Staaf Waarden" + ], + "Show the value on top of the bar": [ + "Toon de waarde bovenaan de balk" + ], + "Stacked Bars": [ + "Gestapelde Staven" + ], + "Reduce X ticks": [ + "Verminder X tikken" + ], + "Reduces the number of X-axis ticks to be rendered. If true, the x-axis will not 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.": [ + "Vermindert het aantal X-as tikken om gerenderd te worden. Als dit waar is, zal de x-as niet overstroomd worden en kunnen labels ontbreken. Indien onwaar, wordt een minimale breedte toegepast op kolommen en de breedte kan overlopen naar een horizontale scroll." + ], + "You cannot use 45° tick layout along with the time range filter": [ + "U kunt de indeling van 45° tik niet gebruiken samen met het filter voor het tijdsbereik" + ], + "Stacked Style": [ + "Gestapelde Stijl" + ], + "stack": [ + "stapel" + ], + "stream": [ + "stroom" + ], + "expand": [ + "uitklappen" + ], + "Evolution": [ + "Evolutie" + ], + "A time series chart that visualizes how a related metric from multiple groups vary over time. Each group is visualized using a different color.": [ + "Een tijdsschema dat visualiseert hoe een gerelateerde metriek van meerdere groepen verschilt na verloop van tijd. Elke groep wordt gevisualiseerd met behulp van een andere kleur." + ], + "Stretched style": [ + "Uitgerekte style" + ], + "Stacked style": [ + "Gestapelde stijl" + ], + "Video game consoles": [ + "Video game consoles" + ], + "Vehicle Types": [ + "Voertuig Types" + ], + "Area Chart (legacy)": [ + "Vlakdiagram (legacy)" + ], + "Continuous": [ + "Doorlopend" + ], + "Line": [ + "Lijn" + ], + "nvd3": [ + "nvd3" + ], + "Series Limit Sort By": [ + "Series Limiet Sorteren op" + ], + "Metric used to order the limit if a series limit is present. If undefined reverts to the first metric (where appropriate).": [ + "Metriek wordt gebruikt om de limiet te ordenen als deze aanwezig is. Als deze ongedefinieerd is, wordt de eerst metriek gebruikt (indien gepast)." + ], + "Series Limit Sort Descending": [ + "Series Limiet Sortering Aflopend" + ], + "Whether to sort descending or ascending if a series limit is present": [ + "Of er aflopend of oplopend moet worden gesorteerd als er een reekslimiet aanwezig is" + ], + "Visualize how a metric changes over time using bars. Add a group by column to visualize group level metrics and how they change over time.": [ + "Visualiseer hoe een metriek verandert over de tijd met behulp van staven. Voeg een groep per kolom toe om groepsniveau te visualiseren en hoe ze na verloop van tijd veranderen." + ], + "Time-series Bar Chart (legacy)": [ + "Tijdreeks Staafdiagram (legacy)" + ], + "Bar": [ + "Staaf" + ], + "Box Plot": [ + "Box Plot" + ], + "X Log Scale": [ + "X Log Schaal" + ], + "Use a log scale for the X-axis": [ + "Gebruik een log-schaal voor de X-as" + ], + "Visualizes a metric across three dimensions of data in a single chart (X axis, Y axis, and bubble size). Bubbles from the same group can be showcased using bubble color.": [ + "Visualiseert een metriek over drie dimensies van gegevens in één grafiek (X-as, Y-as en bubbelgrootte). Bubbels uit dezelfde groep kunnen worden getoond met behulp van bubbelkleur." + ], + "Bubble Chart (legacy)": [ + "Bubble diagram (legacy)" + ], + "Ranges": [ + "Bereiken" + ], + "Ranges to highlight with shading": [ + "Bereiken om te markeren met schaduw" + ], + "Range labels": [ + "Bereik labels" + ], + "Labels for the ranges": [ + "Labels voor de bereiken" + ], + "Markers": [ + "Markeringen" + ], + "List of values to mark with triangles": [ + "Lijst van waarden te markeren met driehoeken" + ], + "Marker labels": [ + "Marker labels" + ], + "Labels for the markers": [ + "Labels voor de markeringen" + ], + "Marker lines": [ + "Marker lijnen" + ], + "List of values to mark with lines": [ + "Lijst van waarden om te markeren met lijnen" + ], + "Marker line labels": [ + "Marker lijn labels" + ], + "Labels for the marker lines": [ + "Labels voor de markeringslijnen" + ], + "KPI": [ + "KPI" + ], + "Showcases the progress of a single metric against a given target. The higher the fill, the closer the metric is to the target.": [ + "Toont de voortgang van een enkele metriek tegen een bepaald doel. Hoe hoger de vulling, hoe dichter de metriek bij het doel ligt." + ], + "Visualizes many different time-series objects in a single chart. This chart is being deprecated and we recommend using the Time-series Chart instead.": [ + "Visualiseert veel verschillende tijd-series objecten in een enkele grafiek. Deze grafiek wordt niet meer ondersteund en we raden in plaats daarvan het gebruik van de Tijd series grafiek aan." + ], + "Time-series Percent Change": [ + "Tijdreeks Percentage Verandering" + ], + "Sort Bars": [ + "Sorteer Staven" + ], + "Sort bars by x labels.": [ + "Sorteer staven op x labels." + ], + "Breakdowns": [ + "Uitsplitsing" + ], + "Defines how each series is broken down": [ + "Bepaalt hoe elke serie is opgesplitst" + ], + "Compares metrics from different categories using bars. Bar lengths are used to indicate the magnitude of each value and color is used to differentiate groups.": [ + "Vergelijk metrieken van verschillende categorieën met behulp van bars. Lengtes worden gebruikt om de grootte van elke waarde en kleur aan te geven om groepen te onderscheiden." + ], + "Bar Chart (legacy)": [ + "Staafdiagram (legacy)" + ], + "Additive": [ + "Additief" + ], + "Propagate": [ + "Propageren" + ], + "Send range filter events to other charts": [ + "Stuur filter bereik gebeurtenissen naar andere grafieken" + ], + "Classic chart that visualizes how metrics change over time.": [ + "Klassieke grafiek die visualiseert hoe metrieken na verloop van tijd veranderen." + ], + "Battery level over time": [ + "Batterij niveau na verloop van tijd" + ], + "Line Chart (legacy)": [ + "Lijndiagram (legacy)" + ], + "Label Type": [ + "Label Type" + ], + "Category Name": [ + "Categorie Naam" + ], + "Value": [ + "Waarde" + ], + "Percentage": [ + "Percentage" + ], + "Category and Value": [ + "Categorie en Waarde" + ], + "Category and Percentage": [ + "Categorie en Percentage" + ], + "Category, Value and Percentage": [ + "Categorie, Waarde en Percentage" + ], + "What should be shown on the label?": [ + "Wat moet er op het label staan?" + ], + "Donut": [ + "Donut" + ], + "Do you want a donut or a pie?": [ + "Wil je een donut of een taart?" + ], + "Show Labels": [ + "Toon Labels" + ], + "Whether to display the labels. Note that the label only displays when the 5% threshold.": [ + "Of de labels moeten worden weergegeven. Merk op dat het label alleen wordt weergegeven als de drempel van 5% is bereikt." + ], + "Put labels outside": [ + "Plaats labels buiten" + ], + "Put the labels outside the pie?": [ + "Plaats de labels buiten de cirkel?" + ], + "Pie Chart (legacy)": [ + "Cirkel Grafiek (legacy)" + ], + "Frequency": [ + "Frequentie" + ], + "Year (freq=AS)": [ + "Jaar (freq=AS)" + ], + "52 weeks starting Monday (freq=52W-MON)": [ + "52 weken beginnend op maandag (freq=52W-MA)" + ], + "1 week starting Sunday (freq=W-SUN)": [ + "1 week beginnend op zondag (freq=W-SUN)" + ], + "1 week starting Monday (freq=W-MON)": [ + "1 week beginnend op maandag (freq=W-MON)" + ], + "Day (freq=D)": [ + "Dag (freq=D)" + ], + "4 weeks (freq=4W-MON)": [ + "4 weken (freq=4W-MA)" + ], + "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.": [ + "De periodiciteit waarover tijd moet worden gepivoteerd. Gebruikers kunnen\n \"Pandas\" offset alias aanbieden.\n Klik op de info-bubbel voor meer details over de geaccepteerde \"freq\" expressies." + ], + "Time-series Period Pivot": [ + "Tijdreeks Periodieke Pivoting" + ], + "Formula": [ + "Formule" + ], + "Event": [ + "Gebeurtenis" + ], + "Interval": [ + "Interval" + ], + "Stack": [ + "Stapel" + ], + "Stream": [ + "Stroom" + ], + "Expand": [ + "Uitklappen" + ], + "Show legend": [ + "Toon legenda" + ], + "Whether to display a legend for the chart": [ + "Of een legenda van de grafiek moet worden weergegeven" + ], + "Margin": [ + "Marge" + ], + "Additional padding for legend.": [ + "Additionele opvulling voor legende." + ], + "Scroll": [ + "Scroll" + ], + "Plain": [ + "Gewoon" + ], + "Legend type": [ + "Legenda type" + ], + "Orientation": [ + "Oriëntatie" + ], + "Bottom": [ + "Onderaan" + ], + "Right": [ + "Rechts" + ], + "Legend Orientation": [ + "Legenda Oriëntatie" + ], + "Show Value": [ + "Toon Waarde" + ], + "Show series values on the chart": [ + "Toon series waarden op de grafiek" + ], + "Stack series on top of each other": [ + "Stapel series bovenop elkaar" + ], + "Only Total": [ + "Alleen Totaal" + ], + "Only show the total value on the stacked chart, and not show on the selected category": [ + "Toon alleen de totale waarde in de gestapelde grafiek en niet in de geselecteerde categorie" + ], + "Percentage threshold": [ + "Percentage drempelwaarde" + ], + "Minimum threshold in percentage points for showing labels.": [ + "Minimale drempelwaarde in percentage voor het tonen van labels." + ], + "Rich tooltip": [ + "Rijke tooltip" + ], + "Shows a list of all series available at that point in time": [ + "Toont een lijst van alle series die beschikbaar zijn op dat moment" + ], + "Tooltip time format": [ + "Tooltip tijd opmaak" + ], + "Tooltip sort by metric": [ + "Tooltip sorteren op metriek" + ], + "Whether to sort tooltip by the selected metric in descending order.": [ + "Of de tooltip moet worden gesorteerd op de geselecteerde metriek in aflopende volgorde." + ], + "Tooltip": [ + "Tooltip" + ], + "Sort Series By": [ + "Sorteer Serie Op" + ], + "Based on what should series be ordered on the chart and legend": [ + "Gebaseerd op hoe series moet worden gesorteerd op de grafiek en legende" + ], + "Sort Series Ascending": [ + "Sorteer Series Oplopend" + ], + "Sort series in ascending order": [ + "Sorteer series in oplopende volgorde" + ], + "Rotate x axis label": [ + "Roteer x-as label" + ], + "Input field supports custom rotation. e.g. 30 for 30°": [ + "Invoerveld ondersteunt aangepaste rotatie. b.v. 30 voor 30°" + ], + "Series Order": [ + "Series Volgorde" + ], + "Truncate X Axis": [ + "X-as Afkappen" + ], + "Truncate X Axis. Can be overridden by specifying a min or max bound. Only applicable for numercal X axis.": [ + "X-as afkappen. Kan worden overschreven door het specificeren van een min of max grens. Alleen van toepassing op numerieke X assen." + ], + "X Axis Bounds": [ + "X-as Grenzen" + ], + "Bounds for numerical X axis. Not applicable for temporal or categorical axes. 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.": [ + "Grenzen voor numerieke X-as. Niet van toepassing voor tijdelijke of categorische assen. Wanneer leeg gelaten, worden de grenzen dynamisch gedefinieerd op basis van de min/max van de gegevens. Merk op dat deze functie alleen de as groter maakt. Het zal de grootte van de gegevens niet verkleinen." + ], + "Minor ticks": [ + "Kleine tikken" + ], + "Show minor ticks on axes.": [ + "Toon kleine tikken op assen." + ], + "Make the x-axis categorical": [ + "Maak de x-as categorisch" + ], + "Last available value seen on %s": [ + "Laatst beschikbare waarde gezien op %s" + ], + "Not up to date": [ + "Niet up to date" + ], + "No data": [ + "Geen data" + ], + "No data after filtering or data is NULL for the latest time record": [ + "Geen gegevens na filteren of gegevens is NULL voor het laatste tijdrecord" + ], + "Try applying different filters or ensuring your datasource has data": [ + "Probeer andere filters toe te passen of zorg ervoor dat uw gegevensbron data heeft" + ], + "Big Number Font Size": [ + "Groot getal lettertype" + ], + "Tiny": [ + "Klein" + ], + "Small": [ + "Klein" + ], + "Normal": [ + "Normaal" + ], + "Large": [ + "Groot" + ], + "Huge": [ + "Enorm" + ], + "Subheader Font Size": [ + "Ondertitel Lettergrootte" + ], + "Value difference between the time periods": [ + "" + ], + "Percentage difference between the time periods": [ + "" + ], + "Range for Comparison": [ + "Bereik voor Vergelijking" + ], + "Set the time range that will be used for the comparison metrics. For example, \"Year\" will compare to the same dates one year earlier. Use \"Inherit range from time filters\" to shift the comparison time rangeby the same length as your time range and use \"Custom\" to set a custom comparison range.": [ + "" + ], + "Filters for Comparison": [ + "Filters voor vergelijking" + ], + "Add color for positive/negative change": [ + "Kleur toevoegen voor positieve/negatieve wijziging" + ], + "Adds color to the chart symbols based on the positive or negative change from the comparison value.": [ + "" + ], + "Big Number with Time Period Comparison": [ + "Groot getal met vergelijking van tijdsperiode" + ], + "Display settings": [ + "Weergave instellingen" + ], + "Subheader": [ + "Ondertitel" + ], + "Description text that shows up below your Big Number": [ + "Beschrijvingstekst die onder uw Grote Nummer verschijnt" + ], + "Date format": [ + "Datum opmaak" + ], + "Force date format": [ + "Forceer datum opmaak" + ], + "Use date formatting even when metric value is not a timestamp": [ + "Gebruik datum opmaak zelfs wanneer metrische waarde geen tijdstempel is" + ], + "Conditional Formatting": [ + "Voorwaardelijke opmaak" + ], + "Apply conditional color formatting to metric": [ + "Pas voorwaardelijke kleuropmaak toe op metriek" + ], + "Showcases a single metric front-and-center. Big number is best used to call attention to a KPI or the one thing you want your audience to focus on.": [ + "Toont een enkele metriek op de voorgrond. Een groot getal wordt het beste gebruikt om de aandacht te vestigen op een KPI of het belangrijkste aspect waarop u uw publiek wilt laten focussen." + ], + "A Big Number": [ + "Een groot getal" + ], + "With a subheader": [ + "Met een ondertitel" + ], + "Big Number": [ + "Groot Getal" + ], + "Comparison Period Lag": [ + "Vergelijking Periode Vertraging" + ], + "Based on granularity, number of time periods to compare against": [ + "Gebaseerd op granulariteit, aantal perioden te vergelijken met" + ], + "Comparison suffix": [ + "Vergelijking achtervoegsel" + ], + "Suffix to apply after the percentage display": [ + "Achtervoegsel om toe te passen na het percentage" + ], + "Show Timestamp": [ + "Toon Tijdstempel" + ], + "Whether to display the timestamp": [ + "Of de tijdstempel moet worden weergegeven" + ], + "Show Trend Line": [ + "Toon Trendlijn" + ], + "Whether to display the trend line": [ + "Of de trendlijn moet worden weergegeven" + ], + "Start y-axis at 0": [ + "Start y-as op 0" + ], + "Start y-axis at zero. Uncheck to start y-axis at minimum value in the data.": [ + "Start y-axis op nul. Haal het vinkje weg om y-as te starten op minimale waarde in de gegevens." + ], + "Fix to selected Time Range": [ + "Repareer naar geselecteerde tijdbereik" + ], + "Fix the trend line to the full time range specified in case filtered results do not include the start or end dates": [ + "Repareer de trendlijn tot het volledige tijdbereik gespecificeerd in het geval gefilterde resultaten niet de begin- of einddatum bevatten" + ], + "TEMPORAL X-AXIS": [ + "TIJDELIJK X-AXIS" + ], + "Showcases a single number accompanied by a simple line chart, to call attention to an important metric along with its change over time or other dimension.": [ + "Toont een enkel getal vergezeld van een eenvoudige lijndiagram, om de aandacht te vestigen op een belangrijke metriek in combinatie met zijn verandering in de tijd of andere dimensie." + ], + "Big Number with Trendline": [ + "Groot getal met trendlijn" + ], + "Whisker/outlier options": [ + "Opties whisker/outlier" + ], + "Determines how whiskers and outliers are calculated.": [ + "Bepaalt hoe whiskers en outliers worden berekend." + ], + "Tukey": [ + "Tukey" + ], + "Min/max (no outliers)": [ + "Min/max (geen outliers)" + ], + "2/98 percentiles": [ + "2/98 percentielen" + ], + "9/91 percentiles": [ + "9/91 percentielen" + ], + "Categories to group by on the x-axis.": [ + "Categorieën om te groeperen op de x-as." + ], + "Distribute across": [ + "Verspreid over" + ], + "Columns to calculate distribution across.": [ + "Kolommen om de distributie te berekenen." + ], + "Also known as a box and whisker plot, this visualization compares the distributions of a related metric across multiple groups. The box in the middle emphasizes the mean, median, and inner 2 quartiles. The whiskers around each box visualize the min, max, range, and outer 2 quartiles.": [ + "Ook bekend als een doos en whisker plot, deze visualisatie vergelijkt de verdeling van een verwante metriek over meerdere groepen. De doos in het midden legt de middelste nadruk op de middelmatige, middelbare en binnenste kwartieren. De whiskers rond elke box visualiseer de min, max, bereik en de buitenste 2 quartiles." + ], + "ECharts": [ + "EGrafieken" + ], + "Bubble size number format": [ + "Bubbel grootte nummer opmaak" + ], + "Bubble Opacity": [ + "Bubbel doorzichtigheid" + ], + "Opacity of bubbles, 0 means completely transparent, 1 means opaque": [ + "Zichtbaarheid van bubbels, 0 betekent volledig transparant, 1 betekent ondoorzichtig" + ], + "X AXIS TITLE MARGIN": [ + "X AXIS TITEL MARGE" + ], + "Logarithmic x-axis": [ + "Logaritmische x-as" + ], + "Rotate y axis label": [ + "Roteer y-as label" + ], + "Y AXIS TITLE MARGIN": [ + "Y AXIS TITEL MARGE" + ], + "Logarithmic y-axis": [ + "Logaritmische y-as" + ], + "Truncate Y Axis": [ + "Y-as Afkappen" + ], + "Truncate Y Axis. Can be overridden by specifying a min or max bound.": [ + "Y-as afkappen. Kan worden overschreven door een min of max grens te specificeren." + ], + "% calculation": [ + "% berekening" + ], + "Display percents in the label and tooltip as the percent of the total value, from the first step of the funnel, or from the previous step in the funnel.": [ + "Toon percentages in de label en tooltip als percentage van de totale waarde vanaf de eerste stap van de funnel, of vanaf de vorige stap in de funnel." + ], + "Calculate from first step": [ + "Bereken vanaf de eerste stap" + ], + "Calculate from previous step": [ + "Bereken vanaf vorige stap" + ], + "Percent of total": [ + "Percentage van totaal" + ], + "Labels": [ + "Labels" + ], + "Label Contents": [ + "Label Inhoud" + ], + "Value and Percentage": [ + "Waarde en Percentage" + ], + "What should be shown as the label": [ + "Wat moet worden weergegeven als het label" + ], + "Tooltip Contents": [ + "Tooltip inhoud" + ], + "What should be shown as the tooltip label": [ + "Wat moet worden weergegeven als het tooltip label" + ], + "Whether to display the labels.": [ + "Of de labels getoond moeten worden." + ], + "Show Tooltip Labels": [ + "Toon Tooltip Labels" + ], + "Whether to display the tooltip labels.": [ + "Of de tooltiplabels moeten worden weergegeven." + ], + "Showcases how a metric changes as the funnel progresses. This classic chart is useful for visualizing drop-off between stages in a pipeline or lifecycle.": [ + "Toont hoe een metriek veranderd naarmate de trechter vordert. Deze klassieke grafiek is handig voor het visualiseren van achtergronden tussen fases in een pipeline of lifecycle." + ], + "Funnel Chart": [ + "Trechter Grafiek" + ], + "Sequential": [ + "Sequentieel" + ], + "Columns to group by": [ + "Kolommen om te groeperen bij" + ], + "General": [ + "Algemeen" + ], + "Min": [ + "Min" + ], + "Minimum value on the gauge axis": [ + "Minimale waarde op de graadmeter" + ], + "Max": [ + "Max" + ], + "Maximum value on the gauge axis": [ + "Maximale waarde op de graadmeter-as" + ], + "Start angle": [ + "Start hoek" + ], + "Angle at which to start progress axis": [ + "Hoek waarop de progress as moet beginnen" + ], + "End angle": [ + "Einde hoek" + ], + "Angle at which to end progress axis": [ + "Hoek waarop de voortgangsas eindigt" + ], + "Font size": [ + "Font size" + ], + "Font size for axis labels, detail value and other text elements": [ + "Tekengrootte voor as labels, detailwaarde en andere tekstelementen" + ], + "Value format": [ + "Waarde opmaak" + ], + "Additional text to add before or after the value, e.g. unit": [ + "Extra tekst om toe te voegen voor of na de waarde, bijvoorbeeld eenheid" + ], + "Show pointer": [ + "Toon aanwijzer" + ], + "Whether to show the pointer": [ + "Of de aanwijzer moet worden weergegeven" + ], + "Animation": [ + "Animatie" + ], + "Whether to animate the progress and the value or just display them": [ + "Of u nu de voortgang en de waarde wilt animeren of ze gewoon wilt weergeven" + ], + "Axis": [ + "As" + ], + "Show axis line ticks": [ + "Toon as lijntikken" + ], + "Whether to show minor ticks on the axis": [ + "Of er kleine tikken op de as moeten worden weergegeven" + ], + "Show split lines": [ + "Toon gesplitste lijnen" + ], + "Whether to show the split lines on the axis": [ + "Of de splitslijnen op de as moeten worden weergegeven" + ], + "Split number": [ + "Splits nummer" + ], + "Number of split segments on the axis": [ + "Aantal gesplitste segmenten op de as" + ], + "Progress": [ + "Voortgang" + ], + "Show progress": [ + "Toon voortgang" + ], + "Whether to show the progress of gauge chart": [ + "Of de voortgang van het graadmeterdiagram moet worden weergegeven" + ], + "Overlap": [ + "Overlap" + ], + "Whether the progress bar overlaps when there are multiple groups of data": [ + "Of de voortgangsbalk overlapt wanneer er meerdere groepen gegevens zijn" + ], + "Round cap": [ + "Ronde dop" + ], + "Style the ends of the progress bar with a round cap": [ + "Stijl de uiteindes van de voortgangsbalk met een ronde dop" + ], + "Intervals": [ + "Intervallen" + ], + "Interval bounds": [ + "Interval grenzen" + ], + "Comma-separated interval bounds, e.g. 2,4,5 for intervals 0-2, 2-4 and 4-5. Last number should match the value provided for MAX.": [ + "Kommagescheiden interval grenzen, bijvoorbeeld 2,4,5 voor intervallen 0-2, 2-4 en 4-5. Laatste getal moet overeenkomen met de opgegeven waarde voor MAX." + ], + "Interval colors": [ + "Interval kleuren" + ], + "Comma-separated color picks for the intervals, e.g. 1,2,4. Integers denote colors from the chosen color scheme and are 1-indexed. Length must be matching that of interval bounds.": [ + "Kommagescheiden kleurenkiezers voor de intervals, bijvoorbeeld 1,2,4. Gehele getallen denote kleuren van het gekozen kleurenschema en zijn 1 geïndexeerd. Lengte moet overeenkomen met die van interval grenzen." + ], + "Uses a gauge to showcase progress of a metric towards a target. The position of the dial represents the progress and the terminal value in the gauge represents the target value.": [ + "Gebruikt een graadmeter om de voortgang van een metriek naar een doel te laten zien. De positie van de wijzer geeft de vooruitgang weer en de waarde in de meter vertegenwoordigt de doelwaarde." + ], + "Gauge Chart": [ + "Gauge Grafiek" + ], + "Name of the source nodes": [ + "Naam van de bronknooppunten" + ], + "Name of the target nodes": [ + "Naam van het doel knooppunten" + ], + "Source category": [ + "Bron categorie" + ], + "The category of source nodes used to assign colors. If a node is associated with more than one category, only the first will be used.": [ + "De categorie van bronnodes die worden gebruikt om kleuren toe te wijzen. Als een knooppunt is gekoppeld met meer dan één categorie, zal alleen de eerste worden gebruikt." + ], + "Target category": [ + "Doel categorie" + ], + "Category of target nodes": [ + "Categorie van de doelnode" + ], + "Chart options": [ + "Grafiek opties" + ], + "Layout": [ + "Indeling" + ], + "Graph layout": [ + "Grafiek indeling" + ], + "Force": [ + "Forceer" + ], + "Layout type of graph": [ + "Indeling type van de grafiek" + ], + "Edge symbols": [ + "Rand symbolen" + ], + "Symbol of two ends of edge line": [ + "Symbool van twee uiteinden van de randlijn" + ], + "None -> None": [ + "Geen -> Geen" + ], + "None -> Arrow": [ + "Geen -> Pijl" + ], + "Circle -> Arrow": [ + "Cirkel -> Pijl" + ], + "Circle -> Circle": [ + "Cirkel -> Cirkel" + ], + "Enable node dragging": [ + "Schakel node slepen in" + ], + "Whether to enable node dragging in force layout mode.": [ + "Of het slepen van knooppunten in de geforceerde lay-outmodus moet worden ingeschakeld." + ], + "Enable graph roaming": [ + "Schakel grafiekroaming in" + ], + "Disabled": [ + "Uitgeschakeld" + ], + "Scale only": [ + "Alleen schalen" + ], + "Move only": [ + "Enkel verplaatsen" + ], + "Scale and Move": [ + "Schaal en Verplaats" + ], + "Whether to enable changing graph position and scaling.": [ + "Of het wijzigen van de grafiekpositie en schaling moet worden ingeschakeld." + ], + "Node select mode": [ + "Node selectiemodus" + ], + "Single": [ + "Enkelvoudig" + ], + "Multiple": [ + "Meerdere" + ], + "Allow node selections": [ + "Sta node selecties toe" + ], + "Label threshold": [ + "Label drempelwaarde" + ], + "Minimum value for label to be displayed on graph.": [ + "Minimale waarde van het label op grafiek." + ], + "Node size": [ + "Node grootte" + ], + "Median node size, the largest node will be 4 times larger than the smallest": [ + "Mediaangrootte van knooppunt, het grootste knooppunt zal 4 keer groter zijn dan het kleinste" + ], + "Edge width": [ + "Rand dikte" + ], + "Median edge width, the thickest edge will be 4 times thicker than the thinnest.": [ + "Mediaanrandbreedte, de dikste rand zal 4 keer dikker zijn dan de dunste." + ], + "Edge length": [ + "Rand lengte" + ], + "Edge length between nodes": [ + "Lengte rand tussen nodes" + ], + "Gravity": [ + "Zwaartekracht" + ], + "Strength to pull the graph toward center": [ + "Sterkte om de grafiek naar het midden te trekken" + ], + "Repulsion": [ + "Afstoting" + ], + "Repulsion strength between nodes": [ + "Afstotingskracht tussen knooppunten" + ], + "Friction": [ + "Wrijving" + ], + "Friction between nodes": [ + "Wrijving tussen nodes" + ], + "Displays connections between entities in a graph structure. Useful for mapping relationships and showing which nodes are important in a network. Graph charts can be configured to be force-directed or circulate. If your data has a geospatial component, try the deck.gl Arc chart.": [ + "Toont verbindingen tussen entiteiten in een grafiekstructuur. Handig voor het toewijzen van relaties en tonen van welke knooppunten belangrijk zijn in een netwerk. Grafieken kunnen worden geconfigureerd om geforceerd te worden geleid of te circuleren. Als uw gegevens een geospatiële component hebben, probeer dan de deck.gl boog." + ], + "Graph Chart": [ + "Grafiek diagram" + ], + "Structural": [ + "Structureel" + ], + "Piecewise": [ + "" + ], + "Hard value bounds applied for color coding.": [ + "" + ], + "Whether to sort descending or ascending": [ + "Aflopend of oplopend sorteren" + ], + "Series type": [ + "Series type" + ], + "Smooth Line": [ + "Vloeiende lijn" + ], + "Step - start": [ + "Stap - start" + ], + "Step - middle": [ + "Stap - midden" + ], + "Step - end": [ + "Stap - einde" + ], + "Series chart type (line, bar etc)": [ + "Series grafiek type (lijn, staaf etc)" + ], + "Stack series": [ + "Stapel series" + ], + "Area chart": [ + "Vlakdiagram" + ], + "Draw area under curves. Only applicable for line types.": [ + "Teken gebied onder curves. Alleen toepasbaar voor lijntypes." + ], + "Opacity of area chart.": [ + "Ondoorzichtigheid van het vlakdiagram." + ], + "Marker": [ + "Marker" + ], + "Draw a marker on data points. Only applicable for line types.": [ + "Teken een markering op gegevenspunten. Alleen toepasbaar op lijntypes." + ], + "Marker size": [ + "Marker grootte" + ], + "Size of marker. Also applies to forecast observations.": [ + "Grootte van marker. Ook van toepassing op de waarnemingen bij de prognose." + ], + "Primary": [ + "Primair" + ], + "Secondary": [ + "Secundair" + ], + "Primary or secondary y-axis": [ + "Primaire of secundaire y-as" + ], + "Shared query fields": [ + "Gedeelde query velden" + ], + "Query A": [ + "Query A" + ], + "Advanced analytics Query A": [ + "Geavanceerde analytics zoekopdracht A" + ], + "Query B": [ + "Query B" + ], + "Advanced analytics Query B": [ + "Geavanceerde analytics zoekopdracht B" + ], + "Data Zoom": [ + "Data Zoom" + ], + "Enable data zooming controls": [ + "Gegevens zoomen inschakelen" + ], + "Minor Split Line": [ + "Kleine Splitlijn" + ], + "Draw split lines for minor y-axis ticks": [ + "Gesplitste lijnen tekenen voor kleine y-as tikken" + ], + "Primary y-axis Bounds": [ + "Primaire y-as Grenzen" + ], + "Bounds for the primary 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.": [ + "Grenzen voor de primaire Y-as. Wanneer leeg gelaten, worden de grenzen dynamisch gedefinieerd op basis van min/max van de gegevens. Merk op dat deze functie alleen de as groter maakt. Het zal de grootte van de gegevens niet verkleinen." + ], + "Primary y-axis format": [ + "Primair y-as formaat" + ], + "Logarithmic scale on primary y-axis": [ + "Logaritmische schaal op primaire y-as" + ], + "Secondary y-axis Bounds": [ + "Secundaire y-as grenzen" + ], + "Bounds for the secondary Y-axis. Only works when Independent Y-axis\n bounds are enabled. When left empty, the bounds are dynamically defined\n based on the min/max of the data. Note that this feature will only expand\n the axis range. It won't narrow the data's extent.": [ + "Grenzen voor de secundaire Y-as. Werkt alleen als Onafhankelijke Y-as\n grenzen zijn ingeschakeld. Wanneer leeg, wanneer leeg, de grenzen worden dynamisch gedefinieerd\n op basis van de min/max van de gegevens. Merk op dat deze functie het assortiment alleen\n zal uitbreiden. Het zal de omvang van de data niet verkleinen." + ], + "Secondary y-axis format": [ + "Secundaire y-as opmaak" + ], + "Secondary currency format": [ + "Secundaire valuta opmaak" + ], + "Secondary y-axis title": [ + "Secundaire titel y-as" + ], + "Logarithmic scale on secondary y-axis": [ + "Logaritmische schaal op secundaire y-as" + ], + "Visualize two different series using the same x-axis. Note that both series can be visualized with a different chart type (e.g. 1 using bars and 1 using a line).": [ + "Visualiseer twee verschillende reeksen met behulp van dezelfde x-as. Let op dat beide reeksen kunnen worden gevisualiseerd met een ander grafiektype (bijv. 1 met staven en 1 met een lijn)." + ], + "Mixed Chart": [ + "Gemengde Grafiek" + ], + "Put the labels outside of the pie?": [ + "Plaats de labels buiten de cirkel?" + ], + "Label Line": [ + "Label Regel" + ], + "Draw line from Pie to label when labels outside?": [ + "Teken lijn van Taart naar label als labels buiten vallen?" + ], + "Show Total": [ + "Toon Totaal" + ], + "Whether to display the aggregate count": [ + "Of het geaggregeerde aantal moet worden weergegeven" + ], + "Pie shape": [ + "Cirkel vorm" + ], + "Outer Radius": [ + "Buitenste Radius" + ], + "Outer edge of Pie chart": [ + "Buitenste rand van cirkeldiagram" + ], + "Inner Radius": [ + "Inner Radius" + ], + "Inner radius of donut hole": [ + "Inner radius van donut gat" + ], + "The classic. Great for showing how much of a company each investor gets, what demographics follow your blog, or what portion of the budget goes to the military industrial complex.\n\n Pie charts can be difficult to interpret precisely. If clarity of relative proportion is important, consider using a bar or other chart type instead.": [ + "De klassieker. Ideaal om te laten zien hoeveel van een bedrijf elke belegger krijgt, welke demografie uw blog volgt, of welk deel van de begroting gaat naar het militaire industriële complex.\n\n Cirkeldiagrammen kunnen moeilijk te interpreteren zijn. Als de helderheid van relatieve verhoudingen belangrijk is, kun je in plaats daarvan een staaf- of ander grafiektype gebruiken." + ], + "Pie Chart": [ + "Cirkel diagram" + ], + "Total: %s": [ + "Totaal: %s" + ], + "The maximum value of metrics. It is an optional configuration": [ + "De maximale waarde van de metrieken. Het is een optionele configuratie" + ], + "Label position": [ + "Label positie" + ], + "Radar": [ + "Radar" + ], + "Customize Metrics": [ + "Aanpassen van Metrieken" + ], + "Further customize how to display each metric": [ + "Verder aanpassen hoe elke metriek weer te geven" + ], + "Circle radar shape": [ + "Cirkel radarvorm" + ], + "Radar render type, whether to display 'circle' shape.": [ + "Radar render type, of het de 'cirkel' vorm moet tonen." + ], + "Visualize a parallel set of metrics across multiple groups. Each group is visualized using its own line of points and each metric is represented as an edge in the chart.": [ + "Visualiseer een parallelle reeks metrieken over meerdere groepen. Elke groep wordt gevisualiseerd met behulp van zijn eigen lijn van punten en elk getal wordt weergegeven als een rand in de grafiek." + ], + "Radar Chart": [ + "Radar Diagram" + ], + "Primary Metric": [ + "Primaire Metriek" + ], + "The primary metric is used to define the arc segment sizes": [ + "De primaire metriek wordt gebruikt om de boogsegmentformaten te definiëren" + ], + "Secondary Metric": [ + "Secundaire Metriek" + ], + "[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": [ + "[optioneel] deze secundaire metriek wordt gebruikt om de kleur te definiëren als een verhouding ten opzichte van de primaire metriek. Indien weggelaten, is de kleur categorisch en gebaseerd op labels" + ], + "When only a primary metric is provided, a categorical color scale is used.": [ + "Wanneer alleen een primaire metriek wordt verstrekt, wordt een categorische kleurschaal gebruikt." + ], + "When a secondary metric is provided, a linear color scale is used.": [ + "Wanneer een secundaire metrieke wordt verstrekt, wordt een lineaire kleurschaal gebruikt." + ], + "Hierarchy": [ + "Hierarchy" + ], + "Sets the hierarchy levels of the chart. Each level is\n represented by one ring with the innermost circle as the top of the hierarchy.": [ + "Stelt de hiërarchie niveaus van de grafiek in. Elk niveau is\n vertegenwoordigd door een ring met de binnenste cirkel als bovenkant van de hiërarchie." + ], + "Uses circles to visualize the flow of data through different stages of a system. Hover over individual paths in the visualization to understand the stages a value took. Useful for multi-stage, multi-group visualizing funnels and pipelines.": [ + "Gebruikt cirkels om de doorstroming van gegevens door verschillende fasen van een systeem te visualiseren. Beweeg over individuele paden in de visualisatie om te begrijpen welke fasen een waarde heeft doorlopen. Handig voor het visualiseren van trechters en pijplijnen met meerdere fasen en groepen." + ], + "Sunburst Chart": [ + "Zonnestraal Grafiek" + ], + "Multi-Levels": [ + "Multi-Niveaus" + ], + "When using other than adaptive formatting, labels may overlap": [ + "Bij het gebruik van andere dan adaptieve opmaak kunnen labels overlappen" + ], + "Swiss army knife for visualizing data. Choose between step, line, scatter, and bar charts. This viz type has many customization options as well.": [ + "Het Zwitserse zakmes voor het visualiseren van gegevens. Kies tussen stap, lijn, verspreidings en staafdiagrammen. Dit viz type heeft ook veel aanpassingsmogelijkheden." + ], + "Generic Chart": [ + "Algemene Grafiek" + ], + "zoom area": [ + "zoom gebied" + ], + "restore zoom": [ + "herstel zoom" + ], + "Series Style": [ + "Series Stijl" + ], + "Area chart opacity": [ + "Vlakdiagram doorzichtigheid" + ], + "Opacity of Area Chart. Also applies to confidence band.": [ + "Ondoorzichtigheid van het vlakdiagram. Ook van toepassing op het betrouwbaarheidsinterval." + ], + "Marker Size": [ + "Marker Grootte" + ], + "Area charts are similar to line charts in that they represent variables with the same scale, but area charts stack the metrics on top of each other.": [ + "Vlakdiagrammen zijn vergelijkbaar met lijndiagrammen waarin ze variabelen met dezelfde schaal vertegenwoordigen, maar de grafieken stapelen de metrieken boven op elkaar." + ], + "Area Chart": [ + "Vlakdiagram" + ], + "Axis Title": [ + "As Titel" + ], + "AXIS TITLE MARGIN": [ + "AXIS TITEL MARGIN" + ], + "AXIS TITLE POSITION": [ + "AXIS TITEL POSITIE" + ], + "Axis Format": [ + "As Opmaak" + ], + "Logarithmic axis": [ + "Logaritmische as" + ], + "Draw split lines for minor axis ticks": [ + "Gesplitste lijnen tekenen voor kleine as tikken" + ], + "Truncate Axis": [ + "As Afkappen" + ], + "It’s not recommended to truncate axis in Bar chart.": [ + "Het wordt niet aanbevolen om de as in de staafdiagram te verkorten." + ], + "Axis Bounds": [ + "As Grenzen" + ], + "Bounds for the 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.": [ + "Grenzen voor de as. Wanneer leeg gelaten, worden de grenzen dynamisch gedefinieerd op basis van de min/max van de gegevens. Merk op dat deze functie alleen de as groter maakt. Het zal de grootte van de gegevens niet verkleinen." + ], + "Chart Orientation": [ + "Grafiek Oriëntatie" + ], + "Bar orientation": [ + "Staaf oriëntatie" + ], + "Vertical": [ + "Verticaal" + ], + "Horizontal": [ + "Horizontaal" + ], + "Orientation of bar chart": [ + "Oriëntatie van de staafdiagram" + ], + "Bar Charts are used to show metrics as a series of bars.": [ + "Staafdiagrammen worden gebruikt om metrieken als reeks staven weer te geven." + ], + "Bar Chart": [ + "Staafdiagram" + ], + "Line chart is used to visualize measurements taken over a given category. Line chart is a type of chart which displays information as a series of data points connected by straight line segments. It is a basic type of chart common in many fields.": [ + "Lijndiagram wordt gebruikt voor het visualiseren van metingen over een bepaalde categorie. Een lijndiagram is een type grafiek dat informatie weergeeft als een serie gegevenspunten verbonden door rechte lijnsegmenten. Het is een basissoort grafiek dat op veel gebieden gebruikelijk is." + ], + "Line Chart": [ + "Lijndiagram" + ], + "Scatter Plot has the horizontal axis in linear units, and the points are connected in order. It shows a statistical relationship between two variables.": [ + "Een spreidingsplot heeft de horizontale as in lineaire eenheden, en de punten zijn verbonden in volgorde. Het toont een statistische relatie tussen twee variabelen." + ], + "Scatter Plot": [ + "Spreidingsplot" + ], + "Smooth-line is a variation of the line chart. Without angles and hard edges, Smooth-line sometimes looks smarter and more professional.": [ + "Vloeiende lijn is een variatie van de lijndiagram. Zonder hoeken en harde randen ziet de vloeiende lijn soms slimmer en professioneler uit." + ], + "Step type": [ + "Stap type" + ], + "Start": [ + "Start" + ], + "Middle": [ + "Midden" + ], + "End": [ + "Einde" + ], + "Defines whether the step should appear at the beginning, middle or end between two data points": [ + "Definieert of de stap moet verschijnen in het begin, midden of einde tussen twee gegevenspunten" + ], + "Stepped-line graph (also called step chart) is a variation of line chart but with the line forming a series of steps between data points. A step chart can be useful when you want to show the changes that occur at irregular intervals.": [ + "Getrapte lijngrafiek (ook wel stappendiagram genoemd) is een variatie van lijndiagram, maar met de lijn vormen een reeks stappen tussen datapunten. Een stappendiagram kan handig zijn als je veranderingen wilt laten zien die met onregelmatige tussenpozen optreden." + ], + "Stepped Line": [ + "Getrapte Lijn" + ], + "Id": [ + "Id" + ], + "Name of the id column": [ + "Naam van de id kolom" + ], + "Parent": [ + "Bovenliggende" + ], + "Name of the column containing the id of the parent node": [ + "Naam van de kolom die het id van het bovenliggende knooppunt bevat" + ], + "Optional name of the data column.": [ + "Optionele naam van de gegevenskolom." + ], + "Root node id": [ + "Root knooppunt id" + ], + "Id of root node of the tree.": [ + "Id van root node van de boomstructuur." + ], + "Metric for node values": [ + "Metriek voor knooppuntwaarden" + ], + "Tree layout": [ + "Boomstructuur indeling" + ], + "Orthogonal": [ + "Orthogonaal" + ], + "Radial": [ + "Radial" + ], + "Layout type of tree": [ + "Indeling type van boomstructuur" + ], + "Tree orientation": [ + "Boomstructuur oriëntatie" + ], + "Left to Right": [ + "Van Links naar Rechts" + ], + "Right to Left": [ + "Rechts naar Links" + ], + "Top to Bottom": [ + "Van boven naar beneden" + ], + "Bottom to Top": [ + "Onderaan naar boven" + ], + "Orientation of tree": [ + "Oriëntatie van de structuur" + ], + "Node label position": [ + "Node label positie" + ], + "left": [ + "links" + ], + "top": [ + "bovenkant" + ], + "right": [ + "rechts" + ], + "bottom": [ + "onderkant" + ], + "Position of intermediate node label on tree": [ + "Positie van tussenliggende knooppuntlabel in de boom" + ], + "Child label position": [ + "Onderliggend label positie" + ], + "Position of child node label on tree": [ + "Positie van het label van het kindknooppunt op de boom" + ], + "Emphasis": [ + "Nadruk" + ], + "ancestor": [ + "voorouder" + ], + "descendant": [ + "afstammeling" + ], + "Which relatives to highlight on hover": [ + "Welke verwanten te markeren bij zweven" + ], + "Symbol": [ + "Symbool" + ], + "Empty circle": [ + "Lege cirkel" + ], + "Circle": [ + "Cirkel" + ], + "Rectangle": [ + "Rechthoek" + ], + "Triangle": [ + "Driehoek" + ], + "Diamond": [ + "Diamant" + ], + "Pin": [ + "Vastzetten" + ], + "Arrow": [ + "Pijl" + ], + "Symbol size": [ + "Symbool grootte" + ], + "Size of edge symbols": [ + "Grootte van randsymbolen" + ], + "Visualize multiple levels of hierarchy using a familiar tree-like structure.": [ + "Visualiseer meerdere niveaus van hiërarchie met behulp van een bekende boomstructuur." + ], + "Tree Chart": [ + "Boomdiagram" + ], + "Show Upper Labels": [ + "Toon Bovenste Labels" + ], + "Show labels when the node has children.": [ + "Toon labels wanneer knooppunt kinderen heeft." + ], + "Key": [ + "Sleutel" + ], + "Show hierarchical relationships of data, with the value represented by area, showing proportion and contribution to the whole.": [ + "Toon hiërarchische relaties van gegevens, met de waarde van gebied, en laat proporties en bijdragen zien in het geheel." + ], + "Treemap": [ + "Boomstructuur" + ], + "Total": [ + "Totaal" + ], + "Assist": [ + "Assisteren" + ], + "Increase": [ + "Verhoog" + ], + "Decrease": [ + "Verlaag" + ], + "Series colors": [ + "Series kleuren" + ], + "Breaks down the series by the category specified in this control.\n This can help viewers understand how each category affects the overall value.": [ + "Breekt de serie door de categorie gespecificeerd in dit besturingselement.\n Dit kan de kijkers helpen te begrijpen hoe elke categorie de algemene waarde beïnvloedt." + ], + "A waterfall chart is a form of data visualization that helps in understanding\n the cumulative effect of sequentially introduced positive or negative values.\n These intermediate values can either be time based or category based.": [ + "Een waterval grafiek is een vorm van gegevensweergave die helpt om\n het cumulatieve effect van opeenvolgende positieve of negatieve waarden te begrijpen.\n Deze intermediate waarden kunnen gebaseerd zijn op tijd of categorie." + ], + "Waterfall Chart": [ + "Waterval Diagram" + ], + "page_size.all": [ + "page_size.all" + ], + "Loading...": [ + "Bezig met laden…" + ], + "Write a handlebars template to render the data": [ + "Schrijf een handlebars sjabloon om de gegevens weer te geven" + ], + "Handlebars": [ + "Handlebars" + ], + "must have a value": [ + "moet een waarde hebben" + ], + "Handlebars Template": [ + "Handlebars Sjabloon" + ], + "A handlebars template that is applied to the data": [ + "Een handlebars sjabloon die wordt toegepast op de gegevens" + ], + "Include time": [ + "Includeer tijd" + ], + "Whether to include the time granularity as defined in the time section": [ + "Of de tijdgranulariteit moet worden opgenomen zoals gedefinieerd in de tijdsectie" + ], + "Percentage metrics": [ + "Percentage metrieken" + ], + "Select one or many metrics to display, that will be displayed in the percentages of total. Percentage metrics will be calculated only from data within the row limit. You can use an aggregation function on a column or write custom SQL to create a percentage metric.": [ + "Selecteer een of meerdere metrieken om weer te geven, die worden weergegeven in de percentages van het totaal. Percentage metrieken worden alleen berekend op basis van gegevens binnen de rij limiet. U kunt een aggregatie functie gebruiken op een kolom of aangepaste SQL schrijven om een percentage te maken." + ], + "Show totals": [ + "Toon totalen" + ], + "Show total aggregations of selected metrics. Note that row limit does not apply to the result.": [ + "Toon de totale aggregatie van de geselecteerde metrieken. Merk op dat de rijlimiet niet van toepassing is op het resultaat." + ], + "Ordering": [ + "Volgorde" + ], + "Order results by selected columns": [ + "Sorteer de resultaten op geselecteerde kolommen" + ], + "Sort descending": [ + "Sorteer aflopend" + ], + "Server pagination": [ + "Server paginatie" + ], + "Enable server side pagination of results (experimental feature)": [ + "Schakel server side paginering van resultaten in (experimentele functie)" + ], + "Server Page Length": [ + "Server Pagina Lengte" + ], + "Rows per page, 0 means no pagination": [ + "Rijen per pagina, 0 betekent geen paginering" + ], + "Query mode": [ + "Query modus" + ], + "Group By, Metrics or Percentage Metrics must have a value": [ + "Groeperen Op, Metrieken of Percentage Metrieken moeten een waarde hebben" + ], + "You need to configure HTML sanitization to use CSS": [ + "Je moet HTML sanitisering configureren om CSS te gebruiken" + ], + "CSS Styles": [ + "CSS Styles" + ], + "CSS applied to the chart": [ + "CSS toegepast op de grafiek" + ], + "Columns to group by on the columns": [ + "Kolommen om te groeperen op de kolommen" + ], + "Rows": [ + "Rijen" + ], + "Columns to group by on the rows": [ + "Kolommen om te groeperen op de rijen" + ], + "Apply metrics on": [ + "Metrieken toepassen op" + ], + "Use metrics as a top level group for columns or for rows": [ + "Gebruik metrieken als topniveau groep voor kolommen of rijen" + ], + "Cell limit": [ + "Cel limiet" + ], + "Limits the number of cells that get retrieved.": [ + "Beperkt het aantal cellen dat wordt opgehaald." + ], + "Metric used to define how the top series are sorted if a series or cell limit is present. If undefined reverts to the first metric (where appropriate).": [ + "Metriek wordt gebruikt om te bepalen hoe de top series worden gesorteerd als een serie of cel limiet aanwezig is. Indien ongedefinieerd wordt deze teruggekeerd naar de eerste metriek (indien gepast)." + ], + "Aggregation function": [ + "Aggregatie functie" + ], + "Count": [ + "Tel" + ], + "Count Unique Values": [ + "Unieke waarde tellen" + ], + "List Unique Values": [ + "Lijst Unieke Waarden" + ], + "Sum": [ + "Som" + ], + "Average": [ + "Gemiddeld" + ], + "Median": [ + "Mediaan" + ], + "Sample Variance": [ + "Steekproefvariantie" + ], + "Sample Standard Deviation": [ + "Steekproefstandaarddeviatie" + ], + "Minimum": [ + "Minimum" + ], + "Maximum": [ + "Maximum" + ], + "First": [ + "Eerste" + ], + "Last": [ + "Laatste" + ], + "Sum as Fraction of Total": [ + "Som als Fractie van Totaal" + ], + "Sum as Fraction of Rows": [ + "Som als Fractie van Rijen" + ], + "Sum as Fraction of Columns": [ + "Som als Fractie van Kolommen" + ], + "Count as Fraction of Total": [ + "Tel als fractie van het totaal" + ], + "Count as Fraction of Rows": [ + "Tel als fractie van de rijen" + ], + "Count as Fraction of Columns": [ + "Tel als fractie van de kolommen" + ], + "Aggregate function to apply when pivoting and computing the total rows and columns": [ + "Aggregate functie om toe te passen bij pivoting en berekening van de totale rijen en kolommen" + ], + "Show rows total": [ + "Toon rijen totaal" + ], + "Display row level total": [ + "Toon rijniveau totaal" + ], + "Show rows subtotal": [ + "Toon rijen subtotaal" + ], + "Display row level subtotal": [ + "Toon rijniveau subtotaal" + ], + "Show columns total": [ + "Toon kolommen totaal" + ], + "Display column level total": [ + "Toon kolomniveau totaal" + ], + "Show columns subtotal": [ + "Toon kolommen subtotaal" + ], + "Display column level subtotal": [ + "Toon kolomniveau subtotaal" + ], + "Transpose pivot": [ + "Pivot transponeren" + ], + "Swap rows and columns": [ + "Wissel rijen en kolommen" + ], + "Combine metrics": [ + "Combineer metrieken" + ], + "Display metrics side by side within each column, as opposed to each column being displayed side by side for each metric.": [ + "Toon metrieken naast elkaar binnen elke kolom, in tegenstelling tot de kolom die naast elkaar wordt weergegeven voor elke metriek." + ], + "D3 time format for datetime columns": [ + "D3 tijdnotatie voor datumtijd kolommen" + ], + "Sort rows by": [ + "Sorteer rijen op" + ], + "key a-z": [ + "sleutel a-z" + ], + "key z-a": [ + "sleutel z-a" + ], + "value ascending": [ + "waarde oplopend" + ], + "value descending": [ + "waarde aflopend" + ], + "Change order of rows.": [ + "Verander de volgorde van rijen." + ], + "Available sorting modes:": [ + "Beschikbare sorteer modi:" + ], + "By key: use row names as sorting key": [ + "Op sleutel: gebruik rij namen als sorteersleutel" + ], + "By value: use metric values as sorting key": [ + "Op waarde: gebruik metriek waarden als sorteersleutel" + ], + "Sort columns by": [ + "Sorteer kolommen op" + ], + "Change order of columns.": [ + "Wijzig volgorde van kolommen." + ], + "By key: use column names as sorting key": [ + "Op sleutel: gebruik kolomnamen als sorteersleutel" + ], + "Rows subtotal position": [ + "Rijen subtotaal positie" + ], + "Position of row level subtotal": [ + "Positie van rij niveau subtotaal" + ], + "Columns subtotal position": [ + "Kolommen subtotaal positie" + ], + "Position of column level subtotal": [ + "Positie van kolomniveau subtotaal" + ], + "Conditional formatting": [ + "Voorwaardelijke opmaak" + ], + "Apply conditional color formatting to metrics": [ + "Pas voorwaardelijke kleuropmaak toe op metrieken" + ], + "Used to summarize a set of data by grouping together multiple statistics along two axes. Examples: Sales numbers by region and month, tasks by status and assignee, active users by age and location. Not the most visually stunning visualization, but highly informative and versatile.": [ + "Wordt gebruikt om een set gegevens samen te vatten door meerdere statistieken te groeperen over twee assen. Voorbeelden: Verkoop nummers per regio en per maand, taken per status en taakontvanger, actieve gebruikers per leeftijd en per locatie. Niet de meest visueel verbluffende visualisatie, maar zeer informatief en veelzijdig." + ], + "Pivot Table": [ + "Draaitabel" + ], + "metric": [ + "metriek" + ], + "Total (%(aggregatorName)s)": [ + "Totaal (%(aggregatorName)s)" + ], + "Unknown input format": [ + "Onbekend invoerformaat" + ], + "search.num_records": [ + "" + ], + "page_size.show": [ + "page_size.show" + ], + "page_size.entries": [ + "page_size.entries" + ], + "No matching records found": [ + "Geen overeenkomende records gevonden" + ], + "Shift + Click to sort by multiple columns": [ + "Shift + Klik om te sorteren op meerdere kolommen" + ], + "Totals": [ + "Totalen" + ], + "Timestamp format": [ + "Tijdsstempel opmaak" + ], + "Page length": [ + "Pagina lengte" + ], + "Search box": [ + "Zoek vak" + ], + "Whether to include a client-side search box": [ + "Of er een zoekvak aan de clientzijde moet worden opgenomen" + ], + "Cell bars": [ + "Cel balken" + ], + "Whether to display a bar chart background in table columns": [ + "Of er een staafdiagram achtergrond moet worden weergegeven in tabelkolommen" + ], + "Align +/-": [ + "Uitlijnen +/-" + ], + "Whether to align background charts with both positive and negative values at 0": [ + "Of achtergrondgrafieken moeten worden uitgelijnd met zowel positieve als negatieve waarden op 0" + ], + "Color +/-": [ + "Kleur +/-" + ], + "Whether to colorize numeric values by whether they are positive or negative": [ + "Of numerieke waarden moeten worden gekleurd op basis van of ze positief of negatief zijn" + ], + "Allow columns to be rearranged": [ + "Kolommen kunnen worden gerangschikt" + ], + "Allow end user to drag-and-drop column headers to rearrange them. Note their changes won't persist for the next time they open the chart.": [ + "Laat de eindgebruiker de kolomkoppen slepen om ze te herschikken. Merk op dat hun wijzigingen niet blijven bestaan voor de volgende keer dat ze de grafiek openen." + ], + "Render columns in HTML format": [ + "" + ], + "Render data in HTML format if applicable.": [ + "" + ], + "Customize columns": [ + "Kolommen aanpassen" + ], + "Further customize how to display each column": [ + "Verder aanpassen hoe elke kolom te tonen" + ], + "Apply conditional color formatting to numeric columns": [ + "Pas voorwaardelijke kleuropmaak toe op numerieke kolommen" + ], + "Classic row-by-column spreadsheet like view of a dataset. Use tables to showcase a view into the underlying data or to show aggregated metrics.": [ + "Klassieke rij-voor-kolom werkblad zoals weergave van een dataset. Gebruik tabellen om een weergave in de onderliggende gegevens te tonen of geaggregeerde metrieken te tonen." + ], + "Show": [ + "Weergeven" + ], + "entries": [ + "items" + ], + "Word Cloud": [ + "Woord Cloud" + ], + "Minimum Font Size": [ + "Minimale Lettergrootte" + ], + "Font size for the smallest value in the list": [ + "Lettergrootte voor de kleinste waarde in de lijst" + ], + "Maximum Font Size": [ + "Maximale Lettergrootte" + ], + "Font size for the biggest value in the list": [ + "Lettergrootte voor de grootste waarde in de lijst" + ], + "Word Rotation": [ + "Woord Rotatie" + ], + "random": [ + "willekeurig" + ], + "square": [ + "vierkant" + ], + "Rotation to apply to words in the cloud": [ + "Rotatie om toe te passen op woorden in de cloud" + ], + "Visualizes the words in a column that appear the most often. Bigger font corresponds to higher frequency.": [ + "Visualiseert de woorden in een kolom die het meest wordt weergegeven. Groter lettertype komt overeen met een hogere frequentie." + ], + "N/A": [ + "N/B" + ], + "offline": [ + "offline" + ], + "failed": [ + "mislukt" + ], + "pending": [ + "in behandeling" + ], + "fetching": [ + "ophalen" + ], + "running": [ + "bezig" + ], + "stopped": [ + "gestopt" + ], + "success": [ + "succes" + ], + "The query couldn't be loaded": [ + "De query kon niet geladen worden" + ], + "Your query has been scheduled. To see details of your query, navigate to Saved queries": [ + "Uw zoekopdracht is ingepland. Om de details van uw zoekopdracht te zien, navigeert u naar Opgeslagen zoekopdrachten" + ], + "Your query could not be scheduled": [ + "Uw vraag kon niet worden gepland" + ], + "Failed at retrieving results": [ + "Fout bij het ophalen van resultaten" + ], + "Unknown error": [ + "Onbekende fout" + ], + "Query was stopped.": [ + "Query is gestopt." + ], + "Failed at stopping query. %s": [ + "Opschorten van query mislukt. %s" + ], + "Unable to migrate table schema state to backend. Superset will retry later. Please contact your administrator if this problem persists.": [ + "Kan de status van het tabelschema niet migreren naar de backend. Superset zal het later opnieuw proberen. Neem contact op met uw beheerder als dit probleem zich blijft voordoen." + ], + "Unable to migrate query state to backend. Superset will retry later. Please contact your administrator if this problem persists.": [ + "Kan de query status niet migreren naar de backend. Superset zal het later opnieuw proberen. Neem contact op met uw beheerder als dit probleem zich blijft voordoen." + ], + "Unable to migrate query editor state to backend. Superset will retry later. Please contact your administrator if this problem persists.": [ + "Het is niet mogelijk om de status van de query-editor te migreren naar de backend. Superset zal later opnieuw proberen. Neem contact op met uw beheerder als dit probleem aanhoudt." + ], + "Unable to add a new tab to the backend. Please contact your administrator.": [ + "Kan geen nieuw tabblad toevoegen aan de backend. Neem contact op met uw beheerder." + ], + "-- Note: Unless you save your query, these tabs will NOT persist if you clear your cookies or change browsers.\n\n": [ + "-- Let op: Tenzij u uw query opslaat, zullen deze tabbladen NIET bewaard blijven als u uw cookies leegt of van browser verandert.\n\n" + ], + "Copy of %s": [ + "Kopie van %s" + ], + "An error occurred while setting the active tab. Please contact your administrator.": [ + "Er is een fout opgetreden bij het instellen van het actieve tabblad. Neem contact op met uw beheerder." + ], + "An error occurred while fetching tab state": [ + "Er is een fout opgetreden tijdens het ophalen van de tabbladstatus" + ], + "An error occurred while removing tab. Please contact your administrator.": [ + "Er is een fout opgetreden tijdens het verwijderen van het tabblad. Neem contact op met de beheerder." + ], + "An error occurred while removing query. Please contact your administrator.": [ + "Er is een fout opgetreden tijdens het verwijderen van de query. Neem contact op met de beheerder." + ], + "Your query could not be saved": [ + "Uw zoekopdracht kon niet worden opgeslagen" + ], + "Your query was not properly saved": [ + "Uw query is niet correct opgeslagen" + ], + "Your query was saved": [ + "Uw zoekopdracht werd opgeslagen" + ], + "Your query was updated": [ + "Uw zoekopdracht werd bijgewerkt" + ], + "Your query could not be updated": [ + "Uw zoekopdracht kon niet worden bijgewerkt" + ], + "An error occurred while storing your query in the backend. To avoid losing your changes, please save your query using the \"Save Query\" button.": [ + "Er is een fout opgetreden tijdens het opslaan van uw zoekopdracht in de backend. Sla uw query op met de knop \"Opslaan\" om te voorkomen dat u uw wijzigingen verliest." + ], + "An error occurred while fetching table metadata. Please contact your administrator.": [ + "Er is een fout opgetreden tijdens het ophalen van de metagegevens van de tabel. Neem contact op met uw beheerder." + ], + "An error occurred while expanding the table schema. Please contact your administrator.": [ + "Er is een fout opgetreden tijdens het uitbreiden van het tabelschema. Neem contact op met uw beheerder." + ], + "An error occurred while collapsing the table schema. Please contact your administrator.": [ + "Er is een fout opgetreden tijdens het samenvouwen van het tabelschema. Neem contact op met uw beheerder." + ], + "An error occurred while removing the table schema. Please contact your administrator.": [ + "Er is een fout opgetreden tijdens het verwijderen van het tabelschema. Neem contact op met uw beheerder." + ], + "Shared query": [ + "Gedeelde zoekopdracht" + ], + "The datasource couldn't be loaded": [ + "De datasource kon niet geladen worden" + ], + "An error occurred while creating the data source": [ + "Er is een fout opgetreden bij het aanmaken van de gegevensbron" + ], + "An error occurred while fetching function names.": [ + "Er is een fout opgetreden bij het ophalen van functienamen." + ], + "SQL Lab uses your browser's local storage to store queries and results.\nCurrently, you are using %(currentUsage)s KB out of %(maxStorage)d KB storage space.\nTo keep SQL Lab from crashing, please delete some query tabs.\nYou can re-access these queries by using the Save feature before you delete the tab.\nNote that you will need to close other SQL Lab windows before you do this.": [ + "SQL Lab gebruikt de lokale opslag van je browser om query's en resultaten op te slaan.\nMomenteel gebruikt u een opslagruimte %(currentUsage)s KB van %(maxStorage)d KB.\nOm te voorkomen dat SQL Lab crasht, verwijder een aantal query tabbladen.\nU kunt deze zoekopdrachten heropenen met behulp van de 'Opslaan' functie voordat u het tabblad verwijdert.\nMerk op dat u andere SQL Lab vensters moet sluiten voordat u dit doet." + ], + "Primary key": [ + "Primaire sleutel" + ], + "Foreign key": [ + "Foreign key" + ], + "Index": [ + "Index" + ], + "Estimate selected query cost": [ + "Kostenraming van de geselecteerde zoekopdracht" + ], + "Estimate cost": [ + "Kostenraming" + ], + "Cost estimate": [ + "Kostenraming" + ], + "Creating a data source and creating a new tab": [ + "Een gegevensbron maken en een nieuw tabblad maken" + ], + "Explore the result set in the data exploration view": [ + "Verken de resultaten in de gegevensverkenningsweergave" + ], + "explore": [ + "verkennen" + ], + "Create Chart": [ + "Grafiek aanmaken" + ], + "Source SQL": [ + "Bron SQL" + ], + "Executed SQL": [ + "Uitgevoerde SQL" + ], + "Run query": [ + "Zoekopdracht uitvoeren" + ], + "Run current query": [ + "Voer huidige query uit" + ], + "Stop query": [ + "Query stoppen" + ], + "New tab": [ + "Nieuw tabblad" + ], + "Previous Line": [ + "Vorige regel" + ], + "Format SQL": [ + "Formatteer SQL" + ], + "Find": [ + "Zoeken" + ], + "Keyboard shortcuts": [ + "Toetsenbord snelkoppelingen" + ], + "Run a query to display query history": [ + "Voer een query uit om de querygeschiedenis weer te geven" + ], + "LIMIT": [ + "LIMIT" + ], + "State": [ + "Status" + ], + "Started": [ + "Gestart" + ], + "Duration": [ + "Duur" + ], + "Results": [ + "Resultaten" + ], + "Actions": [ + "Acties" + ], + "Success": [ + "Succes" + ], + "Failed": [ + "Mislukt" + ], + "Running": [ + "Bezig" + ], + "Fetching": [ + "Ophalen" + ], + "Offline": [ + "Offline" + ], + "Scheduled": [ + "Gepland" + ], + "Unknown Status": [ + "Onbekende Status" + ], + "Edit": [ + "Bewerk" + ], + "View": [ + "Bekijken" + ], + "Data preview": [ + "Data voorbeeld" + ], + "Overwrite text in the editor with a query on this table": [ + "Overschrijf tekst in de editor met een query op deze tabel" + ], + "Run query in a new tab": [ + "Query uitvoeren in een nieuw tabblad" + ], + "Remove query from log": [ + "Verwijder de query uit de log" + ], + "Unable to create chart without a query id.": [ + "Kan de grafiek niet aanmaken zonder query id." + ], + "Save & Explore": [ + "Opslaan en verkennen" + ], + "Overwrite & Explore": [ + "Overschrijven en verkennen" + ], + "Save this query as a virtual dataset to continue exploring": [ + "Deze query opslaan als virtueel dataset om verder te blijven verkennen" + ], + "Download to CSV": [ + "Download naar CSV" + ], + "Copy to Clipboard": [ + "Kopieer naar Klembord" + ], + "Filter results": [ + "Filter resultaten" + ], + "The number of results displayed is limited to %(rows)d by the configuration DISPLAY_MAX_ROW. Please add additional limits/filters or download to csv to see more rows up to the %(limit)d limit.": [ + "Het aantal weergegeven resultaten is beperkt tot %(rows)d door de configuratie DISPLAY_MAX_ROW. Voeg extra limieten/filters of download naar csv om meer rijen van %(limit)d te zien." ], "The number of results displayed is limited to %(rows)d. Please add additional limits/filters, download to csv, or contact an admin to see more rows up to the %(limit)d limit.": [ + "Het aantal weergegeven resultaten is beperkt tot %(rows)d. Voeg extra limieten/filters, download naar csv, of neem contact op met een beheerder om meer rijen te zien tot de %(limit)d limiet." + ], + "The number of rows displayed is limited to %(rows)d by the query": [ + "Het aantal getoonde rijen is beperkt tot %(rows)d door de query" + ], + "The number of rows displayed is limited to %(rows)d by the limit dropdown.": [ + "Het aantal rijen dat wordt weergegeven is beperkt tot %(rows)d door de keuzelijst limiet." + ], + "The number of rows displayed is limited to %(rows)d by the query and limit dropdown.": [ + "Het aantal weergegeven rijen is beperkt tot %(rows)d door de query en de keuzelijst limiet." + ], + "%(rows)d rows returned": [ + "%(rows)d rijen teruggegeven" + ], + "The number of rows displayed is limited to %(rows)d by the dropdown.": [ + "Het aantal getoonde rijen is beperkt tot %(rows)d door de keuzelijst." + ], + "Track job": [ + "Job volgen" + ], + "See query details": [ + "Bekijk query details" + ], + "Query was stopped": [ + "Query is gestopt" + ], + "Database error": [ + "Database fout" + ], + "was created": [ + "werd gecreëerd" + ], + "Query in a new tab": [ + "Zoekopdracht in een nieuw tabblad" + ], + "The query returned no data": [ + "De query leverde geen gegevens op" + ], + "Fetch data preview": [ + "Gegevens ophalen preview" + ], + "Refetch results": [ + "Resultaten opnieuw ophalen" + ], + "Stop": [ + "Stop" + ], + "Run selection": [ + "Selectie uitvoeren" + ], + "Run": [ + "Uitvoeren" + ], + "Stop running (Ctrl + x)": [ + "Stop de uitvoering (Ctrl + x)" + ], + "Stop running (Ctrl + e)": [ + "Stop de uitvoering (Ctrl + e)" + ], + "Run query (Ctrl + Return)": [ + "Query uitvoeren (Ctrl + Return)" + ], + "Save": [ + "Opslaan" + ], + "Untitled Dataset": [ + "Naamloze Dataset" + ], + "An error occurred saving dataset": [ + "Er is een fout opgetreden bij het opslaan van dataset" + ], + "Save or Overwrite Dataset": [ + "Dataset opslaan of overschrijven" + ], + "Back": [ + "Terug" + ], + "Save as new": [ + "Opslaan als nieuw" + ], + "Overwrite existing": [ + "Overschrijf bestaande" + ], + "Select or type dataset name": [ + "Selecteer of typ dataset naam" + ], + "Existing dataset": [ + "Bestaande dataset" + ], + "Are you sure you want to overwrite this dataset?": [ + "Weet je zeker dat je deze data wilt overschrijven?" + ], + "Undefined": [ + "Ongedefinieerd" + ], + "Save dataset": [ + "Dataset opslaan" + ], + "Save as": [ + "Opslaan als" + ], + "Save query": [ + "Zoekopdracht opslaan" + ], + "Cancel": [ + "Annuleer" + ], + "Update": [ + "Bijwerken" + ], + "Label for your query": [ + "Label voor uw zoekopdracht" + ], + "Write a description for your query": [ + "Schrijf een omschrijving voor uw query" + ], + "Submit": [ + "Bevestigen" + ], + "Schedule query": [ + "Query planning" + ], + "Schedule": [ + "Planning" + ], + "There was an error with your request": [ + "Er is een fout opgetreden in uw verzoek." + ], + "Please save the query to enable sharing": [ + "Sla de query op om te kunnen delen" + ], + "Copy query link to your clipboard": [ + "Kopieer query link naar uw klembord" + ], + "Save the query to enable this feature": [ + "Sla de query op om deze functie in te schakelen" + ], + "Copy link": [ + "Kopieer link" + ], + "Run a query to display results": [ + "Voer een query uit om resultaten weer te geven" + ], + "No stored results found, you need to re-run your query": [ + "Geen opgeslagen resultaten gevonden, u moet uw query opnieuw uitvoeren" + ], + "Query history": [ + "Geschiedenis van de opzoeking" + ], + "Preview: `%s`": [ + "Voorbeeld: `%s`" + ], + "Schedule the query periodically": [ + "Plan de zoekopdracht periodiek" + ], + "You must run the query successfully first": [ + "U moet de query eerst succesvol uitvoeren" + ], + "Render HTML": [ + "" + ], + "Autocomplete": [ + "Automatisch aanvullen" + ], + "CREATE TABLE AS": [ + "CREATE TABLE AS" + ], + "CREATE VIEW AS": [ + "CREATE VIEW AS" + ], + "Estimate the cost before running a query": [ + "Kostenraming voordat een query wordt uitgevoerd" + ], + "Specify name to CREATE VIEW AS schema in: public": [ + "Specificeer de naam van CREATE VIEW AS schema in: public" + ], + "Specify name to CREATE TABLE AS schema in: public": [ + "Specificeer de naam van CREATE TABLE AS schema in: public" + ], + "Select a database to write a query": [ + "Selecteer een database om een query te schrijven" + ], + "Choose one of the available databases from the panel on the left.": [ + "Kies een van de beschikbare databases uit het paneel aan de linkerkant." + ], + "Create": [ + "Maak" + ], + "Collapse table preview": [ + "Tabel voorbeeld inklappen" + ], + "Expand table preview": [ + "Tabel voorbeeld uitklappen" + ], + "Reset state": [ + "Reset status" + ], + "Enter a new title for the tab": [ + "Voer een nieuwe titel in voor het tabblad" + ], + "Close tab": [ + "Tabblad sluiten" + ], + "Rename tab": [ + "Tabblad hernoemen" + ], + "Expand tool bar": [ + "Werkbalk uitbreiden" + ], + "Hide tool bar": [ + "Verberg werkbalk" + ], + "Close all other tabs": [ + "Sluit alle andere tabbladen" + ], + "Duplicate tab": [ + "Tabblad Dupliceren" + ], + "Add a new tab": [ + "Een nieuw tabblad toevoegen" + ], + "New tab (Ctrl + q)": [ + "Nieuw tabblad (Ctrl + q)" + ], + "New tab (Ctrl + t)": [ + "Nieuw tabblad (Ctrl + t)" + ], + "Add a new tab to create SQL Query": [ + "Voeg een nieuw tabblad toe om een SQL Query aan te maken" + ], + "An error occurred while fetching table metadata": [ + "Er is een fout opgetreden tijdens het ophalen van de metagegevens van de tabel" + ], + "Copy partition query to clipboard": [ + "Kopieer partitie query naar klembord" + ], + "latest partition:": [ + "laatste partitie:" + ], + "Keys for table": [ + "Sleutels voor tabel" + ], + "View keys & indexes (%s)": [ + "Bekijk sleutels & indexen (%s)" + ], + "Original table column order": [ + "Originele tabel kolom volgorde" + ], + "Sort columns alphabetically": [ + "Sorteer kolommen alfabetisch" + ], + "Copy SELECT statement to the clipboard": [ + "Kopieer SELECT-instructie naar het klembord" + ], + "Show CREATE VIEW statement": [ + "Toon CREATE VIEW statement" + ], + "CREATE VIEW statement": [ + "CREATE VIEW statement" + ], + "Remove table preview": [ + "Verwijder tabel preview" + ], + "Assign a set of parameters as": [ + "Een set parameters toewijzen als" + ], + "below (example:": [ + "hieronder (voorbeeld:" + ], + "), and they become available in your SQL (example:": [ + "), en ze zijn beschikbaar in uw SQL (voorbeeld:" + ], + "by using": [ + "door te gebruiken" + ], + "Jinja templating": [ + "Jinja templating" + ], + "syntax.": [ + "syntax." + ], + "Edit template parameters": [ + "Bewerk template parameters" + ], + "Parameters ": [ + "Parameters " + ], + "Invalid JSON": [ + "Ongeldige JSON" + ], + "Untitled query": [ + "Naamloze zoekopdracht" + ], + "%s%s": [ + "%s%s" + ], + "Control": [ + "Controle" + ], + "Before": [ + "Voor" + ], + "After": [ + "Na" + ], + "Click to see difference": [ + "Klik om het verschil te zien" + ], + "Altered": [ + "Gewijzigd" + ], + "Chart changes": [ + "Veranderingen in de grafiek" + ], + "Modified by: %s": [ + "Gewijzigd door: %s" + ], + "Loaded data cached": [ + "Geladen gegevens in de cache" + ], + "Loaded from cache": [ + "Geladen uit de cache" + ], + "Click to force-refresh": [ + "Klik om te herladen" + ], + "Cached": [ + "Gebufferd" + ], + "Add required control values to preview chart": [ + "Vereiste controlewaarden toevoegen aan de grafiek voorbeeld" + ], + "Your chart is ready to go!": [ + "Je grafiek is klaar om te beginnen!" + ], + "Click on \"Create chart\" button in the control panel on the left to preview a visualization or": [ + "Klik op de knop \"Maak grafiek\" in het controlepaneel links om een visualisatie te bekijken of" + ], + "click here": [ + "klik hier" + ], + "No results were returned for this query": [ + "Er zijn geen resultaten gevonden voor deze zoekopdracht" + ], + "Make sure that the controls are configured properly and the datasource contains data for the selected time range": [ + "Zorg ervoor dat de besturingselementen correct zijn geconfigureerd en dat de gegevensbron gegevens bevat voor het geselecteerde tijdsbereik" + ], + "An error occurred while loading the SQL": [ + "Er is een fout opgetreden bij het laden van de SQL" + ], + "Sorry, an error occurred": [ + "Sorry, er is een fout opgetreden" + ], + "Updating chart was stopped": [ + "Bijwerken van grafiek is gestopt" + ], + "An error occurred while rendering the visualization: %s": [ + "Er is een fout opgetreden bij het renderen van de visualisatie: %s" + ], + "Network error.": [ + "Netwerk fout." + ], + "Cross-filter will be applied to all of the charts that use this dataset.": [ + "Cross-filter zal worden toegepast op alle grafieken die deze data gebruiken." + ], + "You can also just click on the chart to apply cross-filter.": [ + "Je kunt ook gewoon op de grafiek klikken om cross-filter toe te passen." + ], + "Cross-filtering is not enabled for this dashboard.": [ + "Cross-filtering is niet ingeschakeld voor dit dashboard." + ], + "This visualization type does not support cross-filtering.": [ + "Dit visualisatietype ondersteunt geen cross-filtering." + ], + "You can't apply cross-filter on this data point.": [ + "U kunt geen cross-filter toepassen op dit datapunt." + ], + "Remove cross-filter": [ + "Verwijder cross-filter" + ], + "Add cross-filter": [ + "Cross-filter toevoegen" + ], + "Failed to load dimensions for drill by": [ + "Fout bij het laden van dimensies voor filteren op" + ], + "Drill by is not yet supported for this chart type": [ + "Filteren op is nog niet ondersteund voor dit type grafiek" + ], + "Drill by is not available for this data point": [ + "Filteren op is niet beschikbaar voor dit datapunt" + ], + "Drill by": [ + "Filteren op" + ], + "Search columns": [ + "Zoek kolommen" + ], + "No columns found": [ + "Geen kolommen gevonden" + ], + "Failed to generate chart edit URL": [ + "Kan geen URL voor het bewerken van grafieken genereren" + ], + "You do not have sufficient permissions to edit the chart": [ + "U heeft niet voldoende rechten om de grafiek te bewerken" + ], + "Edit chart": [ + "Bewerk grafiek" + ], + "Close": [ + "Sluit" + ], + "Failed to load chart data.": [ + "Laden van grafiekgegevens mislukt." + ], + "Drill by: %s": [ + "Filteren op: %s" + ], + "There was an error loading the chart data": [ + "Er is een fout opgetreden bij het laden van de grafiekgegevens" + ], + "Results %s": [ + "Resultaten %s" + ], + "Drill to detail": [ + "Doorklikken naar detail" + ], + "Drill to detail by": [ + "Doorklikken naar detail per" + ], + "Drill to detail is disabled for this database. Change the database settings to enable it.": [ + "" + ], + "Drill to detail is disabled because this chart does not group data by dimension value.": [ + "Doorklikken naar detail is uitgeschakeld omdat deze grafiek geen data groepeert naar dimensiewaarde." + ], + "Right-click on a dimension value to drill to detail by that value.": [ + "Rechtsklik op een dimensiewaarde om door te klikken met detail met die waarde." + ], + "Drill to detail by value is not yet supported for this chart type.": [ + "Doorklikken naar detail per waarde wordt nog niet ondersteund voor dit type grafiek." + ], + "Drill to detail: %s": [ + "Doorklikken naar detail: %s" + ], + "Formatting": [ + "Opmaken" + ], + "Formatted value": [ + "Opgemaakte waarde" + ], + "No rows were returned for this dataset": [ + "Er zijn geen rijen teruggegeven voor deze dataset" + ], + "Reload": [ + "Herlaad" + ], + "Copy": [ + "Kopiëren" + ], + "Copy to clipboard": [ + "Kopieer naar klembord" + ], + "Copied to clipboard!": [ + "Gekopieerd naar het klembord!" + ], + "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!": [ + "Sorry, uw browser ondersteunt het kopiëren niet. Gebruik Ctrl / Cmd + C!" + ], + "every": [ + "elke" + ], + "every month": [ + "elke maand" + ], + "every day of the month": [ + "elke dag van de maand" + ], + "day of the month": [ + "dag van de maand" + ], + "every day of the week": [ + "elke dag van de week" + ], + "day of the week": [ + "dag van de week" + ], + "every hour": [ + "elk uur" + ], + "every minute": [ + "elke minuut" + ], + "minute": [ + "minuut" + ], + "reboot": [ + "herstart" + ], + "Every": [ + "Elke" + ], + "in": [ + "in" + ], + "on": [ + "op" + ], + "or": [ + "of" + ], + "at": [ + "op" + ], + ":": [ + ":" + ], + "minute(s)": [ + "minu(u)t(en)" + ], + "Invalid cron expression": [ + "Ongeldige cron expressie" + ], + "Clear": [ + "Verwijder" + ], + "Sunday": [ + "Zondag" + ], + "Monday": [ + "Maandag" + ], + "Tuesday": [ + "Dinsdag" + ], + "Wednesday": [ + "Woensdag" + ], + "Thursday": [ + "Donderdag" + ], + "Friday": [ + "Vrijdag" + ], + "Saturday": [ + "Zaterdag" + ], + "January": [ + "Januari" + ], + "February": [ + "Februari" + ], + "March": [ + "Maart" + ], + "April": [ + "April" + ], + "May": [ + "Mei" + ], + "June": [ + "Juni" + ], + "July": [ + "Juli" + ], + "August": [ + "Augustus" + ], + "September": [ + "September" + ], + "October": [ + "Oktober" + ], + "November": [ + "November" + ], + "December": [ + "December" + ], + "SUN": [ + "ZO" + ], + "MON": [ + "MA" + ], + "TUE": [ + "DI" + ], + "WED": [ + "WO" + ], + "THU": [ + "DO" + ], + "FRI": [ + "VR" + ], + "SAT": [ + "ZA" + ], + "JAN": [ + "JAN" + ], + "FEB": [ + "FEB" + ], + "MAR": [ + "MAA" + ], + "APR": [ + "APR" + ], + "MAY": [ + "MEI" + ], + "JUN": [ + "JUN" + ], + "JUL": [ + "JUL" + ], + "AUG": [ + "AUG" + ], + "SEP": [ + "SEP" + ], + "OCT": [ + "OKT" + ], + "NOV": [ + "NOV" + ], + "DEC": [ + "DEC" + ], + "There was an error loading the schemas": [ + "Er is een fout opgetreden bij het laden van de schema's" + ], + "Select database or type to search databases": [ + "Selecteer database of type om databases te zoeken" + ], + "Force refresh schema list": [ + "Forceer vernieuwen schema lijst" + ], + "Select schema or type to search schemas": [ + "Selecteer schema of type om schema's te zoeken" + ], + "No compatible schema found": [ + "Geen compatibel schema gevonden" + ], + "Warning! Changing the dataset may break the chart if the metadata does not exist.": [ + "Waarschuwing! Het veranderen van de dataset kan de grafiek breken als de metadata niet bestaat." + ], + "Changing the dataset may break the chart if the chart relies on columns or metadata that does not exist in the target dataset": [ + "Het wijzigen van de dataset kan de grafiek breken indien de grafiek steunt op kolommen of metadata die niet bestaan in de doel-dataset" + ], + "dataset": [ + "dataset" + ], + "Successfully changed dataset!": [ + "Gegevens succesvol gewijzigd!" + ], + "Connection": [ + "Verbinding" + ], + "Swap dataset": [ + "Wissel dataset" + ], + "Proceed": [ + "Doorgaan" + ], + "Warning!": [ + "Waarschuwing!" + ], + "Search / Filter": [ + "Zoek / Filter" + ], + "Add item": [ + "Voeg item toe" + ], + "STRING": [ + "STRING" + ], + "NUMERIC": [ + "NUMERIC" + ], + "DATETIME": [ + "DATUMTIJD" + ], + "BOOLEAN": [ + "BOOLEAN" + ], + "Physical (table or view)": [ + "Fysiek (tabel of overzicht)" + ], + "Virtual (SQL)": [ + "Virtueel (SQL)" + ], + "Data type": [ + "Data type" + ], + "Advanced data type": [ + "Geavanceerd gegevenstype" + ], + "Advanced Data type": [ + "Geavanceerde Data type" + ], + "Datetime format": [ + "Datumtijd opmaak" + ], + "The pattern of timestamp format. For strings use ": [ + "Het patroon van de tijdstempel opmaak. Voor strings gebruik je " + ], + "Python datetime string pattern": [ + "Python datetime string patroon" + ], + " expression which needs to adhere to the ": [ + " uitdrukking die moet voldoen aan de " + ], + "ISO 8601": [ + "ISO 8601" + ], + " standard to ensure that the lexicographical ordering\n coincides with the chronological ordering. If the\n timestamp format does not adhere to the ISO 8601 standard\n you will need to define an expression and type for\n transforming the string into a date or timestamp. Note\n currently time zones are not supported. If time is stored\n in epoch format, put `epoch_s` or `epoch_ms`. If no pattern\n is specified we fall back to using the optional defaults on a per\n database/column name level via the extra parameter.": [ + " standaard om ervoor te zorgen dat de lexicografische volgorde\n samenvalt met de chronologische volgorde. Als het tijdstempel\n niet overeenkomt met de ISO 8601 standaard\n dan moet u een expressie definiëren en typen voor\n om de tekenreeks om te zetten in een datum of tijdstempel. Note\n currently time zones are not supported Als de tijd wordt opgeslagen\n in epoch formaat, zet `epoch_s` of `epoch_ms`. Als er geen patroon\n is opgegeven, vallen we terug naar de optionele standaardwaarden op een\n database/kolom naam niveau via de extra parameter." + ], + "Certified By": [ + "Gecertificeerd door" + ], + "Person or group that has certified this metric": [ + "Persoon of groep die deze metriek heeft gecertificeerd" + ], + "Certified by": [ + "Gecertificeerd door" + ], + "Certification details": [ + "Details certificering" + ], + "Details of the certification": [ + "Details van de certificering" + ], + "Is dimension": [ + "Is dimensie" + ], + "Default datetime": [ + "Standaard datum/tijd" + ], + "Is filterable": [ + "Kan gefilterd worden" + ], + "": [ + "" + ], + "Select owners": [ + "Selecteer eigenaren" + ], + "Modified columns: %s": [ + "Gewijzigde kolommen: %s" + ], + "Removed columns: %s": [ + "Verwijderde kolommen: %s" + ], + "New columns added: %s": [ + "Nieuwe kolommen toegevoegd: %s" + ], + "Metadata has been synced": [ + "Metadata zijn gesynchroniseerd" + ], + "An error has occurred": [ + "Er is een fout opgetreden" + ], + "Column name [%s] is duplicated": [ + "Kolomnaam [%s] is gedupliceerd" + ], + "Metric name [%s] is duplicated": [ + "Metriek naam [%s] is dubbel" + ], + "Calculated column [%s] requires an expression": [ + "Berekende kolom [%s] vereist een uitdrukking" + ], + "Invalid currency code in saved metrics": [ + "Ongeldige valuta code in opgeslagen metriek" + ], + "Basic": [ + "Berekende kolom [%s] vereist een uitdrukking" + ], + "Default URL": [ + "Standaard URL" + ], + "Default URL to redirect to when accessing from the dataset list page": [ + "Standaard URL om naar door te verwijzen bij toegang vanaf de dataset lijst pagina" + ], + "Autocomplete filters": [ + "Filters automatisch aanvullen" + ], + "Whether to populate autocomplete filters options": [ + "Geef aan of de autoaanvulfilteropties moeten worden ingevuld" + ], + "Autocomplete query predicate": [ + "Autocomplete query predicaat" + ], + "When using \"Autocomplete filters\", this can be used to improve performance of the query fetching the values. Use this option to apply a predicate (WHERE clause) to the query selecting the distinct values from the table. Typically the intent would be to limit the scan by applying a relative time filter on a partitioned or indexed time-related field.": [ + "Wanneer u \"Autocomplete filters\" gebruikt, kan dit worden gebruikt om de prestaties van de query te verbeteren die deze waarden ophaalt. Gebruik deze optie om een voorspelling toe te passen (WHERE clausule) om de query te selecteren uit de verschillende waarden van de tabel. Meestal zou het doel zijn om het scannen te beperken door een relatieve tijdfilter toe te passen op een gepartitioneerd of geïndexeerd tijdgebonden veld." + ], + "Extra data to specify table metadata. Currently supports metadata of the format: `{ \"certification\": { \"certified_by\": \"Data Platform Team\", \"details\": \"This table is the source of truth.\" }, \"warning_markdown\": \"This is a warning.\" }`.": [ + "Extra gegevens om tabelmetagegevens te specificeren. Ondersteunt momenteel metadata van het formaat: `{ \"certification\": { \"certified_by\": \"Data Platform Team\", \"details\": \"Deze tabel is de bron van de waarheid. }, \"warning_markdown\": \"Dit is een waarschuwing\" }`." + ], + "Cache timeout": [ + "Buffer time-out" + ], + "The duration of time in seconds before the cache is invalidated. Set to -1 to bypass the cache.": [ + "De tijdsduur in seconden voordat de cache ongeldig is. Stel in op -1 om de cache te omzeilen." + ], + "Hours offset": [ + "Uur offset" + ], + "The number of hours, negative or positive, to shift the time column. This can be used to move UTC time to local time.": [ + "Het aantal uren, negatief of positief, om de tijd kolom te verschuiven. Dit kan worden gebruikt om de UTC tijd naar lokale tijd te verplaatsen." + ], + "Normalize column names": [ + "Normaliseer kolomnamen" + ], + "Always filter main datetime column": [ + "Filter altijd de hoofdkolom datumtijd" + ], + "When the secondary temporal columns are filtered, apply the same filter to the main datetime column.": [ + "Wanneer de secundaire tijdelijke kolommen worden gefilterd, pas hetzelfde filter toe op de belangrijkste datumtijd kolom." + ], + "": [ + "" + ], + "": [ + "" + ], + "Click the lock to make changes.": [ + "Klik op het slotje om wijzigingen aan te brengen." + ], + "Click the lock to prevent further changes.": [ + "Klik op het slotje om verdere wijzigingen te voorkomen." + ], + "virtual": [ + "virtueel" + ], + "Dataset name": [ + "Dataset naam" + ], + "When specifying SQL, the datasource acts as a view. Superset will use this statement as a subquery while grouping and filtering on the generated parent queries.": [ + "Bij het specificeren van SQL, fungeert de gegevensbron als een weergave. Superset zal deze verklaring gebruiken als een subquery tijdens het groeperen en filteren op de gegenereerde bovenliggende queries." + ], + "Physical": [ + "Fysiek" + ], + "The pointer to a physical table (or view). Keep in mind that the chart is associated to this Superset logical table, and this logical table points the physical table referenced here.": [ + "De aanwijzer naar een fysieke tabel (of weergave). Houd er rekening mee dat de grafiek gekoppeld is aan deze Superset logische tabel en deze logische tabel wijst hier op de fysieke tabel waarnaar wordt verwezen." + ], + "Metric Key": [ + "Metriek Sleutel" + ], + "This field is used as a unique identifier to attach the metric to charts. It is also used as the alias in the SQL query.": [ + "Dit veld wordt gebruikt als unieke id voor het koppelen van de metrieken aan de grafieken. Het wordt ook gebruikt als de alias in de SQL query." + ], + "D3 format": [ + "D3 formaat" + ], + "Metric currency": [ + "Metriek valuta" + ], + "Select or type currency symbol": [ + "Selecteer of typ valuta symbool" + ], + "Warning": [ + "Waarschuwing" + ], + "Optional warning about use of this metric": [ + "Optionele waarschuwing voor het gebruik van deze metriek" + ], + "": [ + "" + ], + "Be careful.": [ + "Pas op." + ], + "Changing these settings will affect all charts using this dataset, including charts owned by other people.": [ + "Het wijzigen van deze instellingen zal van invloed zijn op alle grafieken die deze data gebruiken, inclusief grafieken die eigendom zijn van andere mensen." + ], + "Sync columns from source": [ + "Synchroniseer kolommen van bron" + ], + "Calculated columns": [ + "Berekende kolommen" + ], + "This field is used as a unique identifier to attach the calculated dimension to charts. It is also used as the alias in the SQL query.": [ + "Dit veld wordt gebruikt als een uniek id om de berekende dimensie aan grafieken toe te voegen. Het wordt ook gebruikt als de alias in de SQL query." + ], + "": [ + "" + ], + "Settings": [ + "Instellingen" + ], + "The dataset has been saved": [ + "De dataset is opgeslagen" + ], + "Error saving dataset": [ + "Fout bij opslaan dataset" + ], + "The dataset configuration exposed here\n affects all the charts using this dataset.\n Be mindful that changing settings\n here may affect other charts\n in undesirable ways.": [ + "De dataset configuratie die hier wordt getoond\n heeft invloed op alle grafieken die deze dataset gebruiken.\n Wees je ervan bewust dat het veranderen van instellingen\n hier invloed kan hebben op andere grafieken\n op ongewenste manieren." + ], + "Are you sure you want to save and apply changes?": [ + "Weet u zeker dat u de wijzigingen wilt opslaan en toepassen?" + ], + "Confirm save": [ + "Opslaan bevestigen" + ], + "OK": [ + "OK" + ], + "Edit Dataset ": [ + "Bewerk Dataset " + ], + "Use legacy datasource editor": [ + "Gebruik de verouderde gegevensbron editor" + ], + "This dataset is managed externally, and can't be edited in Superset": [ + "Deze dataset wordt extern beheerd en kan niet worden bewerkt in Superset" + ], + "DELETE": [ + "VERWIJDER" + ], + "delete": [ + "verwijder" + ], + "Type \"%s\" to confirm": [ + "Type “%s” om te bevestigen" + ], + "More": [ + "Meer" + ], + "Click to edit": [ + "Klik om te bewerken" + ], + "You don't have the rights to alter this title.": [ + "Je hebt niet de rechten om deze titel te veranderen." + ], + "No databases match your search": [ + "Er komen geen databases overeen met uw zoekopdracht" + ], + "There are no databases available": [ + "Er zijn geen databases beschikbaar" + ], + "Manage your databases": [ + "Beheer je databases" + ], + "here": [ + "hier" + ], + "Unexpected error": [ + "Onverwachte fout" + ], + "This may be triggered by:": [ + "Dit kan veroorzaakt worden door:" + ], + "%(message)s\nThis may be triggered by: \n%(issues)s": [ + "%(message)s\nDit kan worden geactiveerd door: \n%(issues)s" + ], + "%s Error": [ + "%s Fout" + ], + "Missing dataset": [ + "Ontbrekende dataset" + ], + "See more": [ + "Zie meer" + ], + "See less": [ + "Zie minder" + ], + "Copy message": [ + "Kopieer bericht" + ], + "Details": [ + "Details" + ], + "Authorization needed": [ + "" + ], + "Did you mean:": [ + "Bedoelde je:" + ], + "Parameter error": [ + "Parameter fout" + ], + "%(subtitle)s\nThis may be triggered by:\n %(issue)s": [ + "%(subtitle)s\nDit kan geactiveerd worden door:\n %(issue)s" + ], + "Timeout error": [ + "Timeout fout" + ], + "Click to favorite/unfavorite": [ + "Klik om voorkeur aan te geven/voorkeur te verwijderen" + ], + "Cell content": [ + "Cel inhoud" + ], + "Hide password.": [ + "Verberg wachtwoord." + ], + "Show password.": [ + "Toon wachtwoord." + ], + "Database driver for importing maybe not installed. Visit the Superset documentation page for installation instructions: ": [ + "Misschien is er geen Database driver voor het importeren geïnstalleerd. Bezoek de Superset documentatiepagina voor installatie instructies: " + ], + "OVERWRITE": [ + "OVERSCHRIJVEN" + ], + "Database passwords": [ + "Database wachtwoorden" + ], + "%s PASSWORD": [ + "%s WACHTWOORD" + ], + "%s SSH TUNNEL PASSWORD": [ + "%s SSH TUNNEL WACHTWOORD" + ], + "%s SSH TUNNEL PRIVATE KEY": [ + "%s SSH PRIVATE KEY" + ], + "%s SSH TUNNEL PRIVATE KEY PASSWORD": [ + "%s SSH PRIVATE KEY WACHTWOORD" + ], + "Overwrite": [ + "Overschrijven" + ], + "Import": [ + "Importeer" + ], + "Import %s": [ + "Importeer %s" + ], + "Select file": [ + "Selecteer bestand" + ], + "Last Updated %s": [ + "Laatst bijgewerkt %s" + ], + "Sort": [ + "Sorteren" + ], + "+ %s more": [ + "+ %s meer" + ], + "%s Selected": [ + "%s Geselecteerd" + ], + "Deselect all": [ + "Alles deselecteren" + ], + "Add Tag": [ + "Label toevoegen" + ], + "No results match your filter criteria": [ + "Geen resultaten gevonden met uw filtercriteria" + ], + "Try different criteria to display results.": [ + "Probeer andere criteria om resultaten weer te geven." + ], + "clear all filters": [ + "wis alle filters" + ], + "No Data": [ + "Geen Data" + ], + "%s-%s of %s": [ + "%s-%s van %s" + ], + "Start date": [ + "Start datum" + ], + "End date": [ + "Eind datum" + ], + "Type a value": [ + "Voer een waarde in" + ], + "Filter": [ + "Filter" + ], + "Select or type a value": [ + "Selecteer of typ een waarde" + ], + "Last modified": [ + "Laatst gewijzigd" + ], + "Modified by": [ + "Gewijzigd door" + ], + "Created by": [ + "Gecreëerd door" + ], + "Created on": [ + "Gemaakt op" + ], + "Menu actions trigger": [ + "Menu acties trigger" + ], + "Select ...": [ + "Selecteer …" + ], + "Filter menu": [ + "Filter menu" + ], + "Reset": [ + "Reset" + ], + "No filters": [ + "Geen filters" + ], + "Select all items": [ + "Selecteer alle items" + ], + "Search in filters": [ + "Zoek in filters" + ], + "Select current page": [ + "Selecteer huidige pagina" + ], + "Invert current page": [ + "Huidige pagina omkeren" + ], + "Clear all data": [ + "Wis alle gegevens" + ], + "Select all data": [ + "Selecteer alle gegevens" + ], + "Expand row": [ + "Rij uitklappen" + ], + "Collapse row": [ + "Rij inklappen" + ], + "Click to sort descending": [ + "Klik om aflopend te sorteren" + ], + "Click to sort ascending": [ + "Klik om oplopend te sorteren" + ], + "Click to cancel sorting": [ + "Klik om sortering te annuleren" + ], + "List updated": [ + "Lijst bijgewerkt" + ], + "There was an error loading the tables": [ + "Er is een fout opgetreden bij het laden van de tabellen" + ], + "See table schema": [ + "Zie tabel schema" + ], + "Select table or type to search tables": [ + "Selecteer tabel of type om tabellen te zoeken" + ], + "Force refresh table list": [ + "Forceer vernieuwen tabel lijst" + ], + "You do not have permission to read tags": [ + "Je hebt geen toestemming om tags te lezen" + ], + "Timezone selector": [ + "Tijdzonekiezer" + ], + "Failed to save cross-filter scoping": [ + "Opslaan van cross-filter scope mislukt" + ], + "There is not enough space for this component. Try decreasing its width, or increasing the destination width.": [ + "Er is niet genoeg ruimte voor dit component. Probeer de breedte ervan te verlagen, of vergroot de doelbreedte." + ], + "Can not move top level tab into nested tabs": [ + "Kan bovenste tabblad niet in geneste tabbladen verplaatsen" + ], + "This chart has been moved to a different filter scope.": [ + "Deze grafiek is verplaatst naar een ander filterbereik." + ], + "There was an issue fetching the favorite status of this dashboard.": [ + "Er was een probleem met het ophalen van de voorkeur status van dit dashboard." + ], + "There was an issue favoriting this dashboard.": [ + "Er was een probleem met het promoten van dit dashboard." + ], + "This dashboard is now published": [ + "Dit dashboard is nu gepubliceerd" + ], + "This dashboard is now hidden": [ + "Dit dashboard is nu verborgen" + ], + "You do not have permissions to edit this dashboard.": [ + "U hebt geen rechten om dit dashboard te bewerken." + ], + "[ untitled dashboard ]": [ + "[ naamloos dashboard ]" + ], + "This dashboard was saved successfully.": [ + "Dit dashboard is succesvol opgeslagen." + ], + "Sorry, an unknown error occurred": [ + "Sorry, er is een onbekende fout opgetreden" + ], + "Sorry, there was an error saving this dashboard: %s": [ + "Sorry, er is een fout opgetreden bij het opslaan van dit dashboard: %s" + ], + "You do not have permission to edit this dashboard": [ + "U hebt geen toestemming om dit dashboard te bewerken" + ], + "Please confirm the overwrite values.": [ + "Bevestig de overschrijving waarden." + ], + "You have used all %(historyLength)s undo slots and will not be able to fully undo subsequent actions. You may save your current state to reset the history.": [ + "Je hebt alle %(historyLength)s \"maak ongedaan\" slots gebruikt en kan de volgende acties niet ongedaan maken. Je kunt je huidige status opslaan om de geschiedenis te resetten." + ], + "Could not fetch all saved charts": [ + "Kon niet alle opgeslagen grafieken ophalen" + ], + "Sorry there was an error fetching saved charts: ": [ + "Sorry er was een fout bij het ophalen van de opgeslagen grafieken: " + ], + "Any color palette selected here will override the colors applied to this dashboard's individual charts": [ + "Elk kleurenpalet dat hier wordt geselecteerd zal de kleuren overschrijven die worden toegepast op de individuele grafieken van dit dashboard" + ], + "You have unsaved changes.": [ + "Je hebt niet opgeslagen wijzigingen." + ], + "Drag and drop components and charts to the dashboard": [ + "Versleep de componenten en grafieken naar het dashboard" + ], + "You can create a new chart or use existing ones from the panel on the right": [ + "Je kunt een nieuwe grafiek maken of bestaande vanuit het paneel aan de rechterkant gebruiken" + ], + "Create a new chart": [ + "Maak een nieuwe grafiek" + ], + "Drag and drop components to this tab": [ + "Versleep onderdelen naar dit tabblad" + ], + "There are no components added to this tab": [ + "Er zijn geen componenten toegevoegd aan dit tabblad" + ], + "You can add the components in the edit mode.": [ + "Je kunt de componenten toevoegen in de bewerkingsmodus." + ], + "Edit the dashboard": [ + "Bewerk het dashboard" + ], + "There is no chart definition associated with this component, could it have been deleted?": [ + "Er is geen grafiek definitie gekoppeld aan dit onderdeel, zou het verwijderd kunnen zijn?" + ], + "Delete this container and save to remove this message.": [ + "Verwijder deze container en sla op om dit bericht te verwijderen." + ], + "Refresh interval saved": [ + "Vernieuwing interval opgeslagen" + ], + "Refresh interval": [ + "Interval vernieuwen" + ], + "Refresh frequency": [ + "Frequentie vernieuwen" + ], + "Are you sure you want to proceed?": [ + "Weet je zeker dat je door wilt gaan?" + ], + "Save for this session": [ + "Opslaan voor deze sessie" + ], + "You must pick a name for the new dashboard": [ + "U moet een naam kiezen voor het nieuwe dashboard" + ], + "Save dashboard": [ + "Dashboard opslaan" + ], + "Overwrite Dashboard [%s]": [ + "Dashboard overschrijven [%s]" + ], + "Save as:": [ + "Opslaan als:" + ], + "[dashboard name]": [ + "[dashboard naam]" + ], + "also copy (duplicate) charts": [ + "kopieer ook (duplicate) grafieken" + ], + "viz type": [ + "viz type" + ], + "recent": [ + "recent" + ], + "Create new chart": [ + "Maak een nieuwe grafiek" + ], + "Filter your charts": [ + "Filter je grafieken" + ], + "Filter charts": [ + "Filter grafieken" + ], + "Sort by %s": [ + "Sorteer op %s" + ], + "Show only my charts": [ + "Toon alleen mijn grafieken" + ], + "You can choose to display all charts that you have access to or only the ones you own.\n Your filter selection will be saved and remain active until you choose to change it.": [ + "Je kunt kiezen om alle grafieken weer te geven waar je toegang toe hebt, of alleen degene waar je eigenaar van bent.\n Je filterselectie zal worden opgeslagen en actief blijven totdat je ervoor kiest om deze te wijzigen." + ], + "Added": [ + "Toegevoegd" + ], + "Unknown type": [ + "Onbekend type" + ], + "Viz type": [ + "Viz type" + ], + "Dataset": [ + "Dataset" + ], + "Superset chart": [ + "Superset grafiek" + ], + "Check out this chart in dashboard:": [ + "Kijk naar deze grafiek in het dashboard:" + ], + "Layout elements": [ + "Indelingselementen" + ], + "An error occurred while fetching available CSS templates": [ + "Er is een fout opgetreden tijdens het ophalen van beschikbare CSS templates" + ], + "Load a CSS template": [ + "Laad een CSS sjabloon" + ], + "Live CSS editor": [ + "Live CSS editor" + ], + "Collapse tab content": [ + "Tabbladinhoud inklappen" + ], + "There are no charts added to this dashboard": [ + "Er zijn geen grafieken toegevoegd aan dit dashboard" + ], + "Go to the edit mode to configure the dashboard and add charts": [ + "Ga naar de bewerkingsmodus om het dashboard te configureren en grafieken toe te voegen" + ], + "Changes saved.": [ + "Wijzigingen opgeslagen." + ], + "Disable embedding?": [ + "Embedding uitschakelen?" + ], + "This will remove your current embed configuration.": [ + "Hiermee verwijdert u uw huidige embed configuratie." + ], + "Embedding deactivated.": [ + "Embedden gedeactiveerd." + ], + "Sorry, something went wrong. Embedding could not be deactivated.": [ + "Sorry, er ging iets mis. Embedding kon niet worden gedeactiveerd." + ], + "Sorry, something went wrong. Please try again.": [ + "Er is iets fout gegaan. Probeer het opnieuw." + ], + "This dashboard is ready to embed. In your application, pass the following id to the SDK:": [ + "Dit dashboard staat klaar om te embedden. Geef de volgende id door aan de SDK:" + ], + "Configure this dashboard to embed it into an external web application.": [ + "Configureer dit dashboard om het in een externe webapplicatie in te sluiten." + ], + "For further instructions, consult the": [ + "Voor verdere instructies, raadpleeg de" + ], + "Superset Embedded SDK documentation.": [ + "Superset ingesloten SDK documentatie." + ], + "Allowed Domains (comma separated)": [ + "Toegestane domeinen (komma gescheiden)" + ], + "A list of domain names that can embed this dashboard. Leaving this field empty will allow embedding from any domain.": [ + "Een lijst met domeinnamen die dit dashboard kunnen embedden. Als dit veld leeg blijft, kan de embedding van elk domein worden toegestaan." + ], + "Deactivate": [ + "Deactiveren" + ], + "Save changes": [ + "Wijzigingen opslaan" + ], + "Enable embedding": [ + "Embedding inschakelen" + ], + "Embed": [ + "Insluiten" + ], + "Applied cross-filters (%d)": [ + "Toegepaste cross-filters (%d)" + ], + "Applied filters (%d)": [ + "Toegepaste filters (%d)" + ], + "This dashboard is currently auto refreshing; the next auto refresh will be in %s.": [ + "Dit dashboard wordt momenteel automatisch vernieuwd; de volgende automatische vernieuwing zal in %s zijn." + ], + "Your dashboard is too large. Please reduce its size before saving it.": [ + "Uw dashboard is te groot. Beperk de grootte voordat u het opslaat." + ], + "Add the name of the dashboard": [ + "Naam van het dashboard toevoegen" + ], + "Dashboard title": [ + "Dashboard titel" + ], + "Undo the action": [ + "Actie ongedaan maken" + ], + "Redo the action": [ + "De actie opnieuw uitvoeren" + ], + "Discard": [ + "Negeren" + ], + "Edit dashboard": [ + "Bewerk dashboard" + ], + "Refreshing charts": [ + "Verversen grafieken" + ], + "Superset dashboard": [ + "Superset dashboard" + ], + "Check out this dashboard: ": [ + "Kijk naar dit dashboard: " + ], + "Refresh dashboard": [ + "Vernieuw dashboard" + ], + "Exit fullscreen": [ + "Volledig scherm afsluiten" + ], + "Enter fullscreen": [ + "Open volledig scherm" + ], + "Edit properties": [ + "Eigenschappen bewerken" + ], + "Edit CSS": [ + "Bewerk CSS" + ], + "Download": [ + "Download" + ], + "Export to PDF": [ + "Exporteer naar PDF" + ], + "Download as Image": [ + "Download als Afbeelding" + ], + "Share": [ + "Deel" + ], + "Copy permalink to clipboard": [ + "Kopieer permalink naar klembord" + ], + "Share permalink by email": [ + "Deel permalink via e-mail" + ], + "Embed dashboard": [ + "Dashboard embedden" + ], + "Manage email report": [ + "E-mailrapport beheren" + ], + "Set filter mapping": [ + "Filter toewijzing instellen" + ], + "Set auto-refresh interval": [ + "Stel auto-refresh in" + ], + "Confirm overwrite": [ + "Overschrijven bevestigen" + ], + "Scroll down to the bottom to enable overwriting changes. ": [ + "Scroll naar beneden om overschrijvingen mogelijk te maken. " + ], + "Yes, overwrite changes": [ + "Ja, wijzigingen overschrijven" + ], + "Are you sure you intend to overwrite the following values?": [ + "Weet u zeker dat u de volgende waarden wilt overschrijven?" + ], + "Last Updated %s by %s": [ + "Laatst bijgewerkt %s door %s" + ], + "Apply": [ + "Toepassen" + ], + "Error": [ + "Fout" + ], + "A valid color scheme is required": [ + "Een geldig kleurenschema is vereist" + ], + "JSON metadata is invalid!": [ + "JSON metadata is ongeldig!" + ], + "Dashboard properties updated": [ + "Dashboard eigenschappen bijgewerkt" + ], + "The dashboard has been saved": [ + "Het dashboard is opgeslagen" + ], + "Access": [ + "Toegang" + ], + "Owners is a list of users who can alter the dashboard. Searchable by name or username.": [ + "Eigenaren zijn een lijst met gebruikers die het dashboard kunnen veranderen. Doorzoekbaar op naam of gebruikersnaam." + ], + "Colors": [ + "Kleuren" + ], + "Roles is a list which defines access to the dashboard. Granting a role access to a dashboard will bypass dataset level checks. If no roles are defined, regular access permissions apply.": [ + "Rollen is een lijst die toegang tot het dashboard definieert. Het verlenen van een rol toegang tot een dashboard zal controle op het dataset niveau omzeilen. Als geen rollen zijn gedefinieerd, zijn reguliere toegangsrechten van toepassing." + ], + "Dashboard properties": [ + "Dashboard eigenschappen" + ], + "This dashboard is managed externally, and can't be edited in Superset": [ + "Dit dashboard wordt extern beheerd en kan niet worden bewerkt in Superset" + ], + "Basic information": [ + "Basis informatie" + ], + "URL slug": [ + "URL slag" + ], + "A readable URL for your dashboard": [ + "Een leesbare URL voor uw dashboard" + ], + "Certification": [ + "Certificering" + ], + "Person or group that has certified this dashboard.": [ + "Persoon of groep die dit dashboard gecertificeerd heeft." + ], + "Any additional detail to show in the certification tooltip.": [ + "Alle aanvullende details in de certificatietooltip te tonen." + ], + "A list of tags that have been applied to this chart.": [ + "Een lijst met tags die zijn toegepast op deze grafiek." + ], + "JSON metadata": [ + "JSON metadata" + ], + "Please DO NOT overwrite the \"filter_scopes\" key.": [ + "Gelieve NIET de \"filter_scopes\" sleutel overschrijven." + ], + "Use \"%(menuName)s\" menu instead.": [ + "Gebruik in plaats daarvan \"%(menuName)s\" menu." + ], + "This dashboard is not published, it will not show up in the list of dashboards. Click here to publish this dashboard.": [ + "Dit dashboard is niet gepubliceerd, het verschijnt niet in de lijst van dashboards. Klik hier om dit dashboard te publiceren." + ], + "This dashboard is not published which means it will not show up in the list of dashboards. Favorite it to see it there or access it by using the URL directly.": [ + "Dit dashboard is niet gepubliceerd, wat betekent dat het niet zal verschijnen in de lijst van dashboards. Favoriet het om het daar te zien of er toegang toe te krijgen door de URL direct te gebruiken." + ], + "This dashboard is published. Click to make it a draft.": [ + "Dit dashboard is gepubliceerd. Klik op om er een ontwerp van te maken." + ], + "Draft": [ + "Concept" + ], + "Annotation layers are still loading.": [ + "Aantekening lagen worden nog steeds geladen." + ], + "One ore more annotation layers failed loading.": [ + "Aantekening lagen worden nog steeds geladen." + ], + "This chart applies cross-filters to charts whose datasets contain columns with the same name.": [ + "Deze grafiek past kruisfilters toe op grafieken waarvan de datasets kolommen met dezelfde naam bevatten." + ], + "Data refreshed": [ + "Gegevens verversen" + ], + "Cached %s": [ + "Gebufferd %s" + ], + "Fetched %s": [ + "Opgehaald %s" + ], + "Query %s: %s": [ + "Query %s: %s" + ], + "Force refresh": [ + "Vernieuwen forceren" + ], + "Hide chart description": [ + "Grafiek beschrijving verbergen" + ], + "Show chart description": [ + "Toon grafiekbeschrijving" + ], + "Cross-filtering scoping": [ + "Cross-filtering scoping" + ], + "View query": [ + "Bekijk zoekopdracht" + ], + "View as table": [ + "Bekijk als tabel" + ], + "Chart Data: %s": [ + "Grafiekgegevens: %s" + ], + "Share chart by email": [ + "Deel grafiek per e-mail" + ], + "Check out this chart: ": [ + "Bekijk deze grafiek: " + ], + "Export to .CSV": [ + "Exporteer naar .CSV" + ], + "Export to Excel": [ + "Exporteer naar Excel" + ], + "Export to full .CSV": [ + "Exporteer naar volledige .CSV" + ], + "Export to full Excel": [ + "Exporteren naar volledige Excel" + ], + "Download as image": [ + "Download als afbeelding" + ], + "Something went wrong.": [ + "Er ging iets mis." + ], + "Search...": [ + "Zoek…" + ], + "No filter is selected.": [ + "Er is geen filter geselecteerd." + ], + "Editing 1 filter:": [ + "Bewerk 1 filter:" + ], + "Batch editing %d filters:": [ + "Batchbewerking %d filters:" + ], + "Configure filter scopes": [ + "Filter scopes configureren" + ], + "There are no filters in this dashboard.": [ + "Er zijn geen filters in dit dashboard." + ], + "Expand all": [ + "Alles uitklappen" + ], + "Collapse all": [ + "Alles inklappen" + ], + "An error occurred while opening Explore": [ + "Er is een fout opgetreden tijdens het openen van Verkennen" + ], + "Empty column": [ + "Lege kolom" + ], + "This markdown component has an error.": [ + "Deze markdown component heeft een fout." + ], + "This markdown component has an error. Please revert your recent changes.": [ + "Deze markdown component heeft een fout. Gelieve uw recente wijzigingen terug te draaien." + ], + "Empty row": [ + "Lege rij" + ], + "You can": [ + "U kunt" + ], + "create a new chart": [ + "maak een nieuwe grafiek" + ], + "or use existing ones from the panel on the right": [ + "of gebruik bestaande vanuit het paneel aan de rechterkant" + ], + "You can add the components in the": [ + "U kunt de componenten toevoegen aan de" + ], + "edit mode": [ + "bewerk modus" + ], + "Delete dashboard tab?": [ + "Dashboard tabblad verwijderen?" + ], + "Deleting a tab will remove all content within it. You may still reverse this action with the": [ + "Het verwijderen van een tabblad zal alle inhoud erin verwijderen. U kunt deze actie nog steeds ongedaan maken met de" + ], + "undo": [ + "ongedaan maken" + ], + "button (cmd + z) until you save your changes.": [ + "knop (cmd + z) totdat je jouw wijzigingen opslaat." + ], + "CANCEL": [ + "ANNULEER" + ], + "Divider": [ + "Verdeler" + ], + "Header": [ + "Koptekst" + ], + "Text": [ + "Tekst" + ], + "Tabs": [ + "Tabs" + ], + "background": [ + "achtergrond" + ], + "Preview": [ + "Voorvertoning" + ], + "Sorry, something went wrong. Try again later.": [ + "Sorry, er ging iets mis. Probeer het later nog eens." + ], + "Unknown value": [ + "Onbekende waarde" + ], + "Add/Edit Filters": [ + "Filters toevoegen/bewerken" + ], + "No filters are currently added to this dashboard.": [ + "Er zijn momenteel geen filters toegevoegd aan dit dashboard." + ], + "No global filters are currently added": [ + "Geen globale filters zijn momenteel toegevoegd" + ], + "Click on \"+Add/Edit Filters\" button to create new dashboard filters": [ + "Klik op de \"+Toevoegen/Bewerken van Filters\" knop om nieuwe dashboard filters te maken" + ], + "Apply filters": [ + "Filters toepassen" + ], + "Clear all": [ + "Wis alles" + ], + "Locate the chart": [ + "Zoek de grafiek" + ], + "Cross-filters": [ + "Cross-filters" + ], + "Add custom scoping": [ + "Aangepaste scoping toevoegen" + ], + "All charts/global scoping": [ + "Alle grafieken/globale scoping" + ], + "Select chart": [ + "Selecteer grafiek" + ], + "Cross-filtering is not enabled in this dashboard": [ + "Cross-filtering is niet ingeschakeld in dit dashboard" + ], + "Select the charts to which you want to apply cross-filters when interacting with this chart. You can select \"All charts\" to apply filters to all charts that use the same dataset or contain the same column name in the dashboard.": [ + "Selecteer de grafieken waaraan je cross-filters wilt toepassen bij interactie met deze grafiek. Je kunt \"Alle grafieken\" selecteren om filters toe te passen op alle grafieken die dezelfde dataset gebruiken of dezelfde kolomnaam op het dashboard bevatten." + ], + "Select the charts to which you want to apply cross-filters in this dashboard. Deselecting a chart will exclude it from being filtered when applying cross-filters from any chart on the dashboard. You can select \"All charts\" to apply cross-filters to all charts that use the same dataset or contain the same column name in the dashboard.": [ + "Selecteer de grafieken waaraan je cross-filters wilt toepassen in dit dashboard. Het deselecteren van een grafiek zal ervoor zorgen dat het niet gefilterd wordt bij het toepassen van cross-filters in elke grafiek op het dashboard. Je kunt \"Alle grafieken\" selecteren om cross-filters toe te passen op alle grafieken die dezelfde dataset gebruiken of dezelfde kolomnaam op het dashboard bevatten." + ], + "All charts": [ + "Alle grafieken" + ], + "Enable cross-filtering": [ + "Schakel cross-filtering in" + ], + "Orientation of filter bar": [ + "Oriëntatie van de filterbalk" + ], + "Vertical (Left)": [ + "Verticaal (Links)" + ], + "Horizontal (Top)": [ + "Horizontaal (Boven)" + ], + "More filters": [ + "Meer filters" + ], + "No applied filters": [ + "Geen toegepaste filters" + ], + "Applied filters: %s": [ + "Toegepaste filters %s" + ], + "Cannot load filter": [ + "Kan filter niet laden" + ], + "Filters out of scope (%d)": [ + "Filters buiten bereik (%d)" + ], + "Dependent on": [ + "Afhankelijk van" + ], + "Filter only displays values relevant to selections made in other filters.": [ + "Het filter toont alleen de waarden die relevant zijn voor de selecties gemaakt in andere filters." + ], + "Scope": [ + "Scope" + ], + "Filter type": [ + "Filter type" + ], + "Title is required": [ + "Titel is verplicht" + ], + "(Removed)": [ + "(Verwijderd)" + ], + "Undo?": [ + "Ongedaan maken?" + ], + "Add filters and dividers": [ + "Filters en scheidingen toevoegen" + ], + "[untitled]": [ + "[ongetiteld]" + ], + "Cyclic dependency detected": [ + "Cyclische afhankelijkheid gedetecteerd" + ], + "Add and edit filters": [ + "Filters toevoegen en bewerken" + ], + "Column select": [ + "Kolom selecteren" + ], + "Select a column": [ + "Selecteer een kolom" + ], + "No compatible columns found": [ + "Geen compatibele kolommen gevonden" + ], + "No compatible datasets found": [ + "Geen compatibele datasets gevonden" + ], + "Select a dataset": [ + "Selecteer een dataset" + ], + "Value is required": [ + "Waarde is vereist" + ], + "(deleted or invalid type)": [ + "(verwijderd of ongeldig type)" + ], + "Limit type": [ + "Limiet type" + ], + "No available filters.": [ + "Geen beschikbare filters." + ], + "Add filter": [ + "Filter toevoegen" + ], + "Values are dependent on other filters": [ + "Waarden zijn afhankelijk van andere filters" + ], + "Values selected in other filters will affect the filter options to only show relevant values": [ + "Waarden geselecteerd in andere filters hebben invloed op de filteropties om alleen relevante waarden te tonen" + ], + "Values dependent on": [ + "Waarden afhankelijk van" + ], + "Scoping": [ + "Scoping" + ], + "Filter Configuration": [ + "Filter configuratie" + ], + "Filter Settings": [ + "Filter Instellingen" + ], + "Select filter": [ + "Selecteer filter" + ], + "Range filter": [ + "Bereik filter" + ], + "Numerical range": [ + "Numeriek bereik" + ], + "Time filter": [ + "Tijdfilter" + ], + "Time range": [ + "Tijdbereik" + ], + "Time column": [ + "Tijdkolom" + ], + "Time grain": [ + "Tijdsinterval" + ], + "Group By": [ + "Groeperen op" + ], + "Group by": [ + "Groep per" + ], + "Pre-filter is required": [ + "Vooraf-filter is vereist" + ], + "Time column to apply dependent temporal filter to": [ + "Tijdkolom om afhankelijke tijdelijke filter toe te passen op" + ], + "Time column to apply time range to": [ + "Tijdkolom om het tijdsbereik op toe te passen" + ], + "Filter name": [ + "Filter naam" + ], + "Name is required": [ + "Naam is vereist" + ], + "Filter Type": [ + "Filter type" + ], + "Datasets do not contain a temporal column": [ + "Datasets bevatten geen tijdelijke kolom" + ], + "Dashboard time range filters apply to temporal columns defined in\n the filter section of each chart. Add temporal columns to the chart\n filters to have this dashboard filter impact those charts.": [ + "Filter voor tijdbereik van het dashboard is van toepassing op tijdelijke kolommen gedefinieerd in\n het filter gedeelte van elke grafiek. Voeg tijdelijke kolommen toe aan de kaart\n filters om dit dashboard filter van invloed te laten zijn op die grafieken." + ], + "Dataset is required": [ + "Dataset is vereist" + ], + "Pre-filter available values": [ + "Vooraf-filter beschikbare waarden" + ], + "Add filter clauses to control the filter's source query,\n though only in the context of the autocomplete i.e., these conditions\n do not impact how the filter is applied to the dashboard. This is useful\n when you want to improve the query's performance by only scanning a subset\n of the underlying data or limit the available values displayed in the filter.": [ + "Voeg filterclausules toe om de bronquery van het filter te beheren,\n echter alleen in de context van de autocomplete i. ., deze voorwaarden\n hebben geen invloed op hoe het filter wordt toegepast op het dashboard. Dit is handig\n wanneer u de prestaties van de zoekopdracht wilt verbeteren door alleen een subset\n van de onderliggende gegevens te scannen of de beschikbare waarden in het filter te beperken." + ], + "Pre-filter": [ + "Vooraf-filter" + ], + "No filter": [ + "Geen filter" + ], + "Sort filter values": [ + "Sorteer filterwaarden" + ], + "Sort type": [ + "Sorteer type" + ], + "Sort ascending": [ + "Sorteer oplopend" + ], + "Sort Metric": [ + "Sorteer Metriek" + ], + "If a metric is specified, sorting will be done based on the metric value": [ + "Als een metriek is opgegeven, zal sortering worden gedaan op basis van de metrische waarde" + ], + "Sort metric": [ + "Sorteer metriek" + ], + "Single Value": [ + "Enkele Waarde" + ], + "Single value type": [ + "Enkelvoudige waarde type" + ], + "Exact": [ + "Exact" + ], + "Filter has default value": [ + "Filter heeft een standaardwaarde" + ], + "Default Value": [ + "Standaard waarde" + ], + "Default value is required": [ + "Standaardwaarde is vereist" + ], + "Refresh the default values": [ + "Ververs de standaard waarden" + ], + "Fill all required fields to enable \"Default Value\"": [ + "Vul alle verplichte velden in om \"Standaardwaarde\" in te schakelen" + ], + "You have removed this filter.": [ + "Je hebt deze filter verwijderd." + ], + "Restore Filter": [ + "Herstel Filter" + ], + "Column is required": [ + "Kolom is vereist" + ], + "Populate \"Default value\" to enable this control": [ + "Vul \"Standaardwaarde\" in om deze controle te activeren" + ], + "Default value set automatically when \"Select first filter value by default\" is checked": [ + "Standaardwaarde wordt automatisch ingesteld wanneer \"Selecteer eerste standaard filter\" is aangevinkt" + ], + "Default value must be set when \"Filter value is required\" is checked": [ + "Standaardwaarde moet worden ingesteld wanneer \"Filterwaarde is vereist\" is aangevinkt" + ], + "Default value must be set when \"Filter has default value\" is checked": [ + "Standaardwaarde moet worden ingesteld wanneer \"Filter heeft standaardwaarde\" is ingeschakeld" + ], + "Apply to all panels": [ + "Toepassen op alle panelen" + ], + "Apply to specific panels": [ + "Toepassen op specifieke panelen" + ], + "Only selected panels will be affected by this filter": [ + "Alleen geselecteerde panelen zullen door deze filter worden beïnvloed" + ], + "All panels with this column will be affected by this filter": [ + "Alle panelen met deze kolom zullen door deze filter worden beïnvloed" + ], + "All panels": [ + "Alle panelen" + ], + "This chart might be incompatible with the filter (datasets don't match)": [ + "Deze grafiek is mogelijk niet compatibel met het filter (datasets komen niet overeen)" + ], + "Keep editing": [ + "Blijf bewerken" + ], + "Yes, cancel": [ + "Ja, annuleer" + ], + "There are unsaved changes.": [ + "Er zijn niet opgeslagen wijzigingen." + ], + "Are you sure you want to cancel?": [ + "Weet je zeker dat je wilt annuleren?" + ], + "Error loading chart datasources. Filters may not work correctly.": [ + "Fout bij het laden van grafiek gegevensbronnen. Filters werken mogelijk niet correct." + ], + "Transparent": [ + "Transparant" + ], + "White": [ + "Wit" + ], + "All filters": [ + "Alle filters" + ], + "Click to edit %s.": [ + "Klik om te bewerken %s." + ], + "Click to edit chart.": [ + "Klik om de grafiek te bewerken." + ], + "Use %s to open in a new tab.": [ + "Gebruik %s om een nieuw tabblad te openen." + ], + "Medium": [ + "Gemiddeld" + ], + "New header": [ + "Nieuwe koptekst" + ], + "Tab title": [ + "Titel tabblad" + ], + "This session has encountered an interruption, and some controls may not work as intended. If you are the developer of this app, please check that the guest token is being generated correctly.": [ + "Deze sessie ondervond een onderbreking, en sommige controles werken mogelijk niet zoals bedoeld. Als je de ontwikkelaar van deze app bent, controleer dan of de \"guest token\" correct wordt gegenereerd." + ], + "Equal to (=)": [ + "Gelijk aan (=)" + ], + "Not equal to (≠)": [ + "Niet gelijk aan (≠)" + ], + "Less than (<)": [ + "Minder dan (<)" + ], + "Less or equal (<=)": [ + "Minder of gelijk aan (<=)" + ], + "Greater than (>)": [ + "Groter dan (>)" + ], + "Greater or equal (>=)": [ + "Groter of gelijk aan (>=)" + ], + "In": [ + "In" + ], + "Not in": [ + "Niet in" + ], + "Like": [ + "Like" + ], + "Like (case insensitive)": [ + "Like (hoofdlettergevoelig)" + ], + "Is not null": [ + "Is niet null" + ], + "Is null": [ + "Is null" + ], + "use latest_partition template": [ + "gebruik laatste_partitie sjabloon" + ], + "Is true": [ + "Is waar" + ], + "Is false": [ + "Is onwaar" + ], + "TEMPORAL_RANGE": [ + "TIJDELIJK_BEREIK" + ], + "Time granularity": [ + "Tijd granulariteit" + ], + "Duration in ms (100.40008 => 100ms 400µs 80ns)": [ + "Duur in ms (100.40008 => 100ms 400μs 80ns)" + ], + "One or many columns to group by. High cardinality groupings should include a series limit to limit the number of fetched and rendered series.": [ + "Eén of meerdere kolommen om te groeperen. Hoge kardinaliteitsgroepen moeten een limiet in de serie bevatten om het aantal opgehaalde en weergegeven series te beperken." + ], + "One or many metrics to display": [ + "Eén of vele metrieken om weer te geven" + ], + "Fixed color": [ + "Vaste kleur" + ], + "Right axis metric": [ + "Rechter as metriek" + ], + "Choose a metric for right axis": [ + "Kies een metriek voor de rechteras" + ], + "Linear color scheme": [ + "Lineair kleurenpalet" + ], + "Color metric": [ + "Kleur metriek" + ], + "One or many controls to pivot as columns": [ + "Een of meer bedieningsinstrumenten om als kolommen te pivoteren" + ], + "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`": [ + "De tijd granulariteit voor de visualisatie. Merk op dat u eenvoudige natuurlijke taal kunt typen en gebruiken zoals in `10 seconden`,`1 dag` of `56 weken`" + ], + "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.": [ + "De tijd-granulariteit voor de visualisatie. Dit is een datum transformatie naar de tijdkolom en definieert een nieuwe tijdgranulariteit. De opties hier zijn gedefinieerd op een per database engine basis in de Superset source code." + ], + "The time range for the visualization. All relative times, e.g. \"Last month\", \"Last 7 days\", \"now\", etc. are evaluated on the server using the server's local time (sans timezone). All tooltips and placeholder times are expressed in UTC (sans timezone). The timestamps are then evaluated by the database using the engine's local timezone. Note one can explicitly set the timezone per the ISO 8601 format if specifying either the start and/or end time.": [ + "Het tijdsbereik voor de visualisatie. Alle relatieve tijden, bijvoorbeeld \"Afgelopen maand\", \"Laatste 7 dagen\", \"nu\", etc. worden geëvalueerd op de server door gebruik te maken van de lokale tijd (zonder tijdzone). Alle tooltips en de tijd van de tijdelijke placeholder worden uitgedrukt in UTC (zonder tijdzone). De tijdstempels worden vervolgens geëvalueerd door de database met behulp van de lokale tijdzone van de engine. Merk op dat de tijdzone per ISO 8601 formaat expliciet kan worden ingesteld als de start- en/of eindtijd wordt aangegeven." + ], + "Limits the number of rows that get displayed.": [ + "Beperkt het aantal rijen die worden weergegeven." + ], + "Metric used to define how the top series are sorted if a series or row limit is present. If undefined reverts to the first metric (where appropriate).": [ + "Metriek wordt gebruikt om te bepalen hoe de top series worden gesorteerd als een serie of rijlimiet aanwezig is. Indien ongedefinieerd wordt deze teruggekeerd naar de eerste metriek (indien gepast)." + ], + "Defines the grouping of entities. Each series is shown as a specific color on the chart and has a legend toggle": [ + "Definieert de groepering van entiteiten. Elke serie wordt weergegeven als een specifieke kleur op de grafiek en heeft een legende schakelaar" + ], + "Metric assigned to the [X] axis": [ + "Metriek toegewezen aan de [X]-as" + ], + "Metric assigned to the [Y] axis": [ + "Metriek toegewezen aan de [Y]-as" + ], + "Bubble size": [ + "Bubbelgrootte" + ], + "When `Calculation type` is set to \"Percentage change\", the Y Axis Format is forced to `.1%`": [ + "Wanneer `Bereken type` is ingesteld op \"Percentage verandering\", wordt de Y Axis Opmaak geforceerd naar `.1%`" + ], + "Color scheme": [ + "Kleurenschema" + ], + "An error occurred while starring this chart": [ + "Er is een fout opgetreden tijdens het sterren van deze kaart" + ], + "Chart [%s] has been saved": [ + "Grafiek [%s] is opgeslagen" + ], + "Chart [%s] has been overwritten": [ + "Grafiek [%s] is overschreven" + ], + "Dashboard [%s] just got created and chart [%s] was added to it": [ + "Dashboard [%s] is zojuist aangemaakt en grafiek [%s] is eraan toegevoegd" + ], + "Chart [%s] was added to dashboard [%s]": [ + "Grafiek [%s] is toegevoegd aan dashboard [%s]" + ], + "GROUP BY": [ + "GROUP BY" + ], + "Use this section if you want a query that aggregates": [ + "Gebruik deze sectie als u een query wilt welke aggregeert" + ], + "NOT GROUPED BY": [ + "NOT GROUPED BY" + ], + "Use this section if you want to query atomic rows": [ + "Gebruik deze sectie als u atomische rijen wilt opvragen" + ], + "The X-axis is not on the filters list": [ + "De X-as staat niet op de filterlijst" + ], + "The X-axis is not on the filters list which will prevent it from being used in\n time range filters in dashboards. Would you like to add it to the filters list?": [ + "De X-as staat niet in de filterlijst, wat zal voorkomen dat deze wordt gebruikt in\n tijdbereik filters in dashboards. Wilt u het toevoegen aan de filterlijst?" + ], + "You cannot delete the last temporal filter as it's used for time range filters in dashboards.": [ + "U kunt het laatste tijdelijke filter niet verwijderen omdat het gebruikt wordt voor tijdbereik filters in de dashboards." + ], + "This section contains validation errors": [ + "Deze sectie bevat validatiefouten" + ], + "Keep control settings?": [ + "Behoud de controle-instellingen?" + ], + "You've changed datasets. Any controls with data (columns, metrics) that match this new dataset have been retained.": [ + "Je hebt datasets gewijzigd. Alle bedieningselementen met gegevens (kolommen, metrieken) die overeenkomen met deze nieuwe dataset zijn behouden gebleven." + ], + "Continue": [ + "Doorgaan" + ], + "Clear form": [ + "Formulier wissen" + ], + "No form settings were maintained": [ + "Er zijn geen formulierinstellingen onderhouden" + ], + "We were unable to carry over any controls when switching to this new dataset.": [ + "We waren niet in staat om enige bedieningselementen over te dragen bij het overschakelen naar deze nieuwe dataset." + ], + "Customize": [ + "Pas aan" + ], + "Generating link, please wait..": [ + "Link genereren, even geduld a.u.b." + ], + "Chart height": [ + "Grafiek hoogte" + ], + "Chart width": [ + "Grafiek breedte" + ], + "An error occurred while loading dashboard information.": [ + "Er is een fout opgetreden bij het laden van dashboard informatie." + ], + "Save (Overwrite)": [ + "Opslaan (overschrijven)" + ], + "Save as...": [ + "Opslaan als..." + ], + "Chart name": [ + "Grafiek naam" + ], + "Dataset Name": [ + "Dataset naam" + ], + "A reusable dataset will be saved with your chart.": [ + "Een herbruikbaar dataset wordt opgeslagen met uw grafiek." + ], + "Add to dashboard": [ + "Toevoegen aan het dashboard" + ], + "Select a dashboard": [ + "Selecteer een dashboard" + ], + "Select": [ + "Selecteer" + ], + " a dashboard OR ": [ + " een dashboard OF " + ], + "create": [ + "aanmaken" + ], + " a new one": [ + " een nieuwe" + ], + "A new chart and dashboard will be created.": [ + "Een nieuwe grafiek en dashboard zullen worden aangemaakt." + ], + "A new chart will be created.": [ + "Er zal een nieuwe grafiek worden aangemaakt." + ], + "A new dashboard will be created.": [ + "Er zal een nieuw dashboard worden aangemaakt." + ], + "Save & go to dashboard": [ + "Opslaan en naar dashboard gaan" + ], + "Save chart": [ + "Grafiek opslaan" + ], + "Formatted date": [ + "Opgemaakte datum" + ], + "Column Formatting": [ + "Kolom Opmaak" + ], + "Collapse data panel": [ + "Paneel data samenvouwen" + ], + "Expand data panel": [ + "Gegevenspaneel vergroten" + ], + "Samples": [ + "Monsters" + ], + "No samples were returned for this dataset": [ + "Er zijn geen voorbeelden gevonden voor deze dataset" + ], + "No results": [ + "Geen resultaten" + ], + "Showing %s of %s": [ + "Weergave %s van %s" + ], + "%s ineligible item(s) are hidden": [ + "" + ], + "Show less...": [ + "Toon minder..." + ], + "Show all...": [ + "Toon alles..." + ], + "Search Metrics & Columns": [ + "Zoek Metriek & Kolommen" + ], + "Create a dataset": [ + "Een dataset aanmaken" + ], + " to edit or add columns and metrics.": [ + " om kolommen en metrieken toe te voegen of bewerken." + ], + "Unable to retrieve dashboard colors": [ + "Dashboard kleuren kunnen niet worden opgehaald" + ], + "Not added to any dashboard": [ + "Niet toegevoegd aan enig dashboard" + ], + "You can preview the list of dashboards in the chart settings dropdown.": [ + "Je kunt de lijst met dashboards bekijken in de keuzelijst van de grafiekinstellingen." + ], + "Not available": [ + "Niet beschikbaar" + ], + "Add the name of the chart": [ + "Voeg de naam van de grafiek toe" + ], + "Chart title": [ + "Titel grafiek" + ], + "Add required control values to save chart": [ + "Verplichte controlewaarden om grafiek op te slaan toevoegen" + ], + "Chart type requires a dataset": [ + "Grafiek type vereist een dataset" + ], + "This chart type is not supported when using an unsaved query as a chart source. ": [ + "Dit grafiek type wordt niet ondersteund bij het gebruik van een niet-opgeslagen query als grafiekbron. " + ], + " to visualize your data.": [ + " om uw gegevens te visualiseren." + ], + "Required control values have been removed": [ + "Vereiste controlewaarden zijn verwijderd" + ], + "Your chart is not up to date": [ + "Je grafiek is niet up to date" + ], + "You updated the values in the control panel, but the chart was not updated automatically. Run the query by clicking on the \"Update chart\" button or": [ + "Je hebt de waarden in het bedieningspaneel bijgewerkt, maar de grafiek is niet automatisch bijgewerkt. Voer de query uit door op de knop 'Grafiek bijwerken' te klikken of" + ], + "Controls labeled ": [ + "Bediening gelabeld " + ], + "Control labeled ": [ + "Controle gelabeld " + ], + "Chart Source": [ + "Grafiek Bron" + ], + "Open Datasource tab": [ + "Open Gegevensbron Tabblad" + ], + "Original": [ + "Origineel" + ], + "Pivoted": [ + "Gepivoteerd" + ], + "You do not have permission to edit this chart": [ + "U heeft geen toestemming om deze grafiek te bewerken" + ], + "Chart properties updated": [ + "Grafiek eigenschappen bijgewerkt" + ], + "Edit Chart Properties": [ + "Bewerk Grafiek Eigenschappen" + ], + "This chart is managed externally, and can't be edited in Superset": [ + "Deze grafiek wordt extern beheerd, en kan niet worden bewerkt in Superset" + ], + "The description can be displayed as widget headers in the dashboard view. Supports markdown.": [ + "De beschrijving kan worden weergegeven als widget headers in de dashboard weergave. Markdown wordt ondersteund." + ], + "Person or group that has certified this chart.": [ + "Person of groep die deze grafiek heeft gecertificeerd." + ], + "Configuration": [ + "Configuratie" + ], + "Duration (in seconds) of the caching timeout for this chart. Set to -1 to bypass the cache. Note this defaults to the dataset's timeout if undefined.": [ + "Duur (in seconden) van de caching timeout voor deze grafiek. Stel in op -1 om de cache te omzeilen. Hou er rekening mee dat dit standaard de timeout van de dataset is, indien niet gedefinieerd." + ], + "A list of users who can alter the chart. Searchable by name or username.": [ + "Een lijst van gebruikers die de grafiek kunnen wijzigen. Zoekbaar op naam of gebruikersnaam." + ], + "The row limit set for the chart was reached. The chart may show partial data.": [ + "" + ], + "Create chart": [ + "Grafiek aanmaken" + ], + "Update chart": [ + "Grafiek bijwerken" + ], + "Invalid lat/long configuration.": [ + "Ongeldige breedtegraad/lengtegraad configuratie." + ], + "Reverse lat/long ": [ + "Omgekeerde breedtegraad/lengtegraad " + ], + "Longitude & Latitude columns": [ + "Kolommen lengtegraad en breedtegraad" + ], + "Delimited long & lat single column": [ + "Afgebakende lengtegraad en breedtegraad in enkele kolom" + ], + "Multiple formats accepted, look the geopy.points Python library for more details": [ + "Meerdere formaten geaccepteerd, zie de geopy.points Python bibliotheek voor meer details" + ], + "Geohash": [ + "Geohash" + ], + "textarea": [ + "tekstveld" + ], + "in modal": [ + "in modal" + ], + "Sorry, An error occurred": [ + "Sorry, er is een fout opgetreden" + ], + "Save as Dataset": [ + "Opslaan als Dataset" + ], + "Open in SQL Lab": [ + "Openen in SQL Lab" + ], + "Failed to verify select options: %s": [ + "Mislukt bij het verifiëren van geselecteerde opties: %s" + ], + "No annotation layers": [ + "Geen annotatielagen" + ], + "Add an annotation layer": [ + "Voeg een aantekeningslaag toe" + ], + "Annotation layer": [ + "Aantekeningenlaag" + ], + "Select the Annotation Layer you would like to use.": [ + "Selecteer de annotatielaag die u wilt gebruiken." + ], + "Use another existing chart as a source for annotations and overlays.\n Your chart must be one of these visualization types: [%s]": [ + "Gebruik een andere bestaande grafiek als bron voor annotaties en overlays.\n Uw grafiek moet een van deze visualisatietypes zijn: [%s]" + ], + "Expects a formula with depending time parameter 'x'\n in milliseconds since epoch. mathjs is used to evaluate the formulas.\n Example: '2x+5'": [ + "Verwacht een formule met afhankelijk tijdsparameter 'x'\n in milliseconden sinds epoch. mathjs wordt gebruikt om formules te evalueren.\n Voorbeeld: '2x+5'" + ], + "Annotation layer value": [ + "Annotatielaag waarde" + ], + "Bad formula.": [ + "Onjuiste formule." + ], + "Annotation Slice Configuration": [ + "Configuratie van Aantekening sectie" + ], + "This section allows you to configure how to use the slice\n to generate annotations.": [ + "Dit gedeelte stelt je in staat om te configureren hoe je slice kan gebruiken\n om annotaties te genereren." + ], + "Annotation layer time column": [ + "Aantekening laag tijdkolom" + ], + "Interval start column": [ + "Interval Startkolom" + ], + "Event time column": [ + "Gebeurtenis tijdkolom" + ], + "This column must contain date/time information.": [ + "Deze kolom moet datum/tijd informatie bevatten." + ], + "Annotation layer interval end": [ + "Annotatielaag interval einde" + ], + "Interval End column": [ + "Interval Eindkolom" + ], + "Annotation layer title column": [ + "Titel kolom annotatielaag" + ], + "Title Column": [ + "Titel Kolom" + ], + "Pick a title for you annotation.": [ + "Kies een titel voor je annotatie." + ], + "Annotation layer description columns": [ + "Omschrijvingskolommen van annotatielaag" + ], + "Description Columns": [ + "Beschrijving Kolommen" + ], + "Pick one or more columns that should be shown in the annotation. If you don't select a column all of them will be shown.": [ + "Kies een of meer kolommen die in de annotatie moeten worden weergegeven. Als u geen kolom selecteert, worden ze allemaal weergegeven." + ], + "Override time range": [ + "Overschrijf tijdbereik" + ], + "This controls whether the \"time_range\" field from the current\n view should be passed down to the chart containing the annotation data.": [ + "Deze bepaalt of het \"time_range\" veld van de huidige\n weergave moet worden doorgegeven aan de grafiek met de annotatie gegevens." + ], + "Override time grain": [ + "Overschrijf tijdgranulatie" + ], + "This controls whether the time grain field from the current\n view should be passed down to the chart containing the annotation data.": [ + "Dit bepaalt of het tijdsintervalveld van de huidige\n weergave moet worden doorgegeven aan de grafiek met de annotatie gegevens." + ], + "Time delta in natural language\n (example: 24 hours, 7 days, 56 weeks, 365 days)": [ + "Tijdsdelta in natuurlijke taal\n (voorbeeld: 24 uur, 7 dagen, 56 weken, 365 dagen)" + ], + "Display configuration": [ + "Weergave configuratie" + ], + "Configure your how you overlay is displayed here.": [ + "Configureer hier hoe uw overlay wordt weergegeven." + ], + "Annotation layer stroke": [ + "Annotatielaag lijn" + ], + "Style": [ + "Stijl" + ], + "Solid": [ + "Stevig" + ], + "Dashed": [ + "Gestippeld" + ], + "Long dashed": [ + "Lang strepen" + ], + "Dotted": [ + "Gestippeld" + ], + "Annotation layer opacity": [ + "Doorzichtigheid annotatielaag" + ], + "Color": [ + "Kleur" + ], + "Automatic Color": [ + "Automatische kleur" + ], + "Shows or hides markers for the time series": [ + "Toont of verbergt markeringen voor de tijdreeks" + ], + "Hide Line": [ + "Lijn verbergen" + ], + "Hides the Line for the time series": [ + "Verbergt de lijn voor de tijdreeks" + ], + "Layer configuration": [ + "Laagconfiguratie" + ], + "Configure the basics of your Annotation Layer.": [ + "Configureer de basis van uw Aantekeningenlaag." + ], + "Mandatory": [ + "Verplicht" + ], + "Hide layer": [ + "Laag verbergen" + ], + "Show label": [ + "Toon label" + ], + "Whether to always show the annotation label": [ + "Of het annotatielabel altijd moet worden weergegeven" + ], + "Annotation layer type": [ + "Type aantekeningenlaag" + ], + "Choose the annotation layer type": [ + "Kies het aantekeningenlaagtype" + ], + "Annotation source type": [ + "Annotatie bron type" + ], + "Choose the source of your annotations": [ + "Kies de bron van je annotaties" + ], + "Annotation source": [ + "Annotatie bron" + ], + "Remove": [ + "Verwijder" + ], + "Time series": [ + "Tijd series" + ], + "Edit annotation layer": [ + "Bewerk de aantekeningenlaag" + ], + "Add annotation layer": [ + "Aantekeningenlaag toevoegen" + ], + "Empty collection": [ + "Lege verzameling" + ], + "Add an item": [ + "Voeg een item toe" + ], + "Remove item": [ + "Item verwijderen" + ], + "This color scheme is being overridden by custom label colors.\n Check the JSON metadata in the Advanced settings": [ + "Dit kleurenschema wordt overschreven door aangepaste labelkleuren.\n Controleer de JSON-metadata in de geavanceerde instellingen" + ], + "The color scheme is determined by the related dashboard.\n Edit the color scheme in the dashboard properties.": [ + "Het kleurenschema wordt bepaald door het gerelateerde dashboard.\n Bewerk het kleurenschema in de dashboard eigenschappen." + ], + "dashboard": [ + "dashboard" + ], + "Dashboard scheme": [ + "Dashboard schema" + ], + "Select color scheme": [ + "Selecteer kleurschema" + ], + "Select scheme": [ + "Selecteer schema" + ], + "Show less columns": [ + "Toon minder kolommen" + ], + "Show all columns": [ + "Toon alle kolommen" + ], + "Fraction digits": [ + "Breuk cijfers" + ], + "Number of decimal digits to round numbers to": [ + "Aantal decimale cijfers om getallen af te ronden naar" + ], + "Min Width": [ + "Min Dikte" + ], + "Default minimal column width in pixels, actual width may still be larger than this if other columns don't need much space": [ + "Standaard minimale kolombreedte in pixels, de werkelijke breedte kan nog steeds groter zijn dan deze als andere kolommen niet veel ruimte nodig hebben" + ], + "Text align": [ + "Tekst uitlijnen" + ], + "Horizontal alignment": [ + "Horizontale uitlijning" + ], + "Show cell bars": [ + "Toon cel balken" + ], + "Whether to align positive and negative values in cell bar chart at 0": [ + "Of positieve en negatieve waarden in celbalkdiagram moeten worden uitgelijnd op 0" + ], + "Whether to colorize numeric values by if they are positive or negative": [ + "Of numerieke waarden moeten worden gekleurd op basis van of ze positief of negatief zijn" + ], + "Truncate Cells": [ + "Cellen Afkappen" + ], + "Truncate long cells to the \"min width\" set above": [ + "Lange cellen afkappen naar de \"min breedte\" welke hierboven is gezet" + ], + "Customize chart metrics or columns with currency symbols as prefixes or suffixes. Choose a symbol from dropdown or type your own.": [ + "Pas grafiek metrieken of kolommen met valutasymbolen aan als voorvoegsels of achtervoegsels. Kies een eigen symbool in de vervolgkeuzelijst of typ." + ], + "Small number format": [ + "Klein getal opmaak" + ], + "D3 number format for numbers between -1.0 and 1.0, useful when you want to have different significant digits for small and large numbers": [ + "D3 nummer opmaak voor getallen tussen -1.0 en 1.0, handig als je verschillende significante cijfers wilt hebben voor kleine en grote getallen" + ], + "Display": [ + "Weergeven" + ], + "Number formatting": [ + "Nummer opmaak" + ], + "Edit formatter": [ + "Bewerk formatter" + ], + "Add new formatter": [ + "Nieuwe formatter toevoegen" + ], + "Add new color formatter": [ + "Voeg nieuwe kleur formatter toe" + ], + "alert": [ + "waarschuwing" + ], + "error": [ + "fout" + ], + "success dark": [ + "succes donker" + ], + "alert dark": [ + "donkere waarschuwing" + ], + "error dark": [ + "fout donker" + ], + "This value should be smaller than the right target value": [ + "Deze waarde moet kleiner zijn dan de rechter doelwaarde" + ], + "This value should be greater than the left target value": [ + "Deze waarde moet groter zijn dan de linker doelwaarde" + ], + "Required": [ + "Vereist" + ], + "Operator": [ + "Operator" + ], + "Left value": [ + "Linker waarde" + ], + "Right value": [ + "Rechter waarde" + ], + "Target value": [ + "Doel waarde" + ], + "Select column": [ + "Selecteer kolom" + ], + "Color: ": [ + "Kleur: " + ], + "Lower threshold must be lower than upper threshold": [ + "Ondergrens moet lager zijn dan bovengrens" + ], + "Upper threshold must be greater than lower threshold": [ + "Bovengrens moet groter zijn dan de ondergrens" + ], + "Isoline": [ + "Isoline" + ], + "Threshold": [ + "Drempelwaarde" + ], + "Defines the value that determines the boundary between different regions or levels in the data ": [ + "Definieert de waarde die de grens tussen verschillende regio's of niveaus in de gegevens bepaalt " + ], + "The width of the Isoline in pixels": [ + "De breedte van de Isoline in pixels" + ], + "The color of the isoline": [ + "De kleur van de isoline" + ], + "Isoband": [ + "Isoband" + ], + "Lower Threshold": [ + "Ondergrens" + ], + "The lower limit of the threshold range of the Isoband": [ + "De onderste limiet van het drempelbereik van de Isoband" + ], + "Upper Threshold": [ + "Bovengrens" + ], + "The upper limit of the threshold range of the Isoband": [ + "De bovengrens van het drempelbereik van de Isoband" + ], + "The color of the isoband": [ + "De kleur van de isoband" + ], + "Click to add a contour": [ + "Klik om een contour toe te voegen" + ], + "Prefix": [ + "Voorvoegsel" + ], + "Suffix": [ + "Achtervoegsel" + ], + "Currency prefix or suffix": [ + "Valuta voorvoegsel of achtervoegsel" + ], + "Prefix or suffix": [ + "Voorvoegsel of achtervoegsel" + ], + "Currency symbol": [ + "Valuta symbool" + ], + "Currency": [ + "Valuta" + ], + "Edit dataset": [ + "Bewerk de dataset" + ], + "You must be a dataset owner in order to edit. Please reach out to a dataset owner to request modifications or edit access.": [ + "Je moet een dataset eigenaar zijn om te kunnen bewerken. Neem contact op met een dataset eigenaar om wijzigingen aan te vragen of toegang te bewerken." + ], + "View in SQL Lab": [ + "Bekijk in SQL Lab" + ], + "Query preview": [ + "Query voorbeeld" + ], + "Save as dataset": [ + "Opslaan als dataset" + ], + "Missing URL parameters": [ + "Ontbrekende URL-parameters" + ], + "The URL is missing the dataset_id or slice_id parameters.": [ + "De URL mist de dataset_id of slice_id parameters." + ], + "The dataset linked to this chart may have been deleted.": [ + "De aan deze grafiek gekoppelde dataset is mogelijk verwijderd." + ], + "RANGE TYPE": [ + "BEREIK TYPE" + ], + "Actual time range": [ + "Werkelijk tijdsbereik" + ], + "APPLY": [ + "TOEPASSEN" + ], + "Edit time range": [ + "Tijdsbereik bewerken" + ], + "Configure Advanced Time Range ": [ + "Configureer geavanceerd tijdbereik " + ], + "START (INCLUSIVE)": [ + "START (INCLUSIEF)" + ], + "Start date included in time range": [ + "Startdatum opgenomen in tijdsbereik" + ], + "END (EXCLUSIVE)": [ + "EINDE (EXCLUSIEF)" + ], + "End date excluded from time range": [ + "Einddatum uitgesloten van tijdsbereik" + ], + "Configure Time Range: Previous...": [ + "Configureer Tijdbereik: Vorige..." + ], + "Configure Time Range: Last...": [ + "Configureer Tijdbereik: Laatste..." + ], + "Configure custom time range": [ + "Configureer een aangepast tijdsbereik" + ], + "Relative quantity": [ + "Relatieve hoeveelheid" + ], + "Relative period": [ + "Relatieve periode" + ], + "Anchor to": [ + "Veranker naar" + ], + "NOW": [ + "NU" + ], + "Date/Time": [ + "Datum/Tijd" + ], + "Return to specific datetime.": [ + "Terugkeren naar specifieke datum/tijd." + ], + "Syntax": [ + "Syntax" + ], + "Example": [ + "Voorbeeld" + ], + "Moves the given set of dates by a specified interval.": [ + "Verplaatst de gegeven reeks datums met een opgegeven interval." + ], + "Truncates the specified date to the accuracy specified by the date unit.": [ + "De opgegeven datum wordt afgekapt tot de nauwkeurigheid gespecificeerd door de datumeenheid." + ], + "Get the last date by the date unit.": [ + "Verkrijg de laatste datum door de datum eenheid." + ], + "Get the specify date for the holiday": [ + "Zoek de specifieke datum voor de vakantie" + ], + "Previous": [ + "Vorige" + ], + "Custom": [ + "Aangepast" + ], + "Last day": [ + "Afgelopen dag" + ], + "Last week": [ + "Afgelopen week" + ], + "Last month": [ + "Afgelopen maand" + ], + "Last quarter": [ + "Afgelopen kwartaal" + ], + "Last year": [ + "Afgelopen jaar" + ], + "previous calendar week": [ + "vorige kalenderweek" + ], + "previous calendar month": [ + "vorige kalendermaand" + ], + "previous calendar year": [ + "vorig kalenderjaar" + ], + "Seconds %s": [ + "Seconden %s" + ], + "Minutes %s": [ + "Minuten %s" + ], + "Hours %s": [ + "Uren %s" + ], + "Days %s": [ + "Dagen %s" + ], + "Weeks %s": [ + "Weken %s" + ], + "Months %s": [ + "Maanden %s" + ], + "Quarters %s": [ + "Kwartalen %s" + ], + "Years %s": [ + "Jaren %s" + ], + "Specific Date/Time": [ + "Specifieke datum/tijd" + ], + "Relative Date/Time": [ + "Relatieve datum/tijd" + ], + "Now": [ + "Nu" + ], + "Midnight": [ + "Middernacht" + ], + "Saved expressions": [ + "Opgeslagen expressies" + ], + "Saved": [ + "Opgeslagen" + ], + "%s column(s)": [ + "%s kolom(men)" + ], + "No temporal columns found": [ + "Geen tijdelijke kolommen gevonden" + ], + "No saved expressions found": [ + "Geen opgeslagen expressies gevonden" + ], + "Add calculated temporal columns to dataset in \"Edit datasource\" modal": [ + "Voeg berekende tijdelijke kolommen toe aan dataset in \"Bewerk gegevensbron\" modal" + ], + "Add calculated columns to dataset in \"Edit datasource\" modal": [ + "Voeg berekende kolommen toe aan dataset in \"Bewerk gegevensbron\" modal" + ], + " to mark a column as a time column": [ + " om een kolom als tijdkolom te markeren" + ], + " to add calculated columns": [ + " berekende kolommen toevoegen" + ], + "Simple": [ + "Eenvoudig" + ], + "Mark a column as temporal in \"Edit datasource\" modal": [ + "Markeer een kolom als tijdelijk in \"Bewerk gegevensbron\" modal" + ], + "Custom SQL": [ + "Aangepaste SQL" + ], + "My column": [ + "Mijn kolom" + ], + "This filter might be incompatible with current dataset": [ + "Dit filter is mogelijk niet compatibel met het huidige dataset" + ], + "This column might be incompatible with current dataset": [ + "Deze kolom is mogelijk niet compatibel met het huidige dataset" + ], + "Click to edit label": [ + "Klik om label te bewerken" + ], + "Drop columns/metrics here or click": [ + "Sleep hier kolommen/metrieken of klik" + ], + "This metric might be incompatible with current dataset": [ + "Deze metriek is mogelijk niet compatibel met huidig dataset" + ], + "\n This filter was inherited from the dashboard's context.\n It won't be saved when saving the chart.\n ": [ + "\n Deze filter werd geërfd van de context van het dashboard.\n Dit wordt niet opgeslagen bij het opslaan van de grafiek.\n " + ], + "%s option(s)": [ + "%s optie(s)" + ], + "Select subject": [ + "Selecteer onderwerp" + ], + "No such column found. To filter on a metric, try the Custom SQL tab.": [ + "Geen dergelijke kolom gevonden. Om te filteren op een metriek, probeer het Custom SQL tabblad." + ], + "To filter on a metric, use Custom SQL tab.": [ + "Om te filteren op een metriek, gebruikt u het tabblad Aangepaste SQL." + ], + "%s operator(s)": [ + "%s operator(s)" + ], + "Select operator": [ + "Selecteer operator" + ], + "Comparator option": [ + "Vergelijkingsoptie" + ], + "Type a value here": [ + "Geef hier een waarde op" + ], + "Filter value (case sensitive)": [ + "Filterwaarde (hoofdlettergevoelig)" + ], + "Failed to retrieve advanced type": [ + "Geavanceerd type ophalen mislukt" + ], + "choose WHERE or HAVING...": [ + "kies WHERE of HAVING…" + ], + "Filters by columns": [ + "Filter op kolommen" + ], + "Filters by metrics": [ + "Filter op metrieken" + ], + "Fixed": [ + "Vast" + ], + "Based on a metric": [ + "Gebaseerd op een metriek" + ], + "My metric": [ + "Mijn metriek" + ], + "Add metric": [ + "Metriek toevoegen" + ], + "Select aggregate options": [ + "Selecteer aggregaat opties" + ], + "%s aggregates(s)": [ + "%s aggrega(a)t(en)" + ], + "Select saved metrics": [ + "Selecteer opgeslagen metrieken" + ], + "%s saved metric(s)": [ + "%s opgeslagen metriek(en)" + ], + "Saved metric": [ + "Opgeslagen metrieken" + ], + "No saved metrics found": [ + "Geen opgeslagen metrieken gevonden" + ], + "Add metrics to dataset in \"Edit datasource\" modal": [ + "Metrieken toevoegen aan dataset in \"Bewerk gegevensbron\" modal" + ], + " to add metrics": [ + " om meetwaarden toe te voegen" + ], + "Simple ad-hoc metrics are not enabled for this dataset": [ + "Eenvoudige ad-hoc metrieken zijn niet ingeschakeld voor deze dataset" + ], + "column": [ + "kolom" + ], + "aggregate": [ + "aggregaat" + ], + "Custom SQL ad-hoc metrics are not enabled for this dataset": [ + "Aangepaste SQL ad hoc statistieken zijn niet ingeschakeld voor deze dataset" + ], + "Error while fetching data: %s": [ + "Fout bij het ophalen van gegevens: %s" + ], + "Time series columns": [ + "Time series kolommen" + ], + "Actual value": [ + "Werkelijke waarde" + ], + "Sparkline": [ + "Sparkline" + ], + "Period average": [ + "Gemiddelde periode" + ], + "The column header label": [ + "De kolomkop label" + ], + "Column header tooltip": [ + "Kolomkop tooltip" + ], + "Type of comparison, value difference or percentage": [ + "Type vergelijking, waarde verschil of percentage" + ], + "Width": [ + "Breedte" + ], + "Width of the sparkline": [ + "Breedte van de sparkline" + ], + "Height of the sparkline": [ + "Hoogte van de sparkline" + ], + "Time lag": [ + "Tijdvertraging" + ], + "Number of periods to compare against. You can use negative numbers to compare from the beginning of the time range.": [ + "Aantal periodes om te vergelijken. Je kunt negatieve getallen gebruiken om te vergelijken vanaf het begin van het tijdsbereik." + ], + "Time Lag": [ + "Tijdvertraging" + ], + "Time ratio": [ + "Tijd ratio" + ], + "Number of periods to ratio against": [ + "Aantal periodes om tegen te verhouden" + ], + "Time Ratio": [ + "Tijd Ratio" + ], + "Show Y-axis": [ + "Toon Y-as" + ], + "Show Y-axis on the sparkline. Will display the manually set min/max if set or min/max values in the data otherwise.": [ + "Laat de Y-as zien op de sparkline. Dit zal de handmatige instelling min/max waardes weergeven anders of min/max waarden in de gegevens." + ], + "Y-axis bounds": [ + "Y-as grenzen" + ], + "Manually set min/max values for the y-axis.": [ + "Stel handmatig min/max waarden in voor de y-as." + ], + "Color bounds": [ + "Kleur grenzen" + ], + "Number bounds used for color encoding from red to blue.\n Reverse the numbers for blue to red. To get pure red or blue,\n you can enter either only min or max.": [ + "Aantal grenzen gebruikt voor kleurencodering van rood naar blauw.\n Zet de getallen voor blauw naar rood om. Om alleen rood of blauw te krijgen,\n kan je de min of max invoeren." + ], + "Optional d3 number format string": [ + "Optionele d3 nummer opmaak string" + ], + "Number format string": [ + "Nummer opmaak string" + ], + "Optional d3 date format string": [ + "Optionele d3 datum opmaak string" + ], + "Date format string": [ + "Datum opmaak string" + ], + "Column Configuration": [ + "Kolom Configuratie" + ], + "Select Viz Type": [ + "Selecteer Viz Type" + ], + "Currently rendered: %s": [ + "Momenteel weergegeven: %s" + ], + "Search all charts": [ + "Zoek in alle grafieken" + ], + "No description available.": [ + "Geen beschrijving beschikbaar." + ], + "Examples": [ + "Voorbeelden" + ], + "This visualization type is not supported.": [ + "Dit visualisatietype wordt niet ondersteund." + ], + "View all charts": [ + "Bekijk alle grafieken" + ], + "Select a visualization type": [ + "Selecteer een visualisatie type" + ], + "No results found": [ + "Geen resultaten gevonden" + ], + "Superset Chart": [ + "Superset Grafiek" + ], + "New chart": [ + "Nieuwe grafiek" + ], + "Edit chart properties": [ + "Grafiek eigenschappen bewerken" + ], + "Export to original .CSV": [ + "Exporteren naar origineel .CSV bestand" + ], + "Export to pivoted .CSV": [ + "Exporteren naar pivoted .CSV" + ], + "Export to .JSON": [ + "Exporteer naar .JSON" + ], + "Embed code": [ + "Code embedden" + ], + "Run in SQL Lab": [ + "Uitvoeren in SQL Lab" + ], + "Code": [ + "Code" + ], + "Markup type": [ + "Opmaaktype(Markup type)" + ], + "Pick your favorite markup language": [ + "Kies uw favoriete opmaaktaal (markup language)" + ], + "Put your code here": [ + "Plaats je code hier" + ], + "URL parameters": [ + "URL parameters" + ], + "Extra parameters for use in jinja templated queries": [ + "Extra parameters voor gebruik in jinja templated queries" + ], + "Annotations and layers": [ + "Aantekeningen en lagen" + ], + "Annotation layers": [ + "Aantekeningenlagen" + ], + "My beautiful colors": [ + "Mijn mooie kleuren" + ], + "< (Smaller than)": [ + "< (Kleiner dan)" + ], + "> (Larger than)": [ + "> (Groter dan)" + ], + "<= (Smaller or equal)": [ + "<= (Kleiner of gelijk)" + ], + ">= (Larger or equal)": [ + ">= (Groter of gelijk)" + ], + "== (Is equal)": [ + "== (Is gelijk)" + ], + "!= (Is not equal)": [ + "!= (Is niet gelijk)" + ], + "Not null": [ + "Niet null" + ], + "60 days": [ + "60 dagen" + ], + "90 days": [ + "90 dagen" + ], + "Send as PNG": [ + "Verstuur als PNG" + ], + "Send as CSV": [ + "Verstuur als CSV" + ], + "Send as text": [ + "Verstuur als tekst" + ], + "Alert condition": [ + "Naam waarschuwingsconditie" + ], + "Notification method": [ + "Methode voor kennisgeving" + ], + "database": [ + "database" + ], + "sql": [ + "" + ], + "Not all required fields are complete. Please provide the following:": [ + "" + ], + "Add delivery method": [ + "Leveringswijze toevoegen" + ], + "report": [ + "rapport" + ], + "%s updated": [ + "laatst bijgewerkt %s" + ], + "Edit Report": [ + "Bewerk Rapport" + ], + "Edit Alert": [ + "Waarschuwing bewerken" + ], + "Add Report": [ + "Rapport toevoegen" + ], + "Add Alert": [ + "Alarm toevoegen" + ], + "Add": [ + "Voeg toe" + ], + "Set up basic details, such as name and description.": [ + "" + ], + "Report name": [ + "Naam rapport" + ], + "Alert name": [ + "Naam van de waarschuwing" + ], + "Define the database, SQL query, and triggering conditions for alert.": [ + "" + ], + "SQL Query": [ + "SQL Query" + ], + "The result of this query must be a value capable of numeric interpretation e.g. 1, 1.0, or \"1\" (compatible with Python's float() function).": [ + "" + ], + "Trigger Alert If...": [ + "Trigger waarschuwing als…" + ], + "Condition": [ + "Voorwaarde" + ], + "Customize data source, filters, and layout.": [ + "" + ], + "Screenshot width": [ + "Schermafbeelding breedte" + ], + "Input custom width in pixels": [ + "Voer aangepaste breedte in pixels in" + ], + "Ignore cache when generating report": [ + "Negeer cache bij genereren van rapport" + ], + "Define delivery schedule, timezone, and frequency settings.": [ + "" + ], + "Timezone": [ + "Tijdzone" + ], + "Log retention": [ + "Log retentie" + ], + "Working timeout": [ + "Time-out" + ], + "Time in seconds": [ + "Tijd in seconden" + ], + "seconds": [ + "seconden" + ], + "Grace period": [ + "Grace periode" + ], + "Recurring (every)": [ "" ], - "The number of rows displayed is limited to %(rows)d by the query": [""], - "The number of rows displayed is limited to %(rows)d by the limit dropdown.": [ - "" + "CRON Schedule": [ + "CRON tijdschema" + ], + "CRON expression": [ + "CRON expressie" + ], + "Report sent": [ + "Rapport verzonden" + ], + "Alert triggered, notification sent": [ + "Alarm geactiveerd, kennisgeving verzonden" + ], + "Report sending": [ + "Rapport verzenden" + ], + "Alert running": [ + "Alarm actief" + ], + "Report failed": [ + "Rapport mislukt" + ], + "Alert failed": [ + "Waarschuwing mislukt" + ], + "Nothing triggered": [ + "Niets getriggerd" + ], + "Alert Triggered, In Grace Period": [ + "Waarschuwing geactiveerd, in grace periode" + ], + "Delivery method": [ + "Levering methode" + ], + "Select Delivery Method": [ + "Selecteer verzendmethode" + ], + "Recipients are separated by \",\" or \";\"": [ + "Ontvangers worden gescheiden door “,” of “;”" + ], + "Queries": [ + "Queries" + ], + "No entities have this tag currently assigned": [ + "Geen entiteiten hebben deze tag momenteel toegewezen" + ], + "Add tag to entities": [ + "Voeg tag toe aan entiteiten" + ], + "annotation_layer": [ + "annotatie_laag" ], - "The number of rows displayed is limited to %(rows)d by the query and limit dropdown.": [ - "" + "Annotation template updated": [ + "Annotatie sjabloon bijgewerkt" ], - "%(rows)d rows returned": [""], - "The number of rows displayed is limited to %(rows)d by the dropdown.": [ - "" + "Annotation template created": [ + "Annotatie sjabloon gemaakt" ], - "Track job": ["Track job"], - "See query details": [""], - "Query was stopped": ["Query is gestopt"], - "Database error": ["Database fout"], - "was created": ["werd gecreëerd"], - "Query in a new tab": ["Zoekopdracht in een nieuw tabblad"], - "The query returned no data": ["De query leverde geen gegevens op"], - "Fetch data preview": ["Gegevens ophalen preview"], - "Refetch results": ["Resultaten opnieuw ophalen"], - "Stop": ["Stop"], - "Run selection": ["Selectie uitvoeren"], - "Run": ["Uitvoeren"], - "Stop running (Ctrl + x)": ["Stop de uitvoering (Ctrl + x)"], - "Run query (Ctrl + Return)": ["Query uitvoeren (Ctrl + Return)"], - "Save": ["Opslaan"], - "An error occurred saving dataset": [ - "Er is een fout opgetreden bij het opslaan van dataset" + "Edit annotation layer properties": [ + "Eigenschappen aantekeningenlaag bewerken" ], - "Save or Overwrite Dataset": [""], - "Back": [""], - "Save as new": ["Opslaan als nieuw"], - "Undefined": ["Ongedefinieerd"], - "Save as": ["Opslaan als"], - "Save query": ["Zoekopdracht opslaan"], - "Cancel": ["Annuleer"], - "Update": ["Update"], - "Label for your query": ["Label voor uw zoekopdracht"], - "Write a description for your query": [ - "Schrijf een omschrijving voor uw zoekopdracht." + "Annotation layer name": [ + "Naam aantekeningenlaag" ], - "Submit": [""], - "Schedule query": ["Query planning"], - "Schedule": ["Planning"], - "There was an error with your request": [ - "Er is een fout opgetreden in uw verzoek." + "Description (this can be seen in the list)": [ + "Omschrijving (dit is te zien in de lijst)" ], - "Please save the query to enable sharing": [ - "Sla de query op om te kunnen delen" + "annotation": [ + "aantekening" ], - "Copy query link to your clipboard": [ - "Kopieer query link naar uw klembord" + "The annotation has been updated": [ + "De annotatie is bijgewerkt" ], - "Save the query to enable this feature": [ - "Sla de query op om deze functie in te schakelen" + "The annotation has been saved": [ + "De annotatie is opgeslagen" ], - "Copy link": ["Kopieer link"], - "Run a query to display results": [""], - "No stored results found, you need to re-run your query": [ - "Geen opgeslagen resultaten gevonden, u moet uw query opnieuw uitvoeren" + "Edit annotation": [ + "Bewerk aantekening" ], - "Query history": ["Geschiedenis van de opzoeking"], - "Preview: `%s`": ["Preview: `%s`"], - "Schedule the query periodically": ["Plan de zoekopdracht periodiek"], - "You must run the query successfully first": [ - "U moet de query eerst succesvol uitvoeren" + "Add annotation": [ + "Aantekening toevoegen" ], - "Render HTML": [""], - "Autocomplete": ["Autocomplete"], - "CREATE TABLE AS": ["CREATE TABLE AS"], - "CREATE VIEW AS": ["CREATE VIEW AS"], - "Estimate the cost before running a query": [ - "Kostenraming voordat een query wordt uitgevoerd" + "date": [ + "datum" ], - "Specify name to CREATE VIEW AS schema in: public": [""], - "Specify name to CREATE TABLE AS schema in: public": [""], - "Select a database to write a query": [""], - "Choose one of the available databases from the panel on the left.": [""], - "Create": ["Maak"], - "Collapse table preview": [""], - "Expand table preview": [""], - "Reset state": ["Reset status"], - "Enter a new title for the tab": [ - "Voer een nieuwe titel in voor het tabblad" + "Additional information": [ + "Bijkomende informatie" ], - "Close tab": ["Tabblad sluiten"], - "Rename tab": ["Tabblad hernoemen"], - "Expand tool bar": ["Werkbalk uitbreiden"], - "Hide tool bar": ["Verberg werkbalk"], - "Close all other tabs": ["Sluit alle andere tabbladen"], - "Duplicate tab": ["Tabblad Dupliceren"], - "New tab (Ctrl + q)": ["Nieuw tabblad (Ctrl + q)"], - "New tab (Ctrl + t)": ["Nieuw tabblad (Ctrl + t)"], - "Add a new tab to create SQL Query": [""], - "An error occurred while fetching table metadata": [ - "Er is een fout opgetreden tijdens het ophalen van de metagegevens van de tabel" + "Please confirm": [ + "Gelieve te bevestigen" ], - "Copy partition query to clipboard": [ - "Kopieer partitie query naar klembord" + "Are you sure you want to delete": [ + "Weet je zeker dat je wilt verwijderen" ], - "latest partition:": ["laatste partitie:"], - "Keys for table": ["Sleutels voor tabel"], - "View keys & indexes (%s)": ["Bekijk sleutels & indexen (%s)"], - "Original table column order": ["Originele tabel kolom volgorde"], - "Sort columns alphabetically": ["Sorteer kolommen alfabetisch"], - "Copy SELECT statement to the clipboard": [ - "Kopieer SELECT-instructie naar het klembord" + "Modified %s": [ + "Gewijzigd %s" ], - "Show CREATE VIEW statement": ["Toon CREATE VIEW statement"], - "CREATE VIEW statement": ["CREATE VIEW statement"], - "Remove table preview": ["Verwijder tabel preview"], - "below (example:": [""], - "), and they become available in your SQL (example:": [""], - "by using": [""], - "Edit template parameters": ["Bewerk template parameters"], - "Parameters ": [""], - "Invalid JSON": ["Ongeldige JSON"], - "Untitled query": ["Naamloze zoekopdracht"], - "%s%s": ["%s%s"], - "Control": [""], - "Before": [""], - "After": [""], - "Click to see difference": ["Klik om het verschil te zien"], - "Altered": ["Gewijzigd"], - "Chart changes": ["Veranderingen in de grafiek"], - "Loaded data cached": ["Geladen gegevens in de cache"], - "Loaded from cache": ["Geladen uit de cache"], - "Click to force-refresh": ["Klik om te herladen"], - "Add required control values to preview chart": [""], - "Your chart is ready to go!": [""], - "Click on \"Create chart\" button in the control panel on the left to preview a visualization or": [ - "" + "css_template": [ + "css_template" ], - "click here": [""], - "No results were returned for this query": [""], - "Make sure that the controls are configured properly and the datasource contains data for the selected time range": [ - "" + "Edit CSS template properties": [ + "Bewerk CSS template eigenschappen" ], - "An error occurred while loading the SQL": [ - "Er is een fout opgetreden bij het laden van de SQL" + "Add CSS template": [ + "Voeg CSS template toe" ], - "Sorry, an error occurred": [""], - "Updating chart was stopped": [""], - "An error occurred while rendering the visualization: %s": [""], - "Network error.": [""], - "Cross-filter will be applied to all of the charts that use this dataset.": [ - "" + "css": [ + "css" ], - "You can also just click on the chart to apply cross-filter.": [""], - "You can't apply cross-filter on this data point.": [""], - "Failed to load dimensions for drill by": [""], - "Drill by is not yet supported for this chart type": [""], - "Drill by is not available for this data point": [""], - "Drill by": [""], - "Failed to generate chart edit URL": [""], - "Close": ["Sluit"], - "Failed to load chart data.": [""], - "Drill by: %s": [""], - "Drill to detail": [""], - "Drill to detail by": [""], - "Drill to detail is disabled for this database. Change the database settings to enable it.": [ - "" + "published": [ + "gepubliceerd" ], - "Drill to detail is disabled because this chart does not group data by dimension value.": [ - "" + "draft": [ + "concept" ], - "Right-click on a dimension value to drill to detail by that value.": [ - "" + "Adjust how this database will interact with SQL Lab.": [ + "Pas aan hoe deze database communiceert met SQL Lab." ], - "Drill to detail by value is not yet supported for this chart type.": [ - "" + "Expose database in SQL Lab": [ + "Database weergeven in SQL Lab" ], - "Drill to detail: %s": [""], - "No rows were returned for this dataset": [""], - "Copy": [""], - "Copy to clipboard": ["Kopieer naar klembord"], - "Copied to clipboard!": ["Gekopieerd naar het klembord!"], - "Sorry, your browser does not support copying. Use Ctrl / Cmd + C!": [ - "Sorry, uw browser ondersteunt het kopiëren niet. Gebruik Ctrl / Cmd + C!" + "Allow this database to be queried in SQL Lab": [ + "Sta toe dat deze database wordt opgevraagd in SQL Lab" ], - "every": ["elke"], - "every month": ["elke maand"], - "every day of the month": ["elke dag van de maand"], - "day of the month": ["dag van de maand"], - "every day of the week": ["elke dag van de week"], - "day of the week": ["dag van de week"], - "every hour": ["elk uur"], - "every minute": [""], - "minute": ["minuut"], - "reboot": ["herstart"], - "Every": ["Elke"], - "in": ["in"], - "on": ["op"], - "at": ["op"], - ":": [":"], - "minute(s)": [""], - "Invalid cron expression": ["Ongeldige cron expressie"], - "Clear": ["Verwijder"], - "Sunday": ["Zondag"], - "Monday": ["Maandag"], - "Tuesday": ["Dinsdag"], - "Wednesday": ["Woensdag"], - "Thursday": ["Donderdag"], - "Friday": ["Vrijdag"], - "Saturday": ["Zaterdag"], - "January": ["Januari"], - "February": ["Februari"], - "March": ["Maart"], - "April": ["April"], - "May": ["Mei"], - "June": ["Juni"], - "July": ["Juli"], - "August": ["Augustus"], - "September": ["September"], - "October": ["Oktober"], - "November": ["November"], - "December": ["December"], - "SUN": ["ZO"], - "MON": ["MA"], - "TUE": ["DI"], - "WED": ["WO"], - "THU": ["DO"], - "FRI": ["VR"], - "SAT": ["ZA"], - "JAN": ["JAN"], - "FEB": ["FEB"], - "MAR": ["MAA"], - "APR": ["APR"], - "MAY": ["MEI"], - "JUN": ["JUN"], - "JUL": ["JUL"], - "AUG": ["AUG"], - "SEP": ["SEP"], - "OCT": ["OKT"], - "NOV": ["NOV"], - "DEC": ["DEC"], - "There was an error loading the schemas": [""], - "Force refresh schema list": ["Forceer vernieuwen schema lijst"], - "Select schema or type to search schemas": [""], - "No compatible schema found": [""], - "Warning! Changing the dataset may break the chart if the metadata does not exist.": [ - "Waarschuwing! Het veranderen van de dataset kan de grafiek breken als de metadata niet bestaat." + "Allow creation of new tables based on queries": [ + "Aanmaken van nieuwe tabellen op basis van query’s mogelijk maken" ], - "Changing the dataset may break the chart if the chart relies on columns or metadata that does not exist in the target dataset": [ - "Het wijzigen van de dataset kan de grafiek breken indien de grafiek steunt op kolommen of metadata die niet bestaan in de doel-dataset" + "Allow creation of new views based on queries": [ + "Aanmaken van nieuwe views gebaseerd op queries toestaan" ], - "dataset": ["dataset"], - "Connection": [""], - "Proceed": [""], - "Warning!": ["Waarschuwing!"], - "Search / Filter": ["Zoek / Filter"], - "Add item": ["Voeg item toe"], - "BOOLEAN": [""], - "Physical (table or view)": ["Fysiek (tabel of overzicht)"], - "Virtual (SQL)": ["Virtueel (SQL)"], - "Data type": ["Data type"], - "Datetime format": ["Datetime formaat"], - "The pattern of timestamp format. For strings use ": [ - "Het patroon van het timestamp formaat. Voor tekenreeksen gebruik je " + "CTAS & CVAS SCHEMA": [ + "CTAS & CVAS SCHEMA" ], - "Python datetime string pattern": ["Python datetime string patroon"], - " expression which needs to adhere to the ": [ - " uitdrukking die moet voldoen aan de " + "Create or select schema...": [ + "Schema aanmaken of selecteren..." ], - "ISO 8601": ["ISO 8601"], - " standard to ensure that the lexicographical ordering\n coincides with the chronological ordering. If the\n timestamp format does not adhere to the ISO 8601 standard\n you will need to define an expression and type for\n transforming the string into a date or timestamp. Note\n currently time zones are not supported. If time is stored\n in epoch format, put `epoch_s` or `epoch_ms`. If no pattern\n is specified we fall back to using the optional defaults on a per\n database/column name level via the extra parameter.": [ - "" + "Force all tables and views to be created in this schema when clicking CTAS or CVAS in SQL Lab.": [ + "Forceer dat alle tabellen en weergaven binnen dit schema worden gemaakt bij het klikken van CTAS of CVAS in SQL Lab." ], - "Certified By": [""], - "Person or group that has certified this metric": [ - "Persoon of groep die deze meetwaarde heeft gecertificeerd" - ], - "Certified by": ["Gecertificeerd door"], - "Certification details": ["Details certificering"], - "Details of the certification": ["Details van de certificering"], - "Is dimension": ["Is dimensie"], - "Default datetime": [""], - "Is filterable": ["Kan gefilterd worden"], - "Select owners": [""], - "Modified columns: %s": ["Gewijzigde kolommen: %s"], - "Removed columns: %s": ["Verwijderde kolommen: %s"], - "New columns added: %s": ["Nieuwe kolommen toegevoegd: %s"], - "Metadata has been synced": ["Metadata zijn gesynchroniseerd"], - "An error has occurred": ["Er is een fout opgetreden"], - "Column name [%s] is duplicated": ["Kolomnaam [%s] is gedupliceerd"], - "Metric name [%s] is duplicated": ["Meeteenheid naam [%s] is dubbel"], - "Calculated column [%s] requires an expression": [ - "Berekende kolom [%s] vereist een uitdrukking" + "Allow manipulation of the database using non-SELECT statements such as UPDATE, DELETE, CREATE, etc.": [ + "Sta manipulatie van de database toe met niet-SELECT statements zoals UPDATE, DELETE, CREATE, enz." ], - "Invalid currency code in saved metrics": [""], - "Basic": ["Berekende kolom [%s] vereist een uitdrukking"], - "Default URL": ["Standaard URL"], - "Default URL to redirect to when accessing from the dataset list page": [ - "Standaard URL om naar door te verwijzen bij toegang vanaf de dataset lijst pagina" + "Enable query cost estimation": [ + "Query kosten schatten inschakelen" ], - "Autocomplete filters": ["Autocomplete filters"], - "Whether to populate autocomplete filters options": [ - "Geef aan of de autoaanvulfilteropties moeten worden ingevuld" + "For Bigquery, Presto and Postgres, shows a button to compute cost before running a query.": [ + "Voor Bigquery, Presto en Postgres, toont een knop om de kosten te berekenen voordat een query wordt uitgevoerd." ], - "Autocomplete query predicate": ["Autocomplete query predicaat"], - "When using \"Autocomplete filters\", this can be used to improve performance of the query fetching the values. Use this option to apply a predicate (WHERE clause) to the query selecting the distinct values from the table. Typically the intent would be to limit the scan by applying a relative time filter on a partitioned or indexed time-related field.": [ - "" + "Allow this database to be explored": [ + "Toestaan dat deze database wordt verkend" ], - "Extra data to specify table metadata. Currently supports metadata of the format: `{ \"certification\": { \"certified_by\": \"Data Platform Team\", \"details\": \"This table is the source of truth.\" }, \"warning_markdown\": \"This is a warning.\" }`.": [ - "" + "When enabled, users are able to visualize SQL Lab results in Explore.": [ + "Wanneer ingeschakeld, kunnen gebruikers de resultaten van SQL Lab visualiseren in Verkenning." ], - "Cache timeout": ["Cache timeout"], - "Hours offset": ["Uur offset"], - "The number of hours, negative or positive, to shift the time column. This can be used to move UTC time to local time.": [ - "" + "Disable SQL Lab data preview queries": [ + "Schakel SQL Lab data preview queries uit" ], - "When the secondary temporal columns are filtered, apply the same filter to the main datetime column.": [ - "" + "Disable data preview when fetching table metadata in SQL Lab. Useful to avoid browser performance issues when using databases with very wide tables.": [ + "Schakel datavoorvertoning uit bij het ophalen van tabelmetagegevens in SQL Lab. Handig om prestatieproblemen van de browser te voorkomen bij het gebruik van databases met zeer brede tabellen." ], - "": [""], - "Click the lock to make changes.": [ - "Klik op het slotje om wijzigingen aan te brengen." + "Enable row expansion in schemas": [ + "Rij-expansie in schema's inschakelen" ], - "Click the lock to prevent further changes.": [ - "Klik op het slotje om verdere wijzigingen te voorkomen." + "For Trino, describe full schemas of nested ROW types, expanding them with dotted paths": [ + "Voor Trino, beschrijf volledige schema's van geneste ROW types, breidt ze uit met stippellijnstukken" ], - "virtual": ["virtueel"], - "Dataset name": ["Dataset naam"], - "When specifying SQL, the datasource acts as a view. Superset will use this statement as a subquery while grouping and filtering on the generated parent queries.": [ - "" + "Performance": [ + "Prestaties" ], - "Physical": ["Fysiek"], - "The pointer to a physical table (or view). Keep in mind that the chart is associated to this Superset logical table, and this logical table points the physical table referenced here.": [ - "" + "Adjust performance settings of this database.": [ + "Pas de prestatie-instellingen van deze database aan." ], - "This field is used as a unique identifier to attach the metric to charts. It is also used as the alias in the SQL query.": [ - "" + "Chart cache timeout": [ + "Grafiek cache timeout" ], - "D3 format": ["D3 formaat"], - "Metric currency": [""], - "Select or type currency symbol": [""], - "Warning": ["Waarschuwing"], - "Optional warning about use of this metric": [ - "Optionele waarschuwing voor het gebruik van deze meeteenheid" + "Enter duration in seconds": [ + "Voer duur in seconden in" ], - "Be careful.": ["Pas op."], - "Changing these settings will affect all charts using this dataset, including charts owned by other people.": [ - "" + "Duration (in seconds) of the caching timeout for charts of this database. A timeout of 0 indicates that the cache never expires, and -1 bypasses the cache. Note this defaults to the global timeout if undefined.": [ + "Duur (in seconden) van de caching time-out voor grafieken van deze database. Een time-out van 0 geeft aan dat de cache nooit verloopt, en -1 gaat voorbij aan de cache. Merk op dat de standaard timeout is ingesteld op de globale timeout indien niet gedefinieerd." ], - "Sync columns from source": ["Synchroniseer kolommen van bron"], - "Calculated columns": ["Berekende kolommen"], - "This field is used as a unique identifier to attach the calculated dimension to charts. It is also used as the alias in the SQL query.": [ - "" + "Schema cache timeout": [ + "Schema cache time-out" ], - "": [""], - "Settings": ["Instellingen"], - "The dataset has been saved": ["De dataset is opgeslagen"], - "The dataset configuration exposed here\n affects all the charts using this dataset.\n Be mindful that changing settings\n here may affect other charts\n in undesirable ways.": [ - "De dataset configuratie die hier wordt getoond\n heeft invloed op alle grafieken die deze dataset gebruiken.\n Wees je ervan bewust dat het veranderen van instellingen\n hier invloed kan hebben op andere grafieken\n op ongewenste manieren." + "Duration (in seconds) of the metadata caching timeout for schemas of this database. If left unset, the cache never expires.": [ + "Duur (in seconden) van de metadata caching timeout voor schema's van deze database. Indien dit niet ingesteld is, verloopt de cache niet." ], - "Are you sure you want to save and apply changes?": [ - "Weet u zeker dat u de wijzigingen wilt opslaan en toepassen?" + "Table cache timeout": [ + "Tabel cache time-out" ], - "Confirm save": ["Opslaan bevestigen"], - "OK": ["OK"], - "Edit Dataset ": ["Bewerk Dataset "], - "Use legacy datasource editor": ["Gebruik de legacy datasource editor"], - "This dataset is managed externally, and can't be edited in Superset": [ - "" + "Duration (in seconds) of the metadata caching timeout for tables of this database. If left unset, the cache never expires. ": [ + "Duur (in seconden) van de metadata caching timeout voor de tabellen van deze database. Indien dit niet ingesteld is, verloopt de cache niet. " ], - "DELETE": ["VERWIJDER"], - "delete": ["verwijder"], - "Type \"%s\" to confirm": ["Type “%s” om te bevestigen"], - "Click to edit": ["Klik om te bewerken"], - "You don't have the rights to alter this title.": [ - "Je hebt niet de rechten om deze titel te veranderen." + "Asynchronous query execution": [ + "Asynchrone uitvoering van query’s" ], - "No databases match your search": [""], - "There are no databases available": [""], - "here": [""], - "Unexpected error": ["Onverwachte fout"], - "This may be triggered by:": ["Dit kan veroorzaakt worden door:"], - "%(message)s\nThis may be triggered by: \n%(issues)s": [""], - "%s Error": ["%s Fout"], - "Missing dataset": ["Ontbrekende dataset"], - "See more": ["Zie meer"], - "See less": ["Zie minder"], - "Copy message": ["Kopieer bericht"], - "Details": [""], - "Authorization needed": [""], - "Did you mean:": ["Bedoelde je:"], - "Parameter error": ["Parameter fout"], - "%(subtitle)s\nThis may be triggered by:\n %(issue)s": [""], - "Timeout error": ["Timeout fout"], - "Click to favorite/unfavorite": [ - "Klik om voorkeur aan te geven/voorkeur te verwijderen" + "Cancel query on window unload event": [ + "Query annuleren bij window unload gebeurtenis" + ], + "Terminate running queries when browser window closed or navigated to another page. Available for Presto, Hive, MySQL, Postgres and Snowflake databases.": [ + "Beëindig de zoekopdrachten wanneer het browservenster gesloten of navigeert naar een andere pagina. Beschikbaar voor Presto, Hive, MySQL, Postgres en Snowflake databases." + ], + "Add extra connection information.": [ + "Extra verbindingsinformatie toevoegen." + ], + "Secure extra": [ + "Beveilig extra" + ], + "JSON string containing additional connection configuration. This is used to provide connection information for systems like Hive, Presto and BigQuery which do not conform to the username:password syntax normally used by SQLAlchemy.": [ + "JSON string met extra verbindingsconfiguratie. Dit wordt gebruikt om verbindingsinformatie te verstrekken voor systemen zoals Hive, Presto en BigQuery die niet voldoen aan de gebruikersnaam:wachtwoord syntax normaal gesproken gebruikt door SQLAlchemy." + ], + "Enter CA_BUNDLE": [ + "Voer CA_BUNDLE in" + ], + "Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.": [ + "Optionele CA_BUNDLE inhoud voor het valideren van HTTPS-verzoeken. Alleen beschikbaar voor bepaalde database engines." + ], + "Impersonate logged in user (Presto, Trino, Drill, Hive, and GSheets)": [ + "Inloggen als ingelogde gebruiker (Presto, Trino, Drill, Hive en GSheets)" + ], + "If Presto or Trino, 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.": [ + "Bij Presto of Trino, alle zoekopdrachten in SQL Lab zullen worden uitgevoerd als de momenteel ingelogde gebruiker die toestemming moet hebben om ze uit te voeren. Als bijenkorf en bijslag. erver2.enable.doAs is ingeschakeld, worden de zoekopdrachten als serviceaccount uitgevoerd, maar imiteer de momenteel ingelogde gebruiker via hive.server2.proxy.user eigenschap." + ], + "Allow file uploads to database": [ + "Sta bestandsuploads naar database toe" + ], + "Schemas allowed for File upload": [ + "Schemas toegestaan voor bestandsupload" + ], + "A comma-separated list of schemas that files are allowed to upload to.": [ + "Een komma gescheiden lijst van schema's waar bestanden naar mogen uploaden." + ], + "Additional settings.": [ + "Additionele instellingen." + ], + "Metadata Parameters": [ + "Metadata Parameters" + ], + "The metadata_params object gets unpacked into the sqlalchemy.MetaData call.": [ + "De metadata_params object wordt uitgepakt in de sqlalchemy.MetaData oproep." + ], + "Engine Parameters": [ + "Engine Parameters" + ], + "The engine_params object gets unpacked into the sqlalchemy.create_engine call.": [ + "Het engine_params object wordt uitgepakt in de sqlalchemy.create_engine call." + ], + "Version": [ + "Versie" + ], + "Version number": [ + "Versienummer" + ], + "Specify the database version. This is used with Presto for query cost estimation, and Dremio for syntax changes, among others.": [ + "Geef de database versie op. Dit wordt gebruikt met Presto voor de query kostenraming en Dremio voor syntax veranderingen, enz." + ], + "STEP %(stepCurr)s OF %(stepLast)s": [ + "STAP %(stepCurr)s VAN %(stepLast)s" + ], + "Enter Primary Credentials": [ + "Voer primaire aanmeldgegevens in" + ], + "Need help? Learn how to connect your database": [ + "Hulp nodig? Leer hoe je je database verbindt" + ], + "Database connected": [ + "Database verbonden" + ], + "Create a dataset to begin visualizing your data as a chart or go to\n SQL Lab to query your data.": [ + "Maak een dataset aan om uw gegevens te visualiseren als grafiek of ga naar\n SQL Lab om uw gegevens op te vragen." + ], + "Enter the required %(dbModelName)s credentials": [ + "Voer de vereiste %(dbModelName)s aanmeldgegevens in" + ], + "Need help? Learn more about": [ + "Hulp nodig? Leer meer over" + ], + "connecting to %(dbModelName)s.": [ + "verbinding maken met %(dbModelName)s." + ], + "Select a database to connect": [ + "Selecteer een database om te verbinden" + ], + "SSH Host": [ + "SSH Host" + ], + "e.g. 127.0.0.1": [ + "bijv. 127.0.0.1" + ], + "SSH Port": [ + "SSH Poort" + ], + "e.g. Analytics": [ + "bijv. Analytics" + ], + "Login with": [ + "Log in met" + ], + "Private Key & Password": [ + "Privésleutel & wachtwoord" + ], + "SSH Password": [ + "SSH Wachtwoord" + ], + "e.g. ********": [ + "bijv. ********" + ], + "Private Key": [ + "Privésleutel" + ], + "Paste Private Key here": [ + "Plak privésleutel hier" + ], + "Private Key Password": [ + "Wachtwoord van privésleutel" + ], + "SSH Tunnel": [ + "SSH Tunnel" + ], + "SSH Tunnel configuration parameters": [ + "SSH Tunnel configuratie parameters" + ], + "Display Name": [ + "Toon naam" + ], + "Name your database": [ + "Geef uw database een naam" + ], + "Pick a name to help you identify this database.": [ + "Kies een naam om je te helpen deze database te identificeren." + ], + "dialect+driver://username:password@host:port/database": [ + "dialect+driver://gebruikersnaam:wachtwoord@host:poort/database" + ], + "Refer to the": [ + "Verwijs naar de" + ], + "for more information on how to structure your URI.": [ + "voor meer informatie over de structuur van uw URI." + ], + "Test connection": [ + "Test connectie" + ], + "Please enter a SQLAlchemy URI to test": [ + "Voer een SQLAlchemy URI in om te testen" + ], + "e.g. world_population": [ + "bijv. wereld_bevolking" + ], + "Database settings updated": [ + "Database instellingen bijgewerkt" + ], + "Sorry there was an error fetching database information: %s": [ + "Sorry er is een fout opgetreden bij het ophalen van database informatie: %s" + ], + "Or choose from a list of other databases we support:": [ + "Of kies uit een lijst van andere databases die we ondersteunen:" + ], + "Supported databases": [ + "Ondersteunde databases" + ], + "Choose a database...": [ + "Kies een database..." + ], + "Want to add a new database?": [ + "Wilt u een nieuwe database toevoegen?" + ], + "Any databases that allow connections via SQL Alchemy URIs can be added. ": [ + "Alle databases die verbindingen toestaan via SQL Alchemy URI's kunnen worden toegevoegd. " + ], + "Any databases that allow connections via SQL Alchemy URIs can be added. Learn about how to connect a database driver ": [ + "Alle databases die verbindingen via SQL Alchemy URI's toestaan, kunnen worden toegevoegd. Meer informatie over het verbinden met een database driver " + ], + "Connect": [ + "Verbinden" + ], + "Finish": [ + "Beëindigen" + ], + "This database is managed externally, and can't be edited in Superset": [ + "Deze database wordt extern beheerd en kan niet worden bewerkt in Superset" + ], + "The passwords for the databases below are needed in order to import them. Please note that the \"Secure Extra\" and \"Certificate\" sections of the database configuration are not present in explore files and should be added manually after the import if they are needed.": [ + "De wachtwoorden voor de onderstaande databases zijn nodig om ze te importeren. Houd er rekening mee dat de \"Beveilig Extra\" en \"Certificaat\" secties van de database configuratie niet aanwezig zijn in de gevonden bestanden en moeten handmatig worden toegevoegd na de import, indien nodig." + ], + "You are importing one or more databases that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?": [ + "Je importeert een of meer databases die al bestaan. Overschrijven kan ertoe leiden dat een deel van je werk verloren gaat. Weet je zeker dat je wilt overschrijven?" + ], + "Database Creation Error": [ + "Database Creatie Fout" + ], + "We are unable to connect to your database. Click \"See more\" for database-provided information that may help troubleshoot the issue.": [ + "We kunnen geen verbinding maken met uw database. Klik op \"Meer bekijken\" voor database-gegeven informatie die kan helpen het probleem op te lossen." + ], + "CREATE DATASET": [ + "DATASET AANMAKEN" + ], + "QUERY DATA IN SQL LAB": [ + "QUERY DATA IN SQL LAB" + ], + "Connect a database": [ + "Koppel een database" + ], + "Edit database": [ + "Bewerk database" + ], + "Connect this database using the dynamic form instead": [ + "Verbind deze database met behulp van een dynamisch formulier" + ], + "Click this link to switch to an alternate form that exposes only the required fields needed to connect this database.": [ + "Klik op deze link om over te schakelen naar een alternatief formulier dat alleen de vereiste velden laat zien om deze database te verbinden." + ], + "Additional fields may be required": [ + "Mogelijk zijn aanvullende velden verplicht" + ], + "Select databases require additional fields to be completed in the Advanced tab to successfully connect the database. Learn what requirements your databases has ": [ + "Selecteer databases vereist extra velden die moeten worden ingevuld op het tabblad Geavanceerd om de database succesvol te verbinden. Leer welke vereisten uw databases hebben " + ], + "Import database from file": [ + "Importeer database uit bestand" + ], + "Connect this database with a SQLAlchemy URI string instead": [ + "Verbind deze database in plaats daarvan met een SQLAlchemy URI" + ], + "Click this link to switch to an alternate form that allows you to input the SQLAlchemy URL for this database manually.": [ + "Klik op deze link om over te schakelen naar een alternatief formulier waarmee u de SQLAlchemy URL voor deze database handmatig kunt invoeren." + ], + "This can be either an IP address (e.g. 127.0.0.1) or a domain name (e.g. mydatabase.com).": [ + "Dit kan een IP-adres zijn (bijv. 127.0.0.1) of een domeinnaam (bijv. mijndatabase.com)." + ], + "Host": [ + "Host" + ], + "e.g. 5432": [ + "bijv. 5432" + ], + "Port": [ + "Poort" + ], + "e.g. sql/protocolv1/o/12345": [ + "e.g. sql/protocolv1/o/12345" + ], + "Copy the name of the HTTP Path of your cluster.": [ + "Kopieer de naam van het HTTP-pad van uw cluster." + ], + "Copy the name of the database you are trying to connect to.": [ + "Kopieer de naam van de database waarmee u verbinding probeert te maken." + ], + "Access token": [ + "Toegangstoken" + ], + "Pick a nickname for how the database will display in Superset.": [ + "Kies een bijnaam voor de weergave van de database in Superset." + ], + "e.g. param1=value1¶m2=value2": [ + "bijv. param1=value1¶m2=value2" + ], + "Additional Parameters": [ + "Additionele Parameters" + ], + "Add additional custom parameters": [ + "Voeg additionele aangepaste parameters toe" + ], + "SSL Mode \"require\" will be used.": [ + "SSL-modus \"vereist\" zal worden gebruikt." + ], + "Type of Google Sheets allowed": [ + "Het type Google Sheets toegestaan" + ], + "Publicly shared sheets only": [ + "Alleen openbaar gedeelde sheets" + ], + "Public and privately shared sheets": [ + "Openbare en privé gedeelde sheets" + ], + "How do you want to enter service account credentials?": [ + "Hoe wilt u de serviceaccountgegevens invoeren?" + ], + "Upload JSON file": [ + "Upload JSON bestand" + ], + "Copy and Paste JSON credentials": [ + "Kopieer en plak JSON aanmeldgegevens" + ], + "Service Account": [ + "Service Account" + ], + "Paste content of service credentials JSON file here": [ + "Plak de inhoud van het JSON-bestand met service inloggegevens hier" + ], + "Copy and paste the entire service account .json file here": [ + "Kopieer en plak hier het volledige .json service-account bestand" + ], + "Upload Credentials": [ + "Upload Inloggegevens" + ], + "Use the JSON file you automatically downloaded when creating your service account.": [ + "Gebruik het JSON bestand dat je automatisch hebt gedownload bij het aanmaken van je serviceaccount." + ], + "Connect Google Sheets as tables to this database": [ + "Verbind Google Sheets als tabellen aan deze database" + ], + "Google Sheet Name and URL": [ + "Google Sheet Naam en URL" + ], + "Enter a name for this sheet": [ + "Voer een naam in voor dit blad" + ], + "Paste the shareable Google Sheet URL here": [ + "Plak de deelbare URL van Google Sheet hier" + ], + "Add sheet": [ + "Voeg blad toe" + ], + "Copy the identifier of the account you are trying to connect to.": [ + "Kopieer de identifier van de account waarmee u verbinding probeert te maken." + ], + "e.g. xy12345.us-east-2.aws": [ + "bijv. xy12345.us-oost-2.aws" + ], + "e.g. compute_wh": [ + "bijv. compute_wh" ], - "Cell content": ["Cel inhoud"], - "Database driver for importing maybe not installed. Visit the Superset documentation page for installation instructions: ": [ - "" + "e.g. AccountAdmin": [ + "bijv. AccountAdmin" ], - "OVERWRITE": ["OVERSCHRIJVEN"], - "%s SSH TUNNEL PASSWORD": [""], - "%s SSH TUNNEL PRIVATE KEY": [""], - "%s SSH TUNNEL PRIVATE KEY PASSWORD": [""], - "Overwrite": ["Overschrijven"], - "Import": ["Importeer"], - "Import %s": ["Importeer %s"], - "Last Updated %s": ["Laatst bijgewerkt %s"], - "Sort": [""], - "+ %s more": [""], - "%s Selected": ["%s Geselecteerd"], - "Deselect all": ["Alles deselecteren"], - "Add Tag": [""], - "No results match your filter criteria": [""], - "Try different criteria to display results.": [""], - "No Data": ["Geen Data"], - "%s-%s of %s": ["%s-%s van %s"], - "Type a value": [""], - "Filter": [""], - "Select or type a value": [""], - "Last modified": ["Laatst gewijzigd"], - "Modified by": ["Gewijzigd door"], - "Created by": ["Gecreëerd door"], - "Created on": ["Gemaakt op"], - "Menu actions trigger": [""], - "Select ...": ["Selecteer …"], - "Reset": [""], - "Invert current page": [""], - "Click to cancel sorting": [""], - "There was an error loading the tables": [""], - "See table schema": ["Zie tabel schema"], - "Force refresh table list": ["Forceer vernieuwen tabel lijst"], - "Timezone selector": [""], - "There is not enough space for this component. Try decreasing its width, or increasing the destination width.": [ - "" + "Duplicate dataset": [ + "Dupliceer dataset" ], - "Can not move top level tab into nested tabs": [ - "Kan bovenste tabblad niet in geneste tabbladen verplaatsen" + "Duplicate": [ + "Dupliceer" ], - "This chart has been moved to a different filter scope.": [ - "Deze grafiek is verplaatst naar een ander filterbereik." + "New dataset name": [ + "Nieuwe dataset naam" ], - "There was an issue fetching the favorite status of this dashboard.": [ - "Er was een probleem met het ophalen van de voorkeur status van dit dashboard." + "The passwords for the databases below are needed in order to import them together with the datasets. Please note that the \"Secure Extra\" and \"Certificate\" sections of the database configuration are not present in export files, and should be added manually after the import if they are needed.": [ + "De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met de datasets te importeren. Houd er rekening mee dat de secties \"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden toegevoegd na de import." ], - "There was an issue favoriting this dashboard.": [ - "Er was een probleem met het promoten van dit dashboard." + "You are importing one or more datasets that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?": [ + "U importeert één of meer datasets die al bestaan. Overschrijven kan leiden tot verlies van je werk. Weet je zeker dat je wilt overschrijven?" ], - "This dashboard is now published": [""], - "This dashboard is now hidden": [""], - "You do not have permissions to edit this dashboard.": [ - "U hebt geen rechten om dit dashboard te bewerken." + "Refreshing columns": [ + "Verversen kolommen" ], - "[ untitled dashboard ]": [""], - "This dashboard was saved successfully.": [ - "Dit dashboard is succesvol opgeslagen." + "Table columns": [ + "Tabel kolommen" ], - "Sorry, there was an error saving this dashboard: %s": [""], - "You do not have permission to edit this dashboard": [ - "U hebt geen toestemming om dit dashboard te bewerken" + "Loading": [ + "Laden" ], - "Please confirm the overwrite values.": [""], - "You have used all %(historyLength)s undo slots and will not be able to fully undo subsequent actions. You may save your current state to reset the history.": [ - "" + "This table already has a dataset associated with it. You can only associate one dataset with a table.\n": [ + "Er is al een dataset aan deze tabel gekoppeld. Je kunt slechts één dataset koppelen met een tabel.\n" ], - "Could not fetch all saved charts": [ - "Kon niet alle opgeslagen grafieken ophalen" + "View Dataset": [ + "Bekijk Dataset" ], - "Sorry there was an error fetching saved charts: ": [ - "Sorry er was een fout bij het ophalen van de opgeslagen grafieken: " + "This table already has a dataset": [ + "Deze tabel heeft al een dataset" ], - "Any color palette selected here will override the colors applied to this dashboard's individual charts": [ - "Elk kleurenpalet dat hier wordt geselecteerd zal de kleuren overschrijven die worden toegepast op de individuele grafieken van dit dashboard" + "Datasets can be created from database tables or SQL queries. Select a database table to the left or ": [ + "Datasets kunnen worden gemaakt vanuit databasetabellen of SQL queries. Selecteer een databasetabel links of " ], - "You have unsaved changes.": ["Je hebt niet opgeslagen wijzigingen."], - "Drag and drop components and charts to the dashboard": [""], - "You can create a new chart or use existing ones from the panel on the right": [ - "" + "create dataset from SQL query": [ + "maak data uit SQL query" ], - "Create a new chart": ["Maak een nieuwe grafiek"], - "Drag and drop components to this tab": [""], - "There are no components added to this tab": [""], - "You can add the components in the edit mode.": [""], - "There is no chart definition associated with this component, could it have been deleted?": [ - "" + " to open SQL Lab. From there you can save the query as a dataset.": [ + " om SQL Lab te openen. Vanaf daar kunt u de query opslaan als dataset." ], - "Delete this container and save to remove this message.": [ - "Verwijder deze container en sla op om dit bericht te verwijderen." + "Select dataset source": [ + "Selecteer dataset bron" ], - "Refresh interval saved": [""], - "Refresh interval": ["Interval vernieuwen"], - "Refresh frequency": ["Frequentie vernieuwen"], - "Are you sure you want to proceed?": [ - "Weet je zeker dat je door wilt gaan?" + "No table columns": [ + "Geen tabelkolommen" ], - "Save for this session": ["Opslaan voor deze sessie"], - "You must pick a name for the new dashboard": [ - "U moet een naam kiezen voor het nieuwe dashboard" + "This database table does not contain any data. Please select a different table.": [ + "Deze databasetabel bevat geen gegevens. Selecteer een andere tabel." ], - "Save dashboard": ["Dashboard opslaan"], - "Overwrite Dashboard [%s]": ["Dashboard overschrijven [%s]"], - "Save as:": ["Opslaan als:"], - "[dashboard name]": ["[dashboard naam]"], - "also copy (duplicate) charts": ["kopieer ook (duplicate) grafieken"], - "Create new chart": ["Maak een nieuwe grafiek"], - "Filter your charts": ["Filter je grafieken"], - "Sort by %s": [""], - "Show only my charts": [""], - "You can choose to display all charts that you have access to or only the ones you own.\n Your filter selection will be saved and remain active until you choose to change it.": [ - "" + "An Error Occurred": [ + "Er is een fout opgetreden" ], - "Added": ["Toegevoegd"], - "Viz type": ["Viz type"], - "Dataset": ["Dataset"], - "Superset chart": ["Superset grafiek"], - "Check out this chart in dashboard:": [ - "Kijk naar deze grafiek in het dashboard:" + "Unable to load columns for the selected table. Please select a different table.": [ + "Niet in staat om kolommen voor de geselecteerde tabel te laden. Selecteer een andere tabel." ], - "Layout elements": [""], - "An error occurred while fetching available CSS templates": [ - "Er is een fout opgetreden tijdens het ophalen van beschikbare CSS templates" + "The API response from %s does not match the IDatabaseTable interface.": [ + "De API-reactie van %s komt niet overeen met de IDatabaseTable interface." ], - "Load a CSS template": ["Laad een CSS sjabloon"], - "Live CSS editor": ["Live CSS editor"], - "There are no charts added to this dashboard": [""], - "Go to the edit mode to configure the dashboard and add charts": [""], - "Changes saved.": [""], - "Disable embedding?": [""], - "This will remove your current embed configuration.": [""], - "Embedding deactivated.": [""], - "This dashboard is ready to embed. In your application, pass the following id to the SDK:": [ - "" + "Usage": [ + "Gebruik" ], - "Configure this dashboard to embed it into an external web application.": [ - "" + "Chart owners": [ + "Grafiek eigenaars" ], - "For further instructions, consult the": [""], - "Superset Embedded SDK documentation.": [""], - "Allowed Domains (comma separated)": [""], - "A list of domain names that can embed this dashboard. Leaving this field empty will allow embedding from any domain.": [ - "" + "Chart last modified": [ + "Grafiek laatst gewijzigd" ], - "Enable embedding": [""], - "This dashboard is currently auto refreshing; the next auto refresh will be in %s.": [ - "" + "Chart last modified by": [ + "Grafiek laatst gewijzigd door" ], - "Your dashboard is too large. Please reduce its size before saving it.": [ - "" + "Dashboard usage": [ + "Dashboard gebruik" ], - "Redo the action": [""], - "Edit dashboard": ["Bewerk dashboard"], - "Superset dashboard": ["Superset dashboard"], - "Check out this dashboard: ": ["Kijk naar dit dashboard:"], - "Refresh dashboard": ["Vernieuw dashboard"], - "Exit fullscreen": [""], - "Enter fullscreen": [""], - "Edit properties": ["Eigenschappen bewerken"], - "Edit CSS": ["Bewerk CSS"], - "Share": ["Deel"], - "Set filter mapping": ["Filter toewijzing instellen"], - "Set auto-refresh interval": ["Stel auto-refresh in"], - "Scroll down to the bottom to enable overwriting changes. ": [""], - "Yes, overwrite changes": [""], - "Apply": ["Toepassen"], - "Error": [""], - "A valid color scheme is required": [ - "Een geldig kleurenschema is vereist" + "Create chart with dataset": [ + "Maak een grafiek met dataset" ], - "Dashboard properties updated": [""], - "The dashboard has been saved": ["Het dashboard is opgeslagen"], - "Access": ["Toegang"], - "Owners is a list of users who can alter the dashboard. Searchable by name or username.": [ - "" + "chart": [ + "grafiek" ], - "Colors": ["Kleuren"], - "Roles is a list which defines access to the dashboard. Granting a role access to a dashboard will bypass dataset level checks. If no roles are defined, regular access permissions apply.": [ - "" + "No charts": [ + "Geen grafieken" ], - "Dashboard properties": ["Dashboard eigenschappen"], - "This dashboard is managed externally, and can't be edited in Superset": [ - "" + "This dataset is not used to power any charts.": [ + "Deze dataset wordt niet gebruikt om enige grafieken aan te sturen." ], - "Basic information": ["Basis informatie"], - "URL slug": ["URL slag"], - "A readable URL for your dashboard": [ - "Een leesbare URL voor uw dashboard" + "Select a database table.": [ + "Selecteer een databasetabel." ], - "Certification": [""], - "Person or group that has certified this dashboard.": [""], - "Any additional detail to show in the certification tooltip.": [""], - "A list of tags that have been applied to this chart.": [""], - "JSON metadata": ["JSON metadata"], - "Please DO NOT overwrite the \"filter_scopes\" key.": [""], - "Use \"%(menuName)s\" menu instead.": [""], - "This dashboard is not published, it will not show up in the list of dashboards. Click here to publish this dashboard.": [ - "Dit dashboard is niet gepubliceerd, het verschijnt niet in de lijst van dashboards. Klik hier om dit dashboard te publiceren." + "Create dataset and create chart": [ + "Maak dataset aan en maak grafiek" ], - "This dashboard is not published which means it will not show up in the list of dashboards. Favorite it to see it there or access it by using the URL directly.": [ - "" + "New dataset": [ + "Nieuw dataset" ], - "This dashboard is published. Click to make it a draft.": [ - "Dit dashboard is gepubliceerd. Klik op om er een ontwerp van te maken." + "Select a database table and create dataset": [ + "Selecteer een database tabel en maak dataset aan" ], - "Draft": ["Draft"], - "Annotation layers are still loading.": [ - "Aantekening lagen worden nog steeds geladen." + "dataset name": [ + "dataset naam" ], - "One ore more annotation layers failed loading.": [ - "Aantekening lagen worden nog steeds geladen." + "Not defined": [ + "Niet gedefinieerd" ], - "This chart applies cross-filters to charts whose datasets contain columns with the same name.": [ - "" + "There was an error fetching dataset": [ + "Er is een fout opgetreden bij het ophalen van dataset" ], - "Data refreshed": [""], - "Cached %s": ["Cached %s"], - "Fetched %s": ["Opgehaald %s"], - "Query %s: %s": [""], - "Force refresh": ["Vernieuwen forceren"], - "View query": ["Bekijk zoekopdracht"], - "Share chart by email": ["Deel grafiek per e-mail"], - "Check out this chart: ": [""], - "Export to full .CSV": [""], - "Download as image": ["Download als afbeelding"], - "Search...": ["Zoek…"], - "No filter is selected.": ["Er is geen filter geselecteerd."], - "Editing 1 filter:": ["Bewerk 1 filter:"], - "Batch editing %d filters:": ["Batchbewerking %d filters:"], - "Configure filter scopes": ["Filter scopes configureren"], - "There are no filters in this dashboard.": [ - "Er zijn geen filters in dit dashboard." + "There was an error fetching dataset's related objects": [ + "Er is een fout opgetreden bij het ophalen van dataset gerelateerde objecten" ], - "Expand all": ["Alles uitklappen"], - "Collapse all": ["Alles inklappen"], - "An error occurred while opening Explore": [""], - "This markdown component has an error.": [ - "Deze markdown component heeft een fout." + "There was an error loading the dataset metadata": [ + "Er is een fout opgetreden bij het laden van de dataset metagegevens" ], - "This markdown component has an error. Please revert your recent changes.": [ - "" + "[Untitled]": [ + "[Ongetiteld]" ], - "Empty row": [""], - "or use existing ones from the panel on the right": [""], - "You can add the components in the": [""], - "edit mode": [""], - "Delete dashboard tab?": ["Dashboard tabblad verwijderen?"], - "Deleting a tab will remove all content within it. You may still reverse this action with the": [ - "" + "Unknown": [ + "Onbekend" ], - "button (cmd + z) until you save your changes.": [""], - "CANCEL": ["ANNULEER"], - "Divider": ["Verdeler"], - "Header": ["Header"], - "Text": [""], - "Tabs": ["Tabs"], - "background": [""], - "Preview": ["Preview"], - "Sorry, something went wrong. Try again later.": [ - "Sorry, er ging iets mis. Probeer het later nog eens." + "Viewed %s": [ + "Bekeken %s" ], - "Unknown value": [""], - "Add/Edit Filters": [""], - "No global filters are currently added": [""], - "Click on \"+Add/Edit Filters\" button to create new dashboard filters": [ - "" + "Edited": [ + "Bewerkt" ], - "Apply filters": [""], - "Clear all": ["Wis alles"], - "Add custom scoping": [""], - "All charts/global scoping": [""], - "Select the charts to which you want to apply cross-filters when interacting with this chart. You can select \"All charts\" to apply filters to all charts that use the same dataset or contain the same column name in the dashboard.": [ - "" + "Created": [ + "Aangemaakt" ], - "Select the charts to which you want to apply cross-filters in this dashboard. Deselecting a chart will exclude it from being filtered when applying cross-filters from any chart on the dashboard. You can select \"All charts\" to apply cross-filters to all charts that use the same dataset or contain the same column name in the dashboard.": [ - "" + "Viewed": [ + "Bekeken" ], - "All charts": ["Alle grafieken"], - "Orientation of filter bar": [""], - "Vertical (Left)": [""], - "Horizontal (Top)": [""], - "Cannot load filter": ["Kan filter niet laden"], - "Filters out of scope (%d)": [""], - "Dependent on": [""], - "Filter only displays values relevant to selections made in other filters.": [ - "" + "Favorite": [ + "Favoriet" ], - "Scope": [""], - "Filter type": [""], - "Title is required": [""], - "(Removed)": ["(Verwijderd)"], - "Undo?": ["Ongedaan maken?"], - "Add filters and dividers": [""], - "Cyclic dependency detected": [""], - "Add and edit filters": [""], - "Column select": [""], - "Select a column": [""], - "No compatible columns found": [""], - "Value is required": [""], - "(deleted or invalid type)": [""], - "Add filter": ["Filter toevoegen"], - "Values are dependent on other filters": [""], - "Values selected in other filters will affect the filter options to only show relevant values": [ - "" + "Mine": [ + "Mijn" ], - "Values dependent on": [""], - "Scoping": ["Scoping"], - "Filter Configuration": [""], - "Filter Settings": [""], - "Select filter": [""], - "Range filter": [""], - "Numerical range": [""], - "Time filter": [""], - "Time range": ["Tijdsspanne"], - "Time column": [""], - "Time grain": [""], - "Group By": [""], - "Group by": ["Groep per"], - "Pre-filter is required": [""], - "Time column to apply dependent temporal filter to": [""], - "Time column to apply time range to": [""], - "Filter name": ["Filter naam"], - "Name is required": ["Naam is vereist"], - "Filter Type": ["Filter Type"], - "Datasets do not contain a temporal column": [""], - "Dashboard time range filters apply to temporal columns defined in\n the filter section of each chart. Add temporal columns to the chart\n filters to have this dashboard filter impact those charts.": [ - "" + "View All »": [ + "Alles weergeven »" ], - "Dataset is required": ["Dataset is vereist"], - "Pre-filter available values": [""], - "Add filter clauses to control the filter's source query,\n though only in the context of the autocomplete i.e., these conditions\n do not impact how the filter is applied to the dashboard. This is useful\n when you want to improve the query's performance by only scanning a subset\n of the underlying data or limit the available values displayed in the filter.": [ - "" + "An error occurred while fetching dashboards: %s": [ + "Er is een fout opgetreden tijdens het ophalen van dashboards: %s" ], - "Pre-filter": [""], - "No filter": [""], - "Sort filter values": [""], - "Sort type": [""], - "Sort ascending": ["Sorteer oplopend"], - "Sort Metric": [""], - "If a metric is specified, sorting will be done based on the metric value": [ - "" + "charts": [ + "grafieken" ], - "Sort metric": ["Sorteer meeteenheid"], - "Single Value": [""], - "Single value type": [""], - "Exact": [""], - "Filter has default value": [""], - "Default Value": ["Default Value"], - "Default value is required": [""], - "Refresh the default values": [""], - "Fill all required fields to enable \"Default Value\"": [""], - "You have removed this filter.": ["Je hebt deze filter verwijderd."], - "Restore Filter": ["Herstel Filter"], - "Column is required": [""], - "Populate \"Default value\" to enable this control": [""], - "Default value set automatically when \"Select first filter value by default\" is checked": [ - "" + "dashboards": [ + "dashboards" ], - "Default value must be set when \"Filter value is required\" is checked": [ - "" + "recents": [ + "recente" ], - "Default value must be set when \"Filter has default value\" is checked": [ - "" + "saved queries": [ + "opgeslagen queries" ], - "Apply to all panels": ["Toepassen op alle panelen"], - "Apply to specific panels": ["Toepassen op specifieke panelen"], - "Only selected panels will be affected by this filter": [ - "Alleen geselecteerde panelen zullen door deze filter worden beïnvloed" + "No charts yet": [ + "Nog geen grafieken" ], - "All panels with this column will be affected by this filter": [ - "Alle panelen met deze kolom zullen door deze filter worden beïnvloed" + "No dashboards yet": [ + "Nog geen dashboards" ], - "All panels": [""], - "This chart might be incompatible with the filter (datasets don't match)": [ - "" + "No recents yet": [ + "Nog geen recenten" ], - "Keep editing": ["Blijf bewerken"], - "Yes, cancel": ["Ja, annuleer"], - "There are unsaved changes.": [""], - "Are you sure you want to cancel?": [ - "Weet je zeker dat je wilt annuleren?" + "No saved queries yet": [ + "Nog geen opgeslagen queries" ], - "Error loading chart datasources. Filters may not work correctly.": [""], - "Transparent": [""], - "White": [""], - "All filters": ["Alle filters"], - "Medium": [""], - "Tab title": ["Titel tabblad"], - "This session has encountered an interruption, and some controls may not work as intended. If you are the developer of this app, please check that the guest token is being generated correctly.": [ - "" + "%(other)s charts will appear here": [ + "%(other)s grafieken verschijnen hier" ], - "Equal to (=)": [""], - "Less than (<)": [""], - "Like": [""], - "Is true": [""], - "Is false": [""], - "Time granularity": [""], - "Duration in ms (100.40008 => 100ms 400µs 80ns)": [""], - "One or many columns to group by. High cardinality groupings should include a series limit to limit the number of fetched and rendered series.": [ - "" + "%(other)s dashboards will appear here": [ + "%(other)s dashboards zullen hier verschijnen" ], - "One or many metrics to display": [ - "Eén of vele meeteenheden om weer te geven" + "%(other)s recents will appear here": [ + "%(other)s recenten verschijnen hier" ], - "Fixed color": ["Vaste kleur"], - "Right axis metric": ["Meeteenheid rechteras"], - "Choose a metric for right axis": [ - "Kies een meeteenheid voor de rechteras" + "%(other)s saved queries will appear here": [ + "%(other)s opgeslagen queries zullen hier verschijnen" ], - "Linear color scheme": ["Lineair kleurenpalet"], - "Color metric": ["Kleur meeteenheid"], - "One or many controls to pivot as columns": [ - "Een of meer bedieningsinstrumenten om als kolommen te pivoteren" + "Recently viewed charts, dashboards, and saved queries will appear here": [ + "Onlangs bekeken grafieken, dashboards, en opgeslagen queries zullen hier verschijnen" ], - "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`": [ - "" + "Recently created charts, dashboards, and saved queries will appear here": [ + "Recent gemaakte grafieken, dashboards en opgeslagen queries verschijnen hier" ], - "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.": [ - "" + "Recently edited charts, dashboards, and saved queries will appear here": [ + "Recent bewerkte grafieken, dashboards en opgeslagen queries verschijnen hier" ], - "The time range for the visualization. All relative times, e.g. \"Last month\", \"Last 7 days\", \"now\", etc. are evaluated on the server using the server's local time (sans timezone). All tooltips and placeholder times are expressed in UTC (sans timezone). The timestamps are then evaluated by the database using the engine's local timezone. Note one can explicitly set the timezone per the ISO 8601 format if specifying either the start and/or end time.": [ - "" + "SQL query": [ + "SQL query" ], - "Limits the number of rows that get displayed.": [""], - "Metric used to define how the top series are sorted if a series or row limit is present. If undefined reverts to the first metric (where appropriate).": [ - "" + "You don't have any favorites yet!": [ + "Je hebt nog geen favorieten!" ], - "Defines the grouping of entities. Each series is shown as a specific color on the chart and has a legend toggle": [ - "" + "See all %(tableName)s": [ + "Bekijk alle %(tableName)s" ], - "Metric assigned to the [X] axis": [ - "Meeteenheid toegewezen aan de [X]-as" + "Connect database": [ + "Verbind database" ], - "Metric assigned to the [Y] axis": [ - "Meeteenheid toegewezen aan de [Y]-as" + "Create dataset": [ + "Dataset aanmaken" ], - "Bubble size": ["Bubbelgrootte"], - "When `Calculation type` is set to \"Percentage change\", the Y Axis Format is forced to `.1%`": [ - "" + "Connect Google Sheet": [ + "Verbinden met Google Sheet" ], - "Color scheme": ["Kleurenschema"], - "An error occurred while starring this chart": [""], - "GROUP BY": [""], - "Use this section if you want a query that aggregates": [""], - "NOT GROUPED BY": [""], - "Use this section if you want to query atomic rows": [""], - "The X-axis is not on the filters list": [""], - "The X-axis is not on the filters list which will prevent it from being used in\n time range filters in dashboards. Would you like to add it to the filters list?": [ - "" + "Upload CSV to database": [ + "Upload CSV naar database" ], - "You cannot delete the last temporal filter as it's used for time range filters in dashboards.": [ - "" + "Upload columnar file to database": [ + "Upload kolombestand naar database" ], - "This section contains validation errors": [""], - "Keep control settings?": [""], - "You've changed datasets. Any controls with data (columns, metrics) that match this new dataset have been retained.": [ - "" + "Upload Excel file to database": [ + "Upload Excel-bestand naar database" ], - "Continue": [""], - "Clear form": [""], - "No form settings were maintained": [""], - "We were unable to carry over any controls when switching to this new dataset.": [ - "" + "Enable 'Allow file uploads to database' in any database's settings": [ + "Schakel 'Sta bestandsuploads naar database toe' in in alle database-instellingen" ], - "Customize": ["Pas aan"], - "Generating link, please wait..": [""], - "Chart height": [""], - "Save (Overwrite)": ["Opslaan (overschrijven)"], - "Chart name": ["Grafiek naam"], - "A reusable dataset will be saved with your chart.": [""], - "Add to dashboard": ["Toevoegen aan het dashboard"], - "Select a dashboard": [""], - "Select": [""], - "Save & go to dashboard": ["Opslaan en naar dashboard gaan"], - "Save chart": ["Grafiek opslaan"], - "Formatted date": [""], - "Column Formatting": [""], - "Expand data panel": [""], - "No samples were returned for this dataset": [""], - "No results": [""], - "Showing %s of %s": ["Weergave %s van %s"], - "%s ineligible item(s) are hidden": [""], - "Show less...": [""], - "Show all...": [""], - "Search Metrics & Columns": ["Zoek meeteenheden & kolommen"], - "Unable to retrieve dashboard colors": [""], - "You can preview the list of dashboards in the chart settings dropdown.": [ - "" + "Info": [ + "Info" ], - "Not available": [""], - "Add required control values to save chart": [""], - "Chart type requires a dataset": [""], - "This chart type is not supported when using an unsaved query as a chart source. ": [ - "" + "Logout": [ + "Afmelden" ], - " to visualize your data.": [""], - "Required control values have been removed": [""], - "Your chart is not up to date": [""], - "You updated the values in the control panel, but the chart was not updated automatically. Run the query by clicking on the \"Update chart\" button or": [ - "" + "About": [ + "Over" ], - "Controls labeled ": [""], - "Control labeled ": ["Controle gelabeld "], - "Open Datasource tab": ["Open Datasource tab"], - "Original": [""], - "Pivoted": [""], - "You do not have permission to edit this chart": [ - "U heeft geen toestemming om deze grafiek te bewerken" + "Powered by Apache Superset": [ + "Mogelijk gemaakt door Apache Superset" ], - "Chart properties updated": [""], - "This chart is managed externally, and can't be edited in Superset": [""], - "The description can be displayed as widget headers in the dashboard view. Supports markdown.": [ - "" + "SHA": [ + "SHA" ], - "Person or group that has certified this chart.": [""], - "Configuration": ["Configuratie"], - "A list of users who can alter the chart. Searchable by name or username.": [ - "" + "Build": [ + "Bouwen" ], - "The row limit set for the chart was reached. The chart may show partial data.": [ - "" + "Documentation": [ + "Documentatie" ], - "Invalid lat/long configuration.": [ - "Ongeldige breedtegraad/lengtegraad configuratie." + "Report a bug": [ + "Meld een bug" ], - "Reverse lat/long ": ["Omgekeerde breedtegraad/lengtegraad "], - "Longitude & Latitude columns": ["Kolommen lengtegraad en breedtegraad"], - "Delimited long & lat single column": [ - "Afgebakende lengtegraad en breedtegraad in enkele kolom" + "Login": [ + "Aanmelden" ], - "Multiple formats accepted, look the geopy.points Python library for more details": [ - "Meerdere formaten geaccepteerd, zie de geopy.points Python bibliotheek voor meer details" + "query": [ + "query" ], - "Geohash": ["Geohash"], - "textarea": ["tekstveld"], - "in modal": ["in modal"], - "Sorry, An error occurred": ["Sorry, er is een fout opgetreden"], - "Open in SQL Lab": ["Open in SQL Lab"], - "Failed to verify select options: %s": [ - "Mislukt bij het verifiëren van geselecteerde opties: %s" + "Deleted: %s": [ + "Verwijderd: %s" ], - "Annotation layer": ["Aantekeningenlaag"], - "Use another existing chart as a source for annotations and overlays.\n Your chart must be one of these visualization types: [%s]": [ - "" + "There was an issue deleting %s: %s": [ + "Er was een probleem met het verwijderen van %s: %s" ], - "Expects a formula with depending time parameter 'x'\n in milliseconds since epoch. mathjs is used to evaluate the formulas.\n Example: '2x+5'": [ - "" + "This action will permanently delete the saved query.": [ + "Deze actie zal de opgeslagen query permanent verwijderen." ], - "Annotation layer value": [""], - "Bad formula.": [""], - "Annotation Slice Configuration": ["Configuratie van Aantekening sectie"], - "Annotation layer time column": [""], - "Interval start column": [""], - "Event time column": [""], - "This column must contain date/time information.": [""], - "Annotation layer interval end": [""], - "Interval End column": [""], - "Annotation layer title column": [""], - "Title Column": [""], - "Pick a title for you annotation.": [""], - "Annotation layer description columns": [""], - "Description Columns": [""], - "Pick one or more columns that should be shown in the annotation. If you don't select a column all of them will be shown.": [ - "" + "Delete Query?": [ + "Verwijder Query?" ], - "This controls whether the \"time_range\" field from the current\n view should be passed down to the chart containing the annotation data.": [ - "" + "Ran %s": [ + "Heeft %s geduurd" ], - "This controls whether the time grain field from the current\n view should be passed down to the chart containing the annotation data.": [ - "" + "Saved queries": [ + "Opgeslagen queries" ], - "Time delta in natural language\n (example: 24 hours, 7 days, 56 weeks, 365 days)": [ - "" + "Next": [ + "Volgende" ], - "Display configuration": ["Weergave configuratie"], - "Configure your how you overlay is displayed here.": [ - "Configureer hier hoe uw overlay wordt weergegeven." + "Tab name": [ + "Tab naam" ], - "Annotation layer stroke": [""], - "Style": ["Stijl"], - "Solid": [""], - "Long dashed": [""], - "Annotation layer opacity": [""], - "Color": ["Kleur"], - "Automatic Color": [""], - "Shows or hides markers for the time series": [""], - "Hides the Line for the time series": [""], - "Layer configuration": ["Laagconfiguratie"], - "Configure the basics of your Annotation Layer.": [ - "Configureer de basis van uw Aantekeningenlaag." + "User query": [ + "Gebruikers query" ], - "Mandatory": ["Verplicht"], - "Hide layer": ["Laag verbergen"], - "Show label": [""], - "Whether to always show the annotation label": [""], - "Annotation layer type": ["Type aantekeningenlaag"], - "Choose the annotation layer type": ["Kies het aantekeningenlaagtype"], - "Annotation source type": [""], - "Choose the source of your annotations": [""], - "Remove": ["Verwijder"], - "Edit annotation layer": ["Bewerk de aantekeningenlaag"], - "Add annotation layer": ["Aantekeningenlaag toevoegen"], - "Empty collection": ["Lege verzameling"], - "Add an item": ["Voeg een item toe"], - "Remove item": ["Item verwijderen"], - "This color scheme is being overridden by custom label colors.\n Check the JSON metadata in the Advanced settings": [ - "" + "Executed query": [ + "Uitgevoerde query" ], - "The color scheme is determined by the related dashboard.\n Edit the color scheme in the dashboard properties.": [ - "" + "Query name": [ + "Query naam" ], - "dashboard": ["dashboard"], - "Dashboard scheme": [""], - "Select color scheme": [""], - "Select scheme": [""], - "Show less columns": [""], - "Show all columns": [""], - "Fraction digits": [""], - "Number of decimal digits to round numbers to": [""], - "Min Width": [""], - "Default minimal column width in pixels, actual width may still be larger than this if other columns don't need much space": [ - "" + "SQL Copied!": [ + "SQL gekopieerd!" ], - "Text align": [""], - "Horizontal alignment": [""], - "Show cell bars": [""], - "Whether to align positive and negative values in cell bar chart at 0": [ - "" + "Sorry, your browser does not support copying.": [ + "Sorry, uw browser ondersteunt het kopiëren niet." ], - "Whether to colorize numeric values by if they are positive or negative": [ - "" + "There was an issue fetching reports attached to this dashboard.": [ + "Er was een probleem bij het ophalen van rapporten gekoppeld aan dit dashboard." ], - "Truncate Cells": [""], - "Truncate long cells to the \"min width\" set above": [""], - "Customize chart metrics or columns with currency symbols as prefixes or suffixes. Choose a symbol from dropdown or type your own.": [ - "" + "The report has been created": [ + "Het rapport is gemaakt" ], - "Small number format": [""], - "D3 number format for numbers between -1.0 and 1.0, useful when you want to have different significant digits for small and large numbers": [ - "" + "Report updated": [ + "Rapport bijgewerkt" ], - "Edit formatter": [""], - "Add new formatter": [""], - "Add new color formatter": [""], - "alert": ["Waarschuwing"], - "error dark": [""], - "This value should be smaller than the right target value": [""], - "This value should be greater than the left target value": [""], - "Required": ["Vereist"], - "Operator": [""], - "Left value": [""], - "Right value": [""], - "Target value": [""], - "Select column": [""], - "Lower threshold must be lower than upper threshold": [""], - "Threshold": [""], - "Defines the value that determines the boundary between different regions or levels in the data ": [ - "" + "We were unable to active or deactivate this report.": [ + "We konden dit rapport niet activeren of deactiveren." ], - "The width of the Isoline in pixels": [""], - "The color of the isoline": [""], - "Lower Threshold": [""], - "The lower limit of the threshold range of the Isoband": [""], - "Upper Threshold": [""], - "The upper limit of the threshold range of the Isoband": [""], - "The color of the isoband": [""], - "Click to add a contour": [""], - "Prefix": [""], - "Suffix": [""], - "Currency prefix or suffix": [""], - "Prefix or suffix": [""], - "Currency symbol": [""], - "Currency": [""], - "Edit dataset": ["Bewerk de dataset"], - "You must be a dataset owner in order to edit. Please reach out to a dataset owner to request modifications or edit access.": [ - "" + "Your report could not be deleted": [ + "Uw rapport kon niet worden verwijderd" ], - "View in SQL Lab": ["Bekijk in SQL Lab"], - "Query preview": ["Query preview"], - "Missing URL parameters": [""], - "The URL is missing the dataset_id or slice_id parameters.": [""], - "The dataset linked to this chart may have been deleted.": [ - "De aan deze grafiek gekoppelde dataset is mogelijk verwijderd." + "Weekly Report for %s": [ + "Wekelijks Rapport voor %s" ], - "RANGE TYPE": ["BEREIK TYPE"], - "Actual time range": ["Reële tijdspanne"], - "APPLY": ["TOEPASSEN"], - "Edit time range": ["Bewerk tijdspanne"], - "Configure Advanced Time Range ": [ - "Geavanceerde tijdspanne configureren " + "Weekly Report": [ + "Wekelijks Rapport" ], - "START (INCLUSIVE)": ["START (INCLUSIEF)"], - "Start date included in time range": [ - "Begindatum opgenomen in de tijdspanne" + "Edit email report": [ + "Bewerk e-mailrapport" ], - "END (EXCLUSIVE)": ["EINDE (EXCLUSIEF)"], - "End date excluded from time range": [ - "Einddatum uitgesloten uit de tijdspanne" - ], - "Configure Time Range: Previous...": ["Configureer Tijdspanne: Vorige…"], - "Configure Time Range: Last...": ["Configureer Tijdspanne: Laatste…"], - "Configure custom time range": ["Configureer aangepaste tijdspanne"], - "Relative quantity": ["Relatieve hoeveelheid"], - "Relative period": [""], - "Anchor to": ["Veranker naar"], - "NOW": ["NU"], - "Date/Time": ["Datum/Tijd"], - "Return to specific datetime.": [ - "Terugkeren naar specifieke datum/tijd." + "Schedule a new email report": [ + "Plan een nieuw e-mailrapport" ], - "Syntax": ["Syntax"], - "Example": ["Voorbeeld"], - "Moves the given set of dates by a specified interval.": [ - "Verplaatst de gegeven reeks datums met een opgegeven interval." + "Message content": [ + "Inhoud van het bericht" ], - "Truncates the specified date to the accuracy specified by the date unit.": [ - "" + "Text embedded in email": [ + "Tekst ingesloten in e-mail" ], - "Get the last date by the date unit.": [ - "Verkrijg de laatste datum door de datum eenheid." + "Image (PNG) embedded in email": [ + "Afbeelding (PNG) ingesloten in e-mail" ], - "Get the specify date for the holiday": [ - "Zoek de specifieke datum voor de vakantie" + "Formatted CSV attached in email": [ + "Opgemaakte CSV gekoppeld aan e-mail" ], - "Previous": ["Vorige"], - "Custom": [""], - "previous calendar week": [""], - "previous calendar month": [""], - "previous calendar year": [""], - "Seconds %s": [""], - "Minutes %s": [""], - "Hours %s": [""], - "Days %s": [""], - "Weeks %s": [""], - "Months %s": [""], - "Quarters %s": [""], - "Years %s": [""], - "Specific Date/Time": [""], - "Relative Date/Time": [""], - "Now": [""], - "Midnight": [""], - "Saved expressions": [""], - "Saved": ["Opgeslagen"], - "%s column(s)": ["%s kolom(men)"], - "No temporal columns found": [""], - "No saved expressions found": [""], - "Add calculated temporal columns to dataset in \"Edit datasource\" modal": [ - "" + "Report Name": [ + "Rapport Naam" ], - "Add calculated columns to dataset in \"Edit datasource\" modal": [""], - " to mark a column as a time column": [""], - "Simple": ["Eenvoudig"], - "Mark a column as temporal in \"Edit datasource\" modal": [""], - "Custom SQL": ["Custom SQL"], - "My column": [""], - "This filter might be incompatible with current dataset": [""], - "This column might be incompatible with current dataset": [""], - "Click to edit label": [""], - "Drop columns/metrics here or click": [""], - "This metric might be incompatible with current dataset": [""], - "\n This filter was inherited from the dashboard's context.\n It won't be saved when saving the chart.\n ": [ - "\n Deze filter werd geërfd van de context van het dashboard.\n Dit wordt niet opgeslagen bij het opslaan van de grafiek.\n " + "Include a description that will be sent with your report": [ + "Voeg een beschrijving toe die zal worden verzonden met uw rapport" ], - "%s option(s)": ["%s optie(s)"], - "Select subject": [""], - "No such column found. To filter on a metric, try the Custom SQL tab.": [ - "Geen dergelijke kolom gevonden. Om te filteren op een meeteenheid, probeer het Custom SQL tabblad." + "Failed to update report": [ + "Bijwerken van rapport mislukt" ], - "To filter on a metric, use Custom SQL tab.": [ - "Om te filteren op een meeteenheid, gebruikt u het tabblad Aangepaste SQL." - ], - "%s operator(s)": ["%s operator(s)"], - "Select operator": [""], - "Comparator option": [""], - "Type a value here": ["Geef hier een waarde op"], - "Filter value (case sensitive)": ["Filterwaarde (hoofdlettergevoelig)"], - "choose WHERE or HAVING...": ["kies WHERE of HAVING…"], - "Filters by columns": ["Filter op kolommen"], - "Filters by metrics": ["Filter op meeteenheden"], - "Fixed": ["Vast"], - "Based on a metric": ["Gebaseerd op een meeteenheid"], - "My metric": ["Mijn meeteenheid"], - "Add metric": ["Meeteenheid toevoegen"], - "Select aggregate options": [""], - "%s aggregates(s)": ["%s aggrega(a)t(en)"], - "Select saved metrics": [""], - "%s saved metric(s)": ["%s opgeslagen meeteenhe(i)d(en)"], - "Saved metric": ["Opgeslagen meeteenheid"], - "No saved metrics found": [""], - "Add metrics to dataset in \"Edit datasource\" modal": [""], - "Simple ad-hoc metrics are not enabled for this dataset": [""], - "column": ["kolom"], - "aggregate": ["aggregaat"], - "Custom SQL ad-hoc metrics are not enabled for this dataset": [""], - "Error while fetching data: %s": [""], - "Time series columns": ["Time series kolommen"], - "Sparkline": [""], - "Period average": [""], - "Column header tooltip": [""], - "Type of comparison, value difference or percentage": [""], - "Width": ["Breedte"], - "Width of the sparkline": [""], - "Height of the sparkline": [""], - "Number of periods to compare against. You can use negative numbers to compare from the beginning of the time range.": [ - "" + "Failed to create report": [ + "Aanmaken rapport mislukt" ], - "Number of periods to ratio against": [""], - "Show Y-axis": [""], - "Show Y-axis on the sparkline. Will display the manually set min/max if set or min/max values in the data otherwise.": [ - "" + "Set up an email report": [ + "Stel een e-mailrapport in" ], - "Y-axis bounds": [""], - "Manually set min/max values for the y-axis.": [""], - "Color bounds": [""], - "Number bounds used for color encoding from red to blue.\n Reverse the numbers for blue to red. To get pure red or blue,\n you can enter either only min or max.": [ - "" + "Email reports active": [ + "E-mailrapporten actief" ], - "Optional d3 number format string": [""], - "Number format string": [""], - "Optional d3 date format string": [""], - "Select Viz Type": [""], - "Currently rendered: %s": [""], - "Search all charts": [""], - "No description available.": [""], - "Examples": ["Voorbeelden"], - "This visualization type is not supported.": [ - "Dit visualisatietype wordt niet ondersteund." + "Delete email report": [ + "E-mailrapport verwijderen" ], - "Select a visualization type": ["Selecteer een visualisatie type"], - "No results found": ["Geen resultaten gevonden"], - "Superset Chart": ["Superset Grafiek"], - "New chart": ["Nieuwe grafiek"], - "Edit chart properties": ["Grafiek eigenschappen bewerken"], - "Export to original .CSV": [""], - "Export to pivoted .CSV": [""], - "Embed code": [""], - "Run in SQL Lab": ["Uitvoeren in SQL Lab"], - "Code": ["Code"], - "Markup type": ["Opmaaktype(Markup type)"], - "Pick your favorite markup language": [ - "Kies uw favoriete opmaaktaal (markup language)" + "Schedule email report": [ + "Plan een e-mailrapport" ], - "Put your code here": ["Plaats je code hier"], - "URL parameters": ["URL parameters"], - "Extra parameters for use in jinja templated queries": [ - "Extra parameters voor gebruik in jinja templated queries" + "This action will permanently delete %s.": [ + "Deze actie zal %s permanent verwijderen." ], - "Annotations and layers": ["Aantekeningen en lagen"], - "Annotation layers": ["Aantekeningenlagen"], - "My beautiful colors": [""], - "< (Smaller than)": ["< (Kleiner dan)"], - "> (Larger than)": ["> (Groter dan)"], - "<= (Smaller or equal)": ["<= (Kleiner of gelijk)"], - ">= (Larger or equal)": [">= (Groter of gelijk)"], - "== (Is equal)": ["== (Is gelijk)"], - "!= (Is not equal)": ["!= (Is niet gelijk)"], - "Not null": ["Not null"], - "60 days": ["60 dagen"], - "90 days": ["90 dagen"], - "Send as PDF": [""], - "Send as PNG": [""], - "Send as CSV": [""], - "Send as text": [""], - "Alert condition": ["Naam waarschuwingsconditie"], - "Notification method": ["Methode voor kennisgeving"], - "content type": [""], - "database": ["database"], - "sql": [""], - "crontab": [""], - "Not all required fields are complete. Please provide the following:": [ - "" + "Delete Report?": [ + "Verwijder Rapport?" ], - "Add delivery method": ["Leveringswijze toevoegen"], - "report": ["rapport"], - "Edit Report": [""], - "Edit Alert": [""], - "Add Report": [""], - "Add Alert": [""], - "Add": ["Voeg toe"], - "Set up basic details, such as name and description.": [""], - "Report name": ["Naam rapport"], - "Alert name": ["Naam van de waarschuwing"], - "Alert is active": [""], - "Define the database, SQL query, and triggering conditions for alert.": [ - "" + "rowlevelsecurity": [ + "rij-level-beveiliging" ], - "SQL Query": ["SQL Query"], - "The result of this query must be a value capable of numeric interpretation e.g. 1, 1.0, or \"1\" (compatible with Python's float() function).": [ - "" + "Rule added": [ + "Regel toegevoegd" ], - "Trigger Alert If...": ["Trigger waarschuwing als…"], - "Condition": [""], - "Customize data source, filters, and layout.": [""], - "Content type": [""], - "Screenshot width": [""], - "Input custom width in pixels": [""], - "Define delivery schedule, timezone, and frequency settings.": [""], - "Timezone": [""], - "Log retention": ["Log retentie"], - "Working timeout": ["Time-out"], - "Time in seconds": ["Tijd in seconden"], - "Grace period": ["Grace periode"], - "Recurring (every)": [""], - "CRON expression": ["CRON expressie"], - "Report sent": ["Rapport verzonden"], - "Alert triggered, notification sent": [ - "Alarm geactiveerd, kennisgeving verzonden" + "Edit Rule": [ + "Bewerk Regel" ], - "Report sending": ["Rapport verzenden"], - "Alert running": ["Alarm actief"], - "Report failed": ["Rapport mislukt"], - "Alert failed": ["Waarschuwing mislukt"], - "Nothing triggered": ["Niets getriggerd"], - "Alert Triggered, In Grace Period": [ - "Waarschuwing geactiveerd, in grace periode" + "Add Rule": [ + "Regel toevoegen" ], - "Delivery method": [""], - "Select Delivery Method": [""], - "Recipients are separated by \",\" or \";\"": [ - "Ontvangers worden gescheiden door “,” of “;”" + "Rule Name": [ + "Regel Naam" ], - "No entities have this tag currently assigned": [""], - "Add tag to entities": [""], - "annotation_layer": ["annotation_layer"], - "Annotation template updated": [""], - "Annotation template created": [""], - "Edit annotation layer properties": [ - "Eigenschappen aantekeningenlaag bewerken" + "The name of the rule must be unique": [ + "De naam van de regel moet uniek zijn" ], - "Annotation layer name": ["Naam aantekeningenlaag"], - "Description (this can be seen in the list)": [ - "Omschrijving (dit is te zien in de lijst)" + "Regular filters add where clauses to queries if a user belongs to a role referenced in the filter, base filters apply filters to all queries except the roles defined in the filter, and can be used to define what users can see if no RLS filters within a filter group apply to them.": [ + "Normale filters voegen \"where\" clausules toe voor zoekopdrachten als een gebruiker deel uitmaakt van een rol waarnaar wordt verwezen in het filter, basisfilters passen filters toe op alle zoekopdrachten, behalve de rollen die gedefinieerd zijn in het filter, en kan worden gebruikt om te bepalen wat gebruikers kunnen zien als er geen RLB-filters binnen een filtergroep op hen van toepassing zijn." ], - "annotation": ["aantekening"], - "The annotation has been updated": [""], - "The annotation has been saved": [""], - "Edit annotation": ["Bewerk aantekening"], - "Add annotation": ["Aantekening toevoegen"], - "date": ["datum"], - "Additional information": ["Bijkomende informatie"], - "Please confirm": ["Gelieve te bevestigen"], - "Are you sure you want to delete": [ - "Weet je zeker dat je wilt verwijderen" + "These are the datasets this filter will be applied to.": [ + "Dit zijn de datasets waarop dit filter zal worden toegepast." ], - "Modified %s": [""], - "css_template": ["css_template"], - "Edit CSS template properties": ["Bewerk CSS template eigenschappen"], - "Add CSS template": ["Voeg CSS template toe"], - "css": ["css"], - "published": ["gepubliceerd"], - "draft": ["draft"], - "Adjust how this database will interact with SQL Lab.": [""], - "Expose database in SQL Lab": [""], - "Allow this database to be queried in SQL Lab": [ - "Sta toe dat deze database wordt opgevraagd in SQL Lab" + "Excluded roles": [ + "Uitgesloten rollen" ], - "Allow creation of new tables based on queries": [ - "Aanmaken van nieuwe tabellen op basis van query’s mogelijk maken" + "For regular filters, these are the roles this filter will be applied to. For base filters, these are the roles that the filter DOES NOT apply to, e.g. Admin if admin should see all data.": [ + "Voor reguliere filters zijn dit de rollen waarop dit filter zal worden toegepast. Voor de basisfilters zijn dit de rollen waarop het filter NIET van toepassing is, bijv. Admin als de beheerder alle gegevens zou moeten zien." ], - "Allow creation of new views based on queries": [ - "Aanmaken van nieuwe views gebaseerd op queries toestaan" + "Group Key": [ + "Groep Sleutel" ], - "CTAS & CVAS SCHEMA": ["CTAS & CVAS SCHEMA"], - "Create or select schema...": [""], - "Force all tables and views to be created in this schema when clicking CTAS or CVAS in SQL Lab.": [ - "" + "Filters with the same group key will be ORed together within the group, while different filter groups will be ANDed together. Undefined group keys are treated as unique groups, i.e. are not grouped together. For example, if a table has three filters, of which two are for departments Finance and Marketing (group key = 'department'), and one refers to the region Europe (group key = 'region'), the filter clause would apply the filter (department = 'Finance' OR department = 'Marketing') AND (region = 'Europe').": [ + "Filters met dezelfde groepssleutel worden binnen de groep ge-ORed, terwijl verschillende filtergroepen samen met elkaar worden ge-ANDed. Niet-gedefinieerde groepssleutels worden behandeld als unieke groepen, d.w.z. ze worden niet gegroepeerd. Bijvoorbeeld, als een tabel drie filters heeft, waarvan er twee voor afdelingen Financiën en Marketing zijn (groepssleutel = 'afdeling'), en er wordt verwezen naar de regio Europa (groepssleutel = 'regio'), de filterclausule zou het filter toepassen (afdeling = 'Financiën' OR afdeling = 'Marketing') AND (regio = 'Europa')." ], - "Allow manipulation of the database using non-SELECT statements such as UPDATE, DELETE, CREATE, etc.": [ - "Sta manipulatie van de database toe met niet-SELECT statements zoals UPDATE, DELETE, CREATE, enz." + "Clause": [ + "Clausule" ], - "Enable query cost estimation": [""], - "For Bigquery, Presto and Postgres, shows a button to compute cost before running a query.": [ - "" + "This is the condition that will be added to the WHERE clause. For example, to only return rows for a particular client, you might define a regular filter with the clause `client_id = 9`. To display no rows unless a user belongs to a RLS filter role, a base filter can be created with the clause `1 = 0` (always false).": [ + "Dit is de voorwaarde die aan de WHERE clausule zal worden toegevoegd. Om bijvoorbeeld alleen rijen terug te krijgen voor een bepaalde client, kan je een standaard filter definiëren met de clausule `client_id = 9`. Om geen rijen te weergeven, tenzij een gebruiker tot een RLB filterrol behoort, kan een basis filter kan worden gemaakt met de clausule `1 = 0` (altijd onwaar)." ], - "Allow this database to be explored": [""], - "When enabled, users are able to visualize SQL Lab results in Explore.": [ - "" + "Regular": [ + "Normaal" ], - "Disable SQL Lab data preview queries": [""], - "Disable data preview when fetching table metadata in SQL Lab. Useful to avoid browser performance issues when using databases with very wide tables.": [ - "" + "Base": [ + "Basis" ], - "Enable row expansion in schemas": [""], - "For Trino, describe full schemas of nested ROW types, expanding them with dotted paths": [ - "" + "%s items could not be tagged because you don’t have edit permissions to all selected objects.": [ + "%s items kunnen niet worden getagd omdat u geen bewerkrechten heeft voor de geselecteerde objecten." ], - "Performance": [""], - "Adjust performance settings of this database.": [""], - "Chart cache timeout": ["Grafiek cache timeout"], - "Enter duration in seconds": [""], - "Duration (in seconds) of the caching timeout for charts of this database. A timeout of 0 indicates that the cache never expires, and -1 bypasses the cache. Note this defaults to the global timeout if undefined.": [ - "" + "Tagged %s %ss": [ + "Getagt %s %ss" ], - "Schema cache timeout": [""], - "Duration (in seconds) of the metadata caching timeout for schemas of this database. If left unset, the cache never expires.": [ - "" + "Failed to tag items": [ + "Fout bij het taggen van items" ], - "Table cache timeout": [""], - "Duration (in seconds) of the metadata caching timeout for tables of this database. If left unset, the cache never expires. ": [ - "" + "Bulk tag": [ + "Bulk label" ], - "Asynchronous query execution": ["Asynchrone uitvoering van query’s"], - "Cancel query on window unload event": [""], - "Terminate running queries when browser window closed or navigated to another page. Available for Presto, Hive, MySQL, Postgres and Snowflake databases.": [ - "" + "You are adding tags to %s %ss": [ + "U voegt labels toe aan %s %ss" ], - "Secure extra": ["Secure extra"], - "JSON string containing additional connection configuration. This is used to provide connection information for systems like Hive, Presto and BigQuery which do not conform to the username:password syntax normally used by SQLAlchemy.": [ - "" + "tags": [ + "tags" ], - "Enter CA_BUNDLE": [""], - "Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.": [ - "" + "Select Tags": [ + "Selecteer Tags" ], - "Impersonate logged in user (Presto, Trino, Drill, Hive, and GSheets)": [ - "" + "Tag updated": [ + "Tag bijgewerkt" ], - "If Presto or Trino, 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.": [ - "" + "Tag created": [ + "Tag aangemaakt" ], - "Schemas allowed for File upload": [""], - "Additional settings.": [""], - "Metadata Parameters": [""], - "The metadata_params object gets unpacked into the sqlalchemy.MetaData call.": [ - "" + "Tag name": [ + "Tag naam" ], - "Engine Parameters": [""], - "The engine_params object gets unpacked into the sqlalchemy.create_engine call.": [ - "" + "Name of your tag": [ + "Naam van je tag" ], - "Version": [""], - "Version number": [""], - "Specify the database version. This is used with Presto for query cost estimation, and Dremio for syntax changes, among others.": [ - "" + "Add description of your tag": [ + "Voeg een beschrijving van je tag toe" ], - "Disable drill to detail": [""], - "Disables the drill to detail feature for this database.": [""], - "STEP %(stepCurr)s OF %(stepLast)s": [""], - "Enter Primary Credentials": [""], - "Need help? Learn how to connect your database": [""], - "Database connected": [""], - "Create a dataset to begin visualizing your data as a chart or go to\n SQL Lab to query your data.": [ - "" + "Select dashboards": [ + "Selecteer dashboards" ], - "Enter the required %(dbModelName)s credentials": [""], - "Need help? Learn more about": [""], - "connecting to %(dbModelName)s.": [""], - "SSH Host": [""], - "e.g. 127.0.0.1": [""], - "SSH Port": [""], - "e.g. Analytics": [""], - "Private Key & Password": [""], - "e.g. ********": [""], - "Private Key": [""], - "Paste Private Key here": [""], - "SSH Tunnel": [""], - "SSH Tunnel configuration parameters": [""], - "Display Name": ["Toon naam"], - "Name your database": [""], - "Pick a name to help you identify this database.": [ - "Kies een naam om je te helpen deze database te identificeren." + "Select saved queries": [ + "Selecteer opgeslagen queries" ], - "dialect+driver://username:password@host:port/database": [ - "dialect+driver://username:password@host:port/database" + "Chosen non-numeric column": [ + "Gekozen niet-numerieke kolom" ], - "Refer to the": [""], - "for more information on how to structure your URI.": [""], - "Test connection": ["Test connectie"], - "Please enter a SQLAlchemy URI to test": [ - "Voer een SQLAlchemy URI in om te testen" + "UI Configuration": [ + "UI Configuratie" ], - "e.g. world_population": [""], - "Database settings updated": [""], - "Sorry there was an error fetching database information: %s": [ - "Sorry er is een fout opgetreden bij het ophalen van database informatie: %s" + "Filter value is required": [ + "Filterwaarde is vereist" ], - "Or choose from a list of other databases we support:": [""], - "Supported databases": [""], - "Choose a database...": [""], - "Want to add a new database?": [""], - "Any databases that allow connections via SQL Alchemy URIs can be added. ": [ - "" + "User must select a value before applying the filter": [ + "Gebruiker moet een waarde selecteren voordat hij de filter toepast" ], - "Any databases that allow connections via SQL Alchemy URIs can be added. Learn about how to connect a database driver ": [ - "" + "Single value": [ + "Enkele waarde" ], - "Connect": [""], - "Finish": [""], - "This database is managed externally, and can't be edited in Superset": [ - "" + "Use only a single value.": [ + "Gebruik slechts één waarde." ], - "The passwords for the databases below are needed in order to import them. Please note that the \"Secure Extra\" and \"Certificate\" sections of the database configuration are not present in explore files and should be added manually after the import if they are needed.": [ - "" + "Range filter plugin using AntD": [ + "Bereik filterplugin met behulp van AntD" ], - "You are importing one or more databases that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?": [ - "Je importeert een of meer databases die al bestaan. Overschrijven kan ertoe leiden dat een deel van je werk verloren gaat. Weet je zeker dat je wilt overschrijven?" + "Experimental": [ + "Experimenteel" ], - "Database Creation Error": [""], - "We are unable to connect to your database. Click \"See more\" for database-provided information that may help troubleshoot the issue.": [ - "" + " (excluded)": [ + " (uitgesloten)" ], - "QUERY DATA IN SQL LAB": [""], - "Connect a database": [""], - "Edit database": ["Bewerk database"], - "Connect this database using the dynamic form instead": [""], - "Click this link to switch to an alternate form that exposes only the required fields needed to connect this database.": [ - "" + "Check for sorting ascending": [ + "Controle op oplopend sorteren" ], - "Additional fields may be required": [""], - "Select databases require additional fields to be completed in the Advanced tab to successfully connect the database. Learn what requirements your databases has ": [ - "" + "Can select multiple values": [ + "Kan meerdere waarden selecteren" ], - "Connect this database with a SQLAlchemy URI string instead": [""], - "Click this link to switch to an alternate form that allows you to input the SQLAlchemy URL for this database manually.": [ - "" + "Select first filter value by default": [ + "Selecteer de eerste filterwaarde als standaard" ], - "This can be either an IP address (e.g. 127.0.0.1) or a domain name (e.g. mydatabase.com).": [ - "" + "When using this option, default value can’t be set": [ + "Bij gebruik van deze optie kan de standaardwaarde niet worden ingesteld" ], - "Host": [""], - "e.g. 5432": [""], - "e.g. sql/protocolv1/o/12345": [""], - "Copy the name of the HTTP Path of your cluster.": [""], - "Copy the name of the database you are trying to connect to.": [""], - "Access token": [""], - "Pick a nickname for how the database will display in Superset.": [""], - "e.g. param1=value1¶m2=value2": [""], - "Additional Parameters": [""], - "Add additional custom parameters": [""], - "SSL Mode \"require\" will be used.": [""], - "Type of Google Sheets allowed": [""], - "Publicly shared sheets only": [""], - "Public and privately shared sheets": [""], - "How do you want to enter service account credentials?": [""], - "Upload JSON file": [""], - "Copy and Paste JSON credentials": [""], - "Service Account": [""], - "Paste content of service credentials JSON file here": [""], - "Copy and paste the entire service account .json file here": [""], - "Upload Credentials": [""], - "Use the JSON file you automatically downloaded when creating your service account.": [ - "" + "Inverse selection": [ + "Selectie omkeren" ], - "Connect Google Sheets as tables to this database": [""], - "Google Sheet Name and URL": [""], - "Enter a name for this sheet": [""], - "Paste the shareable Google Sheet URL here": [""], - "Add sheet": [""], - "Copy the identifier of the account you are trying to connect to.": [""], - "e.g. xy12345.us-east-2.aws": [""], - "e.g. compute_wh": [""], - "e.g. AccountAdmin": [""], - "The passwords for the databases below are needed in order to import them together with the datasets. Please note that the \"Secure Extra\" and \"Certificate\" sections of the database configuration are not present in export files, and should be added manually after the import if they are needed.": [ - "" + "Exclude selected values": [ + "Geselecteerde waarden uitsluiten" ], - "You are importing one or more datasets that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?": [ - "" + "Dynamically search all filter values": [ + "Dynamisch alle filterwaarden zoeken" ], - "This table already has a dataset associated with it. You can only associate one dataset with a table.\n": [ - "" + "By default, each filter loads at most 1000 choices at the initial page load. Check this box if you have more than 1000 filter values and want to enable dynamically searching that loads filter values as users type (may add stress to your database).": [ + "Standaard laadt elk filter maximaal 1000 keuzes bij de initiële lading. Vink dit selectievakje aan als u meer dan 1000 filterwaarden hebt en het dynamisch zoeken naar gebruikers als gebruikerstype wilt inschakelen (kan stress toevoegen aan uw database)." ], - "This table already has a dataset": [""], - "Datasets can be created from database tables or SQL queries. Select a database table to the left or ": [ - "" + "Select filter plugin using AntD": [ + "Selecteer filter plugin met behulp van AntD" ], - "create dataset from SQL query": [""], - " to open SQL Lab. From there you can save the query as a dataset.": [""], - "This database table does not contain any data. Please select a different table.": [ - "" + "Custom time filter plugin": [ + "Aangepaste tijdfilter plugin" ], - "Unable to load columns for the selected table. Please select a different table.": [ - "" + "No time columns": [ + "Geen tijdskolommen" ], - "The API response from %s does not match the IDatabaseTable interface.": [ - "" + "Time column filter plugin": [ + "Tijdkolom filter plugin" ], - "Usage": [""], - "Create chart with dataset": [""], - "chart": ["grafiek"], - "No charts": ["Geen grafieken"], - "This dataset is not used to power any charts.": [""], - "Select a database table and create dataset": [""], - "[Untitled]": ["[Untitled]"], - "Unknown": ["Onbekend"], - "Viewed %s": [""], - "Edited": ["Bewerkt"], - "Created": ["Aangemaakt"], - "Viewed": ["Bekeken"], - "Favorite": ["Favoriet"], - "Mine": ["Mijn"], - "View All »": [""], - "An error occurred while fetching dashboards: %s": [ - "Er is een fout opgetreden tijdens het ophalen van dashboards: %s" + "Time grain filter plugin": [ + "Tijdsinterval filter plugin" ], - "charts": [""], - "dashboards": [""], - "recents": [""], - "saved queries": [""], - "%(other)s charts will appear here": [""], - "%(other)s dashboards will appear here": [""], - "%(other)s recents will appear here": [""], - "Recently viewed charts, dashboards, and saved queries will appear here": [ - "Onlangs bekeken grafieken, dashboards, en opgeslagen queries zullen hier verschijnen" + "Working": [ + "Werken" ], - "Recently created charts, dashboards, and saved queries will appear here": [ - "Recent gemaakte grafieken, dashboards en opgeslagen queries verschijnen hier" + "Not triggered": [ + "Niet geactiveerd" ], - "Recently edited charts, dashboards, and saved queries will appear here": [ - "Recent bewerkte grafieken, dashboards en opgeslagen queries verschijnen hier" + "On Grace": [ + "Op Grace" ], - "SQL query": ["SQL query"], - "You don't have any favorites yet!": ["Je hebt nog geen favorieten!"], - "See all %(tableName)s": [""], - "Connect Google Sheet": [""], - "Upload columnar file to database": [""], - "Upload Excel file to database": [""], - "Enable 'Allow file uploads to database' in any database's settings": [ - "" + "reports": [ + "rapporten" ], - "Info": ["Info"], - "Logout": ["Afmelden"], - "About": ["Over"], - "Powered by Apache Superset": [""], - "SHA": [""], - "Documentation": [""], - "Report a bug": [""], - "Login": ["Aanmelden"], - "query": ["query"], - "Deleted: %s": ["Verwijderd: %s"], - "There was an issue deleting %s: %s": [ - "Er was een probleem met het verwijderen van %s: %s" + "alerts": [ + "waarschuwingen" ], - "This action will permanently delete the saved query.": [ - "Deze actie zal de opgeslagen query permanent verwijderen." + "There was an issue deleting the selected %s: %s": [ + "Er was een probleem met het verwijderen van de geselecteerde %s: %s" ], - "Delete Query?": ["Verwijder Query?"], - "Ran %s": [""], - "Saved queries": ["Opgeslagen queries"], - "Next": ["Volgende"], - "Tab name": ["Tab naam"], - "User query": ["User query"], - "Executed query": ["Uitgevoerde query"], - "Query name": ["Query naam"], - "SQL Copied!": ["SQL gekopieerd!"], - "Sorry, your browser does not support copying.": [ - "Sorry, uw browser ondersteunt het kopiëren niet." + "Last run": [ + "Laatste run" ], - "There was an issue fetching reports attached to this dashboard.": [""], - "The report has been created": [""], - "We were unable to active or deactivate this report.": [""], - "Your report could not be deleted": [""], - "Weekly Report for %s": [""], - "Weekly Report": [""], - "Edit email report": [""], - "Message content": ["Inhoud van het bericht"], - "Text embedded in email": [""], - "Image (PNG) embedded in email": [""], - "Formatted CSV attached in email": [""], - "Include a description that will be sent with your report": [""], - "The report will be sent to your email at": [""], - "Failed to update report": [""], - "Failed to create report": [""], - "Set up an email report": [""], - "Email reports active": [""], - "Delete email report": [""], - "Schedule email report": [""], - "This action will permanently delete %s.": [ - "Deze actie zal %s permanent verwijderen." + "Active": [ + "Actief" ], - "Delete Report?": [""], - "Rule added": [""], - "Add Rule": [""], - "Regular filters add where clauses to queries if a user belongs to a role referenced in the filter, base filters apply filters to all queries except the roles defined in the filter, and can be used to define what users can see if no RLS filters within a filter group apply to them.": [ - "" + "Execution log": [ + "Uitvoeringslog" ], - "Excluded roles": [""], - "For regular filters, these are the roles this filter will be applied to. For base filters, these are the roles that the filter DOES NOT apply to, e.g. Admin if admin should see all data.": [ - "" + "Bulk select": [ + "Selecteer in bulk" ], - "Filters with the same group key will be ORed together within the group, while different filter groups will be ANDed together. Undefined group keys are treated as unique groups, i.e. are not grouped together. For example, if a table has three filters, of which two are for departments Finance and Marketing (group key = 'department'), and one refers to the region Europe (group key = 'region'), the filter clause would apply the filter (department = 'Finance' OR department = 'Marketing') AND (region = 'Europe').": [ - "" + "No %s yet": [ + "Nog geen %s" ], - "Clause": ["Clausule"], - "This is the condition that will be added to the WHERE clause. For example, to only return rows for a particular client, you might define a regular filter with the clause `client_id = 9`. To display no rows unless a user belongs to a RLS filter role, a base filter can be created with the clause `1 = 0` (always false).": [ - "" + "Owner": [ + "Eigenaar" ], - "Regular": [""], - "%s items could not be tagged because you don’t have edit permissions to all selected objects.": [ - "" + "All": [ + "Alle" ], - "Tagged %s %ss": [""], - "Bulk tag": [""], - "You are adding tags to %s %ss": [""], - "Name of your tag": [""], - "Chosen non-numeric column": ["Gekozen niet-numerieke kolom"], - "UI Configuration": [""], - "Filter value is required": [""], - "User must select a value before applying the filter": [""], - "Single value": [""], - "Use only a single value.": [""], - "Range filter plugin using AntD": [""], - "Experimental": [""], - " (excluded)": [""], - "Check for sorting ascending": ["Controle op oplopend sorteren"], - "Can select multiple values": [""], - "Select first filter value by default": [""], - "When using this option, default value can’t be set": [""], - "Inverse selection": [""], - "Exclude selected values": [""], - "Dynamically search all filter values": [""], - "By default, each filter loads at most 1000 choices at the initial page load. Check this box if you have more than 1000 filter values and want to enable dynamically searching that loads filter values as users type (may add stress to your database).": [ - "" + "An error occurred while fetching owners values: %s": [ + "Er is een fout opgetreden bij het ophalen van eigenaars waarden: %s" ], - "Select filter plugin using AntD": [""], - "Custom time filter plugin": [""], - "No time columns": ["Geen tijdskolommen"], - "Time column filter plugin": [""], - "Time grain filter plugin": [""], - "Working": [""], - "Not triggered": [""], - "On Grace": [""], - "reports": ["rapporten"], - "alerts": ["waarschuwingen"], - "There was an issue deleting the selected %s: %s": [ - "Er was een probleem met het verwijderen van de geselecteerde %s: %s" + "Status": [ + "Status" ], - "Last run": ["Laatste run"], - "Active": ["Actief"], - "Execution log": ["Uitvoeringslog"], - "Bulk select": ["Selecteer in bulk"], - "No %s yet": ["Nog geen %s"], - "Owner": ["Eigenaar"], - "All": ["Alle"], - "Status": ["Status"], "An error occurred while fetching dataset datasource values: %s": [ - "Er is een fout opgetreden bij het ophalen van dataset datasource waarden: %s" + "Er is een fout opgetreden bij het ophalen van dataset gegevensbron waarden: %s" + ], + "Alerts & reports": [ + "Waarschuwingen & rapporten" + ], + "Alerts": [ + "Waarschuwingen" + ], + "Reports": [ + "Rapporten" + ], + "Delete %s?": [ + "%s verwijderen?" ], - "Alerts & reports": ["Waarschuwingen & rapporten"], - "Alerts": ["Waarschuwingen"], - "Reports": ["Rapporten"], - "Delete %s?": ["%s verwijderen?"], "Are you sure you want to delete the selected %s?": [ "Weet u zeker dat u de geselecteerde %s wilt verwijderen?" ], + "Error Fetching Tagged Objects": [ + "Fout bij ophalen van getagde objecten" + ], + "Edit Tag": [ + "Bewerk Tag" + ], "There was an issue deleting the selected layers: %s": [ "Er was een probleem met het verwijderen van de geselecteerde lagen: %s" ], - "Edit template": ["Bewerk template"], - "Delete template": ["Verwijder template"], - "No annotation layers yet": ["Nog geen aantekeningen lagen"], + "Edit template": [ + "Bewerk template" + ], + "Delete template": [ + "Verwijder template" + ], + "Changed by": [ + "Gewijzigd door" + ], + "No annotation layers yet": [ + "Nog geen aantekeningen lagen" + ], "This action will permanently delete the layer.": [ "Deze actie zal de laag permanent verwijderen." ], - "Delete Layer?": ["Laag verwijderen?"], + "Delete Layer?": [ + "Laag verwijderen?" + ], "Are you sure you want to delete the selected layers?": [ "Weet je zeker dat je de geselecteerde lagen wilt verwijderen?" ], "There was an issue deleting the selected annotations: %s": [ "Er was een probleem met het verwijderen van de geselecteerde aantekeningen: %s" ], - "Delete annotation": ["Aantekening verwijderen"], - "Annotation": ["Aantekening"], - "No annotation yet": ["Nog geen aantekeningen"], - "Back to all": [""], - "Delete Annotation?": ["Aantekening verwijderen?"], + "Delete annotation": [ + "Aantekening verwijderen" + ], + "Annotation": [ + "Aantekening" + ], + "No annotation yet": [ + "Nog geen aantekeningen" + ], + "Annotation Layer %s": [ + "Aannotatielaag %s" + ], + "Back to all": [ + "Terug naar alles" + ], + "Are you sure you want to delete %s?": [ + "Weet u zeker dat u %s wilt verwijderen?" + ], + "Delete Annotation?": [ + "Aantekening verwijderen?" + ], "Are you sure you want to delete the selected annotations?": [ "Weet u zeker dat u de geselecteerde aantekeningen wilt verwijderen?" ], - "Failed to load chart data": [""], - "Choose a dataset": ["Kies een dataset"], - "Choose chart type": [""], - "Please select both a Dataset and a Chart type to proceed": [""], + "Failed to load chart data": [ + "Laden van grafiekgegevens mislukt" + ], + "view instructions": [ + "bekijk instructies" + ], + "Add a dataset": [ + "Een dataset toevoegen" + ], + "Choose a dataset": [ + "Kies een dataset" + ], + "Choose chart type": [ + "Kies grafiektype" + ], + "Please select both a Dataset and a Chart type to proceed": [ + "Selecteer een Dataset en een grafiek type om verder te gaan" + ], "The passwords for the databases below are needed in order to import them together with the charts. Please note that the \"Secure Extra\" and \"Certificate\" sections of the database configuration are not present in export files, and should be added manually after the import if they are needed.": [ - "" + "De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met de grafieken te importeren. Houd er rekening mee dat de secties \"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden toegevoegd na de import." ], "You are importing one or more charts that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?": [ - "" + "U importeert een of meer grafieken die al bestaan. Overschrijven kan leiden tot verlies van je werk. Weet je zeker dat je wilt overschrijven?" + ], + "Chart imported": [ + "Grafiek geïmporteerd" ], - "Chart imported": [""], "There was an issue deleting the selected charts: %s": [ "Er was een probleem met het verwijderen van de geselecteerde grafieken: %s" ], - "An error occurred while fetching dashboards": [""], - "Any": ["Elke"], - "Tag": [""], + "An error occurred while fetching dashboards": [ + "Er is een fout opgetreden bij het ophalen van dashboards" + ], + "Any": [ + "Elke" + ], + "Tag": [ + "Tag" + ], "An error occurred while fetching chart owners values: %s": [ "Er is een fout opgetreden tijdens het ophalen van de grafiek eigenaars waarden: %s" ], - "Certified": [""], - "Alphabetical": ["Alfabetisch"], - "Recently modified": ["Recent gewijzigd"], - "Least recently modified": ["Meest recente wijziging"], - "Import charts": ["Import grafieken "], + "Certified": [ + "Gecertificeerd" + ], + "Alphabetical": [ + "Alfabetisch" + ], + "Recently modified": [ + "Recent gewijzigd" + ], + "Least recently modified": [ + "Meest recente wijziging" + ], + "Import charts": [ + "Import grafieken" + ], "Are you sure you want to delete the selected charts?": [ "Weet je zeker dat je de geselecteerde grafieken wilt verwijderen?" ], - "CSS templates": ["CSS templates"], + "CSS templates": [ + "CSS templates" + ], "There was an issue deleting the selected templates: %s": [ "Er was een probleem met het verwijderen van de geselecteerde templates: %s" ], - "CSS template": ["CSS template"], + "CSS template": [ + "CSS template" + ], "This action will permanently delete the template.": [ "Deze actie zal de template permanent verwijderen." ], - "Delete Template?": ["Template verwijderen?"], + "Delete Template?": [ + "Template verwijderen?" + ], "Are you sure you want to delete the selected templates?": [ "Weet je zeker dat je de geselecteerde sjablonen wilt verwijderen?" ], "The passwords for the databases below are needed in order to import them together with the dashboards. Please note that the \"Secure Extra\" and \"Certificate\" sections of the database configuration are not present in export files, and should be added manually after the import if they are needed.": [ - "" + "De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met de dashboards te importeren. Houd er rekening mee dat de secties \"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden toegevoegd na de import." ], "You are importing one or more dashboards that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?": [ "Je importeert een of meer dashboards die al bestaan. Overschrijven kan ertoe leiden dat je een deel van je werk verloren gaat. Weet je zeker dat je wilt overschrijven?" ], - "Dashboard imported": [""], + "Dashboard imported": [ + "Dashboard geïmporteerd" + ], "There was an issue deleting the selected dashboards: ": [ "Er was een probleem met het verwijderen van de geselecteerde dashboards: " ], @@ -4719,25 +11288,57 @@ "An error occurred while fetching database related data: %s": [ "Er is een fout opgetreden tijdens het ophalen van databasegerelateerde gegevens: %s" ], - "Upload columnar file": [""], - "AQE": ["AQE"], - "Allow data manipulation language": ["Sta data manipulatie taal toe"], - "DML": ["DML"], - "CSV upload": ["CSV upload"], - "Delete database": ["Verwijder database"], + "Upload file to database": [ + "Upload bestand naar database" + ], + "Upload CSV": [ + "Upload CSV" + ], + "Upload columnar file": [ + "Upload kolombestand" + ], + "Upload Excel file": [ + "Upload Excel-bestand" + ], + "AQE": [ + "AQE" + ], + "Allow data manipulation language": [ + "Sta data manipulatie taal toe" + ], + "DML": [ + "DML" + ], + "CSV upload": [ + "CSV upload" + ], + "Delete database": [ + "Verwijder database" + ], "The database %s is linked to %s charts that appear on %s dashboards and users have %s SQL Lab tabs using this database open. Are you sure you want to continue? Deleting the database will break those objects.": [ - "" + "De database %s is gekoppeld aan %s grafieken die verschijnen op %s dashboards en gebruikers hebben %s SQL Lab tabbladen met behulp van deze database. Weet u zeker dat u wilt doorgaan? Verwijderen van de database zal deze objecten breken." + ], + "Delete Database?": [ + "Database verwijderen?" + ], + "Dataset imported": [ + "Dataset geïmporteerd" ], - "Delete Database?": ["Database verwijderen?"], - "Dataset imported": [""], "An error occurred while fetching dataset related data": [ "Er is een fout opgetreden tijdens het ophalen van dataset gerelateerde gegevens" ], "An error occurred while fetching dataset related data: %s": [ "Er is een fout opgetreden tijdens het ophalen van gegevens over de dataset: %s" ], - "Physical dataset": ["Fysieke dataset"], - "Virtual dataset": ["Virtuele dataset"], + "Physical dataset": [ + "Fysieke dataset" + ], + "Virtual dataset": [ + "Virtuele dataset" + ], + "Virtual": [ + "Virtueel" + ], "An error occurred while fetching datasets: %s": [ "Er is een fout opgetreden bij het ophalen van datasets: %s" ], @@ -4747,96 +11348,213 @@ "An error occurred while fetching dataset owner values: %s": [ "Er is een fout opgetreden tijdens het ophalen van de eigenaarswaarden van de dataset: %s" ], - "Import datasets": ["Importeer datasets"], + "Import datasets": [ + "Importeer datasets" + ], "There was an issue deleting the selected datasets: %s": [ "Er was een probleem bij het verwijderen van de geselecteerde datasets: %s" ], + "There was an issue duplicating the dataset.": [ + "Er was een probleem bij het dupliceren van de dataset." + ], + "There was an issue duplicating the selected datasets: %s": [ + "Er was een probleem met het dupliceren van de geselecteerde datasets: %s" + ], "The dataset %s is linked to %s charts that appear on %s dashboards. Are you sure you want to continue? Deleting the dataset will break those objects.": [ - "" + "De dataset %s is gekoppeld aan %s grafieken die verschijnen op %s dashboards. Weet u zeker dat u wilt doorgaan? Het verwijderen van de dataset zal deze objecten verbreken." + ], + "Delete Dataset?": [ + "Dataset verwijderen?" ], - "Delete Dataset?": ["Dataset verwijderen?"], "Are you sure you want to delete the selected datasets?": [ "Weet je zeker dat je de geselecteerde datasets wilt verwijderen?" ], - "0 Selected": ["0 Geselecteerd"], - "%s Selected (Virtual)": ["%s Geselecteerd (Virtueel)"], - "%s Selected (Physical)": ["%s Geselecteerd (Fysiek)"], + "0 Selected": [ + "0 Geselecteerd" + ], + "%s Selected (Virtual)": [ + "%s Geselecteerd (Virtueel)" + ], + "%s Selected (Physical)": [ + "%s Geselecteerd (Fysiek)" + ], "%s Selected (%s Physical, %s Virtual)": [ "%s Geselecteerd (%s Fysiek, %s Virtueel)" ], - "log": ["log"], - "Execution ID": ["Uitvoerings ID"], - "Scheduled at (UTC)": ["Gepland om (UTC)"], - "Start at (UTC)": ["Start op (UTC)"], - "Error message": ["Foutmelding"], + "log": [ + "log" + ], + "Execution ID": [ + "Uitvoerings ID" + ], + "Scheduled at (UTC)": [ + "Gepland om (UTC)" + ], + "Start at (UTC)": [ + "Start op (UTC)" + ], + "Error message": [ + "Foutmelding" + ], + "Alert": [ + "Waarschuwing" + ], "There was an issue fetching your recent activity: %s": [ "Er was een probleem bij het ophalen van uw recente activiteit: %s" ], - "Thumbnails": [""], - "Recents": ["Recente"], + "There was an issue fetching your dashboards: %s": [ + "Er was een probleem bij het ophalen van uw dashboards: %s" + ], + "There was an issue fetching your chart: %s": [ + "Er was een probleem bij het ophalen van uw grafiek: %s" + ], + "There was an issue fetching your saved queries: %s": [ + "Er was een probleem bij het ophalen van uw opgeslagen queries: %s" + ], + "Thumbnails": [ + "Thumbnails" + ], + "Recents": [ + "Recente" + ], "There was an issue previewing the selected query. %s": [ "Er was een probleem met het bekijken van de geselecteerde query. %s" ], - "TABLES": ["TABLES"], - "Open query in SQL Lab": ["Open query in SQL Lab"], + "TABLES": [ + "TABLES" + ], + "Open query in SQL Lab": [ + "Open query in SQL Lab" + ], "An error occurred while fetching database values: %s": [ "Er is een fout opgetreden tijdens het ophalen van databasewaarden: %s" ], - "An error occurred while fetching user values: %s": [""], - "Search by query text": ["Zoek op querytekst"], + "An error occurred while fetching user values: %s": [ + "Er is een fout opgetreden bij het ophalen van gebruikers waarden: %s" + ], + "Search by query text": [ + "Zoek op querytekst" + ], + "Deleted %s": [ + "Verwijderd %s" + ], + "Deleted": [ + "Verwijderd" + ], + "There was an issue deleting rules: %s": [ + "Er was een probleem met het verwijderen van regels: %s" + ], + "No Rules yet": [ + "Nog geen regels" + ], + "Are you sure you want to delete the selected rules?": [ + "Weet u zeker dat u de geselecteerde regels wilt verwijderen?" + ], "The passwords for the databases below are needed in order to import them together with the saved queries. Please note that the \"Secure Extra\" and \"Certificate\" sections of the database configuration are not present in export files, and should be added manually after the import if they are needed.": [ - "" + "De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met de opgeslagen queries te importeren. Houd er rekening mee dat de secties \"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden toegevoegd na de import." ], "You are importing one or more saved queries that already exist. Overwriting might cause you to lose some of your work. Are you sure you want to overwrite?": [ - "" + "U importeert een of meer opgeslagen query's die al bestaan. Overschrijven kan leiden tot verlies van je werk. Weet je zeker dat je wilt overschrijven?" + ], + "Query imported": [ + "Query geïmporteerd" ], - "Query imported": [""], "There was an issue previewing the selected query %s": [ "Er was een probleem met het bekijken van de geselecteerde query %s" ], - "Import queries": ["Importeer queries"], - "Link Copied!": ["Link gekopieerd!"], + "Import queries": [ + "Importeer queries" + ], + "Link Copied!": [ + "Link gekopieerd!" + ], "There was an issue deleting the selected queries: %s": [ "Er was een probleem bij het verwijderen van de geselecteerde query’s: %s" ], - "Edit query": ["Bewerk query"], - "Copy query URL": ["Kopieer query URL"], - "Export query": ["Exporteer query"], - "Delete query": ["Verwijder query"], + "Edit query": [ + "Bewerk query" + ], + "Copy query URL": [ + "Kopieer query URL" + ], + "Export query": [ + "Exporteer query" + ], + "Delete query": [ + "Verwijder query" + ], "Are you sure you want to delete the selected queries?": [ "Weet je zeker dat je de geselecteerde query’s wilt verwijderen?" ], - "queries": ["queries"], - "tag": [""], - "Image download failed, please refresh and try again.": [""], - "PDF download failed, please refresh and try again.": [""], + "queries": [ + "queries" + ], + "tag": [ + "tag" + ], + "No Tags created": [ + "Geen Labels aangemaakt" + ], + "Are you sure you want to delete the selected tags?": [ + "Weet u zeker dat u de geselecteerde tags wilt verwijderen?" + ], + "Image download failed, please refresh and try again.": [ + "Afbeelding downloaden mislukt, gelieve te vernieuwen en probeer het opnieuw." + ], + "PDF download failed, please refresh and try again.": [ + "PDF download is mislukt, vernieuw en probeer het opnieuw." + ], "Select values in highlighted field(s) in the control panel. Then run the query by clicking on the %s button.": [ - "" + "Selecteer de waarden in de gemarkeerde veld(en) in het controlepaneel. Voer vervolgens de query uit door te klikken op de %s knop." + ], + "An error occurred while fetching %s info: %s": [ + "Er is een fout opgetreden bij het ophalen van %s info: %s" + ], + "An error occurred while fetching %ss: %s": [ + "Er is een fout opgetreden bij het ophalen van %s: %s" + ], + "An error occurred while creating %ss: %s": [ + "Er is een fout opgetreden tijdens het aanmaken van %s: %s" + ], + "Please re-export your file and try importing again": [ + "Exporteer uw bestand opnieuw en probeer opnieuw te importeren" + ], + "An error occurred while importing %s: %s": [ + "Er is een fout opgetreden tijdens het importeren van %s: %s" + ], + "There was an error fetching the favorite status: %s": [ + "Er is een fout opgetreden bij het ophalen van de favoriete status: %s" + ], + "There was an error saving the favorite status: %s": [ + "Er is een fout opgetreden bij het opslaan van de favoriete status: %s" + ], + "Connection looks good!": [ + "Verbinding ziet er goed uit!" + ], + "ERROR: %s": [ + "FOUT: %s" ], - "An error occurred while fetching %s info: %s": [""], - "An error occurred while fetching %ss: %s": [""], - "An error occurred while creating %ss: %s": [""], - "Please re-export your file and try importing again": [""], - "An error occurred while importing %s: %s": [""], - "There was an error fetching the favorite status: %s": [""], - "There was an error saving the favorite status: %s": [""], - "Connection looks good!": [""], - "ERROR: %s": [""], "There was an error fetching your recent activity:": [ "Er is een fout opgetreden bij het ophalen van uw recente activiteit:" ], "There was an issue deleting: %s": [ "Er was een probleem bij het verwijderen van: %s" ], - "URL": ["URL"], + "URL": [ + "URL" + ], "Templated link, it's possible to include {{ metric }} or other values coming from the controls.": [ - "" + "Sjabloonlink, het is mogelijk om {{ metric }} of andere waarden uit de bedieningselementen op te nemen." + ], + "Time-series Table": [ + "Tijdreeks Tabel" ], - "Time-series Table": ["Time-series Table"], "Compare multiple time series charts (as sparklines) and related metrics quickly.": [ - "" + "Vergelijk snel meerdere tijds-series grafieken (als sparklines) en gerelateerde metrieken." ], - "We have the following keys: %s": [""] + "We have the following keys: %s": [ + "We hebben de volgende sleutels: %s" + ] } } } diff --git a/superset/translations/nl/LC_MESSAGES/messages.po b/superset/translations/nl/LC_MESSAGES/messages.po index f215c15e958a3..ca546fbcd9523 100644 --- a/superset/translations/nl/LC_MESSAGES/messages.po +++ b/superset/translations/nl/LC_MESSAGES/messages.po @@ -1,11 +1,3 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an @@ -19,13 +11,13 @@ # FIRST AUTHOR , 2021. msgid "" msgstr "" -"Project-Id-Version: Superset VERSION\n" +"Project-Id-Version: superset-ds\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2024-04-15 10:02+0200\n" -"PO-Revision-Date: 2022-02-25 11:59+0100\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2024-05-08 14:41+0000\n" +"Last-Translator: \n" "Language: nl\n" -"Language-Team: nl \n" +"Language-Team: Dutch\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -49,6 +41,8 @@ msgid "" "There is a syntax error in the SQL query. Perhaps there was a misspelling" " or a typo." msgstr "" +"Er is een syntax fout in de SQL query. Misschien was er een spelling of " +"een typo." #: superset/errors.py:111 msgid "The column was deleted or renamed in the database." @@ -73,10 +67,12 @@ msgstr "De poort is gesloten." #: superset/errors.py:116 msgid "The host might be down, and can't be reached on the provided port." msgstr "" +"De host is mogelijk niet beschikbaar en kan niet worden bereikt op de " +"opgegeven poort." #: superset/errors.py:117 msgid "Superset encountered an error while running a command." -msgstr "een fout is opgetreden in Superset tijdens het uitvoeren van een commando." +msgstr "Een fout is opgetreden in Superset tijdens het uitvoeren van een commando." #: superset/errors.py:118 msgid "Superset encountered an unexpected error." @@ -85,10 +81,14 @@ msgstr "Er is een onverwachte fout opgetreden in Superset." #: superset/errors.py:119 msgid "The username provided when connecting to a database is not valid." msgstr "" +"De opgegeven gebruikersnaam tijdens het verbinden met een database is " +"niet geldig." #: superset/errors.py:120 msgid "The password provided when connecting to a database is not valid." msgstr "" +"Het opgegeven wachtwoord bij het verbinden met een database is niet " +"geldig." #: superset/errors.py:121 msgid "Either the username or the password is wrong." @@ -96,7 +96,7 @@ msgstr "Ofwel is de gebruikersnaam ofwel het wachtwoord verkeerd." #: superset/errors.py:122 msgid "Either the database is spelled incorrectly or does not exist." -msgstr "" +msgstr "Of de database is onjuist gespeld of bestaat niet." #: superset/errors.py:123 msgid "The schema was deleted or renamed in the database." @@ -109,22 +109,26 @@ msgstr "Gebruiker heeft niet de juiste permissies." #: superset/errors.py:125 msgid "One or more parameters needed to configure a database are missing." msgstr "" +"Er ontbreken een of meer parameters die nodig zijn om een database te " +"configureren." #: superset/errors.py:126 msgid "The submitted payload has the incorrect format." -msgstr "" +msgstr "De ingediende payload heeft een onjuist formaat." #: superset/errors.py:127 msgid "The submitted payload has the incorrect schema." -msgstr "" +msgstr "De ingediende payload heeft een onjuist schema." #: superset/errors.py:128 msgid "Results backend needed for asynchronous queries is not configured." msgstr "" +"Resultaten die nodig zijn voor asynchrone query's zijn niet " +"geconfigureerd." #: superset/errors.py:129 msgid "Database does not allow data manipulation." -msgstr "" +msgstr "Database staat geen gegevensmanipulatie toe." #: superset/errors.py:130 msgid "" @@ -132,69 +136,73 @@ msgid "" "end. Please make sure your query has a SELECT as its last statement. " "Then, try running your query again." msgstr "" +"De CTAS (create table as select) heeft geen SELECT instructie aan het " +"einde. Zorg ervoor dat uw query als laatste verklaring een SELECT heeft. " +"Probeer vervolgens uw zoekopdracht opnieuw uit te voeren." #: superset/errors.py:135 msgid "CVAS (create view as select) query has more than one statement." -msgstr "" +msgstr "CVAS (create view as select) query heeft meer dan één instructie." #: superset/errors.py:136 msgid "CVAS (create view as select) query is not a SELECT statement." -msgstr "" +msgstr "CVAS (create view as select) query is geen SELECT instructie." #: superset/errors.py:137 msgid "Query is too complex and takes too long to run." -msgstr "" +msgstr "Query is te complex en duurt te lang om te werken." #: superset/errors.py:138 msgid "The database is currently running too many queries." -msgstr "" +msgstr "De database draait momenteel te veel query's." #: superset/errors.py:139 -#, fuzzy msgid "One or more parameters specified in the query are malformed." -msgstr "Een of meer in de query opgegeven parameters ontbreken." +msgstr "Een of meer parameters die in de query zijn opgegeven zijn ongeldig." #: superset/errors.py:140 msgid "The object does not exist in the given database." -msgstr "" +msgstr "Het object bestaat niet in de opgegeven database." #: superset/errors.py:141 msgid "The query has a syntax error." -msgstr "" +msgstr "De query heeft een syntax fout." #: superset/errors.py:142 msgid "The results backend no longer has the data from the query." -msgstr "" +msgstr "De resultaten backend heeft de gegevens van de query niet meer." #: superset/errors.py:143 msgid "The query associated with the results was deleted." -msgstr "" +msgstr "De query die is gekoppeld aan de resultaten is verwijderd." #: superset/errors.py:144 msgid "" "The results stored in the backend were stored in a different format, and " "no longer can be deserialized." msgstr "" +"De resultaten in de backend werden opgeslagen in een ander formaat en " +"kunnen niet langer gedeserialiseerd worden." #: superset/errors.py:148 msgid "The port number is invalid." -msgstr "" +msgstr "Het poortnummer is ongeldig." #: superset/errors.py:149 superset/sqllab/sql_json_executer.py:190 msgid "Failed to start remote query on a worker." -msgstr "" +msgstr "Het starten van externe query op een werker is mislukt." #: superset/errors.py:150 msgid "The database was deleted." -msgstr "" +msgstr "De database is verwijderd." #: superset/errors.py:151 superset/models/helpers.py:137 msgid "Custom SQL fields cannot contain sub-queries." -msgstr "" +msgstr "Aangepaste SQL velden mogen geen sub-query's bevatten." #: superset/errors.py:152 msgid "The submitted payload failed validation." -msgstr "" +msgstr "De ingezonden payload kon niet worden gevalideerd." #: superset/databases/schemas.py:199 superset/exceptions.py:196 msgid "Invalid certificate" @@ -202,7 +210,7 @@ msgstr "Ongeldig certificaat" #: superset/exceptions.py:292 msgid "The schema of the submitted payload is invalid." -msgstr "" +msgstr "Het schema van de ingediende payload is ongeldig." #: superset/exceptions.py:309 msgid "The SQL is invalid and cannot be parsed." @@ -211,7 +219,7 @@ msgstr "" #: superset/forms.py:72 #, python-format msgid "File size must be less than or equal to %(max_size)s bytes" -msgstr "" +msgstr "Bestandsgrootte moet kleiner of gelijk zijn aan %(max_size)s bytes" #: superset/jinja_context.py:361 #, python-format @@ -247,7 +255,7 @@ msgstr "" #: superset/sql_lab.py:240 msgid "Only SELECT statements are allowed against this database." -msgstr "" +msgstr "Alleen SELECT statements zijn toegestaan tegen deze database." #: superset/sql_lab.py:306 #, python-format @@ -255,10 +263,12 @@ msgid "" "The query was killed after %(sqllab_timeout)s seconds. It might be too " "complex, or the database might be under heavy load." msgstr "" +"De zoekopdracht is afgesloten na %(sqllab_timeout)s seconden. Het is " +"mogelijk te ingewikkeld of de database wordt mogelijk zwaar belast." #: superset/commands/sql_lab/results.py:59 superset/sql_lab.py:413 msgid "Results backend is not configured." -msgstr "" +msgstr "Resultaten backend is niet geconfigureerd." #: superset/sql_lab.py:446 msgid "" @@ -266,6 +276,10 @@ msgid "" " statement is a SELECT. Please make sure your query has a SELECT as its " "last statement. Then, try running your query again." msgstr "" +"CTAS (create table as select) kan alleen worden uitgevoerd met een query " +"waarbij de laatste bewering een SELECT is. Zorg ervoor dat uw query als " +"laatste verklaring een SELECT heeft. Probeer vervolgens uw zoekopdracht " +"opnieuw uit te voeren." #: superset/sql_lab.py:463 msgid "" @@ -273,16 +287,20 @@ msgid "" "SELECT statement. Please make sure your query has only a SELECT " "statement. Then, try running your query again." msgstr "" +"CVAS (create view as select) kan alleen worden uitgevoerd met een query " +"met een enkele SELECT instructie. Zorg ervoor dat uw query alleen een " +"SELECT instructie heeft. Probeer vervolgens uw zoekopdracht opnieuw uit " +"te voeren." #: superset/sql_lab.py:494 #, python-format msgid "Running statement %(statement_num)s out of %(statement_count)s" -msgstr "" +msgstr "Lopende verklaring %(statement_num)s van %(statement_count)s" #: superset/sql_lab.py:516 #, python-format msgid "Statement %(statement_num)s out of %(statement_count)s" -msgstr "" +msgstr "Verklaring %(statement_num)s van %(statement_count)s" #: superset/sql_parse.py:767 msgid "You may have an error in your SQL statement. {message}" @@ -297,6 +315,9 @@ msgid "" "Applied rolling window did not return any data. Please make sure the " "source query satisfies the minimum periods defined in the rolling window." msgstr "" +"Toegepast rol-venster heeft geen data teruggegeven. Zorg ervoor dat de " +"bronquery voldoet aan de minimale termijnen die zijn gedefinieerd in het " +"rolvenster." #: superset/utils/date_parser.py:310 superset/viz.py:389 msgid "From date cannot be larger than to date" @@ -317,13 +338,11 @@ msgstr "Tijd tabelweergave" #: superset/viz.py:717 superset/viz.py:1287 msgid "Pick at least one metric" -msgstr "Kies ten minste één meeteenheid" +msgstr "Kies ten minste één metriek" #: superset/viz.py:721 msgid "When using 'Group By' you are limited to use a single metric" -msgstr "" -"Bij gebruik van ‘Group By’ bent u beperkt tot het gebruik van één " -"meeteenheid" +msgstr "Bij gebruik van ‘Group By’ bent u beperkt tot het gebruik van één metriek" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:32 #: superset/viz.py:755 @@ -337,11 +356,11 @@ msgstr "Bubbelgrafiek" #: superset/viz.py:869 msgid "Please use 3 different metric labels" -msgstr "Gelieve 3 verschillende meeteenheid labels te gebruiken" +msgstr "Gelieve 3 verschillende metrische labels te gebruiken" #: superset/viz.py:871 msgid "Pick a metric for x, y and size" -msgstr "Kies een meeteenheid voor x, y en grootte" +msgstr "Kies een metriek voor x, y en grootte" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/index.js:32 #: superset/viz.py:899 @@ -350,7 +369,7 @@ msgstr "Kogel diagram" #: superset/viz.py:912 msgid "Pick a metric to display" -msgstr "Kies een meeteenheid om weer te geven" +msgstr "Kies een metriek om weer te geven" #: superset/viz.py:931 msgid "Time Series - Line Chart" @@ -361,6 +380,8 @@ msgid "" "An enclosed time range (both start and end) must be specified when using " "a Time Comparison." msgstr "" +"Een afgesloten tijdvenster (zowel start als einde) moet worden " +"gespecificeerd bij het gebruik van een Tijdsvergelijking." #: superset/viz.py:1138 msgid "Time Series - Bar Chart" @@ -412,6 +433,8 @@ msgid "" "There's a loop in your Sankey, please provide a tree. Here's a faulty " "link: {}" msgstr "" +"Er is een lus in uw Sankey, geef een boomstructuur. Hier is een onjuiste " +"link: {}" #: superset/viz.py:1436 msgid "Directed Force Layout" @@ -443,7 +466,7 @@ msgstr "Horizon-grafieken" #: superset/viz.py:1688 msgid "Mapbox" -msgstr "Mapbox" +msgstr "Kaartbox" #: superset/viz.py:1703 msgid "[Longitude] and [Latitude] must be set" @@ -476,16 +499,16 @@ msgid "Bad spatial key" msgstr "Ongeldige ruimtelijke sleutel" #: superset/viz.py:1904 -#, fuzzy, python-format +#, python-format msgid "Invalid spatial point encountered: %(latlong)s" -msgstr "Ongeldig ruimtelijk punt aangetroffen: %s" +msgstr "Ongeldig ruimtelijke punt aangetroffen: %(latlong)s" #: superset/viz.py:1944 msgid "" "Encountered invalid NULL spatial entry," " please consider filtering those " "out" -msgstr "" +msgstr "Ongeldige NULL spatial invoer ingevoerd, overweeg om deze uit te filteren" #: superset/viz.py:2042 msgid "Deck.gl - Scatter plot" @@ -512,14 +535,12 @@ msgid "Deck.gl - 3D HEX" msgstr "Deck.gl - 3D HEX" #: superset/viz.py:2272 -#, fuzzy msgid "Deck.gl - Heatmap" -msgstr "Deck.gl - Paths" +msgstr "Deck.gl - Heatmap" #: superset/viz.py:2293 -#, fuzzy msgid "Deck.gl - Contour" -msgstr "Deck.gl - Arc" +msgstr "Deck.gl - Contour" #: superset/viz.py:2314 msgid "Deck.gl - GeoJSON" @@ -531,7 +552,7 @@ msgstr "Deck.gl - Arc" #: superset/viz.py:2370 msgid "Event flow" -msgstr "Event flow" +msgstr "Gebeurtenis stroom" #: superset/viz.py:2404 msgid "Time Series - Paired t-test" @@ -543,17 +564,16 @@ msgstr "Tijdreeks - Nightingale Rose grafiek" #: superset/viz.py:2512 msgid "Partition Diagram" -msgstr "Partition Diagram" +msgstr "Verdeel Diagram" #: superset/viz.py:2677 -#, fuzzy msgid "Please choose at least one groupby" -msgstr "Kies ten minste één veld ‘Groeperen op’ " +msgstr "Kies ten minste één \"groep bij\"" #: superset/advanced_data_type/api.py:103 #, python-format msgid "Invalid advanced data type: %(advanced_data_type)s" -msgstr "" +msgstr "Ongeldig geavanceerd gegevenstype: %(advanced_data_type)s" #: superset/annotation_layers/api.py:346 #, python-format @@ -586,33 +606,31 @@ msgstr[1] "Verwijderde %(num)d grafieken" #: superset/charts/filters.py:78 superset/dashboards/filters.py:210 #: superset/datasets/filters.py:39 msgid "Is certified" -msgstr "" +msgstr "Is gecertificeerd" #: superset/charts/filters.py:107 superset/dashboards/filters.py:236 -#, fuzzy msgid "Has created by" -msgstr "werd gecreëerd" +msgstr "Is aangemaakt door" #: superset/charts/filters.py:119 superset/dashboards/filters.py:55 -#, fuzzy msgid "Created by me" -msgstr "Gecreëerd door" +msgstr "Gemaakt door mij" #: superset/charts/filters.py:141 msgid "Owned Created or Favored" -msgstr "" +msgstr "Eigenaar Gemaakt of Favoriet" #: superset/charts/post_processing.py:72 #, python-format msgid "Total (%(aggfunc)s)" -msgstr "" +msgstr "Totaal (%(aggfunc)s)" #: superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx:475 #: superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx:680 #: superset/charts/post_processing.py:160 #: superset/charts/post_processing.py:177 msgid "Subtotal" -msgstr "" +msgstr "Subtotaal" #: superset/charts/schemas.py:647 msgid "`confidence_interval` must be between 0 and 1 (exclusive)" @@ -631,6 +649,8 @@ msgid "" "upper percentile must be greater than 0 and less than 100. Must be higher" " than lower percentile." msgstr "" +"bovenste percentiel moet groter zijn dan 0 en minder dan 100. Moet hoger " +"zijn dan lager percentieel." #: superset/charts/schemas.py:1101 msgid "`width` must be greater or equal to 0" @@ -646,11 +666,11 @@ msgstr "`rij_offset` moet groter zijn dan of gelijk aan 0" #: superset/charts/schemas.py:1303 msgid "orderby column must be populated" -msgstr "" +msgstr "sorteren op kolom moet worden ingevuld" #: superset/charts/data/api.py:138 msgid "Chart has no query context saved. Please save the chart again." -msgstr "" +msgstr "De grafiek heeft geen query context opgeslagen. Sla de grafiek opnieuw op." #: superset/charts/data/api.py:161 superset/charts/data/api.py:249 #: superset/charts/data/api.py:319 @@ -664,7 +684,7 @@ msgstr "Verzoek is geen JSON" #: superset/charts/data/api.py:369 msgid "Empty query result" -msgstr "" +msgstr "Lege query resultaat" #: superset/commands/dataset/exceptions.py:144 #: superset/commands/exceptions.py:112 @@ -677,17 +697,15 @@ msgstr "Sommige rollen bestaan niet" #: superset/commands/exceptions.py:127 msgid "Datasource type is invalid" -msgstr "" +msgstr "Gegevensbron type is ongeldig" #: superset/commands/exceptions.py:135 -#, fuzzy msgid "Datasource does not exist" -msgstr "Dataset bestaat niet" +msgstr "Gegevensbron bestaat niet" #: superset/commands/exceptions.py:142 -#, fuzzy msgid "Query does not exist" -msgstr "Grafiek bestaat niet" +msgstr "Query bestaat niet" #: superset/commands/annotation_layer/exceptions.py:29 msgid "Annotation layer parameters are invalid." @@ -706,9 +724,8 @@ msgid "Annotation layer not found." msgstr "Aantekeningenlaag niet gevonden." #: superset/commands/annotation_layer/exceptions.py:45 -#, fuzzy msgid "Annotation layers could not be deleted." -msgstr "Aantekeningenlaag kon niet worden verwijderd." +msgstr "Annotatielagen konden niet verwijderd worden." #: superset/commands/annotation_layer/exceptions.py:49 msgid "Annotation layer has associated annotations." @@ -749,9 +766,9 @@ msgstr "Aantekeningen konden niet worden verwijderd." #: superset/commands/chart/delete.py:65 #: superset/commands/dashboard/delete.py:65 #: superset/commands/database/delete.py:64 -#, fuzzy, python-format +#, python-format msgid "There are associated alerts or reports: %(report_names)s" -msgstr "Er zijn gerelateerde waarschuwingen of rapporten: %s," +msgstr "Er zijn bijbehorende meldingen of rapporten: %(report_names)s" #: superset/commands/chart/exceptions.py:38 #, python-format @@ -759,6 +776,8 @@ msgid "" "Time string is ambiguous. Please specify [%(human_readable)s ago] or " "[%(human_readable)s later]." msgstr "" +"Tijd string is dubbelzinnig. Specificeer [%(human_readable)s geleden] of " +"[%(human_readable)s later]." #: superset/commands/chart/exceptions.py:51 #, python-format @@ -771,6 +790,8 @@ msgid "" "Time delta is ambiguous. Please specify [%(human_readable)s ago] or " "[%(human_readable)s later]." msgstr "" +"Tijddelta is dubbelzinnig. Geef [%(human_readable)s geleden] of " +"[%(human_readable)s later]." #: superset/commands/chart/exceptions.py:82 #: superset/commands/dataset/exceptions.py:41 @@ -784,7 +805,7 @@ msgstr "Dashboards bestaan niet" #: superset/commands/chart/exceptions.py:101 msgid "Datasource type is required when datasource_id is given" -msgstr "Datasourcetype is vereist wanneer datasource_id is gegeven" +msgstr "Gegevensbron type is vereist wanneer datasource_id is gegeven" #: superset/commands/chart/exceptions.py:111 msgid "Chart parameters are invalid." @@ -810,7 +831,7 @@ msgstr "Er zijn geassocieerde waarschuwingen of rapporten" #: superset/commands/chart/exceptions.py:131 msgid "You don't have access to this chart." -msgstr "" +msgstr "U heeft geen toegang tot deze grafiek." #: superset/commands/chart/exceptions.py:135 msgid "Changing this chart is forbidden" @@ -821,24 +842,21 @@ msgid "Import chart failed for an unknown reason" msgstr "Import grafiek mislukt om een onbekende reden" #: superset/commands/chart/exceptions.py:151 -#, fuzzy msgid "Changing one or more of these dashboards is forbidden" -msgstr "Het is verboden dit dashboard te veranderen" +msgstr "Het wijzigen van een of meer van deze dashboards is verboden" #: superset/commands/chart/exceptions.py:156 -#, fuzzy msgid "Chart not found" -msgstr "Grafiek %(id)s niet gevonden" +msgstr "Grafiek niet gevonden" #: superset/commands/chart/data/get_data_command.py:54 #, python-format msgid "Error: %(error)s" -msgstr "" +msgstr "Fout: %(error)s" #: superset/commands/css/exceptions.py:23 -#, fuzzy msgid "CSS templates could not be deleted." -msgstr "CSS sjabloon kon niet worden verwijderd." +msgstr "CSS-sjablonen konden niet worden verwijderd." #: superset/commands/css/exceptions.py:27 msgid "CSS template not found." @@ -853,9 +871,8 @@ msgid "Dashboard parameters are invalid." msgstr "Dashboard parameters zijn ongeldig." #: superset/commands/dashboard/exceptions.py:54 -#, fuzzy msgid "Dashboards could not be created." -msgstr "Dashboard kon niet worden aangemaakt." +msgstr "Dashboards konden niet worden aangemaakt." #: superset/commands/dashboard/exceptions.py:58 msgid "Dashboard could not be updated." @@ -878,9 +895,8 @@ msgid "You don't have access to this dashboard." msgstr "Je hebt geen toegang tot dit dashboard." #: superset/commands/dashboard/embedded/exceptions.py:34 -#, fuzzy msgid "You don't have access to this embedded dashboard config." -msgstr "Je hebt geen toegang tot dit dashboard." +msgstr "U heeft geen toegang tot deze embedden dashboard configuratie." #: superset/commands/dashboard/importers/v0.py:304 msgid "No data in file" @@ -892,7 +908,7 @@ msgstr "Database parameters zijn ongeldig." #: superset/commands/database/exceptions.py:42 msgid "A database with the same name already exists." -msgstr "" +msgstr "Een database met dezelfde naam bestaat al." #: superset/commands/database/exceptions.py:50 #: superset/commands/database/ssh_tunnel/exceptions.py:61 @@ -902,7 +918,7 @@ msgstr "Veld is verplicht" #: superset/commands/database/exceptions.py:63 #, python-format msgid "Field cannot be decoded by JSON. %(json_error)s" -msgstr "" +msgstr "Veld kan niet gedecodeerd worden door JSON. %(json_error)s" #: superset/commands/database/exceptions.py:80 #: superset/views/database/mixins.py:250 @@ -932,7 +948,7 @@ msgstr "Verbinding mislukt, controleer uw verbindingsinstellingen" #: superset/commands/database/exceptions.py:111 msgid "Cannot delete a database that has datasets attached" -msgstr "" +msgstr "Een database gekoppeld aan datasets kan niet worden verwijderd" #: superset/commands/database/exceptions.py:115 msgid "Database could not be deleted." @@ -952,24 +968,21 @@ msgid "Unexpected error occurred, please check your logs for details" msgstr "Er is een onverwachte fout opgetreden, controleer uw logs voor details" #: superset/commands/database/exceptions.py:147 -#, fuzzy msgid "no SQL validator is configured" -msgstr "Waarschuwing validator configuratiefout." +msgstr "geen SQL validator is geconfigureerd" #: superset/commands/database/exceptions.py:152 msgid "No validator found (configured for the engine)" -msgstr "" +msgstr "Geen validator gevonden (geconfigureerd voor de engine)" #: superset/commands/database/exceptions.py:157 #: superset/commands/database/exceptions.py:167 -#, fuzzy msgid "Was unable to check your query" -msgstr "Label voor uw zoekopdracht" +msgstr "Kon uw query niet controleren" #: superset/commands/database/exceptions.py:162 -#, fuzzy msgid "An unexpected error occurred" -msgstr "Er is een fout opgetreden" +msgstr "Een onverwachte fout is opgetreden" #: superset/commands/database/exceptions.py:171 msgid "Import database failed for an unknown reason" @@ -983,10 +996,12 @@ msgstr "Kon het database driver niet laden: {}" #, python-format msgid "Engine \"%(engine)s\" cannot be configured through parameters." msgstr "" +"Engine \"%(engine)s\" kan niet worden geconfigureerd met behulp van " +"parameters." #: superset/commands/database/validate.py:124 msgid "Database is offline." -msgstr "" +msgstr "Database is offline." #: superset/commands/database/validate_sql.py:73 #, python-format @@ -1000,61 +1015,58 @@ msgstr "" "Uitzondering: %(ex)s" #: superset/commands/database/validate_sql.py:100 -#, fuzzy, python-format +#, python-format msgid "no SQL validator is configured for %(engine_spec)s" -msgstr "Waarschuwing validator configuratiefout." +msgstr "er is geen SQL validator geconfigureerd voor %(engine_spec)s" #: superset/commands/database/validate_sql.py:113 -#, fuzzy, python-format +#, python-format msgid "" "No validator named %(validator_name)s found (configured for the " "%(engine_spec)s engine)" -msgstr "Waarschuwing validator configuratiefout." +msgstr "" +"Geen validator gevonden met de naam %(validator_name)s (geconfigureerd " +"voor de %(engine_spec)s engine)" #: superset/commands/database/ssh_tunnel/exceptions.py:29 -#, fuzzy msgid "SSH Tunnel could not be deleted." -msgstr "Grafiek kon niet worden verwijderd." +msgstr "SSH Tunnel kon niet worden verwijderd." #: superset/commands/database/ssh_tunnel/exceptions.py:34 -#, fuzzy msgid "SSH Tunnel not found." -msgstr "CSS sjabloon niet gevonden." +msgstr "SSH Tunnel niet gevonden." #: superset/commands/database/ssh_tunnel/exceptions.py:38 -#, fuzzy msgid "SSH Tunnel parameters are invalid." -msgstr "Grafiekparameters zijn ongeldig." +msgstr "SSH Tunnel parameters zijn ongeldig." #: superset/commands/database/ssh_tunnel/exceptions.py:42 msgid "A database port is required when connecting via SSH Tunnel." msgstr "" #: superset/commands/database/ssh_tunnel/exceptions.py:46 -#, fuzzy msgid "SSH Tunnel could not be updated." -msgstr "De grafiek kon niet worden bijgewerkt." +msgstr "SSH Tunnel kon niet worden bijgewerkt." #: superset/commands/database/ssh_tunnel/exceptions.py:50 -#, fuzzy msgid "Creating SSH Tunnel failed for an unknown reason" -msgstr "Import grafiek mislukt om een onbekende reden" +msgstr "Het creëren van SSH-tunnel is mislukt om onbekende reden" #: superset/commands/database/ssh_tunnel/exceptions.py:55 msgid "SSH Tunneling is not enabled" -msgstr "" +msgstr "SSH Tunneling is niet ingeschakeld" #: superset/commands/database/ssh_tunnel/exceptions.py:67 msgid "Must provide credentials for the SSH Tunnel" -msgstr "" +msgstr "Inloggegevens moeten beschikbaar zijn voor de SSH tunnel" #: superset/commands/database/ssh_tunnel/exceptions.py:71 msgid "Cannot have multiple credentials for the SSH Tunnel" -msgstr "" +msgstr "Kan niet meerdere inloggegevens hebben voor de SSH tunnel" #: superset/commands/dataset/duplicate.py:60 msgid "The database was not found." -msgstr "" +msgstr "De database is niet gevonden." #: superset/commands/dataset/exceptions.py:32 #, python-format @@ -1079,15 +1091,15 @@ msgstr "Een of meer kolommen bestaan al" #: superset/commands/dataset/exceptions.py:99 msgid "One or more metrics do not exist" -msgstr "Een of meer meeteenheden bestaan niet" +msgstr "Een of meer metrieken bestaan niet" #: superset/commands/dataset/exceptions.py:109 msgid "One or more metrics are duplicated" -msgstr "Een of meer meetgegevens zijn gedupliceerd" +msgstr "Een of meer metrieken zijn gedupliceerd" #: superset/commands/dataset/exceptions.py:119 msgid "One or more metrics already exist" -msgstr "Een of meer meetgegevens bestaan al" +msgstr "Een of meer metrieken bestaan al" #: superset/commands/dataset/exceptions.py:130 #, python-format @@ -1095,6 +1107,8 @@ msgid "" "Table [%(table_name)s] could not be found, please double check your " "database connection, schema, and table name" msgstr "" +"Tabel [%(table_name)s] kon niet worden gevonden. Controleer de database-" +"verbinding, schema en tabelnaam" #: superset/commands/dataset/exceptions.py:156 msgid "Dataset does not exist" @@ -1114,14 +1128,12 @@ msgid "Dataset could not be updated." msgstr "Dataset kon niet worden bijgewerkt." #: superset/commands/dataset/exceptions.py:172 -#, fuzzy msgid "Datasets could not be deleted." -msgstr "Dataset kon niet worden verwijderd." +msgstr "Data’s konden niet worden verwijderd." #: superset/commands/dataset/exceptions.py:180 -#, fuzzy msgid "Samples for dataset could not be retrieved." -msgstr "Dataset kon niet worden aangemaakt." +msgstr "Monsters van dataset konden niet worden opgehaald." #: superset/commands/dataset/exceptions.py:184 msgid "Changing this dataset is forbidden" @@ -1133,21 +1145,19 @@ msgstr "Import dataset mislukt om een onbekende reden" #: superset/commands/dataset/exceptions.py:192 msgid "You don't have access to this dataset." -msgstr "" +msgstr "U hebt geen toegang tot deze dataset." #: superset/commands/dataset/exceptions.py:196 -#, fuzzy msgid "Dataset could not be duplicated." -msgstr "Dataset kon niet worden bijgewerkt." +msgstr "Dataset kon niet worden gedupliceerd." #: superset/commands/dataset/exceptions.py:200 msgid "Data URI is not allowed." -msgstr "" +msgstr "Data-URI is niet toegestaan." #: superset/commands/dataset/exceptions.py:205 -#, fuzzy msgid "The provided table was not found in the provided database" -msgstr "De tabel werd verwijderd of hernoemd in de database." +msgstr "De opgegeven tabel is niet gevonden in de opgegeven database" #: superset/commands/dataset/columns/exceptions.py:23 msgid "Dataset column not found." @@ -1164,23 +1174,27 @@ msgstr "Het is verboden deze dataset te wijzigen." #: superset/commands/dataset/metrics/exceptions.py:23 msgid "Dataset metric not found." -msgstr "Dataset meeteenheid niet gevonden." +msgstr "Dataset metriek niet gevonden." #: superset/commands/dataset/metrics/exceptions.py:27 msgid "Dataset metric delete failed." -msgstr "Dataset meetgegevens verwijderen mislukt." +msgstr "Dataset metriek verwijderen mislukt." #: superset/commands/explore/get.py:86 superset/views/core.py:440 msgid "Form data not found in cache, reverting to chart metadata." msgstr "" +"Formuliergegevens niet gevonden in de cache, terugzetten naar " +"metagegevens van grafiek." #: superset/commands/explore/get.py:94 superset/views/core.py:446 msgid "Form data not found in cache, reverting to dataset metadata." msgstr "" +"Formuliergegevens niet gevonden in de cache, teruggezet naar dataset " +"metadata." #: superset/commands/explore/get.py:120 superset/views/core.py:474 msgid "[Missing Dataset]" -msgstr "[Missing Dataset]" +msgstr "[Ontbrekende Dataset]" #: superset/commands/query/exceptions.py:28 msgid "Saved queries could not be deleted." @@ -1199,24 +1213,27 @@ msgid "Saved query parameters are invalid." msgstr "Opgeslagen query parameters zijn ongeldig." #: superset/commands/report/alert.py:100 -#, fuzzy, python-format +#, python-format msgid "Alert query returned more than one row. %(num_rows)s rows returned" -msgstr "Alert query heeft meer dan één rij geretourneerd. %s rijen geretourneerd" +msgstr "" +"Waarschuwing query is met meer dan één rij teruggekomen. %(num_rows)s " +"rijen zijn geretourneerd" #: superset/commands/report/alert.py:110 -#, fuzzy, python-format +#, python-format msgid "Alert query returned more than one column. %(num_cols)s columns returned" -msgstr "Alert query retourneerde meer dan één kolom. %s kolommen geretourneerd" +msgstr "" +"Waarschuwing query is met meer dan één kolom geretourneerd. %(num_cols)s " +"kolommen geretourneerd" #: superset/commands/report/alert.py:178 -#, fuzzy msgid "An error occurred when running alert query" -msgstr "Er is een fout opgetreden tijdens opschonen van de logbestanden " +msgstr "Er is een fout opgetreden bij het uitvoeren van de waarschuwing query" #: superset/commands/report/create.py:141 #, python-format msgid "Invalid tab ids: %s(tab_ids)" -msgstr "" +msgstr "Ongeldige tab id's: %s(tab_ids)" #: superset/commands/report/exceptions.py:46 msgid "Dashboard does not exist" @@ -1239,17 +1256,18 @@ msgid "Choose a chart or dashboard not both" msgstr "Kies een grafiek of een dashboard, niet beide" #: superset/commands/report/exceptions.py:92 -#, fuzzy msgid "Must choose either a chart or a dashboard" -msgstr "Kies een grafiek of een dashboard, niet beide" +msgstr "Je moet een grafiek of een dashboard kiezen" #: superset/commands/report/exceptions.py:103 msgid "Please save your chart first, then try creating a new email report." -msgstr "" +msgstr "Sla eerst je grafiek op, probeer dan een nieuw e-mailrapport te maken." #: superset/commands/report/exceptions.py:115 msgid "Please save your dashboard first, then try creating a new email report." msgstr "" +"Sla eerst je dashboard op, probeer dan een nieuwe e-mailrapportage aan te" +" maken." #: superset/commands/report/exceptions.py:124 msgid "Report Schedule parameters are invalid." @@ -1292,7 +1310,7 @@ msgstr "Rapportage planning mislukt bij het genereren van een csv." #: superset/commands/report/exceptions.py:161 msgid "Report Schedule execution failed when generating a dataframe." -msgstr "" +msgstr "Rapport Schedule uitvoering mislukt bij het genereren van een dataframe." #: superset/commands/report/exceptions.py:165 msgid "Report Schedule execution got an unexpected error." @@ -1307,18 +1325,18 @@ msgid "Report Schedule reached a working timeout." msgstr "Rapportage planning heeft een werk time-out bereikt." #: superset/commands/report/exceptions.py:184 -#, fuzzy, python-format +#, python-format msgid "A report named \"%(name)s\" already exists" -msgstr "Dataset %(name)s bestaat al" +msgstr "Een rapport met de naam \"%(name)s\" bestaat al" #: superset/commands/report/exceptions.py:186 -#, fuzzy, python-format +#, python-format msgid "An alert named \"%(name)s\" already exists" -msgstr "Dataset %(name)s bestaat al" +msgstr "Een melding genaamd \"%(name)s\" bestaat al" #: superset/commands/report/exceptions.py:192 msgid "Resource already has an attached report." -msgstr "" +msgstr "Deze bron heeft al een bijgevoegd rapport." #: superset/commands/report/exceptions.py:197 msgid "Alert query returned more than one row." @@ -1354,7 +1372,7 @@ msgstr "Er is een time-out opgetreden tijdens het genereren van een csv." #: superset/commands/report/exceptions.py:241 msgid "A timeout occurred while generating a dataframe." -msgstr "" +msgstr "Er is een time-out opgetreden tijdens het genereren van een dataframe." #: superset/commands/report/exceptions.py:246 msgid "Alert fired during grace period." @@ -1373,14 +1391,12 @@ msgid "Report Schedule state not found" msgstr "Rapport Schedule state niet gevonden" #: superset/commands/report/exceptions.py:265 -#, fuzzy msgid "Report schedule system error" -msgstr "Onverwachte fout in rapportschema" +msgstr "Meld schema systeem fout" #: superset/commands/report/exceptions.py:271 -#, fuzzy msgid "Report schedule client error" -msgstr "Onverwachte fout in rapportschema" +msgstr "Meld schema client fout" #: superset/commands/report/exceptions.py:275 msgid "Report schedule unexpected error" @@ -1395,19 +1411,16 @@ msgid "An error occurred while pruning logs " msgstr "Er is een fout opgetreden tijdens opschonen van de logbestanden " #: superset/commands/security/exceptions.py:25 -#, fuzzy msgid "RLS Rule not found." -msgstr "Rapportage planning niet gevonden." +msgstr "RLB regel niet gevonden." #: superset/commands/security/exceptions.py:29 -#, fuzzy msgid "RLS rules could not be deleted." -msgstr "Grafieken konden niet worden verwijderd." +msgstr "RLB regels konden niet worden verwijderd." #: superset/commands/sql_lab/estimate.py:58 -#, fuzzy msgid "The database could not be found" -msgstr "De database kon niet worden bijgewerkt." +msgstr "De database kon niet worden gevonden" #: superset/commands/sql_lab/estimate.py:86 #, python-format @@ -1415,12 +1428,17 @@ msgid "" "The query estimation was killed after %(sqllab_timeout)s seconds. It " "might be too complex, or the database might be under heavy load." msgstr "" +"De zoekopdracht inschatting is gesloten na %(sqllab_timeout)s seconden. " +"Het is mogelijk te ingewikkeld, of de database wordt mogelijk zwaar " +"belast." #: superset/commands/sql_lab/execute.py:174 msgid "" "The database referenced in this query was not found. Please contact an " "administrator for further assistance or try again." msgstr "" +"De database waarnaar verwezen wordt in deze query is niet gevonden. Neem " +"contact op met een beheerder voor verdere hulp of probeer het opnieuw." #: superset/commands/sql_lab/export.py:63 #: superset/commands/sql_lab/results.py:91 @@ -1428,16 +1446,20 @@ msgid "" "The query associated with these results could not be found. You need to " "re-run the original query." msgstr "" +"De aan deze resultaten gekoppelde query kan niet worden gevonden. U moet " +"de oorspronkelijke query opnieuw uitvoeren." #: superset/commands/sql_lab/export.py:78 msgid "Cannot access the query" -msgstr "" +msgstr "Kan geen toegang krijgen tot de query" #: superset/commands/sql_lab/results.py:75 msgid "" "Data could not be retrieved from the results backend. You need to re-run " "the original query." msgstr "" +"Gegevens kunnen niet worden opgehaald uit de resultaten in de backend. U " +"moet de oorspronkelijke query opnieuw uitvoeren." #: superset/commands/sql_lab/results.py:116 msgid "" @@ -1445,97 +1467,94 @@ msgid "" "format might have changed, rendering the old data stake. You need to re-" "run the original query." msgstr "" +"Gegevens konden niet gedeserialiseerd worden vanuit de resultaten uit de " +"backend. Het opslag formaat kan veranderd zijn, het weergeven van de oude" +" data duur. U moet de originele query opnieuw uitvoeren." #: superset/commands/tag/exceptions.py:32 -#, fuzzy msgid "Tag parameters are invalid." -msgstr "Dataset parameters zijn ongeldig." +msgstr "Tag parameters zijn ongeldig." #: superset/commands/tag/exceptions.py:36 -#, fuzzy msgid "Tag could not be created." -msgstr "Dataset kon niet worden aangemaakt." +msgstr "Tag kon niet worden aangemaakt." #: superset/commands/tag/exceptions.py:40 superset/tags/exceptions.py:35 -#, fuzzy msgid "Tag could not be updated." -msgstr "Dataset kon niet worden bijgewerkt." +msgstr "Tag kon niet worden bijgewerkt." #: superset/commands/tag/exceptions.py:44 -#, fuzzy msgid "Tag could not be deleted." -msgstr "Dataset kon niet worden verwijderd." +msgstr "De tag kon niet worden verwijderd." #: superset/commands/tag/exceptions.py:48 -#, fuzzy msgid "Tagged Object could not be deleted." -msgstr "Dataset kon niet worden verwijderd." +msgstr "Het getagde object kon niet worden verwijderd." #: superset/commands/temporary_cache/exceptions.py:29 #: superset/dashboards/permalink/exceptions.py:27 #: superset/explore/permalink/exceptions.py:27 #: superset/key_value/exceptions.py:34 msgid "An error occurred while creating the value." -msgstr "" +msgstr "Fout opgetreden tijdens het aanmaken van de waarde." #: superset/commands/temporary_cache/exceptions.py:33 #: superset/dashboards/permalink/exceptions.py:31 #: superset/explore/permalink/exceptions.py:31 #: superset/key_value/exceptions.py:38 msgid "An error occurred while accessing the value." -msgstr "" +msgstr "Er is een fout opgetreden tijdens het openen van de waarde." #: superset/commands/temporary_cache/exceptions.py:37 #: superset/key_value/exceptions.py:42 msgid "An error occurred while deleting the value." -msgstr "" +msgstr "Er is een fout opgetreden tijdens het verwijderen van de waarde." #: superset/commands/temporary_cache/exceptions.py:41 #: superset/key_value/exceptions.py:46 msgid "An error occurred while updating the value." -msgstr "" +msgstr "Fout opgetreden tijdens het bijwerken van de waarde." #: superset/commands/temporary_cache/exceptions.py:45 #: superset/key_value/exceptions.py:54 msgid "You don't have permission to modify the value." -msgstr "" +msgstr "Je hebt geen toestemming om de waarde te wijzigen." #: superset/commands/temporary_cache/exceptions.py:49 -#, fuzzy msgid "Resource was not found." -msgstr "Rapport Schedule state niet gevonden" +msgstr "Bron is niet gevonden." #: superset/common/query_actions.py:229 #, python-format msgid "Invalid result type: %(result_type)s" -msgstr "" +msgstr "Ongeldig resultaattype: %(result_type)s" #: superset/common/query_context_processor.py:150 -#, fuzzy, python-format +#, python-format msgid "Columns missing in dataset: %(invalid_columns)s" -msgstr "Kolommen ontbreken in databron: %(invalid_columns)s" +msgstr "Kolommen ontbreken in dataset: %(invalid_columns)s" #: superset/common/query_context_processor.py:384 msgid "Time Grain must be specified when using Time Shift." -msgstr "" +msgstr "Tijdsinterval moet worden gespecificeerd bij gebruik van Tijdverschuiving." #: superset/common/query_context_processor.py:494 msgid "A time column must be specified when using a Time Comparison." msgstr "" +"Een tijdkolom moet worden opgegeven bij het gebruik van een " +"Tijdvergelijking." #: superset/common/query_context_processor.py:704 msgid "The chart does not exist" msgstr "De grafiek bestaat niet" #: superset/common/query_context_processor.py:710 -#, fuzzy msgid "The chart datasource does not exist" -msgstr "De grafiek bestaat niet" +msgstr "De grafiek gegevensbron bestaat niet" #: superset/common/query_context_processor.py:727 -#, fuzzy msgid "The chart query context does not exist" -msgstr "De grafiek bestaat niet" +msgstr "De query context van de grafiek bestaat niet" #: superset/common/query_object.py:290 #, python-format @@ -1543,6 +1562,8 @@ msgid "" "Duplicate column/metric labels: %(labels)s. Please make sure all columns " "and metrics have a unique label." msgstr "" +"Dupliceer kolom/metriek labels: %(labels)s. Zorg ervoor dat alle kolommen" +" en statistieken een uniek label hebben." #: superset/common/query_object.py:312 #, python-format @@ -1550,6 +1571,8 @@ msgid "" "The following entries in `series_columns` are missing in `columns`: " "%(columns)s. " msgstr "" +"De volgende vermeldingen in `series_columns` ontbreken in `columns`: " +"%(columns)s. " #: superset/common/query_object.py:435 msgid "`operation` property of post processing object undefined" @@ -1561,13 +1584,12 @@ msgid "Unsupported post processing operation: %(operation)s" msgstr "Niet-ondersteunde nabewerking: %(operation)s" #: superset/connectors/sqla/models.py:352 superset/models/sql_lab.py:232 -#, fuzzy msgid "[asc]" -msgstr "Berekende kolom [%s] vereist een uitdrukking" +msgstr "[asc]" #: superset/connectors/sqla/models.py:355 superset/models/sql_lab.py:235 msgid "[desc]" -msgstr "" +msgstr "[desc]" #: superset/connectors/sqla/models.py:1395 #, python-format @@ -1581,13 +1603,13 @@ msgstr "Query voor virtuele gegevensverzameling moet alleen-lezen zijn" #: superset/connectors/sqla/models.py:1623 superset/models/helpers.py:839 #, python-format msgid "Error in jinja expression in RLS filters: %(msg)s" -msgstr "Fout in jinja expressie in RLS filters: %(msg)s" +msgstr "Fout in jinja expressie in RLB filters: %(msg)s" #: superset/connectors/sqla/models.py:1651 superset/models/helpers.py:1255 #: superset/models/helpers.py:1567 #, python-format msgid "Metric '%(metric)s' does not exist" -msgstr "Meeteenheid “%(metric)s” bestaat niet" +msgstr "Metriek “%(metric)s” bestaat niet" #: superset/connectors/sqla/models.py:1740 superset/models/helpers.py:1034 msgid "Db engine did not return all queried columns" @@ -1637,12 +1659,16 @@ msgid "" "Whether to make this column available as a [Time Granularity] option, " "column has to be DATETIME or DATETIME-like" msgstr "" +"Of deze kolom nu beschikbaar moet worden gemaakt als een [Tijd " +"Granulariteit] optie, de kolom moet DATUMTIJD of DATUMTIJD-achtig zijn" #: superset/connectors/sqla/views.py:110 msgid "" "Whether this column is exposed in the `Filters` section of the explore " "view." msgstr "" +"Of deze kolom is blootgesteld in het `Filters` gedeelte van het " +"verkenningsoverzicht." #: superset/connectors/sqla/views.py:114 msgid "" @@ -1650,6 +1676,10 @@ msgid "" "input a type manually for expression-defined columns in some cases. In " "most case users should not need to alter this." msgstr "" +"Het gegevenstype dat werd afgeleid door de database. Het kan nodig zijn " +"om in sommige gevallen een type handmatig in te voeren voor expression-" +"gedefinieerde kolommen. In de meeste gevallen zouden gebruikers dit niet " +"hoeven te veranderen." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:364 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:373 @@ -1724,7 +1754,7 @@ msgstr "Is tijdelijk" #: superset/connectors/sqla/views.py:162 msgid "Datetime Format" -msgstr "Datumtijd Formaat" +msgstr "Datumtijd Opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:67 #: superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx:222 @@ -1742,11 +1772,11 @@ msgstr "Type" #: superset/connectors/sqla/views.py:164 msgid "Business Data Type" -msgstr "" +msgstr "Bedrijfsgegevenstype" #: superset/connectors/sqla/views.py:180 superset/datasets/schemas.py:54 msgid "Invalid date/timestamp format" -msgstr "Ongeldig datum/tijdstempel formaat" +msgstr "Ongeldig datum/tijdstempel opmaak" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:155 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1423 @@ -1755,19 +1785,19 @@ msgstr "Ongeldig datum/tijdstempel formaat" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/index.tsx:54 #: superset/connectors/sqla/views.py:206 msgid "Metrics" -msgstr "Meeteenheden" +msgstr "Metrieken" #: superset/connectors/sqla/views.py:207 msgid "Show Metric" -msgstr "Toon meeteenheid" +msgstr "Toon metriek" #: superset/connectors/sqla/views.py:208 msgid "Add Metric" -msgstr "Voeg meeteenheid toe" +msgstr "Voeg metriek toe" #: superset/connectors/sqla/views.py:209 msgid "Edit Metric" -msgstr "Bewerk meeteenheid" +msgstr "Bewerk Metriek" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:173 #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/Calendar.js:88 @@ -1780,7 +1810,7 @@ msgstr "Bewerk meeteenheid" #: superset-frontend/src/visualizations/TimeTable/TimeTable.jsx:121 #: superset/connectors/sqla/views.py:250 msgid "Metric" -msgstr "Meeteenheid" +msgstr "Metriek" #: superset/connectors/sqla/views.py:254 msgid "SQL Expression" @@ -1827,6 +1857,13 @@ msgid "" "saving if removing charts from a datasource. If you want to change the " "datasource for a chart, overwrite the chart from the 'explore view'" msgstr "" +"De lijst met grafieken die gekoppeld zijn aan deze tabel. Door het " +"wijzijgen van deze gegevensbron kan je aanpassen maken hoe deze " +"bijbehorende grafieken zich gedragen. Houd er ook rekening mee dat " +"grafieken naar een gegevensbron moeten wijzen, dus dit formulier zal niet" +" opgeslagen kunnen worden bij het verwijderen van grafieken uit een " +"gegevensbron. Als je de gegevensbron voor een grafiek wilt wijzigen, " +"overschrijf je de grafiek van de 'verken weergave'" #: superset/connectors/sqla/views.py:337 msgid "Timezone offset (in hours) for this datasource" @@ -1856,10 +1893,15 @@ msgid "" "control component. Supports jinja template syntax. Applies only when " "`Enable Filter Select` is on." msgstr "" +"Voorspelling toegepast bij het ophalen van verschillende waarde om het " +"filter besturingscomponent te vullen. Ondersteunt jinja template syntax. " +"Geldt alleen wanneer `Filter Selecteren inschakelen` is ingeschakeld." #: superset/connectors/sqla/views.py:356 msgid "Redirects to this endpoint when clicking on the table from the table list" msgstr "" +"Schakelt door naar dit eindpunt bij het klikken op de tabel vanuit de " +"tabellijst" #: superset/connectors/sqla/views.py:360 msgid "" @@ -1867,6 +1909,9 @@ msgid "" "section with a list of distinct values fetched from the backend on the " "fly" msgstr "" +"Of de vervolgkeuzelijst van het filter in de filtersectie van de " +"verkenningsweergave moet worden gevuld met een lijst met afzonderlijke " +"waarden die direct uit de backend worden opgehaald" #: superset/connectors/sqla/views.py:365 msgid "Whether the table was generated by the 'Visualize' flow in SQL Lab" @@ -1889,6 +1934,9 @@ msgid "" " 0 indicates that the cache never expires. Note this defaults to the " "database timeout if undefined." msgstr "" +"Duur (in seconden) van de caching time-out voor deze tabel. Een time-out " +"van 0 geeft aan dat de cache nooit verloopt. Merk op dat deze standaard " +"de database time-out heeft als deze niet gedefinieerd is." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:997 #: superset/connectors/sqla/views.py:384 @@ -1896,6 +1944,8 @@ msgid "" "Allow column names to be changed to case insensitive format, if supported" " (e.g. Oracle, Snowflake)." msgstr "" +"Toestaan dat kolomnamen worden gewijzigd in geval van ongevoelig formaat," +" indien ondersteund (bijv. Oracle, Sneeuwflake)." #: superset/connectors/sqla/views.py:388 msgid "" @@ -1904,6 +1954,10 @@ msgid "" "secondary columns are filtered, the same filter is applied to the main " "datetime column." msgstr "" +"Datasets kunnen een hoofdtijdelijke kolom hebben (main_dttm_col), maar " +"kunnen ook secundaire tijdkolommen hebben. Wanneer dit attribuut waar is," +" wanneer de secundaire kolommen worden gefilterd, wordt hetzelfde filter " +"toegepast op de hoofddatetime kolom." #: superset/connectors/sqla/views.py:396 msgid "Associated Charts" @@ -1958,11 +2012,11 @@ msgstr "Standaard eindpunt" #: superset/connectors/sqla/views.py:405 msgid "Offset" -msgstr "Offset" +msgstr "Verschuiving" #: superset/connectors/sqla/views.py:406 superset/views/chart/mixin.py:76 msgid "Cache Timeout" -msgstr "Cache Timeout" +msgstr "Buffer Timeout" #: superset/connectors/sqla/views.py:407 superset/views/database/forms.py:129 #: superset/views/database/forms.py:281 superset/views/database/forms.py:413 @@ -2003,13 +2057,13 @@ msgstr "Kolom Hoofd Datumtijd" #: superset/connectors/sqla/views.py:412 msgid "SQL Lab View" -msgstr "SQL Lab View" +msgstr "SQL Lab Weergave" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:99 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:986 #: superset/connectors/sqla/views.py:413 msgid "Template parameters" -msgstr "Template parameters" +msgstr "Sjabloon parameters" #: superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.tsx:293 #: superset/connectors/sqla/views.py:415 superset/views/dashboard/mixin.py:85 @@ -2022,6 +2076,8 @@ msgid "" "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." msgstr "" +"De tabel is aangemaakt. Als onderdeel van dit tweestapsconfiguratieproces" +" moet u nu op de knop bewerken door de nieuwe tabel om te configureren." #: superset/css_templates/api.py:142 #, python-format @@ -2033,7 +2089,7 @@ msgstr[1] "Verwijderde %(num)d css sjablonen" #: superset/dashboards/api.py:390 #, python-format msgid "Dataset schema is invalid, caused by: %(error)s" -msgstr "" +msgstr "Dataset schema is ongeldig, veroorzaakt door: %(error)s" #: superset/dashboards/api.py:697 #, python-format @@ -2052,24 +2108,24 @@ msgstr "Rol" #: superset/dashboards/permalink/exceptions.py:23 #: superset/explore/permalink/exceptions.py:23 -#, fuzzy msgid "Invalid state." -msgstr "Ongeldig certificaat" +msgstr "Ongeldige status." #: superset/databases/decorators.py:47 msgid "Table name undefined" msgstr "Tabelnaam niet gedefinieerd" #: superset/databases/filters.py:79 -#, fuzzy msgid "Upload Enabled" -msgstr "Upload Excel" +msgstr "Uploaden Ingeschakeld" #: superset/databases/schemas.py:177 msgid "" "Invalid connection string, a valid string usually follows: " "backend+driver://user:password@database-host/database-name" msgstr "" +"Ongeldige connectie string, een geldige tekenreeks: " +"backend+driver://user:password@database-host/database-name" #: superset/databases/schemas.py:212 superset/databases/schemas.py:227 #, python-format @@ -2090,12 +2146,16 @@ msgid "" "An engine must be specified when passing individual parameters to a " "database." msgstr "" +"Een engine moet worden opgegeven wanneer individuele parameters worden " +"doorgegeven aan een database." #: superset/databases/schemas.py:315 msgid "" "Engine spec \"InvalidEngine\" does not support being configured via " "individual parameters." msgstr "" +"Engine spec \"InvalidEngine\" ondersteunt het niet om te worden " +"geconfigureerd via individuele parameters." #: superset/datasets/api.py:785 #, python-format @@ -2117,6 +2177,9 @@ msgid "" "Please check your query for syntax errors at or near " "\"%(syntax_error)s\". Then, try running your query again." msgstr "" +"Controleer uw query voor syntax fouten bij of in de buurt " +"\"%(syntax_error)s\". Probeer daarna uw zoekopdracht opnieuw uit te " +"voeren." #: superset/db_engine_specs/base.py:110 msgid "Second" @@ -2124,11 +2187,11 @@ msgstr "Seconde" #: superset/db_engine_specs/base.py:111 msgid "5 second" -msgstr "" +msgstr "5 seconden" #: superset/db_engine_specs/base.py:112 msgid "30 second" -msgstr "" +msgstr "30 seconden" #: superset/db_engine_specs/base.py:113 msgid "Minute" @@ -2148,7 +2211,7 @@ msgstr "15 minuten" #: superset/db_engine_specs/base.py:117 msgid "30 minute" -msgstr "" +msgstr "30 minuten" #: superset/db_engine_specs/base.py:118 msgid "Hour" @@ -2158,7 +2221,7 @@ msgstr "Uur" #: superset-frontend/src/explore/controls.jsx:261 #: superset/db_engine_specs/base.py:119 msgid "6 hour" -msgstr "" +msgstr "6 uur" #: superset/db_engine_specs/base.py:120 msgid "Day" @@ -2193,9 +2256,8 @@ msgid "Week ending Saturday" msgstr "Week beginnend op zaterdag" #: superset/db_engine_specs/base.py:128 -#, fuzzy msgid "Week ending Sunday" -msgstr "Week beginnend op zaterdag" +msgstr "Week eindigt Zondag" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:134 #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:100 @@ -2237,18 +2299,18 @@ msgstr "Database naam" #: superset/db_engine_specs/clickhouse.py:220 #: superset/db_engine_specs/databend.py:206 msgid "Additional parameters" -msgstr "" +msgstr "Additionele parameters" #: superset/db_engine_specs/base.py:2196 #: superset/db_engine_specs/clickhouse.py:215 #: superset/db_engine_specs/databend.py:203 #: superset/db_engine_specs/databricks.py:59 msgid "Use an encrypted connection to the database" -msgstr "" +msgstr "Gebruik een versleutelde verbinding met de database" #: superset/db_engine_specs/base.py:2200 msgid "Use an ssh tunnel connection to the database" -msgstr "" +msgstr "Gebruik een ssh tunnel verbinding met de database" #: superset/db_engine_specs/bigquery.py:179 msgid "" @@ -2257,6 +2319,11 @@ msgid "" "\"BigQuery Job User\" and the following permissions are set " "\"bigquery.readsessions.create\", \"bigquery.readsessions.getData\"" msgstr "" +"Kan geen verbinding maken. Controleer of de volgende rollen zijn " +"ingesteld op het service account: \"BigQuery Data Viewer\", \"BigQuery " +"Metadata Viewer\", \"BigQuery Job User\" en de volgende permissies zijn " +"ingesteld \"bigquery. eadsessions.create\", " +"\"bigquery.readsessions.getData\"" #: superset/db_engine_specs/bigquery.py:191 #, python-format @@ -2264,11 +2331,15 @@ msgid "" "The table \"%(table)s\" does not exist. A valid table must be used to run" " this query." msgstr "" +"De tabel \"%(table)s\" bestaat niet. Een geldige tabel moet worden " +"gebruikt om deze query uit te voeren." #: superset/db_engine_specs/bigquery.py:199 #, python-format msgid "We can't seem to resolve column \"%(column)s\" at line %(location)s." msgstr "" +"Het lijkt erop dat de kolom \"%(column)s\" op regel %(location)s niet kan" +" worden opgelost." #: superset/db_engine_specs/bigquery.py:204 #, python-format @@ -2276,6 +2347,8 @@ msgid "" "The schema \"%(schema)s\" does not exist. A valid schema must be used to " "run this query." msgstr "" +"The schema \"%(schema)s\" bestaat niet. Een geldig schema moet worden " +"gebruikt om deze query uit te voeren." #: superset/db_engine_specs/doris.py:211 superset/db_engine_specs/mysql.py:157 #: superset/db_engine_specs/presto.py:680 @@ -2286,9 +2359,9 @@ msgid "Either the username \"%(username)s\" or the password is incorrect." msgstr "Either the username “%(username)s” or the password is incorrect." #: superset/db_engine_specs/doris.py:216 -#, fuzzy, python-format +#, python-format msgid "Unknown Doris server host \"%(hostname)s\"." -msgstr "Onbekende MySQL server host “%(hostname)s”." +msgstr "Onbekende Doris server host \"%(hostname)s\"." #: superset/db_engine_specs/doris.py:221 superset/db_engine_specs/mysql.py:167 #, python-format @@ -2309,11 +2382,14 @@ msgid "" "Please check your query for syntax errors near \"%(server_error)s\". " "Then, try running your query again." msgstr "" +"Controleer uw query voor syntax fouten bij of in de buurt " +"\"%(server_error)s\". Probeer daarna uw zoekopdracht opnieuw uit te " +"voeren." #: superset/db_engine_specs/duckdb.py:61 superset/db_engine_specs/sqlite.py:108 #, python-format msgid "We can't seem to resolve the column \"%(column_name)s\"" -msgstr "" +msgstr "Het lijkt erop dat we de kolom \"%(column_name)s \" niet kunnen oplossen" #: superset/db_engine_specs/mssql.py:93 #, python-format @@ -2366,41 +2442,45 @@ msgstr "De gebruikersnaam “%(username)s” bestaat niet." #: superset/db_engine_specs/ocient.py:248 msgid "The user/password combination is not valid (Incorrect password for user)." msgstr "" +"De combinatie van gebruiker/wachtwoord is niet geldig (onjuist wachtwoord" +" voor gebruiker)." #: superset/db_engine_specs/ocient.py:256 -#, fuzzy, python-format +#, python-format msgid "Could not connect to database: \"%(database)s\"" -msgstr "Kan geen verbinding maken met database “%(database)s”." +msgstr "Kan niet verbinden met de database: \"%(database)s\"" #: superset/db_engine_specs/ocient.py:261 #, python-format msgid "Could not resolve hostname: \"%(host)s\"." -msgstr "" +msgstr "Kan de hostname niet omzetten: \"%(host)s\"." #: superset/db_engine_specs/ocient.py:266 msgid "Port out of range 0-65535" -msgstr "" +msgstr "Poort buiten bereik 0-65535" #: superset/db_engine_specs/ocient.py:271 msgid "" "Invalid Connection String: Expecting String of the form " "'ocient://user:pass@host:port/database'." msgstr "" +"Ongeldige Connectie String: Verwacht de vorm " +"'ocient://user:pass@host:port/database'." #: superset/db_engine_specs/ocient.py:279 #, python-format msgid "Syntax Error: %(qualifier)s input \"%(input)s\" expecting \"%(expected)s" -msgstr "" +msgstr "Syntaxfout: %(qualifier)s invoer \"%(input)s\" verwacht \"%(expected)s" #: superset/db_engine_specs/ocient.py:284 -#, fuzzy, python-format +#, python-format msgid "Table or View \"%(table)s\" does not exist." -msgstr "De gebruikersnaam “%(username)s” bestaat niet." +msgstr "Tabel of Weergave \"%(table)s\" bestaat niet." #: superset/db_engine_specs/ocient.py:289 #, python-format msgid "Invalid reference to column: \"%(column)s\"" -msgstr "" +msgstr "Ongeldige verwijzing naar kolom: \"%(column)s\"" #: superset/db_engine_specs/postgres.py:125 #, python-format @@ -2409,7 +2489,7 @@ msgstr "Het opgegeven wachtwoord voor gebruikersnaam “%(username)s” is onjui #: superset/db_engine_specs/postgres.py:130 msgid "Please re-enter the password." -msgstr "" +msgstr "Voer het wachtwoord opnieuw in." #: superset/db_engine_specs/postgres.py:158 #: superset/db_engine_specs/presto.py:656 @@ -2418,13 +2498,14 @@ msgid "" "We can't seem to resolve the column \"%(column_name)s\" at line " "%(location)s." msgstr "" +"Het lijkt erop dat de kolom \"%(column_name)s\" op regel %(location)s " +"niet kan worden opgelost." #: superset/db_engine_specs/postgres.py:290 -#, fuzzy msgid "Users are not allowed to set a search path for security reasons." msgstr "" -"%(dialect)s kunnen om veiligheidsredenen niet als gegevensbron worden " -"gebruikt." +"Gebruikers hebben geen toestemming om een zoekpad in te stellen om " +"veiligheidsredenen." #: superset/db_engine_specs/presto.py:664 #, python-format @@ -2432,6 +2513,8 @@ msgid "" "The table \"%(table_name)s\" does not exist. A valid table must be used " "to run this query." msgstr "" +"De tabel \"%(table_name)s\" bestaat niet. Een geldige tabel moet worden " +"gebruikt om deze query uit te voeren." #: superset/db_engine_specs/presto.py:672 #, python-format @@ -2439,6 +2522,8 @@ msgid "" "The schema \"%(schema_name)s\" does not exist. A valid schema must be " "used to run this query." msgstr "" +"The schema \"%(schema_name)s\" bestaat niet. Een geldig schema moet " +"worden gebruikt om deze query uit te voeren." #: superset/db_engine_specs/presto.py:703 #, python-format @@ -2455,31 +2540,30 @@ msgid "" "We were unable to connect to your database named \"%(database)s\". Please" " verify your database name and try again." msgstr "" +"We konden geen verbinding maken met uw database met de naam " +"\"%(database)s\". Controleer uw databasenaam en probeer het opnieuw." #: superset/db_engine_specs/snowflake.py:112 #, python-format msgid "%(object)s does not exist in this database." -msgstr "" +msgstr "%(object)s bestaat niet in deze database." #: superset/explore/exceptions.py:45 -#, fuzzy msgid "Samples for datasource could not be retrieved." -msgstr "Dataset kon niet worden aangemaakt." +msgstr "Monsters voor gegevensbron konden niet worden opgehaald." #: superset/explore/exceptions.py:49 -#, fuzzy msgid "Changing this datasource is forbidden" -msgstr "Veranderen van deze dataset is verboden" +msgstr "Het wijzigen van deze gegevensbron is verboden" #: superset-frontend/src/pages/Home/index.tsx:334 #: superset/initialization/__init__.py:233 msgid "Home" -msgstr "Home" +msgstr "Startpagina" #: superset/initialization/__init__.py:241 -#, fuzzy msgid "Database Connections" -msgstr "Test connectie" +msgstr "Database Connecties" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:721 #: superset-frontend/src/features/home/RightMenu.tsx:170 @@ -2515,7 +2599,7 @@ msgstr "Datasets" #: superset/initialization/__init__.py:275 msgid "Plugins" -msgstr "Plugins" +msgstr "Plug-ins" #: superset/initialization/__init__.py:277 #: superset/initialization/__init__.py:289 @@ -2563,7 +2647,7 @@ msgstr "Query Geschiedenis" #: superset-frontend/src/pages/Tags/index.tsx:349 #: superset/initialization/__init__.py:356 msgid "Tags" -msgstr "" +msgstr "Tags" #: superset/initialization/__init__.py:366 msgid "Action Log" @@ -2589,29 +2673,27 @@ msgstr "Aantekeningen Lagen" #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:331 #: superset/initialization/__init__.py:405 msgid "Row Level Security" -msgstr "" +msgstr "Rij Level Beveiliging" #: superset/key_value/exceptions.py:30 -#, fuzzy msgid "An error occurred while parsing the key." -msgstr "Er is een fout opgetreden bij het laden van de SQL" +msgstr "Er is een fout opgetreden tijdens het parsen van de sleutel." #: superset/key_value/exceptions.py:50 -#, fuzzy msgid "An error occurred while upserting the value." -msgstr "Er is een fout opgetreden tijdens het ophalen van schemawaarden: %s" +msgstr "Er is een fout opgetreden tijdens het upserten van de waarde." #: superset/key_value/exceptions.py:62 msgid "Unable to encode value" -msgstr "" +msgstr "Kan waarde niet coderen" #: superset/key_value/exceptions.py:66 msgid "Unable to decode value" -msgstr "" +msgstr "Kan waarde niet decoderen" #: superset/key_value/utils.py:60 msgid "Invalid permalink key" -msgstr "" +msgstr "Ongeldige permalink sleutel" #: superset/models/helpers.py:1081 #, python-format @@ -2629,6 +2711,8 @@ msgid "" "Datetime column not provided as part table configuration and is required " "by this type of chart" msgstr "" +"Datumtijdkolom niet opgegeven als deeltabel configuratie en is vereist " +"voor dit type grafiek" #: superset/models/helpers.py:1546 msgid "Empty query?" @@ -2645,9 +2729,8 @@ msgid "Time column \"%(col)s\" does not exist in dataset" msgstr "Tijdkolom “%(col)s” bestaat niet in dataset" #: superset/models/helpers.py:1836 -#, fuzzy msgid "error_message" -msgstr "Foutmelding" +msgstr "fout_melding" #: superset/models/helpers.py:1848 msgid "Filter value list cannot be empty" @@ -2698,12 +2781,12 @@ msgstr "Waarde moet groter zijn dan 0" #: superset/reports/schemas.py:216 superset/reports/schemas.py:346 msgid "Custom width of the screenshot in pixels" -msgstr "" +msgstr "Aangepaste breedte van de schermafbeelding in pixels" #: superset/reports/schemas.py:236 superset/reports/schemas.py:366 #, python-format msgid "Screenshot width must be between %(min)spx and %(max)spx" -msgstr "" +msgstr "Schermafbeelding breedte moet liggen tussen %(min)spx en %(max)spx" #: superset/reports/notifications/email.py:89 #, python-format @@ -2718,7 +2801,7 @@ msgstr "" #: superset/reports/notifications/email.py:133 msgid "EMAIL_REPORTS_CTA" -msgstr "" +msgstr "EMAIL_REPORTS_CTA" #: superset/reports/notifications/email.py:171 #, python-format @@ -2746,6 +2829,13 @@ msgid "" "\n" "%(table)s\n" msgstr "" +"*%(name)s*\n" +"\n" +"%(description)s\n" +"\n" +"<%(url)s| Verken in Superset>\n" +"\n" +"%(table)s\n" #: superset/reports/notifications/slack.py:93 #, python-format @@ -2756,13 +2846,18 @@ msgid "" "\n" "Error: %(text)s\n" msgstr "" +"*%(name)s*\n" +"\n" +"%(description)s\n" +"\n" +"Fout: %(text)s\n" #: superset/row_level_security/api.py:355 -#, fuzzy, python-format +#, python-format msgid "Deleted %(num)d rules" msgid_plural "Deleted %(num)d rules" -msgstr[0] "Verwijderde %(num)d grafiek" -msgstr[1] "Verwijderde %(num)d grafieken" +msgstr[0] "Verwijderde %(num)d regels" +msgstr[1] "Verwijderde %(num)d regels" #: superset/security/analytics_db_safety.py:52 #, python-format @@ -2773,17 +2868,17 @@ msgstr "" #: superset/security/manager.py:2005 msgid "Guest user cannot modify chart payload" -msgstr "" +msgstr "Gastgebruiker kan de grafiek-payload niet wijzigen" #: superset/security/manager.py:2435 -#, fuzzy, python-format +#, python-format msgid "You don't have the rights to alter %(resource)s" -msgstr "Je hebt niet de rechten om deze titel te veranderen." +msgstr "Je hebt geen rechten om %(resource)s te wijzigen" #: superset/sqllab/exceptions.py:66 #, python-format msgid "Failed to execute %(query)s" -msgstr "" +msgstr "Uitvoeren van %(query)s is mislukt" #: superset/sqllab/query_render.py:39 superset/views/core.py:116 msgid "" @@ -2791,17 +2886,22 @@ msgid "" "they match across your SQL query and Set Parameters. Then, try running " "your query again." msgstr "" +"Controleer uw template parameters voor syntax fouten en zorg ervoor dat " +"deze overeenkomen met de SQL query en Set Parameters. Probeer daarna uw " +"query opnieuw uit te voeren." #: superset/sqllab/query_render.py:99 #, python-format msgid "The parameter %(parameters)s in your query is undefined." msgid_plural "The following parameters in your query are undefined: %(parameters)s." -msgstr[0] "" +msgstr[0] "De parameter %(parameters)s in uw query is niet gedefinieerd." msgstr[1] "" +"De volgende parameters in uw zoekopdracht zijn ongedefinieerd: " +"%(parameters)s." #: superset/sqllab/query_render.py:120 msgid "The query contains one or more malformed template parameters." -msgstr "" +msgstr "De query bevat een of meer ongeldige sjabloonparameters." #: superset/sqllab/query_render.py:123 msgid "" @@ -2809,25 +2909,25 @@ msgid "" "surround by double braces, for example, \"{{ ds }}\". Then, try running " "your query again." msgstr "" +"Controleer uw query en bevestig dat alle sjabloonparameters omringd " +"worden door dubbele haakjes, bijvoorbeeld \"{{ ds }}\". Probeer daarna uw" +" query opnieuw uit te voeren." #: superset/tags/exceptions.py:30 msgid "Tag name is invalid (cannot contain ':')" -msgstr "" +msgstr "Tag naam is ongeldig (mag geen ':') bevatten" #: superset/tags/exceptions.py:39 -#, fuzzy msgid "Tag could not be found." -msgstr "De database kon niet worden bijgewerkt." +msgstr "Tag kon niet worden gevonden." #: superset/tags/filters.py:31 -#, fuzzy msgid "Is custom tag" -msgstr "Configureer aangepaste tijdspanne" +msgstr "Is aangepaste tag" #: superset/tasks/exceptions.py:24 -#, fuzzy msgid "Scheduled task executor not found" -msgstr "Rapport Schedule state niet gevonden" +msgstr "Geplande taakuitvoerder niet gevonden" #: superset/templates/appbuilder/general/widgets/base_list.html:56 msgid "Record Count" @@ -2877,7 +2977,7 @@ msgstr "Upload" #: superset/templates/superset/fab_overrides/list_with_checkboxes.html:82 msgid "Use the edit button to change this field" -msgstr "" +msgstr "Gebruik de bewerk knop om dit veld te wijzigen" #: superset/templates/superset/models/database/macros.html:23 msgid "Test Connection" @@ -2886,12 +2986,12 @@ msgstr "Test Connectie" #: superset/utils/core.py:1004 #, python-format msgid "Unsupported clause type: %(clause)s" -msgstr "" +msgstr "Niet-ondersteunde clausule type: %(clause)s" #: superset/utils/core.py:1257 #, python-format msgid "Invalid metric object: %(metric)s" -msgstr "" +msgstr "Ongeldig metriek object: %(metric)s" #: superset/utils/date_parser.py:377 msgid "Unable to calculate such a date delta" @@ -2905,21 +3005,23 @@ msgstr "Niet in staat om zo’n holiday te vinden: [%(holiday)s]" #: superset/utils/encrypt.py:121 #, python-format msgid "DB column %(col_name)s has unknown type: %(value_type)s" -msgstr "" +msgstr "DB kolom %(col_name)s heeft onbekend type: %(value_type)s" #: superset/utils/pandas_postprocessing/boxplot.py:88 msgid "" "percentiles must be a list or tuple with two numeric values, of which the" " first is lower than the second value" msgstr "" +"percentielen moeten een lijst of tuple zijn met twee numerieke waarden, " +"waarvan de eerste lager is dan de tweede waarde" #: superset/utils/pandas_postprocessing/compare.py:53 msgid "`compare_columns` must have the same length as `source_columns`." -msgstr "" +msgstr "`compare_columns` moet dezelfde lengte hebben als `source_columns`." #: superset/utils/pandas_postprocessing/compare.py:57 msgid "`compare_type` must be `difference`, `percentage` or `ratio`" -msgstr "" +msgstr "`compare_type` moet `verschillen`, `percentage` of `ratio` zijn" #: superset/utils/pandas_postprocessing/contribution.py:59 #, python-format @@ -2927,6 +3029,8 @@ msgid "" "Column \"%(column)s\" is not numeric or does not exists in the query " "results." msgstr "" +"Kolom \"%(column)s\" is niet numeriek of bestaat niet in de " +"zoekresultaten." #: superset/utils/pandas_postprocessing/contribution.py:69 msgid "`rename_columns` must have the same length as `columns`." @@ -2972,7 +3076,7 @@ msgstr "Niet-ondersteunde time grain: %(time_grain)s" #: superset/utils/pandas_postprocessing/prophet.py:130 msgid "Periods must be a whole number" -msgstr "" +msgstr "Perioden moeten een heel getal zijn" #: superset/utils/pandas_postprocessing/prophet.py:133 msgid "Confidence interval must be between 0 and 1 (exclusive)" @@ -2987,19 +3091,17 @@ msgid "DataFrame include at least one series" msgstr "DataFrame bevat ten minste één reeks" #: superset/utils/pandas_postprocessing/rename.py:53 -#, fuzzy msgid "Label already exists" -msgstr "Er bestaat al een filterset" +msgstr "Label bestaat al" #: superset/utils/pandas_postprocessing/resample.py:43 -#, fuzzy msgid "Resample operation requires DatetimeIndex" -msgstr "Pivot bewerking vereist ten minste één index" +msgstr "Hermonsteren bewerking vereist DatumtijdIndex" #: superset/utils/pandas_postprocessing/resample.py:46 #, fuzzy msgid "Resample method should be in " -msgstr "Pandas resample methode" +msgstr "Hermonsteren methode moet in " #: superset/utils/pandas_postprocessing/rolling.py:67 msgid "Undefined window for rolling operation" @@ -3007,7 +3109,7 @@ msgstr "Onbepaald venster voor rolling operation" #: superset/utils/pandas_postprocessing/rolling.py:69 msgid "Window must be > 0" -msgstr "" +msgstr "Venster moet > 0 zijn" #: superset/utils/pandas_postprocessing/rolling.py:84 #, python-format @@ -3039,9 +3141,9 @@ msgid "Invalid numpy function: %(operator)s" msgstr "Ongeldige numpy functie: %(operator)s" #: superset/views/api.py:123 -#, fuzzy, python-format +#, python-format msgid "Unexpected time range: %(error)s" -msgstr "Reële tijdspanne" +msgstr "Onverwacht tijdsbereik: %(error)s" #: superset/views/base.py:584 msgid "json isn't valid" @@ -3089,7 +3191,7 @@ msgstr "Is favoriet" #: superset/views/base_api.py:177 msgid "Is tagged" -msgstr "" +msgstr "Is getagd" #: superset/views/core.py:114 msgid "The data source seems to have been deleted" @@ -3100,30 +3202,26 @@ msgid "The user seems to have been deleted" msgstr "De gebruiker lijkt te zijn verwijderd" #: superset/views/core.py:292 -#, fuzzy msgid "You don't have the rights to download as csv" -msgstr "Je hebt niet de rechten om " +msgstr "Je hebt geen rechten om te downloaden als csv " #: superset/views/core.py:423 -#, fuzzy msgid "Error: permalink state not found" -msgstr "Rapport Schedule state niet gevonden" +msgstr "Fout: permalink status niet gevonden" #: superset/views/core.py:426 superset/views/core.py:836 #: superset/views/core.py:839 #, python-format msgid "Error: %(msg)s" -msgstr "" +msgstr "Fout: %(msg)s" #: superset/views/core.py:512 -#, fuzzy msgid "You don't have the rights to alter this chart" -msgstr "Je hebt niet de rechten om deze titel te veranderen." +msgstr "Je hebt geen rechten om deze grafiek te wijzigen" #: superset/views/core.py:518 -#, fuzzy msgid "You don't have the rights to create a chart" -msgstr "Je hebt niet de rechten om " +msgstr "Je hebt geen rechten om een grafiek te maken" #: superset/views/core.py:573 #, python-format @@ -3144,18 +3242,16 @@ msgid "Chart [{}] has been overwritten" msgstr "Grafiek [{}] is overschreven" #: superset/views/core.py:648 -#, fuzzy msgid "You don't have the rights to alter this dashboard" -msgstr "Je hebt niet de rechten om deze titel te veranderen." +msgstr "Je het geen rechten om dit dashboard te wijzigen" #: superset/views/core.py:653 msgid "Chart [{}] was added to dashboard [{}]" msgstr "Grafiek [{}] werd toegevoegd aan dashboard [{}]" #: superset/views/core.py:664 -#, fuzzy msgid "You don't have the rights to create a dashboard" -msgstr "Je hebt niet de rechten om " +msgstr "Je hebt geen rechten om een dashboard aan te maken" #: superset/views/core.py:673 msgid "Dashboard [{}] just got created and chart [{}] was added to it" @@ -3166,6 +3262,8 @@ msgid "" "Malformed request. slice_id or table_name and db_name arguments are " "expected" msgstr "" +"Misvormde aanvraag. slice_id of table_name en db_name argumenten worden " +"verwacht" #: superset/views/core.py:729 #, python-format @@ -3178,9 +3276,8 @@ msgid "Table %(table)s wasn't found in the database %(db)s" msgstr "Tabwl %(table)s werd niet gevonden in de database %(db)s" #: superset/views/core.py:842 -#, fuzzy msgid "permalink state not found" -msgstr "Rapport Schedule state niet gevonden" +msgstr "permalink status niet gevonden" #: superset/views/css_templates.py:39 msgid "Show CSS Template" @@ -3207,20 +3304,24 @@ msgid "" "Used internally to identify the plugin. Should be set to the package name" " from the pluginʼs package.json" msgstr "" +"Intern gebruikt om de plugin te identificeren. Moet worden ingesteld op " +"de pakketnaam van de plugins package.json" #: superset/views/dynamic_plugins.py:52 msgid "" "A full URL pointing to the location of the built plugin (could be hosted " "on a CDN for example)" msgstr "" +"Een volledige URL die wijst naar de locatie van de plugin (kan " +"bijvoorbeeld worden gehost op een CDN)" #: superset/views/dynamic_plugins.py:58 msgid "Custom Plugins" -msgstr "Custom Plugins" +msgstr "Aangepaste Plugins" #: superset/views/dynamic_plugins.py:59 msgid "Custom Plugin" -msgstr "Custom Plugin" +msgstr "Aangepaste Plugin" #: superset/views/dynamic_plugins.py:60 msgid "Add a Plugin" @@ -3237,7 +3338,7 @@ msgstr "De dataset die bij deze grafiek hoort bestaat niet meer" #: superset/views/utils.py:476 msgid "Could not determine datasource type" -msgstr "Kon type databron niet bepalen" +msgstr "Kon type gegevensbron niet bepalen" #: superset/views/utils.py:492 msgid "Could not find viz object" @@ -3262,6 +3363,10 @@ msgid "" "for reference and for power users who may want to alter specific " "parameters." msgstr "" +"Deze parameters worden dynamisch gegenereerd bij het klikken op opslaan " +"of overschrijven knop in de verkenningsweergave. Dit JSON-object is hier " +"blootgesteld ter referentie en voor gevorderde gebruikers die mogelijk " +"specifieke parameters willen wijzigen." #: superset/views/chart/mixin.py:69 msgid "" @@ -3361,12 +3466,18 @@ msgid "" "dashboard. It is dynamically generated when adjusting the widgets size " "and positions by using drag & drop in the dashboard view" msgstr "" +"Dit json object beschrijft de positionering van de widgets in het " +"dashboard. Het wordt dynamisch gegenereerd bij het aanpassen van de " +"grootte en positie van widgets door te slepen en neer te zetten in de " +"dashboard weergave" #: superset/views/dashboard/mixin.py:52 msgid "" "The CSS for individual dashboards can be altered here, or in the " "dashboard view where changes are immediately visible" msgstr "" +"De CSS voor individuele dashboards kan hier worden gewijzigd, of in de " +"dashboard weergave waar wijzigingen direct zichtbaar zijn" #: superset/views/dashboard/mixin.py:57 msgid "To get a readable URL for your dashboard" @@ -3379,6 +3490,10 @@ msgid "" "overwrite button in the dashboard view. It is exposed here for reference " "and for power users who may want to alter specific parameters." msgstr "" +"Dit JSON-object wordt dynamisch gegenereerd bij het klikken op opslaan of" +" overschrijven van de knop in de dashboard weergave. Het is hier " +"blootgesteld ter referentie en voor gevorderde gebruikers die mogelijk " +"specifieke parameters willen wijzigen." #: superset/views/dashboard/mixin.py:64 msgid "Owners is a list of users who can alter the dashboard." @@ -3390,6 +3505,10 @@ msgid "" "access to a dashboard will bypass dataset level checks.If no roles are " "defined, regular access permissions apply." msgstr "" +"Rollen is een lijst die toegang tot het dashboard definieert. Het " +"verlenen van een rol-toegang tot een dashboard zal controle op het " +"dataset niveau omzeilen. Als er geen rollen zijn gedefinieerd, dan zijn " +"reguliere toegangsrechten van toepassing." #: superset/views/dashboard/mixin.py:70 msgid "" @@ -3418,7 +3537,7 @@ msgstr "Titel" #: superset/views/dashboard/mixin.py:79 msgid "Slug" -msgstr "Slug" +msgstr "Slak" #: superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.test.tsx:368 #: superset-frontend/src/dashboard/components/PropertiesModal/PropertiesModal.test.tsx:382 @@ -3462,21 +3581,19 @@ msgstr "JSON Metadata" #: superset-frontend/src/pages/SavedQueryList/index.tsx:573 #: superset/views/dashboard/views.py:66 msgid "Export" -msgstr "Export" +msgstr "Exporteer" #: superset/views/dashboard/views.py:66 msgid "Export dashboards?" -msgstr "Export dashboards?" +msgstr "Dashboards exporteren?" #: superset/views/database/forms.py:109 -#, fuzzy msgid "CSV Upload" -msgstr "CSV upload" +msgstr "CSV Upload" #: superset/views/database/forms.py:110 -#, fuzzy msgid "Select a file to be uploaded to the database" -msgstr "Selecteer een CSV-bestand dat moet worden geüpload naar een database." +msgstr "Selecteer een bestand om te uploaden naar de database" #: superset/views/database/forms.py:120 superset/views/database/forms.py:300 #: superset/views/database/forms.py:434 @@ -3487,52 +3604,51 @@ msgstr "" "%(allowed_extensions)s" #: superset/views/database/forms.py:130 -#, fuzzy msgid "Name of table to be created with CSV file" -msgstr "Naam van de tabel die op basis van csv-gegevens moet worden gemaakt." +msgstr "Tabel naam die gemaakt moet worden met een CSV-bestand" #: superset/views/database/forms.py:133 superset/views/database/forms.py:285 #: superset/views/database/forms.py:417 msgid "Table name cannot contain a schema" -msgstr "" +msgstr "Tafelnaam mag geen schema bevatten" #: superset/views/database/forms.py:139 msgid "Select a database to upload the file to" -msgstr "" +msgstr "Selecteer een database om het bestand naar te uploaden" #: superset/views/database/forms.py:145 -#, fuzzy msgid "Column Data Types" -msgstr "Geladen gegevens in de cache" +msgstr "Kolom gegevenstypen" #: superset/views/database/forms.py:146 +#, fuzzy msgid "" "A dictionary with column names and their data types if you need to change" " the defaults. Example: {\"user_id\":\"int\"}. Check Python's Pandas " "library for supported data types." msgstr "" +"Een woordenboek met kolomnamen en hun datatypes als je de " +"standaardwaarden moet wijzigen. Voorbeeld: {\"user_id\":\"integer\"}" #: superset/views/database/forms.py:157 -#, fuzzy msgid "Select a schema if the database supports this" -msgstr "Geef een schema op (als de databasesmaak dit ondersteunt)." +msgstr "Selecteer een schema als de database dit ondersteunt" #: superset/views/database/forms.py:162 msgid "Delimiter" msgstr "Scheidingsteken" #: superset/views/database/forms.py:163 -#, fuzzy msgid "Enter a delimiter for this data" -msgstr "Voer een nieuwe titel in voor het tabblad" +msgstr "Voer een scheidingsteken in voor deze gegevens" #: superset/views/database/forms.py:165 msgid "," -msgstr "" +msgstr "," #: superset/views/database/forms.py:166 msgid "." -msgstr "" +msgstr "." #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:125 #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:496 @@ -3540,17 +3656,15 @@ msgstr "" #: superset-frontend/src/features/home/EmptyState.tsx:113 #: superset/views/database/forms.py:167 superset/views/database/forms.py:173 msgid "Other" -msgstr "" +msgstr "Overige" #: superset/views/database/forms.py:176 -#, fuzzy msgid "If Table Already Exists" -msgstr "Er bestaat al een filterset" +msgstr "Als Tabel al bestaat" #: superset/views/database/forms.py:177 -#, fuzzy msgid "What should happen if the table already exists" -msgstr "Er bestaat al een filterset met deze naam" +msgstr "Wat moet er gebeuren als de tabel al bestaat" #: superset/views/database/forms.py:179 superset/views/database/forms.py:336 #: superset/views/database/forms.py:463 @@ -3574,54 +3688,46 @@ msgid "Skip Initial Space" msgstr "Eerste spatie overslaan" #: superset/views/database/forms.py:186 -#, fuzzy msgid "Skip spaces after delimiter" -msgstr "Spaties overslaan na het scheidingsteken." +msgstr "Sla spaties over na het scheidingsteken" #: superset/views/database/forms.py:189 msgid "Skip Blank Lines" msgstr "Blanco regels overslaan" #: superset/views/database/forms.py:190 -#, fuzzy msgid "Skip blank lines rather than interpreting them as Not A Number values" -msgstr "Sla lege regels over in plaats van ze te interpreteren als NaN waarden." +msgstr "Sla lege regels over in plaats van ze te interpreteren als NaN waarden" #: superset/views/database/forms.py:195 -#, fuzzy msgid "Columns To Be Parsed as Dates" -msgstr "" -"Een door komma’s gescheiden lijst van kolommen die als datums moeten " -"worden geparseerd." +msgstr "Kolommen die als datums worden geparsed" #: superset/views/database/forms.py:196 -#, fuzzy msgid "A comma separated list of columns that should be parsed as dates" msgstr "" -"Een door komma’s gescheiden lijst van kolommen die als datums moeten " -"worden geparseerd." +"Een door komma's gescheiden lijst van kolommen die als datums moeten " +"worden geïnterpreteerd" #: superset/views/database/forms.py:202 msgid "Day First" -msgstr "" +msgstr "Dag Eerst" #: superset/views/database/forms.py:203 msgid "DD/MM format dates, international and European format" -msgstr "" +msgstr "DD/MM opmaak datums, internationaal en Europees formaat" #: superset/views/database/forms.py:206 superset/views/database/forms.py:381 msgid "Decimal Character" msgstr "Decimaal teken" #: superset/views/database/forms.py:208 -#, fuzzy msgid "Character to interpret as decimal point" -msgstr "Teken te interpreteren als decimaalteken." +msgstr "Teken te interpreteren als decimaalteken" #: superset/views/database/forms.py:213 -#, fuzzy msgid "Null Values" -msgstr "Nul waarden" +msgstr "Null Waarden" #: superset/views/database/forms.py:215 msgid "" @@ -3629,6 +3735,9 @@ msgid "" "for empty strings, [\"None\", \"N/A\"], [\"nan\", \"null\"]. Warning: " "Hive database supports only a single value" msgstr "" +"Json lijst van waarden die als nul moeten worden behandeld. Voorbeelden: " +"[\"\"] voor lege strings, [\"None\", \"N/A\"], [\"nan\", \"null\"]. " +"Waarschuwing: Hive database ondersteunt slechts een enkele waarde" #: superset/views/database/forms.py:222 superset/views/database/forms.py:353 msgid "Index Column" @@ -3639,6 +3748,8 @@ msgid "" "Column to use as the row labels of the dataframe. Leave empty if no index" " column" msgstr "" +"Te gebruiken kolom als rij labels van de dataframe. Laat leeg als er geen" +" index kolom is" #: superset/views/database/forms.py:231 superset/views/database/forms.py:388 #: superset/views/database/forms.py:479 @@ -3646,9 +3757,8 @@ msgid "Dataframe Index" msgstr "Dataframe Index" #: superset/views/database/forms.py:231 -#, fuzzy msgid "Write dataframe index as a column" -msgstr "Schrijf dataframe index als een kolom." +msgstr "Schrijf dataframe index als een kolom" #: superset/views/database/forms.py:234 superset/views/database/forms.py:391 #: superset/views/database/forms.py:482 @@ -3660,29 +3770,28 @@ msgid "" "Column label for index column(s). If None is given and Dataframe Index is" " checked, Index Names are used" msgstr "" +"Kolomlabel voor indexkolom(men). Als er geen is gegeven en de Dataframe " +"Index is aangevinkt, worden indexnamen gebruikt" #: superset/views/database/forms.py:243 -#, fuzzy msgid "Columns To Read" -msgstr "Te lezen rijen" +msgstr "Kolommen om te Lezen" #: superset/views/database/forms.py:245 -#, fuzzy msgid "Json list of the column names that should be read" -msgstr "" -"Een door komma’s gescheiden lijst van kolommen die als datums moeten " -"worden geparseerd." +msgstr "Json lijst van de kolomnamen die moeten worden gelezen" #: superset/views/database/forms.py:249 -#, fuzzy msgid "Overwrite Duplicate Columns" -msgstr "Dubbele kolommen verwijderen" +msgstr "Overschrijf Dubbele Kolommen" #: superset/views/database/forms.py:250 msgid "" "If duplicate columns are not overridden, they will be presented as \"X.1," " X.2 ...X.x\"" msgstr "" +"Als dubbele kolommen niet worden overschreven, worden ze gepresenteerd " +"als \"X.1, X.2 ...X.x\"" #: superset/views/database/forms.py:256 superset/views/database/forms.py:343 msgid "Header Row" @@ -3693,24 +3802,24 @@ 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 "" +"Rij met de headers om te gebruiken als kolomnamen (0 is de eerste regel " +"van de gegevens). Laat leeg als er geen kopregel is" #: superset/views/database/forms.py:266 superset/views/database/forms.py:368 msgid "Rows to Read" msgstr "Te lezen rijen" #: superset/views/database/forms.py:267 -#, fuzzy msgid "Number of rows of file to read" -msgstr "Aantal rijen van het te lezen bestand." +msgstr "Aantal rijen van het bestand om te lezen" #: superset/views/database/forms.py:272 superset/views/database/forms.py:362 msgid "Skip Rows" msgstr "Rijen overslaan" #: superset/views/database/forms.py:273 -#, fuzzy msgid "Number of rows to skip at start of file" -msgstr "Aantal rijen om over te slaan aan het begin van het bestand." +msgstr "Aantal rijen om over te slaan aan het begin van het bestand" #: superset/views/database/forms.py:282 msgid "Name of table to be created from excel data." @@ -3745,18 +3854,24 @@ msgid "" "If table exists do one of the following: Fail (do nothing), Replace (drop" " and recreate table) or Append (insert data)." msgstr "" +"Als de tabel bestaat doe dan een van de volgende: Fout (niets doen), " +"Vervang (verwijder en creëer tabel) of Toevoegen (voeg gegevens in)." #: superset/views/database/forms.py:344 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 "" +"Rij met de headers om te gebruiken als kolomnamen (0 is de eerste regel " +"van gegevens). Laat leeg als er geen kopregel is." #: superset/views/database/forms.py:354 msgid "" "Column to use as the row labels of the dataframe. Leave empty if no index" " column." msgstr "" +"Te gebruiken kolom als rij labels van de dataframe. Laat leeg als er geen" +" index kolom is." #: superset/views/database/forms.py:363 msgid "Number of rows to skip at start of file." @@ -3789,6 +3904,8 @@ msgid "" "Column label for index column(s). If None is given and Dataframe Index is" " True, Index Names are used." msgstr "" +"Kolomlabel voor indexkolom(men). Als er geen wordt gegeven en de " +"Dataframe Index waar is, worden Indexnamen gebruikt." #: superset/views/database/forms.py:400 msgid "Null values" @@ -3800,28 +3917,33 @@ msgid "" " [\"None\", \"N/A\"], [\"nan\", \"null\"]. Warning: Hive database " "supports only single value. Use [\"\"] for empty string." msgstr "" +"Json lijst van waarden die als nul moeten worden behandeld. Voorbeelden: " +"[\"\"], [\"None\", \"N/A\"], [\"nan\", \"null\"]. Waarschuwing: Hive " +"database ondersteunt slechts één waarde. Gebruik [\"\"] voor lege string." #: superset/views/database/forms.py:414 msgid "Name of table to be created from columnar data." -msgstr "" +msgstr "De naam van de tabel die gemaakt moet worden op basis van kolomgegevens." #: superset/views/database/forms.py:422 msgid "Columnar File" -msgstr "" +msgstr "Columnar bestand" #: superset/views/database/forms.py:423 msgid "Select a Columnar file to be uploaded to a database." -msgstr "" +msgstr "Selecteer een kolom-bestand om te worden geüpload naar een database." #: superset/views/database/forms.py:470 msgid "Use Columns" -msgstr "" +msgstr "Gebruik Kolommen" #: superset/views/database/forms.py:472 msgid "" "Json list of the column names that should be read. If not None, only " "these columns will be read from the file." msgstr "" +"Json lijst met kolomnamen die moeten worden gelezen. Indien niet geen, " +"dan worden alleen deze kolommen uit het bestand gelezen." #: superset-frontend/src/pages/DatabaseList/index.tsx:290 #: superset/views/database/mixins.py:33 @@ -3852,6 +3974,10 @@ msgid "" "assumes that you have a Celery worker setup as well as a results backend." " Refer to the installation docs for more information." msgstr "" +"Beheren van de database in asynchrone modus, wat betekent dat de query's " +"worden uitgevoerd op externe werkers in tegenstelling tot op de webserver" +" zelf. Dit veronderstelt dat u zowel een Celery werker als een resultaten" +" backend heeft. Raadpleeg de installatie documenten voor meer informatie." #: superset/views/database/mixins.py:112 msgid "Allow CREATE TABLE AS option in SQL Lab" @@ -3866,6 +3992,8 @@ msgid "" "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in" " SQL Lab" msgstr "" +"Gebruikers toestaan niet-SELECT statements uit te voeren (UPDATE, DELETE," +" CREATE, ...) in SQL Lab" #: superset/views/database/mixins.py:119 msgid "" @@ -3883,6 +4011,11 @@ msgid "" "service account, but impersonate the currently logged on user via " "hive.server2.proxy.user property." msgstr "" +"Indien Presto, alle zoekopdrachten in SQL Lab zullen worden uitgevoerd " +"als de momenteel ingelogde gebruiker die toestemming moet hebben om ze " +"uit te voeren.
Als Hive en hive.server2.enable.doAs is ingeschakeld, " +"worden de zoekopdrachten als serviceaccount uitgevoerd, maar imiteer de " +"momenteel ingelogde gebruiker via hive.server2.proxy.user eigenschap." #: superset/views/database/mixins.py:174 msgid "" @@ -3890,6 +4023,9 @@ msgid "" " A timeout of 0 indicates that the cache never expires. Note this " "defaults to the global timeout if undefined." msgstr "" +"Duur (in seconden) van de caching time-out voor grafieken van deze " +"database. Een time-out van 0 geeft aan dat de cache nooit verloopt. Merk " +"op dat dit standaard de globale time-out is indien niet gedefinieerd." #: superset/views/database/mixins.py:179 msgid "If selected, please set the schemas allowed for csv upload in Extra." @@ -3901,7 +4037,7 @@ msgstr "" #: superset-frontend/src/pages/DatabaseList/index.tsx:494 #: superset/views/database/mixins.py:185 msgid "Expose in SQL Lab" -msgstr "Expose in SQL Lab" +msgstr "Weergeven in SQL Lab" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:117 #: superset/views/database/mixins.py:186 @@ -3933,7 +4069,7 @@ msgstr "Cache time-out" #: superset/views/database/mixins.py:196 msgid "Secure Extra" -msgstr "Secure Extra" +msgstr "Beveilig Extra" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:387 #: superset/views/database/mixins.py:197 @@ -3969,6 +4105,9 @@ msgid "" "NAME'

Example:'postgresql://user:password@your-postgres-" "db/database'

" msgstr "" +"Ongeldige connectie string, een geldige string volgt algemeen: " +"'DRIVER://USER:PASSWORD@DB-HOST/DATABASE-NAAM'

Voorbeeld: " +"'postgresql://user:password@your-postgres-db/database'

" #: superset/views/database/views.py:161 msgid "CSV to Database configuration" @@ -3980,6 +4119,8 @@ msgid "" "Database \"%(database_name)s\" schema \"%(schema_name)s\" is not allowed " "for csv uploads. Please contact your Superset Admin." msgstr "" +"Database \"%(database_name)s\" schema \"%(schema_name)s\" is niet " +"toegestaan voor csv uploads. Neem contact op met uw Superset Admin." #: superset/views/database/views.py:277 #, python-format @@ -3987,6 +4128,9 @@ msgid "" "Unable to upload CSV file \"%(filename)s\" to table \"%(table_name)s\" in" " database \"%(db_name)s\". Error message: %(error_msg)s" msgstr "" +"Kan CSV-bestand niet uploaden \"%(filename)s\" voor tabel " +"\"%(table_name)s\" in database \"%(db_name)s\". Foutmelding: " +"%(error_msg)s" #: superset/views/database/views.py:289 #, python-format @@ -4007,6 +4151,8 @@ msgid "" "Database \"%(database_name)s\" schema \"%(schema_name)s\" is not allowed " "for excel uploads. Please contact your Superset Admin." msgstr "" +"Database \"%(database_name)s\" schema \"%(schema_name)s\" is niet " +"toegestaan voor Excel uploads. Neem contact op met uw Superset Admin." #: superset/views/database/views.py:412 #, python-format @@ -4014,6 +4160,9 @@ msgid "" "Unable to upload Excel file \"%(filename)s\" to table \"%(table_name)s\" " "in database \"%(db_name)s\". Error message: %(error_msg)s" msgstr "" +"Kan Excel-bestand niet uploaden \"%(filename)s\" voor tabel " +"\"%(table_name)s\" in database \"%(db_name)s\". Foutmelding: " +"%(error_msg)s" #: superset/views/database/views.py:424 #, python-format @@ -4021,16 +4170,20 @@ msgid "" "Excel file \"%(excel_filename)s\" uploaded to table \"%(table_name)s\" in" " database \"%(db_name)s\"" msgstr "" +"Excel-bestand \"%(excel_filename)s\" geüpload naar tabel " +"\"%(table_name)s\" in database \"%(db_name)s\"" #: superset/views/database/views.py:440 msgid "Columnar to Database configuration" -msgstr "" +msgstr "Kolom naar Database configuratie" #: superset/views/database/views.py:466 msgid "" "Multiple file extensions are not allowed for columnar uploads. Please " "make sure all files are of the same extension." msgstr "" +"Meerdere bestandsextensies zijn niet toegestaan voor kolomuploads. Zorg " +"ervoor dat alle bestanden van dezelfde extensie zijn." #: superset/views/database/views.py:479 #, python-format @@ -4038,6 +4191,8 @@ msgid "" "Database \"%(database_name)s\" schema \"%(schema_name)s\" is not allowed " "for columnar uploads. Please contact your Superset Admin." msgstr "" +"Database \"%(database_name)s\" schema \"%(schema_name)s\" is niet " +"toegestaan voor kolomuploads. Neem contact op met uw Superset Admin." #: superset/views/database/views.py:554 #, python-format @@ -4046,6 +4201,9 @@ msgid "" "\"%(table_name)s\" in database \"%(db_name)s\". Error message: " "%(error_msg)s" msgstr "" +"Kan het kolombestand \"%(filename)s\" niet uploaden naar de tabel " +"\"%(table_name)s\" in de database \"%(db_name)s\". Foutmelding: " +"%(error_msg)s" #: superset/views/database/views.py:566 #, python-format @@ -4053,6 +4211,8 @@ msgid "" "Columnar file \"%(columnar_filename)s\" uploaded to table " "\"%(table_name)s\" in database \"%(db_name)s\"" msgstr "" +"Kolombestand \"%(columnar_filename)s\" geüpload naar tabel " +"\"%(table_name)s\" in database \"%(db_name)s\"" #: superset/views/datasource/views.py:75 msgid "Request missing data field." @@ -4065,7 +4225,7 @@ msgstr "Dubbele kolomnaam (of -namen): %(columns)s" #: superset/views/log/__init__.py:21 msgid "Logs" -msgstr "Logs" +msgstr "Logboek" #: superset/views/log/__init__.py:22 msgid "Show Log" @@ -4101,26 +4261,25 @@ msgid "JSON" msgstr "JSON" #: superset/views/sql_lab/views.py:93 -#, fuzzy msgid "Untitled Query" -msgstr "Naamloze zoekopdracht" +msgstr "Naamloze Query" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:32 #: superset-frontend/src/explore/components/controls/FilterControl/utils/useDatePickerInAdhocFilter.tsx:43 msgid "Time Range" -msgstr "" +msgstr "Tijdsbereik" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:33 msgid "Time Column" -msgstr "" +msgstr "Tijd Kolom" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:34 msgid "Time Grain" -msgstr "" +msgstr "Tijdsinterval" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:35 msgid "Time Granularity" -msgstr "" +msgstr "Tijd Granulariteit" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:39 #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:26 @@ -4148,39 +4307,36 @@ msgstr "Tijd" #: superset-frontend/src/explore/controls.jsx:113 msgid "A reference to the [Time] configuration, taking granularity into account" msgstr "" +"Een verwijzing naar de [Time] configuratie, rekening houdend met " +"granulariteit" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:60 msgid "Aggregate" -msgstr "" +msgstr "Aggregate" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:61 msgid "Raw records" -msgstr "" +msgstr "Ruwe records" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:70 -#, fuzzy msgid "Category name" -msgstr "Query naam" +msgstr "Categorie naam" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:71 -#, fuzzy msgid "Total value" -msgstr "Nul waarden" +msgstr "Totaal waarde" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:72 -#, fuzzy msgid "Minimum value" -msgstr "Nul waarden" +msgstr "Minimale waarde" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:73 -#, fuzzy msgid "Maximum value" -msgstr "Nul waarden" +msgstr "Maximale waarde" #: superset-frontend/packages/superset-ui-chart-controls/src/constants.ts:74 -#, fuzzy msgid "Average value" -msgstr "Uitgestuurde waarden" +msgstr "Gemiddelde waarde" #: superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx:46 #: superset-frontend/src/components/CertifiedBadge/index.tsx:44 @@ -4198,7 +4354,7 @@ msgstr "omschrijving" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ControlHeader.tsx:74 #: superset-frontend/src/explore/components/ControlHeader.tsx:122 msgid "bolt" -msgstr "bolt" +msgstr "bliksem" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ControlHeader.tsx:75 #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:47 @@ -4217,7 +4373,7 @@ msgstr "Het veranderen van deze controleknop heeft onmiddellijk effect" #: superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx:52 msgid "Show info tooltip" -msgstr "" +msgstr "Toon info tooltip" #: superset-frontend/packages/superset-ui-chart-controls/src/components/SQLPopover.tsx:64 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:245 @@ -4226,14 +4382,12 @@ msgid "SQL expression" msgstr "SQL expressie" #: superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx:76 -#, fuzzy msgid "Column datatype" -msgstr "kolom" +msgstr "Kolom gegevenstype" #: superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx:97 -#, fuzzy msgid "Column name" -msgstr "kolom" +msgstr "Kolomnaam" #: superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx:100 #: superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx:129 @@ -4247,34 +4401,32 @@ msgid "Label" msgstr "Label" #: superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx:126 -#, fuzzy msgid "Metric name" -msgstr "Query naam" +msgstr "Metriek naam" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx:55 -#, fuzzy msgid "unknown type icon" -msgstr "Onbekende fout" +msgstr "onbekend type icoon" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx:59 msgid "function type icon" -msgstr "" +msgstr "functie type icoon" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx:61 msgid "string type icon" -msgstr "" +msgstr "string type icoon" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx:63 msgid "numeric type icon" -msgstr "" +msgstr "numeriek type icoon" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx:65 msgid "boolean type icon" -msgstr "" +msgstr "boolean type icoon" #: superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx:67 msgid "temporal type icon" -msgstr "" +msgstr "tijdelijk type icoon" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:27 #: superset-frontend/src/explore/controlPanels/sections.tsx:120 @@ -4335,6 +4487,8 @@ msgid "" "Defines a rolling window function to apply, works along with the " "[Periods] text box" msgstr "" +"Definieert een rollend venster functie om toe te passen, werkt samen met " +"het [Periods] tekstvak" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:58 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:274 @@ -4376,6 +4530,11 @@ msgid "" "periods. This will hide the \"ramp up\" taking place over the first 7 " "periods" msgstr "" +"Het minimum aantal rolperiodes dat nodig is om een waarde weer te geven. " +"Bijvoorbeeld, als je een cumulatief bedrag op 7 dagen doet, kan je je " +"\"Min Period\" 7 willen hebben, zodat alle getoonde datapunten het totaal" +" van 7 periodes zijn. Dit zal de \"aanloopperiode\" verbergen die " +"plaatsvindt in de eerste 7 periodes" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:104 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:71 @@ -4386,48 +4545,47 @@ msgstr "Tijdsvergelijking" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:112 #: superset-frontend/src/explore/controlPanels/sections.tsx:193 msgid "Time shift" -msgstr "Time shift" +msgstr "Tijdverschuiving" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:114 msgid "1 day ago" -msgstr "" +msgstr "1 dag geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:115 msgid "1 week ago" -msgstr "" +msgstr "1 week geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:116 msgid "28 days ago" -msgstr "" +msgstr "28 dagen geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:117 -#, fuzzy msgid "30 days ago" -msgstr "30 dagen" +msgstr "30 dagen geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:118 msgid "52 weeks ago" -msgstr "" +msgstr "52 weken geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:119 msgid "1 year ago" -msgstr "" +msgstr "1 jaar geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:120 msgid "104 weeks ago" -msgstr "" +msgstr "104 weken geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:121 msgid "2 years ago" -msgstr "" +msgstr "2 jaar geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:122 msgid "156 weeks ago" -msgstr "" +msgstr "156 weken geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:123 msgid "3 years ago" -msgstr "" +msgstr "3 jaar geleden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:125 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:208 @@ -4436,6 +4594,9 @@ msgid "" "relative time deltas in natural language (example: 24 hours, 7 days, 52 " "weeks, 365 days). Free text is supported." msgstr "" +"Een of meer timeseries van een relatieve tijdsperiode overlappen. " +"Verwacht de relatieve tijddeltas in de natuurlijke taal (bijvoorbeeld: 24" +" uur, 7 dagen, 52 weken, 365 dagen). Vrije tekst wordt ondersteund." #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:139 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:336 @@ -4447,9 +4608,8 @@ msgstr "Soort berekening" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:142 #: superset-frontend/src/explore/controlPanels/sections.tsx:221 -#, fuzzy msgid "Actual values" -msgstr "Nul waarden" +msgstr "Werkelijke waarden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:143 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:93 @@ -4459,7 +4619,7 @@ msgstr "Nul waarden" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:65 #: superset-frontend/src/explore/controlPanels/sections.tsx:222 msgid "Difference" -msgstr "" +msgstr "Verschil" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:144 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:341 @@ -4468,7 +4628,7 @@ msgstr "" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:67 #: superset-frontend/src/explore/controlPanels/sections.tsx:223 msgid "Percentage change" -msgstr "" +msgstr "Percentage wijziging" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:145 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:342 @@ -4476,7 +4636,7 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:496 #: superset-frontend/src/explore/controlPanels/sections.tsx:224 msgid "Ratio" -msgstr "" +msgstr "Verhouding" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:147 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:344 @@ -4488,6 +4648,9 @@ msgid "" "between the main time series and each time shift; as the percentage " "change; or as the ratio between series and time shifts." msgstr "" +"Hoe tijdsverschuivingen te tonen: als individuele regels; als verschil " +"tussen de hoofdtijdreeks en elke keer verschuiven; als het percentage " +"verandert; of als de verhouding tussen reeksen en tijdverschuivingen." #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:155 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:352 @@ -4496,7 +4659,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:230 #: superset-frontend/src/explore/controlPanels/sections.tsx:234 msgid "Resample" -msgstr "" +msgstr "Opnieuw bemonsteren" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:162 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:359 @@ -4511,45 +4674,42 @@ msgstr "Regel" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:165 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:240 msgid "1 minutely frequency" -msgstr "" +msgstr "1 minuut frequentie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:166 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:241 -#, fuzzy msgid "1 hourly frequency" -msgstr "Frequentie vernieuwen" +msgstr "frequentie elk uur" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:167 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:242 msgid "1 calendar day frequency" -msgstr "" +msgstr "1 dag kalender frequentie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:168 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:243 msgid "7 calendar day frequency" -msgstr "" +msgstr "7 kalenderdag frequentie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:169 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:244 msgid "1 month start frequency" -msgstr "" +msgstr "1 maand start frequentie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:170 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:245 msgid "1 month end frequency" -msgstr "" +msgstr "1 maand eind frequentie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:171 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:246 -#, fuzzy msgid "1 year start frequency" -msgstr "Frequentie vernieuwen" +msgstr "1 jaar start frequentie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:172 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:247 -#, fuzzy msgid "1 year end frequency" -msgstr "Frequentie vernieuwen" +msgstr "1 jaar eind frequentie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:174 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:369 @@ -4563,51 +4723,47 @@ msgstr "Pandas resample regel" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:183 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:259 msgid "Fill method" -msgstr "" +msgstr "Vul methode" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:186 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:262 msgid "Null imputation" -msgstr "" +msgstr "Null imputatie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:187 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:263 -#, fuzzy msgid "Zero imputation" -msgstr "omschrijving" +msgstr "Null imputatie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:188 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:264 msgid "Linear interpolation" -msgstr "" +msgstr "Lineaire interpolatie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:189 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:265 msgid "Forward values" -msgstr "" +msgstr "Waarden doorsturen" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:190 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:266 msgid "Backward values" -msgstr "" +msgstr "Achterwaartse waarden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:191 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:267 -#, fuzzy msgid "Median values" -msgstr "Uitgestuurde waarden" +msgstr "Mediaan waarden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:192 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:268 -#, fuzzy msgid "Mean values" -msgstr "Uitgestuurde waarden" +msgstr "Gemiddelde waarden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:193 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:269 -#, fuzzy msgid "Sum values" -msgstr "Nul waarden" +msgstr "Som waarden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx:195 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:387 @@ -4621,24 +4777,24 @@ msgstr "Pandas resample methode" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/annotationsAndLayers.tsx:25 #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:98 msgid "Annotations and Layers" -msgstr "" +msgstr "Annotaties en lagen" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:30 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:89 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:391 msgid "Left" -msgstr "" +msgstr "Links" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:31 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:87 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:374 msgid "Top" -msgstr "" +msgstr "Bovenaan" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:34 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:285 msgid "Chart Title" -msgstr "" +msgstr "Grafiek Titel" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:38 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:215 @@ -4667,11 +4823,11 @@ msgstr "X As" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:44 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:129 msgid "X Axis Title" -msgstr "" +msgstr "X-as Titel" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:58 msgid "X AXIS TITLE BOTTOM MARGIN" -msgstr "" +msgstr "X AXIS TITEL ONDER MARGE" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:66 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:224 @@ -4700,15 +4856,15 @@ msgstr "Y As" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:72 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:182 msgid "Y Axis Title" -msgstr "" +msgstr "Y-as Titel" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:86 msgid "Y Axis Title Margin" -msgstr "" +msgstr "Y-as Titel Marge" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/chartTitle.tsx:101 msgid "Y Axis Title Position" -msgstr "" +msgstr "Y-as Titel Positie" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/echartsTimeSeriesQuery.tsx:44 #: superset-frontend/packages/superset-ui-chart-controls/src/sections/echartsTimeSeriesQuery.tsx:50 @@ -4776,42 +4932,41 @@ msgstr "Query" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:36 msgid "Predictive Analytics" -msgstr "" +msgstr "Voorspelde Analyses" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:44 msgid "Enable forecast" -msgstr "" +msgstr "Voorspelling inschakelen" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:47 msgid "Enable forecasting" -msgstr "" +msgstr "Voorspelling inschakelen" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:56 msgid "Forecast periods" -msgstr "" +msgstr "Voorspel periodes" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:59 msgid "How many periods into the future do we want to predict" -msgstr "" +msgstr "Hoeveel periodes in de toekomst willen we voorspellen" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:70 msgid "Confidence interval" -msgstr "" +msgstr "Betrouwbaarheidsinterval" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:73 msgid "Width of the confidence interval. Should be between 0 and 1" -msgstr "" +msgstr "Breedte van het vertrouwensinterval. Moet tussen 0 en 1 zijn" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:85 msgid "Yearly seasonality" -msgstr "" +msgstr "Jaarlijkse seizoensinvloeden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:87 #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:106 #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:125 -#, fuzzy msgid "default" -msgstr "Standaard" +msgstr "standaard" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:88 #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:107 @@ -4847,26 +5002,32 @@ msgid "" "Should yearly seasonality be applied. An integer value will specify " "Fourier order of seasonality." msgstr "" +"Moet jaarlijks seizoensgebondenheid worden toegepast. Een integerwaarde " +"geeft Fourier volgorde van seizoensgebondenheid." #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:104 msgid "Weekly seasonality" -msgstr "" +msgstr "Wekelijkse seizoensinvloeden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:111 msgid "" "Should weekly seasonality be applied. An integer value will specify " "Fourier order of seasonality." msgstr "" +"Moet wekelijkse seizoensgebondenheid worden toegepast. Een integer waarde" +" geeft Fourier volgorde van seizoensgebondenheid." #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:123 msgid "Daily seasonality" -msgstr "" +msgstr "Dagelijkse seizoensinvloeden" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/forecastInterval.tsx:130 msgid "" "Should daily seasonality be applied. An integer value will specify " "Fourier order of seasonality." msgstr "" +"Moet dagelijks seizoensgebondenheid worden toegepast. Een integer waarde " +"geeft Fourier volgorde van seizoensgebondenheid." #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:28 #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:32 @@ -4876,7 +5037,7 @@ msgstr "Tijdgerelateerde vormattributen" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:42 msgid "Datasource & Chart Type" -msgstr "" +msgstr "Gegevensbron & grafiektype" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:52 #: superset-frontend/src/explore/controlPanels/sections.tsx:35 @@ -4900,30 +5061,32 @@ msgstr "Het aantal seconden voor het verstrijken van de cache" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:70 msgid "URL Parameters" -msgstr "" +msgstr "URL Parameters" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:72 msgid "Extra url parameters for use in Jinja templated queries" -msgstr "" +msgstr "Extra url parameters voor gebruik in Jinja templated query's" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:81 msgid "Extra Parameters" -msgstr "" +msgstr "Extra Parameters" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:83 msgid "" "Extra parameters that any plugins can choose to set for use in Jinja " "templated queries" msgstr "" +"Extra parameters die plugins kunnen instellen voor gebruik in Jinja " +"templated query's" #: superset-frontend/packages/superset-ui-chart-controls/src/sections/sections.tsx:93 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:348 msgid "Color Scheme" -msgstr "" +msgstr "Kleurenschema" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:47 msgid "Contribution Mode" -msgstr "" +msgstr "Bijdraag modus" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:51 #: superset-frontend/src/dashboard/components/gridComponents/new/NewRow.jsx:31 @@ -4936,60 +5099,56 @@ msgstr "Series" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:54 msgid "Calculate contribution per series or row" -msgstr "" +msgstr "Bereken bijdrage per reeks of rij" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:99 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:189 msgid "Y-Axis Sort By" -msgstr "" +msgstr "Y-as Sorteren Op" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:100 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:190 msgid "X-Axis Sort By" -msgstr "" +msgstr "X-as Sorteren Op" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:101 msgid "Decides which column to sort the base axis by." -msgstr "" +msgstr "Bepaalt de kolom waarop de basisas gesorteerd moet worden." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:152 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:205 -#, fuzzy msgid "Y-Axis Sort Ascending" -msgstr "Sorteer oplopend" +msgstr "Y-as Sorteer Oplopend" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:153 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:206 -#, fuzzy msgid "X-Axis Sort Ascending" -msgstr "Sorteer oplopend" +msgstr "X-as Sorteer Oplopend" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:155 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:208 -#, fuzzy msgid "Whether to sort ascending or descending on the base Axis." -msgstr "Aflopend of oplopend sorteren" +msgstr "Of er oplopend of aflopend moet worden gesorteerd op de basisas." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:166 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:317 msgid "Force categorical" -msgstr "" +msgstr "Forceer categorisch" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:168 msgid "Treat values as categorical." -msgstr "" +msgstr "Behandel waarden als categorisch." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx:194 msgid "Decides which measure to sort the base axis by." -msgstr "" +msgstr "Besluit welke maatregel de basisas sorteert." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:61 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:163 #: superset-frontend/src/explore/controls.jsx:123 #: superset-frontend/src/explore/controls.jsx:380 -#, fuzzy msgid "Dimensions" -msgstr "Is dimensie" +msgstr "Dimensies" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:67 msgid "" @@ -4997,21 +5156,27 @@ msgid "" "geographical data. Use dimensions to categorize, segment, and reveal the " "details in your data. Dimensions affect the level of detail in the view." msgstr "" +"Dimensies bevatten kwalitatieve waarden zoals namen, datums of " +"geografische gegevens. Gebruik afmetingen om de dimensies te " +"categoriseren, te segmenteren en de details in uw gegevens te onthullen. " +"Afmetingen hebben invloed op het detailniveau in de weergave." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:106 msgid "Add dataset columns here to group the pivot table columns." -msgstr "" +msgstr "Voeg hier dataset kolommen toe om de pivot tabel kolommen te groeperen." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:111 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:111 msgid "Dimension" -msgstr "" +msgstr "Dimensie" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:114 msgid "" "Defines the grouping of entities. Each series is represented by a " "specific color in the chart." msgstr "" +"Definieert de groepering van entiteiten. Elke serie wordt weergegeven " +"door een specifieke kleur in de grafiek." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:122 #: superset-frontend/src/explore/controls.jsx:392 @@ -5034,21 +5199,26 @@ msgid "" "Select one or many metrics to display. You can use an aggregation " "function on a column or write custom SQL to create a metric." msgstr "" +"Selecteer een of meerdere metrieken om weer te geven. U kunt een " +"aggregatie functie gebruiken op een kolom of aangepaste SQL schrijven om " +"een metriek te maken." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:174 msgid "" "Select a metric to display. You can use an aggregation function on a " "column or write custom SQL to create a metric." msgstr "" +"Selecteer een metriek om weer te geven. U kunt een aggregatie functie " +"gebruiken op een kolom of aangepaste SQL schrijven om een metriek te " +"maken." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:183 msgid "Right Axis Metric" -msgstr "" +msgstr "Rechter As Metriek" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:185 -#, fuzzy msgid "Select a metric to display on the right axis" -msgstr "Kies een meeteenheid voor de rechteras" +msgstr "Selecteer een metriek om weer te geven op de rechter as" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:192 #: superset-frontend/src/dashboard/components/SliceAdder.jsx:362 @@ -5062,32 +5232,39 @@ msgid "" "sorted) if a series or row limit is present. If not defined, it reverts " "to the first metric (where appropriate)." msgstr "" +"Deze metriek wordt gebruikt om rij selectiecriteria te definiëren (hoe de" +" rijen gesorteerd worden) als een rij limiet aanwezig is. Indien niet " +"gedefinieerd, keert het terug naar de eerste metriek (indien gepast)." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:208 #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:142 msgid "Bubble Size" -msgstr "" +msgstr "Bubbel grootte" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:209 msgid "Metric used to calculate bubble size" -msgstr "" +msgstr "Metriek gebruikt voor het berekenen van de bubbel grootte" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:216 msgid "The dataset column/metric that returns the values on your chart's x-axis." msgstr "" +"De dataset kolom/metriek die de waarden op de x-as van uw grafiek " +"weergeeft." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:225 msgid "The dataset column/metric that returns the values on your chart's y-axis." msgstr "" +"De dataset kolom/metriek die de waarden op de y-as van uw grafiek " +"weergeeft." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:233 msgid "Color Metric" -msgstr "" +msgstr "Kleur Metriek" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:236 #: superset-frontend/src/explore/controls.jsx:237 msgid "A metric to use for color" -msgstr "Een meeteenheid te gebruiken voor kleur" +msgstr "Een metriek te gebruiken voor kleur" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:243 #: superset-frontend/src/explore/controls.jsx:281 @@ -5096,27 +5273,31 @@ msgid "" " expression that return a DATETIME column in the table. Also note that " "the filter below is applied against this column or expression" msgstr "" +"De tijdkolom voor de visualisatie. Merk op dat u willekeurige expressie " +"kunt definiëren die een DATUMTIJD kolom in de tabel retourneert. Houd er " +"ook rekening mee dat het filter hieronder wordt toegepast tegen deze " +"kolom of expressie" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/dndControls.tsx:253 msgid "Drop a temporal column here or click" -msgstr "" +msgstr "Sleep hier een tijdelijke kolom of klik" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/mixins.tsx:33 msgid "Y-axis" -msgstr "" +msgstr "Y-as" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/mixins.tsx:33 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:290 msgid "Dimension to use on y-axis." -msgstr "" +msgstr "Dimensie voor gebruik op de y-as." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/mixins.tsx:34 msgid "X-axis" -msgstr "" +msgstr "X-as" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/mixins.tsx:34 msgid "Dimension to use on x-axis." -msgstr "" +msgstr "Dimensie voor gebruik op x-as." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:122 #: superset-frontend/src/explore/controls.jsx:201 @@ -5125,7 +5306,7 @@ msgstr "Het type visualisatie dat moet worden weergegeven" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:127 msgid "Fixed Color" -msgstr "" +msgstr "Vaste kleur" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:128 #: superset-frontend/src/explore/controls.jsx:206 @@ -5134,20 +5315,18 @@ msgstr "Gebruik dit om een statische kleur te definiëren voor alle cirkels" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:135 msgid "Linear Color Scheme" -msgstr "" +msgstr "Lineair kleurenschema" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:158 #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailMenuItems.tsx:243 #: superset-frontend/src/explore/controls.jsx:254 -#, fuzzy msgid "all" -msgstr "Alle" +msgstr "alle" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:159 #: superset-frontend/src/explore/controls.jsx:255 -#, fuzzy msgid "5 seconds" -msgstr "30 seconden" +msgstr "5 seconden" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:160 #: superset-frontend/src/explore/controls.jsx:256 @@ -5180,15 +5359,13 @@ msgstr "1 uur" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:465 #: superset-frontend/src/explore/controlPanels/sections.tsx:195 #: superset-frontend/src/explore/controls.jsx:262 -#, fuzzy msgid "1 day" -msgstr "dag" +msgstr "1 dag" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:167 #: superset-frontend/src/explore/controls.jsx:263 -#, fuzzy msgid "7 days" -msgstr "90 dagen" +msgstr "7 dagen" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:168 #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:49 @@ -5200,15 +5377,13 @@ msgstr "week" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:169 #: superset-frontend/src/explore/controls.jsx:265 -#, fuzzy msgid "week starting Sunday" -msgstr "Week beginnend op zondag" +msgstr "week beginnend op Zondag" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:170 #: superset-frontend/src/explore/controls.jsx:266 -#, fuzzy msgid "week ending Saturday" -msgstr "Week beginnend op zaterdag" +msgstr "week eindigt Zaterdag" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:171 #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:50 @@ -5220,9 +5395,8 @@ msgstr "maand" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:172 #: superset-frontend/src/explore/controls.jsx:268 -#, fuzzy msgid "quarter" -msgstr "Kwartaal" +msgstr "kwartaal" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:173 #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:51 @@ -5236,12 +5410,17 @@ 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 "" +"De tijd granulariteit voor de visualisatie. Merk op dat u eenvoudige " +"natuurlijke taal kunt typen en gebruiken zoals in `10 seconden`, `1 dag` " +"of `56 weken`" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:198 msgid "" "Select a time grain for the visualization. The grain is the time interval" " represented by a single point on the chart." msgstr "" +"Selecteer een tijdsgranulariteit voor de visualisatie. De granulatie is " +"het tijdsinterval dat wordt weergegeven door één punt in de grafiek." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:230 msgid "" @@ -5253,6 +5432,15 @@ msgid "" "engine's local timezone. Note one can explicitly set the timezone per the" " ISO 8601 format if specifying either the start and/or end time." msgstr "" +"Dit bedieningselement filtert het hele diagram op basis van het " +"geselecteerde tijdsbereik. Alle relatieve tijden, bijv. \"Vorige maand\"," +" \"Laatste 7 dagen\", \"nu\", etc. worden geëvalueerd op de server door " +"gebruik te maken van de lokale tijd (zonder tijdzone). Alle tooltips en " +"placeholder tijdsaanduidingen worden uitgedrukt in UTC (zonder tijdzone)." +" De tijdstempels worden vervolgens geëvalueerd in de database met behulp " +"van de lokale tijdzone van de engine. Merk op dat de tijdzone per ISO " +"8601 formaat expliciet kan worden ingesteld als de start- en/of eindtijd " +"wordt aangegeven." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:243 #: superset-frontend/src/explore/controls.jsx:340 @@ -5264,12 +5452,14 @@ msgid "" "Limits the number of the rows that are computed in the query that is the " "source of the data used for this chart." msgstr "" +"Beperkt het aantal rijen die zijn berekend in de query die de bron is van" +" de gegevens die gebruikt worden voor deze grafiek." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:259 #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:105 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:153 msgid "Sort Descending" -msgstr "" +msgstr "Sorteer Aflopend" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:261 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:329 @@ -5277,6 +5467,8 @@ msgid "" "If enabled, this control sorts the results/values descending, otherwise " "it sorts the results ascending." msgstr "" +"Indien ingeschakeld, sorteert deze controle de resultaten/waarden " +"aflopend, anders worden de resultaten oplopend gesorteerd." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:274 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:290 @@ -5294,20 +5486,25 @@ msgid "" "when grouping by high cardinality column(s) though does increase the " "query complexity and cost." msgstr "" +"Beperkt het aantal series die worden weergegeven. Een joined subquery (of" +" een extra fase waar subquery's niet worden ondersteund) wordt toegepast " +"om het aantal series dat wordt opgehaald en gerenderd te beperken. Deze " +"functie is handig bij het groeperen van kolom(men) met een hoge " +"kardinaliteit, maar verhoogt wel de query complexiteit en kosten." #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:306 #: superset-frontend/src/explore/controls.jsx:422 msgid "Y Axis Format" -msgstr "Y-as Formaat" +msgstr "Y-as Opmaak" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:327 #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:150 msgid "Currency format" -msgstr "" +msgstr "Valuta opmaak" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:337 msgid "Time format" -msgstr "" +msgstr "Tijd opmaak" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:352 #: superset-frontend/src/explore/controls.jsx:464 @@ -5315,39 +5512,37 @@ msgid "The color scheme for rendering chart" msgstr "Het kleurenschema voor de rendering grafiek" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:361 -#, fuzzy msgid "Truncate Metric" -msgstr "Sorteer meeteenheid" +msgstr "Metriek Afkappen" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:363 msgid "Whether to truncate metrics" -msgstr "" +msgstr "Of de metrieken moeten worden afgekapt" #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:368 #: superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/sharedControls.tsx:370 -#, fuzzy msgid "Show empty columns" -msgstr "Geen tijdskolommen" +msgstr "Toon lege kolommen" #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:27 #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:145 msgid "D3 format syntax: https://github.com/d3/d3-format" -msgstr "" +msgstr "D3 format syntax: https://github.com/d3/d3-format" #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:31 msgid "Only applies when \"Label Type\" is set to show values." -msgstr "" +msgstr "Geldt alleen wanneer \"Label Type\" is ingesteld op toon waarden." #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:34 msgid "Only applies when \"Label Type\" is not set to a percentage." -msgstr "" +msgstr "Geldt alleen wanneer \"Label Type\" niet is ingesteld op een percentage." #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:55 #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:67 #: superset-frontend/src/explore/controls.jsx:78 #: superset-frontend/src/explore/controls.jsx:101 msgid "Adaptive formatting" -msgstr "" +msgstr "Adaptieve opmaak" #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:56 #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailPane.tsx:130 @@ -5359,24 +5554,23 @@ msgstr "Originele waarde" #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:58 #: superset-frontend/src/explore/controls.jsx:89 msgid "Duration in ms (66000 => 1m 6s)" -msgstr "" +msgstr "Duur in ms (66000 => 1m 6s)" #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:59 msgid "Duration in ms (1.40008 => 1ms 400µs 80ns)" -msgstr "" +msgstr "Duur in ms (1,40008 => 1ms 400μs 80ns)" #: superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts:62 msgid "D3 time format syntax: https://github.com/d3/d3-time-format" -msgstr "" +msgstr "D3 format syntax: https://github.com/d3/d3-time-format" #: superset-frontend/packages/superset-ui-core/src/chart/components/FallbackComponent.tsx:45 -#, fuzzy msgid "Oops! An error occurred!" -msgstr "Er is een fout opgetreden" +msgstr "Oeps! Er is een fout opgetreden!" #: superset-frontend/packages/superset-ui-core/src/chart/components/FallbackComponent.tsx:51 msgid "Stack Trace:" -msgstr "" +msgstr "Stapeltracering:" #: superset-frontend/packages/superset-ui-core/src/chart/components/NoResultsComponent.tsx:65 msgid "" @@ -5384,49 +5578,49 @@ msgid "" "returned, ensure any filters are configured properly and the datasource " "contains data for the selected time range." msgstr "" +"Geen resultaten gevonden voor deze zoekopdracht. Als u resultaten " +"verwacht, zorg er dan voor dat alle filters correct zijn geconfigureerd " +"en dat de gegevensbron gegevens bevat voor het geselecteerde tijdsbereik." #: superset-frontend/packages/superset-ui-core/src/chart/components/NoResultsComponent.tsx:78 msgid "No Results" -msgstr "" +msgstr "Geen Resultaten" #: superset-frontend/packages/superset-ui-core/src/chart/components/SuperChartCore.tsx:175 -#, fuzzy msgid "ERROR" -msgstr "%s Fout" +msgstr "FOUT" #: superset-frontend/packages/superset-ui-core/src/query/extractQueryFields.ts:121 msgid "Found invalid orderby options" -msgstr "" +msgstr "Ongeldige order-opties gevonden" #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:67 msgid "Invalid input" -msgstr "" +msgstr "Ongeldige invoer" #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:77 msgid "Unexpected error: " -msgstr "" +msgstr "Onverwachte fout: " #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:78 msgid "(no description, click to see stack trace)" -msgstr "" +msgstr "(geen beschrijving, klik om de tracering te zien)" #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:111 -#, fuzzy msgid "Network error" -msgstr "Parameter fout" +msgstr "Netwerk fout" #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:123 -#, fuzzy msgid "Request timed out" -msgstr "Verzoek is geen JSON" +msgstr "Verzoek is verlopen" #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:132 msgid "Issue 1000 - The dataset is too large to query." -msgstr "" +msgstr "Issue 1000 - De dataset is te groot om te vragen." #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:136 msgid "Issue 1001 - The database is under an unusual load." -msgstr "" +msgstr "Issue 1001 - De database staat onder een ongebruikelijke belasting." #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:176 #: superset-frontend/src/SqlLab/components/ExploreCtasResultsButton/index.tsx:76 @@ -5434,50 +5628,49 @@ msgid "An error occurred" msgstr "Er is een fout opgetreden" #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:193 -#, fuzzy msgid "Sorry, an unknown error occurred." -msgstr "Sorry, er is een fout opgetreden" +msgstr "Sorry, er is een onbekende fout opgetreden." #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:196 -#, fuzzy, python-format +#, python-format msgid "Sorry, there was an error saving this %s: %s" -msgstr "Sorry er was een fout bij het ophalen van de opgeslagen grafieken: " +msgstr "Sorry, er was een fout bij het opslaan van deze %s: %s" #: superset-frontend/packages/superset-ui-core/src/query/getClientErrorObject.ts:203 -#, fuzzy, python-format +#, python-format msgid "You do not have permission to edit this %s" -msgstr "U heeft geen toestemming om deze grafiek te bewerken" +msgstr "U bent niet bevoegd deze %s te bewerken" #: superset-frontend/packages/superset-ui-core/src/validator/legacyValidateInteger.ts:31 #: superset-frontend/packages/superset-ui-core/src/validator/validateInteger.ts:32 msgid "is expected to be an integer" -msgstr "" +msgstr "wordt verwacht een geheel getal te zijn" #: superset-frontend/packages/superset-ui-core/src/validator/legacyValidateNumber.ts:28 #: superset-frontend/packages/superset-ui-core/src/validator/validateNumber.ts:32 msgid "is expected to be a number" -msgstr "" +msgstr "wordt verwacht dat het een getal is" #: superset-frontend/packages/superset-ui-core/src/validator/validateMapboxStylesUrl.ts:35 msgid "is expected to be a Mapbox URL" -msgstr "" +msgstr "wordt verwacht een Mapbox URL te zijn" #: superset-frontend/packages/superset-ui-core/src/validator/validateMaxValue.ts:23 #, python-format msgid "Value cannot exceed %s" -msgstr "" +msgstr "Waarde kan niet hoger zijn dan %s" #: superset-frontend/packages/superset-ui-core/src/validator/validateNonEmpty.ts:29 msgid "cannot be empty" -msgstr "" +msgstr "mag niet leeg zijn" #: superset-frontend/packages/superset-ui-core/src/validator/validateTimeComparisonRangeValues.ts:33 msgid "Filters for comparison must have a value" -msgstr "" +msgstr "Filters voor vergelijking moeten een waarde hebben" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:44 msgid "Domain" -msgstr "" +msgstr "Domein" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:47 #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:64 @@ -5493,25 +5686,26 @@ msgstr "dag" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:53 msgid "The time unit used for the grouping of blocks" -msgstr "" +msgstr "De tijdeenheid die gebruikt wordt voor het groeperen van blokken" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:60 msgid "Subdomain" -msgstr "" +msgstr "Subdomein" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:63 #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:175 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:83 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:73 -#, fuzzy msgid "min" -msgstr "in" +msgstr "min" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:69 msgid "" "The time unit for each block. Should be a smaller unit than " "domain_granularity. Should be larger or equal to Time Grain" msgstr "" +"De tijdeenheid voor elk blok. Moet een kleinere eenheid zijn dan " +"domain_granularity. Moet groter of gelijk zijn aan tijdseenheid" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:81 #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:51 @@ -5556,44 +5750,44 @@ msgstr "" #: superset-frontend/src/explore/fixtures.tsx:77 #: superset-frontend/src/explore/fixtures.tsx:86 msgid "Chart Options" -msgstr "" +msgstr "Grafiek Opties" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:95 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:60 msgid "Cell Size" -msgstr "" +msgstr "Cel grootte" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:96 msgid "The size of the square cell, in pixels" -msgstr "" +msgstr "De grootte van de vierkante cel, in pixels" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:107 msgid "Cell Padding" -msgstr "" +msgstr "Cel vulruimte" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:108 msgid "The distance between cells, in pixels" -msgstr "" +msgstr "De afstand tussen cellen, in pixels" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:121 msgid "Cell Radius" -msgstr "" +msgstr "Cel radius" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:122 msgid "The pixel radius" -msgstr "" +msgstr "De pixel radius" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:133 msgid "Color Steps" -msgstr "" +msgstr "Kleur Stappen" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:134 msgid "The number color \"steps\"" -msgstr "" +msgstr "De nummerkleur \"stappen\"" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:145 msgid "Time Format" -msgstr "" +msgstr "Tijd Opmaak" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:158 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:278 @@ -5602,7 +5796,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:235 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:101 msgid "Legend" -msgstr "" +msgstr "Legenda" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:161 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:281 @@ -5610,33 +5804,33 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:160 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:238 msgid "Whether to display the legend (toggles)" -msgstr "" +msgstr "Of de legenda moet worden weergegeven (schakelen)" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:168 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:304 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:261 #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:191 msgid "Show Values" -msgstr "" +msgstr "Toon Waarden" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:171 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:307 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:264 #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:194 msgid "Whether to display the numerical values within the cells" -msgstr "" +msgstr "Of de numerieke waarden binnen de cellen moeten worden weergegeven" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:182 msgid "Show Metric Names" -msgstr "" +msgstr "Toon Metriek Namen" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:185 msgid "Whether to display the metric name as a title" -msgstr "" +msgstr "Of de metriek naam als titel moet worden weergegeven" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/controlPanel.ts:195 msgid "Number Format" -msgstr "" +msgstr "Nummer Opmaak" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:26 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:28 @@ -5645,7 +5839,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/index.ts:39 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts:29 msgid "Correlation" -msgstr "" +msgstr "Correlatie" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:28 msgid "" @@ -5653,6 +5847,10 @@ msgid "" " calendar view. Gray values are used to indicate missing values and the " "linear color scheme is used to encode the magnitude of each day's value." msgstr "" +"Visualiseert hoe een metriek in de loop der tijd is veranderd met behulp " +"van een kleurenschaal en een kalenderweergave. Grijze waarden worden " +"gebruikt om ontbrekende waarden aan te geven en het lineaire " +"kleurenschema wordt gebruikt om de waarde van elke dag te coderen." #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:34 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:41 @@ -5666,7 +5864,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts:63 #: superset-frontend/plugins/plugin-chart-table/src/index.ts:48 msgid "Business" -msgstr "" +msgstr "Bedrijf" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:35 #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:36 @@ -5694,7 +5892,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/index.ts:40 #: superset-frontend/src/visualizations/TimeTable/index.ts:34 msgid "Comparison" -msgstr "" +msgstr "Vergelijken" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:36 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:42 @@ -5704,14 +5902,14 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/index.ts:35 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts:37 msgid "Intensity" -msgstr "" +msgstr "Intensiteit" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:37 #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/index.js:38 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:38 #: superset-frontend/plugins/plugin-chart-table/src/index.ts:49 msgid "Pattern" -msgstr "" +msgstr "Patroon" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:38 #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:39 @@ -5726,7 +5924,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-table/src/index.ts:51 #: superset-frontend/src/pages/ExecutionLogList/index.tsx:167 msgid "Report" -msgstr "" +msgstr "Rapport" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/index.js:39 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:40 @@ -5739,19 +5937,19 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/index.ts:66 #: superset-frontend/src/visualizations/TimeTable/index.ts:39 msgid "Trend" -msgstr "" +msgstr "Trend" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js:259 msgid "less than {min} {name}" -msgstr "" +msgstr "minder dan {min} {name}" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js:260 msgid "between {down} and {up} {name}" -msgstr "" +msgstr "tussen {down} en {up} {name}" #: superset-frontend/plugins/legacy-plugin-chart-calendar/src/vendor/cal-heatmap.js:261 msgid "more than {max} {name}" -msgstr "" +msgstr "meer dan {max} {name}" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:41 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:73 @@ -5764,7 +5962,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:49 #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:40 msgid "Sort by metric" -msgstr "" +msgstr "Sorteer op metriek" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:42 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:74 @@ -5778,6 +5976,8 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:41 msgid "Whether to sort results by the selected metric in descending order." msgstr "" +"Of de resultaten in aflopende volgorde moeten worden gesorteerd op de " +"geselecteerde metriek." #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:58 #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts:63 @@ -5796,11 +5996,11 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:112 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:319 msgid "Number format" -msgstr "" +msgstr "Nummer opmaak" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:59 msgid "Choose a number format" -msgstr "" +msgstr "Kies een getal opmaak" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:62 #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:52 @@ -5810,38 +6010,41 @@ msgstr "Bron" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:65 msgid "Choose a source" -msgstr "" +msgstr "Kies een bron" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:68 #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:62 msgid "Target" -msgstr "" +msgstr "Doel" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/controlPanel.ts:71 msgid "Choose a target" -msgstr "" +msgstr "Kies een doel" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:26 #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts:25 #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:27 #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:34 msgid "Flow" -msgstr "" +msgstr "Stroom" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:28 msgid "" "Showcases the flow or link between categories using thickness of chords. " "The value and corresponding thickness can be different for each side." msgstr "" +"Toont de stroom of koppel tussen categorieën met behulp van de dikte van " +"koorden. De waarde en de bijbehorende dikte kunnen voor elke kant " +"verschillend zijn." #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:32 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:35 msgid "Relationships between community channels" -msgstr "" +msgstr "Relaties tussen community kanalen" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:34 msgid "Chord Diagram" -msgstr "" +msgstr "Koorden Diagram" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:35 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:36 @@ -5849,7 +6052,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:42 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/index.ts:71 msgid "Circular" -msgstr "" +msgstr "Rond" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:35 #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts:32 @@ -5875,7 +6078,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/index.ts:42 #: superset-frontend/src/visualizations/TimeTable/index.ts:35 msgid "Legacy" -msgstr "" +msgstr "Verouderd" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:35 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js:30 @@ -5886,7 +6089,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts:47 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts:68 msgid "Proportional" -msgstr "" +msgstr "Proportioneel" #: superset-frontend/plugins/legacy-plugin-chart-chord/src/index.js:35 #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js:34 @@ -5895,30 +6098,30 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:46 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/index.ts:45 msgid "Relational" -msgstr "" +msgstr "Relationeel" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts:39 #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:118 msgid "Country" -msgstr "" +msgstr "Land" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts:42 msgid "Which country to plot the map for?" -msgstr "" +msgstr "Voor welk land moet de kaart worden getekend?" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts:77 msgid "ISO 3166-2 Codes" -msgstr "" +msgstr "ISO 3166-2 Codes" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts:78 msgid "" "Column containing ISO 3166-2 codes of region/province/department in your " "table." -msgstr "" +msgstr "Kolom met ISO 3166-2 codes regionaal/provincie/afdeling in uw tabel." #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/controlPanel.ts:84 msgid "Metric to display bottom title" -msgstr "" +msgstr "Metriek om de ondertiteling weer te geven" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:27 #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/index.js:26 @@ -5946,7 +6149,7 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts:52 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/index.ts:26 msgid "Map" -msgstr "" +msgstr "Kaart" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:29 msgid "" @@ -5955,13 +6158,17 @@ msgid "" "subdivision's value is elevated when you hover over the corresponding " "geographic boundary." msgstr "" +"Visualiseert hoe een enkele metriek varieert over de belangrijkste " +"onderverdelingen van een land (staten, provincies, enz.) op een " +"choropleth-kaart. De waarde van elke onderverdeling wordt verhoogd " +"wanneer u over de overeenkomstige geografische grens zweeft." #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:35 #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/index.ts:39 msgid "2D" -msgstr "" +msgstr "2D" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:37 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/index.ts:35 @@ -5969,13 +6176,13 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/index.ts:40 msgid "Geo" -msgstr "" +msgstr "Geo" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:38 #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/index.js:38 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/index.ts:60 msgid "Range" -msgstr "" +msgstr "Bereik" #: superset-frontend/plugins/legacy-plugin-chart-country-map/src/index.js:40 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:51 @@ -5985,19 +6192,19 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts:81 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/index.ts:66 msgid "Stacked" -msgstr "" +msgstr "Gestapeld" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/EventFlow.tsx:50 msgid "Sorry, there appears to be no data" -msgstr "" +msgstr "Sorry, er lijken geen gegevens te zijn" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:34 msgid "Event definition" -msgstr "" +msgstr "Gebeurtenis definitie" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:42 msgid "Event Names" -msgstr "" +msgstr "Gebeurtenis Namen" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:43 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:38 @@ -6005,153 +6212,163 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:99 #: superset-frontend/src/explore/fixtures.tsx:99 msgid "Columns to display" -msgstr "" +msgstr "Kolommen om te tonen" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:60 msgid "Order by entity id" -msgstr "" +msgstr "Sorteer op entiteit id" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:61 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 "" +"Belangrijk! Selecteer dit als de tabel nog niet is gesorteerd op entiteit" +" id, anders is er geen garantie dat alle gebeurtenissen voor elk entiteit" +" worden teruggegeven." #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:75 msgid "Minimum leaf node event count" -msgstr "" +msgstr "Minimum aantal gebeurtenissen per bladknoop" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:78 msgid "" "Leaf nodes that represent fewer than this number of events will be " "initially hidden in the visualization" msgstr "" +"Eindknooppunten die minder dan dit aantal evenementen vertegenwoordigen " +"worden in het begin verborgen in de visualisatie" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:93 msgid "Additional metadata" -msgstr "" +msgstr "Additionele metadata" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:102 msgid "Metadata" -msgstr "" +msgstr "Metadata" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:104 msgid "Select any columns for metadata inspection" -msgstr "" +msgstr "Selecteer alle kolommen voor metadata inspectie" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:122 msgid "Entity ID" -msgstr "" +msgstr "Entiteit ID" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:123 msgid "e.g., a \"user id\" column" -msgstr "" +msgstr "b.v. een \"gebruiker id\" kolom" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:126 msgid "Max Events" -msgstr "" +msgstr "Max Gebeurtenissen" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/controlPanel.tsx:127 msgid "The maximum number of events to return, equivalent to the number of rows" msgstr "" +"Het maximum aantal te retourneren gebeurtenissen, gelijk aan het aantal " +"rijen" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts:27 msgid "" "Compares the lengths of time different activities take in a shared " "timeline view." msgstr "" +"Vergelijk de duur van de verschillende activiteiten in een gedeelde " +"tijdlijnweergave." #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts:31 msgid "Event Flow" -msgstr "" +msgstr "Gebeurtenis Stroom" #: superset-frontend/plugins/legacy-plugin-chart-event-flow/src/index.ts:32 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/index.ts:63 msgid "Progressive" -msgstr "" +msgstr "Progressief" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:30 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:28 msgid "Axis ascending" -msgstr "" +msgstr "As oplopend" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:31 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:29 msgid "Axis descending" -msgstr "" +msgstr "As aflopend" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:32 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:30 msgid "Metric ascending" -msgstr "" +msgstr "Metriek oplopend" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:33 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:31 msgid "Metric descending" -msgstr "" +msgstr "Metriek aflopend" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:83 msgid "Heatmap Options" -msgstr "" +msgstr "Heatmap Opties" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:93 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:134 msgid "XScale Interval" -msgstr "" +msgstr "XSchaal Interval" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:98 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:141 msgid "Number of steps to take between ticks when displaying the X scale" -msgstr "" +msgstr "Aantal stappen tussen ticks bij het weergeven van de X-schaal" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:109 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:152 msgid "YScale Interval" -msgstr "" +msgstr "YSchaal Interval" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:114 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:159 msgid "Number of steps to take between ticks when displaying the Y scale" -msgstr "" +msgstr "Aantal stappen tussen ticks bij het weergeven van de Y-schaal" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:125 msgid "Rendering" -msgstr "" +msgstr "Renderen" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:128 msgid "pixelated (Sharp)" -msgstr "" +msgstr "korrelig (Scherp)" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:129 msgid "auto (Smooth)" -msgstr "" +msgstr "auto (Glad)" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:132 msgid "" "image-rendering CSS attribute of the canvas object that defines how the " "browser scales up the image" msgstr "" +"image-rendering CSS-attribuut van het canvasobject dat bepaalt hoe de " +"browser de afbeelding schaalt" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:144 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:77 msgid "Normalize Across" -msgstr "" +msgstr "Normaliseren over de hele" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:146 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:79 -#, fuzzy msgid "heatmap" -msgstr "Heatmap" +msgstr "heatmap" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:147 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:80 msgid "x" -msgstr "" +msgstr "x" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:148 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:81 msgid "y" -msgstr "" +msgstr "y" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:154 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:88 @@ -6159,27 +6376,30 @@ msgid "" "Color will be shaded based the normalized (0% to 100%) value of a given " "cell against the other cells in the selected range: " msgstr "" +"De kleur zal worden ingekleurd op basis van de genormaliseerde (0% tot " +"100%) waarde van een cel tegen de andere cellen in het geselecteerde " +"bereik: " #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:159 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:93 msgid "x: values are normalized within each column" -msgstr "" +msgstr "x: waarden worden binnen elke kolom genormaliseerd" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:160 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:94 msgid "y: values are normalized within each row" -msgstr "" +msgstr "y: waarden worden binnen elke rij genormaliseerd" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:162 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:96 msgid "heatmap: values are normalized across the entire heatmap" -msgstr "" +msgstr "heatmap: waarden worden genormaliseerd in de gehele heatmap" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:179 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:77 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:172 msgid "Left Margin" -msgstr "" +msgstr "Linker marge" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:181 #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:206 @@ -6189,74 +6409,77 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:117 #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:54 #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:90 -#, fuzzy msgid "auto" -msgstr "op" +msgstr "auto" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:191 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:89 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:184 msgid "Left margin, in pixels, allowing for more room for axis labels" -msgstr "" +msgstr "Linker marge, in pixels, wat meer ruimte voor as labels mogelijk maakt" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:204 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:195 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:197 msgid "Bottom Margin" -msgstr "" +msgstr "Onderste marge" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:216 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:207 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:209 msgid "Bottom margin, in pixels, allowing for more room for axis labels" -msgstr "" +msgstr "Onderste marge, in pixels, wat meer ruimte voor as labels mogelijk maakt" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:227 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:220 msgid "Value bounds" -msgstr "" +msgstr "Waarde grenzen" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:230 msgid "" "Hard value bounds applied for color coding. Is only relevant and applied " "when the normalization is applied against the whole heatmap." msgstr "" +"Hard waarde grenzen toegepast voor kleurcodering. Is alleen relevant en " +"toegepast wanneer de normalisatie wordt toegepast tegen de hele heatmap." #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:254 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:51 msgid "Sort X Axis" -msgstr "" +msgstr "Sorteer X-as" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:266 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:64 msgid "Sort Y Axis" -msgstr "" +msgstr "Sorteer Y-as" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:290 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:247 msgid "Show percentage" -msgstr "" +msgstr "Toon percentage" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:292 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:249 msgid "Whether to include the percentage in the tooltip" -msgstr "" +msgstr "Of het percentage in de tooltip moet worden opgenomen" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:318 #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:125 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:275 msgid "Normalized" -msgstr "" +msgstr "Genormaliseerd" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:320 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:277 msgid "Whether to apply a normal distribution based on rank on the color scale" msgstr "" +"Of er een normale verdeling op basis van rang moet worden toegepast op de" +" kleurschaal" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/controlPanel.tsx:332 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:295 msgid "Value Format" -msgstr "" +msgstr "Waarde Opmaak" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:30 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts:30 @@ -6265,19 +6488,23 @@ msgid "" "showcasing the correlation or strength between two groups. Color is used " "to emphasize the strength of the link between each pair of groups." msgstr "" +"Visualiseer een verwante metriek over paren van groepen. Heatmaps " +"excelleren bij het tonen van de correlatie of sterkte tussen twee " +"groepen. Kleur wordt gebruikt om de kracht van de link tussen elke groep " +"te benadrukken." #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:34 msgid "Sizes of vehicles" -msgstr "" +msgstr "Afmetingen van voertuigen" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:36 msgid "Employment and education" -msgstr "" +msgstr "Werkgelegenheid en onderwijs" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:39 #, fuzzy msgid "Heatmap (legacy)" -msgstr "Tijdreeks - Staafdiagram" +msgstr "Cirkel Grafiek (legacy)" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:44 #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/index.js:38 @@ -6286,7 +6513,7 @@ msgstr "Tijdreeks - Staafdiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts:38 #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/index.ts:40 msgid "Density" -msgstr "" +msgstr "Dichtheid" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:45 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js:41 @@ -6298,87 +6525,88 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/index.ts:62 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts:62 msgid "Predictive" -msgstr "" +msgstr "Voorspelling" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:46 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/index.ts:39 #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/index.ts:40 msgid "Single Metric" -msgstr "" +msgstr "Enkele Metriek" #: superset-frontend/plugins/legacy-plugin-chart-heatmap/src/index.js:47 msgid "Deprecated" -msgstr "" +msgstr "Verouderd" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx:114 -#, fuzzy msgid "to" -msgstr "Stop" +msgstr "naar" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx:117 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:77 msgid "count" -msgstr "" +msgstr "tellen" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx:121 msgid "cumulative" -msgstr "" +msgstr "cumulatief" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/Histogram.jsx:125 msgid "percentile (exclusive)" -msgstr "" +msgstr "percentiel (exclusief)" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:33 msgid "Select the numeric columns to draw the histogram" -msgstr "" +msgstr "Selecteer de numerieke kolommen om het histogram te tekenen" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:70 msgid "No of Bins" -msgstr "" +msgstr "Aantal Bins" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:82 msgid "Select the number of bins for the histogram" -msgstr "" +msgstr "Selecteer het aantal groepen voor het histogram" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:91 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:183 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:102 msgid "X Axis Label" -msgstr "" +msgstr "X-as Label" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:102 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:354 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:144 msgid "Y Axis Label" -msgstr "" +msgstr "Y-as Label" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:127 msgid "Whether to normalize the histogram" -msgstr "" +msgstr "Of het histogram moet worden genormaliseerd" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:137 msgid "Cumulative" -msgstr "" +msgstr "Cumulatief" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/controlPanel.ts:139 msgid "Whether to make the histogram cumulative" -msgstr "" +msgstr "Of het histogram cumulatief moet worden gemaakt" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/index.js:28 #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/index.js:26 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/index.ts:53 msgid "Distribution" -msgstr "" +msgstr "Verspreiding" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/index.js:29 msgid "" "Take your data points, and group them into \"bins\" to see where the " "densest areas of information lie" msgstr "" +"Neem uw gegevenspunten mee en groepeer ze in \"groepen\" om te zien waar " +"de dikste delen van informatie liggen" #: superset-frontend/plugins/legacy-plugin-chart-histogram/src/index.js:33 msgid "Population age data" -msgstr "" +msgstr "Populatie leeftijd data" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:41 #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/controlPanel.ts:45 @@ -6403,30 +6631,27 @@ msgstr "Bereken de bijdrage aan het totaal" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:61 msgid "Series Height" -msgstr "" +msgstr "Series hoogte" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:73 msgid "Pixel height of each series" -msgstr "" +msgstr "Pixelhoogte van elke serie" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:81 msgid "Value Domain" -msgstr "" +msgstr "Waarde Domein" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:83 -#, fuzzy msgid "series" -msgstr "Series" +msgstr "series" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:84 -#, fuzzy msgid "overall" -msgstr "Wis alles" +msgstr "algemeen" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:85 -#, fuzzy msgid "change" -msgstr "Beheer" +msgstr "wijziging" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/controlPanel.ts:88 msgid "" @@ -6434,6 +6659,9 @@ msgid "" " scale; change: Show changes compared to the first data point in each " "series" msgstr "" +"serie: Behandel elke serie onafhankelijk; in het algemeen: alle series " +"gebruiken dezelfde schaal; wijziging: Toon wijzigingen vergeleken met het" +" eerste gegevenspunt in elke serie" #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/index.js:28 msgid "" @@ -6441,59 +6669,59 @@ msgid "" "group is mapped to a row and change over time is visualized bar lengths " "and color." msgstr "" +"Vergelijkt hoe een metriek veranderd na verloop van tijd tussen " +"verschillende groepen. Elke groep wordt toegewezen aan een rij en " +"verandert na verloop van tijd weergegeven balklengtes en kleur." #: superset-frontend/plugins/legacy-plugin-chart-horizon/src/index.js:32 msgid "Horizon Chart" -msgstr "" +msgstr "Horizon grafiek" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:31 msgid "Dark Cyan" -msgstr "" +msgstr "Donker Cyaan" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:32 -#, fuzzy msgid "Purple" -msgstr "Regel" +msgstr "Paars" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:33 msgid "Gold" -msgstr "" +msgstr "Goud" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:34 msgid "Dim Gray" -msgstr "" +msgstr "Grijs Dimmen" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:35 -#, fuzzy msgid "Crimson" -msgstr "Actie" +msgstr "Donkerrood" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:36 -#, fuzzy msgid "Forest Green" -msgstr "Frequentie vernieuwen" +msgstr "Bos Groen" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:50 #: superset-frontend/src/explore/components/controls/SpatialControl.jsx:174 msgid "Longitude" -msgstr "" +msgstr "Lengtegraad" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:51 msgid "Column containing longitude data" -msgstr "" +msgstr "Kolom met lengtegraad gegevens" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:60 #: superset-frontend/src/explore/components/controls/SpatialControl.jsx:178 msgid "Latitude" -msgstr "" +msgstr "Breedtegraad" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:61 msgid "Column containing latitude data" -msgstr "" +msgstr "Kolom met breedtegraad gegevens" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:71 msgid "Clustering Radius" -msgstr "" +msgstr "Clusteringsradius" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:84 msgid "" @@ -6501,14 +6729,17 @@ msgid "" "to turn off clustering, but beware that a large number of points (>1000) " "will cause lag." msgstr "" +"De radius (in pixels) het algoritme zal gebruiken om een cluster te " +"definiëren. Kies 0 om clustering uit te schakelen, maar houd er rekening " +"mee dat een groot aantal punten (>1000) vertraging veroorzaakt." #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:98 msgid "Points" -msgstr "" +msgstr "Punten" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:105 msgid "Point Radius" -msgstr "" +msgstr "Punt Radius" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:107 msgid "" @@ -6516,6 +6747,9 @@ msgid "" "a numerical column or `Auto`, which scales the point based on the largest" " cluster" msgstr "" +"De radius van individuele punten (punten die niet in een cluster zitten)." +" Of een numerieke kolom of `Auto`, die het punt zal schalen gebaseerd op " +"het grootste cluster" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:114 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:147 @@ -6523,40 +6757,37 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:153 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:174 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:199 -#, fuzzy msgid "Auto" -msgstr "op" +msgstr "Auto" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:127 msgid "Point Radius Unit" -msgstr "" +msgstr "Punt Radius Eenheid" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:130 msgid "Pixels" -msgstr "" +msgstr "Pixels" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:131 -#, fuzzy msgid "Miles" -msgstr "Filters" +msgstr "Mijlen" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:132 -#, fuzzy msgid "Kilometers" -msgstr "Filters" +msgstr "Kilometers" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:134 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:86 msgid "The unit of measure for the specified point radius" -msgstr "" +msgstr "De meeteenheid voor de opgegeven punt radius" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:143 msgid "Labelling" -msgstr "" +msgstr "Labelen" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:151 msgid "label" -msgstr "" +msgstr "label" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:153 msgid "" @@ -6564,10 +6795,14 @@ msgid "" "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 "" +"`count` is COUNT(*) als een groep wordt gebruikt. Numerieke kolommen " +"worden samengevoegd met de aggregator. Niet-numerieke kolommen worden " +"gebruikt om punten te labelen. Laat leeg om een aantal punten in elk " +"cluster te krijgen." #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:170 msgid "Cluster label aggregator" -msgstr "" +msgstr "Cluster label aggregator" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:173 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:258 @@ -6583,7 +6818,7 @@ msgstr "" #: superset-frontend/src/explore/controlPanels/sections.tsx:143 #: superset-frontend/src/explore/controlPanels/sections.tsx:267 msgid "sum" -msgstr "" +msgstr "som" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:174 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:257 @@ -6599,14 +6834,13 @@ msgstr "" #: superset-frontend/src/explore/controlPanels/sections.tsx:142 #: superset-frontend/src/explore/controlPanels/sections.tsx:266 msgid "mean" -msgstr "" +msgstr "gemiddelde" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:176 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:84 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:74 -#, fuzzy msgid "max" -msgstr "Max" +msgstr "max" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:177 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:259 @@ -6615,72 +6849,72 @@ msgstr "Max" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:189 #: superset-frontend/src/explore/controlPanels/sections.tsx:144 msgid "std" -msgstr "" +msgstr "std" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:178 msgid "var" -msgstr "" +msgstr "var" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:181 msgid "" "Aggregate function applied to the list of points in each cluster to " "produce the cluster label." msgstr "" +"Aggregate functie toegepast op de lijst van punten in elke cluster om het" +" clusterlabel te produceren." #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:191 msgid "Visual Tweaks" -msgstr "" +msgstr "Visuele Aanpassingen" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:198 msgid "Live render" -msgstr "" +msgstr "Live render" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:200 msgid "Points and clusters will update as the viewport is being changed" -msgstr "" +msgstr "Punten en clusters worden bijgewerkt als de viewport wordt gewijzigd" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:211 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:371 msgid "Map Style" -msgstr "" +msgstr "Kaart Stijl" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:217 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:377 msgid "Streets" -msgstr "" +msgstr "Straten" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:218 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:378 msgid "Dark" -msgstr "" +msgstr "Donker" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:219 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:379 -#, fuzzy msgid "Light" -msgstr "Hoogte" +msgstr "Licht" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:222 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:380 msgid "Satellite Streets" -msgstr "" +msgstr "Satelliet Straten" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:224 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:381 -#, fuzzy msgid "Satellite" -msgstr "Datum filter" +msgstr "Satelliet" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:225 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:382 msgid "Outdoors" -msgstr "" +msgstr "Buitenshuis" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:228 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:385 #, python-format msgid "Base layer map style. See Mapbox documentation: %s" -msgstr "" +msgstr "Basislaag kaartstijl. Zie Mapbox documentatie: %s" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:240 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:125 @@ -6691,63 +6925,65 @@ msgstr "Opaciteit" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:243 msgid "Opacity of all clusters, points, and labels. Between 0 and 1." -msgstr "" +msgstr "Ondoorzichtigheid van alle clusters, punten en labels. Tussen 0 en 1." #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:255 msgid "RGB Color" -msgstr "" +msgstr "RGB kleur" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:258 msgid "The color for points and clusters in RGB" -msgstr "" +msgstr "De kleur voor punten en clusters in RGB" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:265 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:294 #: superset-frontend/src/explore/components/controls/ViewportControl.jsx:111 msgid "Viewport" -msgstr "" +msgstr "Weergavevenster" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:273 msgid "Default longitude" -msgstr "" +msgstr "Standaard lengtegraad" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:277 msgid "Longitude of default viewport" -msgstr "" +msgstr "Lengtegraad van standaard viewport" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:287 msgid "Default latitude" -msgstr "" +msgstr "Standaard breedtegraad" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:291 msgid "Latitude of default viewport" -msgstr "" +msgstr "Breedtegraad van standaard viewport" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:303 msgid "Zoom" -msgstr "" +msgstr "Zoom" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:307 msgid "Zoom level of the map" -msgstr "" +msgstr "Zoom niveau van de kaart" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/controlPanel.ts:320 msgid "" "One or many controls to group by. If grouping, latitude and longitude " "columns must be present." msgstr "" +"Eén of meerdere besturingselementen om te groeperen. Als kolommen, " +"breedtegraad en lengtegraad aanwezig moeten zijn." #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/index.js:30 msgid "Light mode" -msgstr "" +msgstr "Lichte modus" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/index.js:31 msgid "Dark mode" -msgstr "" +msgstr "Donkere modus" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/index.js:33 msgid "MapBox" -msgstr "" +msgstr "KaartBox" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/index.js:39 #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js:42 @@ -6758,7 +6994,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:83 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Scatter/index.ts:75 msgid "Scatter" -msgstr "" +msgstr "Verspreiding" #: superset-frontend/plugins/legacy-plugin-chart-map-box/src/index.js:40 #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:48 @@ -6770,53 +7006,55 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/index.ts:65 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts:64 msgid "Transformable" -msgstr "" +msgstr "Transformabel" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/controlPanel.ts:63 msgid "Significance Level" -msgstr "" +msgstr "Significantie Niveau" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/controlPanel.ts:65 msgid "Threshold alpha level for determining significance" -msgstr "" +msgstr "Drempelwaarde alfa-niveau voor het bepalen van significantie" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/controlPanel.ts:76 msgid "p-value precision" -msgstr "" +msgstr "p-waarde precisie" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/controlPanel.ts:78 msgid "Number of decimal places with which to display p-values" -msgstr "" +msgstr "Aantal decimalen waarmee p-waarden worden weergegeven" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/controlPanel.ts:89 msgid "Lift percent precision" -msgstr "" +msgstr "Percentage precisie opheffen" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/controlPanel.ts:91 msgid "Number of decimal places with which to display lift values" -msgstr "" +msgstr "Aantal decimalen waarmee de liftwaarden worden weergegeven" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/index.js:26 msgid "" "Table that visualizes paired t-tests, which are used to understand " "statistical differences between groups." msgstr "" +"Tabel met daarin gekoppelde tests, die worden gebruikt om statistische " +"verschillen tussen groepen te begrijpen." #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/index.js:29 msgid "Paired t-test Table" -msgstr "" +msgstr "Gekoppelde t-test Tabel" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/index.js:30 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/index.ts:60 msgid "Statistical" -msgstr "" +msgstr "Statistisch" #: superset-frontend/plugins/legacy-plugin-chart-paired-t-test/src/index.js:30 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts:61 #: superset-frontend/plugins/plugin-chart-table/src/index.ts:53 #: superset-frontend/src/visualizations/TimeTable/index.ts:37 msgid "Tabular" -msgstr "" +msgstr "Tabelvormig" #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/controlPanel.ts:38 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:67 @@ -6830,23 +7068,23 @@ msgstr "" #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:68 #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:133 msgid "Options" -msgstr "" +msgstr "Opties" #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/controlPanel.ts:46 msgid "Data Table" -msgstr "" +msgstr "Data Tabel" #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/controlPanel.ts:49 msgid "Whether to display the interactive data table" -msgstr "" +msgstr "Of de interactieve datatabel moet worden weergegeven" #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/controlPanel.ts:56 msgid "Include Series" -msgstr "" +msgstr "Includeer Serie" #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/controlPanel.ts:59 msgid "Include series name as an axis" -msgstr "" +msgstr "Voeg naam van de series toe aan een as" #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js:27 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:27 @@ -6854,7 +7092,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts:55 #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/index.ts:33 msgid "Ranking" -msgstr "" +msgstr "Ranglijst" #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js:29 msgid "" @@ -6862,69 +7100,72 @@ msgid "" "links them together as a line. This chart is useful for comparing " "multiple metrics across all of the samples or rows in the data." msgstr "" +"Tekent de individuele metrieken voor elke rij in de data verticaal en " +"verbind ze als een lijn. Deze grafiek is handig voor het vergelijken van " +"meerdere metrieken over alle samples of rijen in de data." #: superset-frontend/plugins/legacy-plugin-chart-parallel-coordinates/src/index.js:34 #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:39 #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:44 msgid "Directional" -msgstr "" +msgstr "Directioneel" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:59 msgid "Time Series Options" -msgstr "" +msgstr "Tijd Series Opties" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:73 msgid "Not Time Series" -msgstr "" +msgstr "Geen Tijdserie" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:75 msgid "Ignore time" -msgstr "" +msgstr "Negeer tijd" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:78 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/vendor/superset/AnnotationTypes.js:47 msgid "Time Series" -msgstr "" +msgstr "Tijd Series" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:80 msgid "Standard time series" -msgstr "" +msgstr "Standaard tijdserie" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:83 msgid "Aggregate Mean" -msgstr "" +msgstr "Aggregate Gemiddelde" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:85 msgid "Mean of values over specified period" -msgstr "" +msgstr "Gemiddelde van waarden over de opgegeven periode" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:88 msgid "Aggregate Sum" -msgstr "" +msgstr "Aggregate Som" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:90 msgid "Sum of values over specified period" -msgstr "" +msgstr "Som van waarden over de opgegeven periode" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:95 msgid "Metric change in value from `since` to `until`" -msgstr "" +msgstr "Metriek verandering in waarde van `sinds` tot `tot`" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:100 msgid "Percent Change" -msgstr "" +msgstr "Percentage Wijziging" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:102 msgid "Metric percent change in value from `since` to `until`" -msgstr "" +msgstr "Metriek percentage verandering in waarde van `sinds` tot `tot`" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:107 msgid "Factor" -msgstr "" +msgstr "Factor" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:109 msgid "Metric factor change from `since` to `until`" -msgstr "" +msgstr "Metriek factor veranderen van `sinds` tot `tot`" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:114 #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:234 @@ -6932,82 +7173,86 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:386 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:169 msgid "Advanced Analytics" -msgstr "" +msgstr "Geavanceerde Analytics" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:116 msgid "Use the Advanced Analytics options below" -msgstr "" +msgstr "Gebruik de onderstaande geavanceerde Analytics opties" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:125 msgid "Settings for time series" -msgstr "" +msgstr "Instellingen voor tijdreeks" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:155 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:80 msgid "Date Time Format" -msgstr "" +msgstr "Datum Tijd Opmaak" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:168 msgid "Partition Limit" -msgstr "" +msgstr "Partitie Limiet" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:171 msgid "" "The maximum number of subdivisions of each group; lower values are pruned" " first" msgstr "" +"Het maximale aantal onderverdelingen van elke groep; lagere waarden " +"worden eerst verwijderd" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:181 msgid "Partition Threshold" -msgstr "" +msgstr "Partitie Drempelwaarde" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:184 msgid "" "Partitions whose height to parent height proportions are below this value" " are pruned" msgstr "" +"Partities waarvan de hoogte ten opzichte van bovenliggende hoogte " +"verhoudingen onder deze waarde liggen, worden verwijderd" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:196 msgid "Log Scale" -msgstr "" +msgstr "Log Schaal" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:199 msgid "Use a log scale" -msgstr "" +msgstr "Gebruik een log-schaal" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:208 msgid "Equal Date Sizes" -msgstr "" +msgstr "Gelijke datumgrootte" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:211 msgid "Check to force date partitions to have the same height" -msgstr "" +msgstr "Aanvinken om de datum partities te forceren dezelfde hoogte te hebben" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:222 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:93 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:302 msgid "Rich Tooltip" -msgstr "" +msgstr "Rijke Tooltip" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:225 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:96 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:305 msgid "The rich tooltip shows a list of all series for that point in time" -msgstr "" +msgstr "De rijke tooltip toont een lijst van alle series voor dat punt in tijd" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:245 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:129 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:396 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:175 msgid "Rolling Window" -msgstr "" +msgstr "Rollend Venster" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:253 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:137 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:404 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:183 msgid "Rolling Function" -msgstr "" +msgstr "Rollende fFnctie" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:260 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:144 @@ -7015,43 +7260,41 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:190 #: superset-frontend/src/explore/controlPanels/sections.tsx:145 msgid "cumsum" -msgstr "" +msgstr "cumsom" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:286 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:170 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:439 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:218 msgid "Min Periods" -msgstr "" +msgstr "Min Perioden" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:301 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:185 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:453 msgid "Time Comparison" -msgstr "" +msgstr "Tijdsvergelijking" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:311 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:195 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:463 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:767 msgid "Time Shift" -msgstr "" +msgstr "Tijdverschuiving" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:314 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:198 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:466 #: superset-frontend/src/explore/controlPanels/sections.tsx:196 -#, fuzzy msgid "1 week" -msgstr "week" +msgstr "1 week" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:315 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:199 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:467 #: superset-frontend/src/explore/controlPanels/sections.tsx:197 -#, fuzzy msgid "28 days" -msgstr "90 dagen" +msgstr "28 dagen" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:316 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:200 @@ -7065,49 +7308,43 @@ msgstr "30 dagen" #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:201 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:469 #: superset-frontend/src/explore/controlPanels/sections.tsx:199 -#, fuzzy msgid "52 weeks" -msgstr "week" +msgstr "52 week" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:318 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:202 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:470 #: superset-frontend/src/explore/controlPanels/sections.tsx:200 -#, fuzzy msgid "1 year" -msgstr "jaar" +msgstr "1 jaar" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:319 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:203 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:471 #: superset-frontend/src/explore/controlPanels/sections.tsx:201 -#, fuzzy msgid "104 weeks" -msgstr "week" +msgstr "104 weken" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:320 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:204 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:472 #: superset-frontend/src/explore/controlPanels/sections.tsx:202 -#, fuzzy msgid "2 years" -msgstr "jaar" +msgstr "2 jaar" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:321 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:205 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:473 #: superset-frontend/src/explore/controlPanels/sections.tsx:203 -#, fuzzy msgid "156 weeks" -msgstr "week" +msgstr "156 weken" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:322 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:206 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:474 #: superset-frontend/src/explore/controlPanels/sections.tsx:204 -#, fuzzy msgid "3 years" -msgstr "jaar" +msgstr "3 jaar" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:324 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:476 @@ -7117,55 +7354,57 @@ msgid "" "relative time deltas in natural language (example: 24 hours, 7 days, 52 " "weeks, 365 days). Free text is supported." msgstr "" +"Een of meer timeseries van een relatieve tijdsperiode overlappen. " +"Verwacht de relatieve tijddeltas in de natuurlijke taal (bijvoorbeeld: 24" +" uur, 7 dagen, 52 weken, 365 dagen). Vrije tekst wordt ondersteund." #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:339 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:223 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:493 -#, fuzzy msgid "Actual Values" -msgstr "Nul waarden" +msgstr "Werkelijke waarden" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:362 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:246 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:516 #: superset-frontend/src/explore/controlPanels/sections.tsx:244 msgid "1T" -msgstr "" +msgstr "1T" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:363 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:247 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:517 #: superset-frontend/src/explore/controlPanels/sections.tsx:245 msgid "1H" -msgstr "" +msgstr "1U" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:364 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:248 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:518 #: superset-frontend/src/explore/controlPanels/sections.tsx:246 msgid "1D" -msgstr "" +msgstr "1D" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:365 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:249 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:519 #: superset-frontend/src/explore/controlPanels/sections.tsx:247 msgid "7D" -msgstr "" +msgstr "7D" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:366 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:250 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:520 #: superset-frontend/src/explore/controlPanels/sections.tsx:248 msgid "1M" -msgstr "" +msgstr "1M" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:367 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:251 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:521 #: superset-frontend/src/explore/controlPanels/sections.tsx:249 msgid "1AS" -msgstr "" +msgstr "1AS" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:377 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:261 @@ -7179,21 +7418,21 @@ msgstr "Methode" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:536 #: superset-frontend/src/explore/controlPanels/sections.tsx:262 msgid "asfreq" -msgstr "" +msgstr "asfreq" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:381 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:265 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:537 #: superset-frontend/src/explore/controlPanels/sections.tsx:263 msgid "bfill" -msgstr "" +msgstr "bfill" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:382 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:266 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:538 #: superset-frontend/src/explore/controlPanels/sections.tsx:264 msgid "ffill" -msgstr "" +msgstr "ffill" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/controlPanel.tsx:383 #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:267 @@ -7201,7 +7440,7 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:539 #: superset-frontend/src/explore/controlPanels/sections.tsx:265 msgid "median" -msgstr "" +msgstr "mediaan" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js:26 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/index.ts:56 @@ -7209,15 +7448,15 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/index.ts:34 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts:55 msgid "Part of a Whole" -msgstr "" +msgstr "Deel van een geheel" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js:27 msgid "Compare the same summarized metric across multiple groups." -msgstr "" +msgstr "Vergelijk dezelfde samengevatte metriek over meerdere groepen." #: superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js:29 msgid "Partition Chart" -msgstr "" +msgstr "Verdeel Grafiek" #: superset-frontend/plugins/legacy-plugin-chart-partition/src/index.js:30 #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:38 @@ -7228,13 +7467,13 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/index.ts:64 #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/index.ts:40 msgid "Categorical" -msgstr "" +msgstr "Categorisch" #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:105 #: superset-frontend/src/explore/controlUtils/controlUtils.test.tsx:114 #: superset-frontend/src/explore/fixtures.tsx:43 msgid "Use Area Proportions" -msgstr "" +msgstr "Gebruik Gebied Proporties" #: superset-frontend/plugins/legacy-plugin-chart-rose/src/controlPanel.tsx:106 #: superset-frontend/src/explore/controlUtils/controlUtils.test.tsx:115 @@ -7243,6 +7482,8 @@ msgid "" "Check if the Rose Chart should use segment area instead of segment radius" " for proportioning" msgstr "" +"Controleer of de Rose Grafiek het segment gebied moet gebruiken in plaats" +" van segmentstraal om de verhouding te geven" #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:28 msgid "" @@ -7250,10 +7491,13 @@ msgid "" "angle, and the value represented by any wedge is illustrated by its area," " rather than its radius or sweep angle." msgstr "" +"Een coördinatendiagram van de pool waar de cirkel wordt verdeeld in een " +"wig van gelijke hoek, en de waarde die elke wig vertegenwoordigt, wordt " +"geïllustreerd door zijn gebied, in plaats van zijn straal of veeg hoek." #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:32 msgid "Nightingale Rose Chart" -msgstr "" +msgstr "Nachtelijke Rose Grafiek" #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:35 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js:45 @@ -7270,29 +7514,31 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts:60 #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:131 msgid "Advanced-Analytics" -msgstr "" +msgstr "Geavanceerde Analytics" #: superset-frontend/plugins/legacy-plugin-chart-rose/src/index.js:37 #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js:40 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/index.ts:33 msgid "Multi-Layers" -msgstr "" +msgstr "Multi-Lagen" #: superset-frontend/plugins/legacy-plugin-chart-sankey-loop/src/controlPanel.ts:42 #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/controlPanel.ts:35 msgid "Source / Target" -msgstr "" +msgstr "Bron / Doel" #: superset-frontend/plugins/legacy-plugin-chart-sankey-loop/src/controlPanel.ts:43 #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/controlPanel.ts:36 msgid "Choose a source and a target" -msgstr "" +msgstr "Kies een bron en een doel" #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/controlPanel.ts:46 msgid "" "Limiting rows may result in incomplete data and misleading charts. " "Consider filtering or grouping source/target names instead." msgstr "" +"Rijen beperken kan leiden tot onvolledige data en misleidende grafieken. " +"Overweeg het filteren of groeperen van bron/doelnamen." #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:29 msgid "" @@ -7301,18 +7547,22 @@ msgid "" "layers. The thickness of the bars or edges represent the metric being " "visualized." msgstr "" +"Visualiseert de doorstroming van waarden van verschillende groepen door " +"verschillende stadia van een systeem. Nieuwe stadia in de pijplijn worden" +" weergegeven als knooppunten of lagen. De dikte van de balken of randen " +"representeert de gevisualiseerde maatstaf." #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:33 msgid "Demographics" -msgstr "" +msgstr "Demografisch" #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:34 msgid "Survey Responses" -msgstr "" +msgstr "Enquête antwoorden" #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:36 msgid "Sankey Diagram" -msgstr "" +msgstr "Sankey Diagram" #: superset-frontend/plugins/legacy-plugin-chart-sankey/src/index.js:41 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:49 @@ -7326,95 +7576,95 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts:67 #: superset-frontend/src/visualizations/TimeTable/index.ts:36 msgid "Percentages" -msgstr "" +msgstr "Percentages" #: superset-frontend/plugins/legacy-plugin-chart-sankey-loop/src/index.js:27 msgid "Sankey Diagram with Loops" -msgstr "" +msgstr "Sankey Diagram met Lussen" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:39 msgid "Country Field Type" -msgstr "" +msgstr "Land Veld Type" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:42 -#, fuzzy msgid "Full name" -msgstr "Query naam" +msgstr "Volledige naam" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:43 msgid "code International Olympic Committee (cioc)" -msgstr "" +msgstr "code Internationaal Olympisch Comité (cioc)" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:44 msgid "code ISO 3166-1 alpha-2 (cca2)" -msgstr "" +msgstr "code ISO 3166-1 alpha-2 (cca2)" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:45 msgid "code ISO 3166-1 alpha-3 (cca3)" -msgstr "" +msgstr "code ISO 3166-1 alpha-3 (cca3)" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:47 msgid "" "The country code standard that Superset should expect to find in the " "[country] column" -msgstr "" +msgstr "De landcode die Superset verwacht te vinden in de [land] kolom" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:80 msgid "Show Bubbles" -msgstr "" +msgstr "Toon bubbels" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:83 msgid "Whether to display bubbles on top of countries" -msgstr "" +msgstr "Of er bubbels bovenop landen moeten worden weergegeven" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:94 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts:58 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:78 msgid "Max Bubble Size" -msgstr "" +msgstr "Max Bubbel Grootte" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:114 -#, fuzzy msgid "Color by" -msgstr "Sorteer op" +msgstr "Kleur op" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:120 msgid "" "Choose whether a country should be shaded by the metric, or assigned a " "color based on a categorical color palette" msgstr "" +"Kies of een land moet worden schaduwd door de metriek of een kleur moet " +"worden toegewezen gebaseerd op een categorisch kleurenpalet" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:138 msgid "Country Column" -msgstr "" +msgstr "Land Column" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:139 msgid "3 letter code of the country" -msgstr "" +msgstr "3 letter code van het land" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:143 msgid "Metric that defines the size of the bubble" -msgstr "" +msgstr "Metriek die de grootte van de bubbel definieert" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:146 msgid "Bubble Color" -msgstr "" +msgstr "Bubbel kleur" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:149 #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/controlPanel.ts:154 msgid "Country Color Scheme" -msgstr "" +msgstr "Land kleurenschema" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js:29 msgid "A map of the world, that can indicate values in different countries." -msgstr "" +msgstr "Een kaart van de wereld, die waarden in verschillende landen kan aangeven." #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js:39 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/index.js:35 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/index.ts:47 msgid "Multi-Dimensions" -msgstr "" +msgstr "Multi-Dimensies" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js:41 #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/index.ts:52 @@ -7422,7 +7672,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts:65 #: superset-frontend/src/visualizations/TimeTable/index.ts:33 msgid "Multi-Variables" -msgstr "" +msgstr "Multi-Variabelen" #: superset-frontend/plugins/legacy-plugin-chart-world-map/src/index.js:43 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/index.ts:44 @@ -7439,32 +7689,32 @@ msgstr "" #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:695 #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:697 msgid "Popular" -msgstr "" +msgstr "Populair" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts:36 msgid "deck.gl charts" -msgstr "" +msgstr "deck.gl grafieken" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts:39 msgid "Pick a set of deck.gl charts to layer on top of one another" -msgstr "" +msgstr "Kies een set deck.gl grafieken die bovenop elkaar moeten worden geplaatst" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts:44 #: superset-frontend/src/features/tags/TagModal.tsx:321 msgid "Select charts" -msgstr "" +msgstr "Selecteer grafieken" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/controlPanel.ts:45 msgid "Error while fetching charts" -msgstr "" +msgstr "Fout bij het ophalen van grafieken" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/index.ts:28 msgid "Compose multiple layers together to form complex visuals." -msgstr "" +msgstr "Meerdere lagen samen samenstellen om complexe visuals te vormen." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/index.ts:30 msgid "deck.gl Multiple Layers" -msgstr "" +msgstr "deck.gl Meerdere Lagen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/Multi/index.ts:33 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/index.ts:35 @@ -7478,58 +7728,56 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/index.ts:36 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/index.ts:35 msgid "deckGL" -msgstr "" +msgstr "deckGL" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/Arc.tsx:47 -#, fuzzy msgid "Start (Longitude, Latitude): " -msgstr "Ongeldige longitude/latitude" +msgstr "Start (lengtegraad, breedtegraad): " #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/Arc.tsx:51 -#, fuzzy msgid "End (Longitude, Latitude): " -msgstr "Ongeldige longitude/latitude" +msgstr "Einde (lengtegraad, breedtegraad): " #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:51 msgid "Start Longitude & Latitude" -msgstr "" +msgstr "Start Lengtegraad & Breedtegraad" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:53 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:65 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:310 msgid "Point to your spatial columns" -msgstr "" +msgstr "Punt naar uw ruimtelijke kolommen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:63 msgid "End Longitude & Latitude" -msgstr "" +msgstr "Eind Lengtegraad & Breedtegraad" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:81 msgid "Arc" -msgstr "" +msgstr "Boog" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:88 msgid "Target Color" -msgstr "" +msgstr "Doel Kleur" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:89 msgid "Color of the target location" -msgstr "" +msgstr "Kleur van de doellocatie" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:101 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:138 msgid "Categorical Color" -msgstr "" +msgstr "Categorische Kleur" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:102 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:139 msgid "Pick a dimension from which categorical colors are defined" -msgstr "" +msgstr "Kies een dimensie van waaruit categorische kleuren worden gedefinieerd" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:115 #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:249 msgid "Stroke Width" -msgstr "" +msgstr "Lijndikte" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/controlPanel.ts:128 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:109 @@ -7550,56 +7798,56 @@ msgstr "Geavanceerd" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/index.ts:28 msgid "Plot the distance (like flight paths) between origin and destination." -msgstr "" +msgstr "Teken de afstand (zoals vluchtpaden) tussen oorsprong en bestemming." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/index.ts:31 msgid "deck.gl Arc" -msgstr "" +msgstr "deck.gl Boog" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/index.ts:35 msgid "3D" -msgstr "" +msgstr "3D" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Arc/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/index.ts:33 #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts:67 msgid "Web" -msgstr "" +msgstr "Web" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/Contour.tsx:32 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/Heatmap.tsx:32 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/Hex.tsx:39 -#, fuzzy msgid "Centroid (Longitude and Latitude): " -msgstr "Ongeldige longitude/latitude" +msgstr "Centraal (Longitude en Latitude): " #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/Contour.tsx:36 #: superset-frontend/src/explore/components/controls/ContourControl/ContourOption.tsx:75 msgid "Threshold: " -msgstr "" +msgstr "Drempelwaarde: " #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:63 msgid "The size of each cell in meters" -msgstr "" +msgstr "Grootte van elke cel in meters" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:74 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:109 -#, fuzzy msgid "Aggregation" -msgstr "aggregaat" +msgstr "Aggregatie" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:75 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:110 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:65 msgid "The function to use when aggregating points into groups" msgstr "" +"De functie die gebruikt moet worden bij het aggregeren van punten in " +"groepen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:95 msgid "Contours" -msgstr "" +msgstr "Contours" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:97 msgid "" @@ -7608,19 +7856,23 @@ msgid "" "represent a collection of polygons that fill the are containing values in" " a given threshold range." msgstr "" +"Definieer contourlagen. Isolines vertegenwoordigen een verzameling " +"lijnsegmenten die het gebied boven en onder een bepaalde drempel " +"plaatsen. Isobands vertegenwoordigen een verzameling veelhoeken die de " +"waarden in een bepaald drempelbereik vullen." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:120 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:137 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/Screengrid.tsx:52 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts:72 msgid "Weight" -msgstr "" +msgstr "Gewicht" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/controlPanel.ts:121 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:138 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts:73 msgid "Metric used as a weight for the grid's coloring" -msgstr "" +msgstr "Metriek gebruikt als gewicht voor de kleur van het raster" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/index.ts:28 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/index.ts:28 @@ -7628,11 +7880,12 @@ msgid "" "Uses Gaussian Kernel Density Estimation to visualize spatial distribution" " of data" msgstr "" +"Gebruikt Gaussian Kernel Density Inschatting om de ruimtelijke " +"verspreiding van gegevens te visualiseren" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/index.ts:32 -#, fuzzy msgid "deck.gl Contour" -msgstr "Heatmap" +msgstr "deck.gl Contour" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Contour/index.ts:35 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/index.ts:35 @@ -7642,48 +7895,48 @@ msgstr "Ruimtelijk" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.ts:57 msgid "GeoJson Settings" -msgstr "" +msgstr "GeoJson Instellingen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.ts:68 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts:73 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:109 -#, fuzzy msgid "Line width unit" -msgstr "Lijndikte" +msgstr "Lijn breedte eenheid" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.ts:71 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts:76 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:112 -#, fuzzy msgid "meters" -msgstr "Parameters" +msgstr "meters" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.ts:72 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts:77 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:113 msgid "pixels" -msgstr "" +msgstr "pixels" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/controlPanel.ts:84 msgid "Point Radius Scale" -msgstr "" +msgstr "Punt Radius Schaal" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/index.ts:28 msgid "" "The GeoJsonLayer takes in GeoJSON formatted data and renders it as " "interactive polygons, lines and points (circles, icons and/or texts)." msgstr "" +"De GeoJsonLayer neemt als GeoJSON geformatteerde gegevens in en geeft " +"deze weer als interactieve polygonen, lijnen en punten (cirkels, " +"pictogrammen en/of teksten)." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Geojson/index.ts:32 msgid "deck.gl Geojson" -msgstr "" +msgstr "deck.gl Geojson" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/Grid.tsx:40 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/Scatter.tsx:50 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/Screengrid.tsx:47 -#, fuzzy msgid "Longitude and Latitude" -msgstr "Ongeldige longitude/latitude" +msgstr "Lengtegraad en breedtegraad" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/Grid.tsx:45 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.ts:74 @@ -7695,297 +7948,310 @@ msgstr "Hoogte" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/controlPanel.ts:75 msgid "Metric used to control height" -msgstr "" +msgstr "Metriek gebruikt om de hoogte te regelen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/index.ts:28 msgid "" "Visualize geospatial data like 3D buildings, landscapes, or objects in " "grid view." msgstr "" +"Visualiseer geospatiële gegevens zoals 3D gebouwen, landschappen of " +"objecten in rasterweergave." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Grid/index.ts:31 msgid "deck.gl Grid" -msgstr "" +msgstr "deck.gl Raster" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:66 -#, fuzzy msgid "Intesity" -msgstr "Entiteit" +msgstr "Intensiteit" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:67 msgid "Intensity is the value multiplied by the weight to obtain the final weight" msgstr "" +"Intensiteit is de waarde vermenigvuldigd met het gewicht om het " +"uiteindelijke gewicht te verkrijgen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:83 msgid "Intensity Radius" -msgstr "" +msgstr "Intensiteit Radius" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/controlPanel.ts:84 msgid "Intensity Radius is the radius at which the weight is distributed" -msgstr "" +msgstr "Intensiteit Radius is de straal waarop het gewicht wordt verdeeld" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Heatmap/index.ts:32 -#, fuzzy msgid "deck.gl Heatmap" -msgstr "Heatmap" +msgstr "deck.gl Heatmap" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:64 msgid "Dynamic Aggregation Function" -msgstr "" +msgstr "Dynamische Aggregatie Functie" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:78 -#, fuzzy msgid "variance" -msgstr "Geavanceerd" +msgstr "variantie" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:79 -#, fuzzy msgid "deviation" -msgstr "omschrijving" +msgstr "afwijking" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:80 msgid "p1" -msgstr "" +msgstr "p1" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:81 msgid "p5" -msgstr "" +msgstr "p5" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:82 msgid "p95" -msgstr "" +msgstr "p95" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/controlPanel.ts:83 msgid "p99" -msgstr "" +msgstr "p99" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/index.ts:28 msgid "" "Overlays a hexagonal grid on a map, and aggregates data within the " "boundary of each cell." msgstr "" +"Plaatst een hexagonaal raster over een kaart en aggregeert gegevens " +"binnen de grenzen van elke cel." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Hex/index.ts:32 msgid "deck.gl 3D Hexagon" -msgstr "" +msgstr "deck.gl 3D-Zeshoek" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/controlPanel.ts:49 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:351 msgid "Polyline" -msgstr "" +msgstr "Polylijn" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/index.ts:28 msgid "Visualizes connected points, which form a path, on a map." -msgstr "" +msgstr "Visualiseert verbonden punten, die een pad vormen, op een kaart." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Path/index.ts:29 msgid "deck.gl Path" -msgstr "" +msgstr "deck.gl Pad" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/Polygon.tsx:72 #: superset-frontend/src/dashboard/components/SliceAdder.jsx:73 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:361 -#, fuzzy msgid "name" -msgstr "Naam" +msgstr "naam" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:61 msgid "Polygon Column" -msgstr "" +msgstr "Polygoon Kolom" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:70 msgid "Polygon Encoding" -msgstr "" +msgstr "Polygoon Codering" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:81 msgid "Elevation" -msgstr "" +msgstr "Hoogte" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:96 msgid "Polygon Settings" -msgstr "" +msgstr "Polygoon Instellingen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:131 msgid "Opacity, expects values between 0 and 100" -msgstr "" +msgstr "Ondoorzichtigheid, verwacht waarden tussen 0 en 100" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:142 msgid "Number of buckets to group data" -msgstr "" +msgstr "Aantal groepen om gegevens te groeperen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:145 msgid "How many buckets should the data be grouped in." -msgstr "" +msgstr "In hoeveel groepen moeten de gegevens worden gegroepeerd." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:157 msgid "Bucket break points" -msgstr "" +msgstr "Bucket breakpoints" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:159 msgid "List of n+1 values for bucketing metric into n buckets." -msgstr "" +msgstr "Lijst van n+1 waarden voor het indelen van metriek in n groepen." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:171 msgid "Emit Filter Events" -msgstr "" +msgstr "Filtergebeurtenissen aflaten" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:174 msgid "Whether to apply filter when items are clicked" -msgstr "" +msgstr "Of er een filter moet worden toegepast wanneer er op items wordt geklikt" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:183 msgid "Multiple filtering" -msgstr "" +msgstr "Meerdere filters" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/controlPanel.ts:186 msgid "Allow sending multiple polygons as a filter event" -msgstr "" +msgstr "Versturen van meerdere veelhoeken als filtergebeurtenis toestaan" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/index.ts:28 msgid "" "Visualizes geographic areas from your data as polygons on a Mapbox " "rendered map. Polygons can be colored using a metric." msgstr "" +"Visualiseert geografische gebieden van uw gegevens als polygonen op een " +"kaart die weergegeven wordt. Polygonen kunnen gekleurd worden met behulp " +"van een metriek." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Polygon/index.ts:31 msgid "deck.gl Polygon" -msgstr "" +msgstr "deck.gl Polygoon" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/Scatter.tsx:56 #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:672 msgid "Category" -msgstr "" +msgstr "Categorie" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:67 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:321 msgid "Point Size" -msgstr "" +msgstr "Punt Grootte" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:75 msgid "Point Unit" -msgstr "" +msgstr "Punt Eenheid" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:79 -#, fuzzy msgid "Square meters" -msgstr "Parameters" +msgstr "Vierkante meters" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:80 -#, fuzzy msgid "Square kilometers" -msgstr "Parent filter" +msgstr "Vierkante kilometer" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:81 -#, fuzzy msgid "Square miles" -msgstr "queries" +msgstr "Vierkante mijlen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:82 -#, fuzzy msgid "Radius in meters" -msgstr "Parameters" +msgstr "Radius in meters" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:83 msgid "Radius in kilometers" -msgstr "" +msgstr "Radius in kilometers" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:84 msgid "Radius in miles" -msgstr "" +msgstr "Radius in mijlen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:97 msgid "Minimum Radius" -msgstr "" +msgstr "Minimale Radius" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:102 msgid "" "Minimum radius size of the circle, in pixels. As the zoom level changes, " "this insures that the circle respects this minimum radius." msgstr "" +"Minimale straal van de cirkel, in pixels. Als het zoomniveau verandert, " +"zorgt dit ervoor dat de cirkel deze minimale straal respecteert." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:112 msgid "Maximum Radius" -msgstr "" +msgstr "Maximum Radius" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:117 msgid "" "Maximum radius size of the circle, in pixels. As the zoom level changes, " "this insures that the circle respects this maximum radius." msgstr "" +"Maximale straalgrootte van de cirkel, in pixels. Als het zoomniveau " +"verandert, zorgt deze ervoor dat de cirkel deze maximale straal " +"respecteert." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/controlPanel.ts:128 msgid "Point Color" -msgstr "" +msgstr "Punt Kleur" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/index.ts:28 msgid "" "A map that takes rendering circles with a variable radius at " "latitude/longitude coordinates" msgstr "" +"Een kaart die het renderen van cirkels met een variabele straal neemt op " +"breedtegraad / lengtegraad coördinaten" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Scatter/index.ts:31 msgid "deck.gl Scatterplot" -msgstr "" +msgstr "deck.gl Spreidingsdiagram" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/controlPanel.ts:56 msgid "Grid" -msgstr "" +msgstr "Raster" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/index.ts:28 msgid "" "Aggregates data within the boundary of grid cells and maps the aggregated" " values to a dynamic color scale" msgstr "" +"Combineert gegevens binnen de grens van rastercellen en brengt de " +"geaggregeerde waarden naar een dynamische kleurschaal in kaart" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/layers/Screengrid/index.ts:31 msgid "deck.gl Screen Grid" -msgstr "" +msgstr "deck.gl Scherm Raster" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:46 msgid "" "For more information about objects are in context in the scope of this " "function, refer to the" msgstr "" +"Voor meer informatie over objecten in de context van deze functie, " +"verwijzen we naar de" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:49 msgid " source code of Superset's sandboxed parser" -msgstr "" +msgstr " broncode van Superset's sandboxed parser" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:76 msgid "This functionality is disabled in your environment for security reasons." msgstr "" +"Deze functionaliteit is uitgeschakeld in uw omgeving om " +"veiligheidsredenen." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:88 msgid "Ignore null locations" -msgstr "" +msgstr "Negeer null locaties" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:90 msgid "Whether to ignore locations that are null" -msgstr "" +msgstr "Of locaties die null zijn, genegeerd moeten worden" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:98 msgid "Auto Zoom" -msgstr "" +msgstr "Auto Zoom" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:101 msgid "When checked, the map will zoom to your data after each query" -msgstr "" +msgstr "Wanneer aangevinkt, zal de kaart uw gegevens zoomen na elke zoekopdracht" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:112 msgid "Select a dimension" -msgstr "" +msgstr "Kies een dimensie" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:122 msgid "Extra data for JS" -msgstr "" +msgstr "Extra data voor JS" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:124 msgid "List of extra columns made available in JavaScript functions" -msgstr "" +msgstr "Lijst met extra kolommen beschikbaar gemaakt in JavaScript functies" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:133 msgid "JavaScript data interceptor" -msgstr "" +msgstr "JavaScript gegevens onderschepper" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:134 msgid "" @@ -7994,67 +8260,74 @@ msgid "" " This can be used to alter properties of the data, filter, or enrich the " "array." msgstr "" +"Definieer een javascript functie die de in de visualisatie gebruikte data" +" array ontvangt en verwacht een aangepaste versie van die array te " +"retourneren. Dit kan worden gebruikt om de eigenschappen van de gegevens," +" het filteren of de array te verrijken." #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:145 msgid "JavaScript tooltip generator" -msgstr "" +msgstr "JavaScript tooltip generator" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:146 msgid "" "Define a function that receives the input and outputs the content for a " "tooltip" msgstr "" +"Definieer een functie die de invoer ontvangt en de inhoud van een tooltip" +" uitvoert" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:155 msgid "JavaScript onClick href" -msgstr "" +msgstr "JavaScript onClick href" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:156 msgid "Define a function that returns a URL to navigate to when user clicks" msgstr "" +"Definieer een functie die een URL geeft om naar te navigeren wanneer de " +"gebruiker klikt" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:163 msgid "Legend Format" -msgstr "" +msgstr "Legenda Opmaak" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:164 msgid "Choose the format for legend values" -msgstr "" +msgstr "Kies de opmaak voor legende waarden" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:177 msgid "Legend Position" -msgstr "" +msgstr "Legenda Positie" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:178 msgid "Choose the position of the legend" -msgstr "" +msgstr "Kies de positie van de legende" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:184 -#, fuzzy msgid "Top left" -msgstr "Autocomplete" +msgstr "Linksboven" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:185 msgid "Top right" -msgstr "" +msgstr "Rechtsboven" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:186 msgid "Bottom left" -msgstr "" +msgstr "Links onder" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:187 msgid "Bottom right" -msgstr "" +msgstr "Onder rechts" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:197 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/sharedDndControls.tsx:27 msgid "Lines column" -msgstr "" +msgstr "Lijnen kolom" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:199 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/sharedDndControls.tsx:28 msgid "The database columns that contains lines information" -msgstr "" +msgstr "De database kolommen die regels met informatie bevatten" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:211 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:859 @@ -8063,11 +8336,11 @@ msgstr "Lijndikte" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:215 msgid "The width of the lines" -msgstr "" +msgstr "De breedte van de lijnen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:222 msgid "Fill Color" -msgstr "" +msgstr "Opvul kleur" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:223 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:236 @@ -8075,163 +8348,161 @@ msgid "" " Set the opacity to 0 if you do not want to override the color specified " "in the GeoJSON" msgstr "" +" Zet de ondoorzichtigheid op 0 als je de kleur zoals aangegeven in " +"GeoJSON niet wilt overschrijven" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:235 msgid "Stroke Color" -msgstr "" +msgstr "Lijnkleur" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:249 msgid "Filled" -msgstr "" +msgstr "Gevuld" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:251 msgid "Whether to fill the objects" -msgstr "" +msgstr "Of de objecten moeten worden gevuld" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:260 msgid "Stroked" -msgstr "" +msgstr "Omlijnd" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:262 msgid "Whether to display the stroke" -msgstr "" +msgstr "Of de lijn moet worden weergegeven" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:271 msgid "Extruded" -msgstr "" +msgstr "Geëxtrudeerd" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:274 msgid "Whether to make the grid 3D" -msgstr "" +msgstr "Of het raster 3D moet worden gemaakt" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:282 msgid "Grid Size" -msgstr "" +msgstr "Raster grootte" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:286 msgid "Defines the grid size in pixels" -msgstr "" +msgstr "Definieert de rastergrootte in pixels" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:296 msgid "Parameters related to the view and perspective on the map" -msgstr "" +msgstr "Parameters gerelateerd aan de weergave en perspectief op de kaart" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:308 msgid "Longitude & Latitude" -msgstr "" +msgstr "Lengtegraad & Breedtegraad" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:323 msgid "Fixed point radius" -msgstr "" +msgstr "Vaste punt radius" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:334 msgid "Multiplier" -msgstr "" +msgstr "Vermenigvuldiger" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:338 msgid "Factor to multiply the metric by" -msgstr "" +msgstr "Factor om de metriek te vermenigvuldigen met" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:346 msgid "Lines encoding" -msgstr "" +msgstr "Lijnen codering" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:349 msgid "The encoding format of the lines" -msgstr "" +msgstr "Het coderingsformaat van de lijnen" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:353 msgid "geohash (square)" -msgstr "" +msgstr "geohash (vierkant)" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:362 msgid "Reverse Lat & Long" -msgstr "" +msgstr "Omgekeerde breedtegraad & lengtegraad" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:396 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/sharedDndControls.tsx:36 msgid "GeoJson Column" -msgstr "" +msgstr "GeoJson Kolom" #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/Shared_DeckGL.jsx:398 #: superset-frontend/plugins/legacy-preset-chart-deckgl/src/utilities/sharedDndControls.tsx:37 msgid "Select the geojson column" -msgstr "" +msgstr "Selecteer de kolom geojson" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:53 msgid "Right Axis Format" -msgstr "" +msgstr "Rechter As Opmaak" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:64 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:868 msgid "Show Markers" -msgstr "" +msgstr "Toon Markeringen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:67 msgid "Show data points as circle markers on the lines" -msgstr "" +msgstr "Toon gegevenspunten als cirkelmarkeringen op de lijnen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:99 msgid "Y bounds" -msgstr "" +msgstr "Y Grenzen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:102 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:113 msgid "Whether to display the min and max values of the Y-axis" -msgstr "" +msgstr "Of de min en max waarden van de Y-as getoond moeten worden" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:110 msgid "Y 2 bounds" -msgstr "" +msgstr "Y 2 grenzen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:121 msgid "Line Style" -msgstr "" +msgstr "Lijn Stijl" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:124 -#, fuzzy msgid "linear" -msgstr "Verwijder" +msgstr "lineair" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:125 -#, fuzzy msgid "basis" -msgstr "Berekende kolom [%s] vereist een uitdrukking" +msgstr "basis" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:126 msgid "cardinal" -msgstr "" +msgstr "kardinaal" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:127 -#, fuzzy msgid "monotone" -msgstr "maand" +msgstr "monotoon" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:128 msgid "step-before" -msgstr "" +msgstr "stap-voor" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:129 -#, fuzzy msgid "step-after" -msgstr "css_template" +msgstr "stap-na" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:132 msgid "Line interpolation as defined by d3.js" -msgstr "" +msgstr "Lijn interpolatie zoals gedefinieerd door d3.js" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:140 msgid "Show Range Filter" -msgstr "" +msgstr "Toon Bereik Filter" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:149 msgid "Whether to display the time range interactive selector" -msgstr "" +msgstr "Of de interactieve selecter voor het tijdsbereik moet worden weergegeven" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:168 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:129 msgid "Extra Controls" -msgstr "" +msgstr "Extra bediening" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:171 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:132 @@ -8239,44 +8510,45 @@ msgid "" "Whether to show extra controls or not. Extra controls include things like" " making mulitBar charts stacked or side by side." msgstr "" +"Of er wel of niet extra besturingselementen moeten worden weergegeven. " +"Extra bedieningselementen omvatten zaken als het gestapeld of naast " +"elkaar maken van multi Staafdiagrammen." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:217 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:115 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:123 msgid "X Tick Layout" -msgstr "" +msgstr "X Tik Indeling" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:220 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:118 #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:85 -#, fuzzy msgid "flat" -msgstr "op" +msgstr "vlak" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:222 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:121 -#, fuzzy msgid "staggered" -msgstr "Gewijzigd" +msgstr "trapsgewijs" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:227 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:126 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:134 msgid "The way the ticks are laid out on the X-axis" -msgstr "" +msgstr "De manier waarop de tikken worden uiteengezet op de X-as" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:236 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:155 msgid "X Axis Format" -msgstr "" +msgstr "X-as Opmaak" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:248 msgid "Y Log Scale" -msgstr "" +msgstr "Y Log Schaal" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:251 msgid "Use a log scale for the Y-axis" -msgstr "" +msgstr "Gebruik een log-schaal voor de Y-as" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:259 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:256 @@ -8286,7 +8558,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:180 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:230 msgid "Y Axis Bounds" -msgstr "" +msgstr "Y-as Grenzen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:262 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:278 @@ -8301,34 +8573,38 @@ msgid "" "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 "" +"Grenzen voor de Y-as. Wanneer leeg gelaten, worden de grenzen dynamisch " +"gedefinieerd op basis van min/max van de gegevens. Merk op dat deze " +"functie alleen de as groter maakt. Het zal de grootte van de gegevens " +"niet verkleinen." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:275 msgid "Y Axis 2 Bounds" -msgstr "" +msgstr "Y-as 2 Grenzen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:291 msgid "X bounds" -msgstr "" +msgstr "X Grenzen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:294 msgid "Whether to display the min and max values of the X-axis" -msgstr "" +msgstr "Of de min en max waarden van de X-as getoond moeten worden" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:315 msgid "Bar Values" -msgstr "" +msgstr "Staaf Waarden" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:318 msgid "Show the value on top of the bar" -msgstr "" +msgstr "Toon de waarde bovenaan de balk" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:326 msgid "Stacked Bars" -msgstr "" +msgstr "Gestapelde Staven" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:337 msgid "Reduce X ticks" -msgstr "" +msgstr "Verminder X tikken" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Controls.tsx:340 msgid "" @@ -8337,34 +8613,38 @@ msgid "" "will be applied to columns and the width may overflow into an horizontal " "scroll." msgstr "" +"Vermindert het aantal X-as tikken om gerenderd te worden. Als dit waar " +"is, zal de x-as niet overstroomd worden en kunnen labels ontbreken. " +"Indien onwaar, wordt een minimale breedte toegepast op kolommen en de " +"breedte kan overlopen naar een horizontale scroll." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/NVD3Vis.js:354 msgid "You cannot use 45° tick layout along with the time range filter" msgstr "" +"U kunt de indeling van 45° tik niet gebruiken samen met het filter voor " +"het tijdsbereik" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts:52 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:114 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:123 #: superset-frontend/src/explore/fixtures.tsx:58 msgid "Stacked Style" -msgstr "" +msgstr "Gestapelde Stijl" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts:55 #: superset-frontend/src/explore/fixtures.tsx:61 msgid "stack" -msgstr "" +msgstr "stapel" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts:56 #: superset-frontend/src/explore/fixtures.tsx:62 -#, fuzzy msgid "stream" -msgstr "Histogram" +msgstr "stroom" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/controlPanel.ts:57 #: superset-frontend/src/explore/fixtures.tsx:63 -#, fuzzy msgid "expand" -msgstr "en" +msgstr "uitklappen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:30 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js:29 @@ -8381,38 +8661,41 @@ msgstr "en" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts:46 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/index.ts:52 msgid "Evolution" -msgstr "" +msgstr "Evolutie" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:32 msgid "" "A time series chart that visualizes how a related metric from multiple " "groups vary over time. Each group is visualized using a different color." msgstr "" +"Een tijdsschema dat visualiseert hoe een gerelateerde metriek van " +"meerdere groepen verschilt na verloop van tijd. Elke groep wordt " +"gevisualiseerd met behulp van een andere kleur." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:36 msgid "Stretched style" -msgstr "" +msgstr "Uitgerekte style" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:37 msgid "Stacked style" -msgstr "" +msgstr "Gestapelde stijl" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:38 msgid "Video game consoles" -msgstr "" +msgstr "Video game consoles" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:39 msgid "Vehicle Types" -msgstr "" +msgstr "Voertuig Types" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:42 -msgid "Time-series Area Chart (legacy)" -msgstr "" +msgid "Area Chart (legacy)" +msgstr "Vlakdiagram (legacy)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:46 #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:120 msgid "Continuous" -msgstr "" +msgstr "Doorlopend" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:48 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js:39 @@ -8426,7 +8709,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/index.ts:74 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts:61 msgid "Line" -msgstr "" +msgstr "Lijn" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Area/index.js:54 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js:46 @@ -8438,39 +8721,42 @@ msgstr "" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/index.js:31 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/index.js:29 msgid "nvd3" -msgstr "" +msgstr "nvd3" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/controlPanel.ts:54 -#, fuzzy msgid "Series Limit Sort By" -msgstr "Serie limiet" +msgstr "Series Limiet Sorteren op" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/controlPanel.ts:55 msgid "" "Metric used to order the limit if a series limit is present. If undefined" " reverts to the first metric (where appropriate)." msgstr "" +"Metriek wordt gebruikt om de limiet te ordenen als deze aanwezig is. Als " +"deze ongedefinieerd is, wordt de eerst metriek gebruikt (indien gepast)." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/controlPanel.ts:73 -#, fuzzy msgid "Series Limit Sort Descending" -msgstr "Sorteer aflopend" +msgstr "Series Limiet Sortering Aflopend" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/controlPanel.ts:75 -#, fuzzy msgid "Whether to sort descending or ascending if a series limit is present" -msgstr "Aflopend of oplopend sorteren" +msgstr "" +"Of er aflopend of oplopend moet worden gesorteerd als er een reekslimiet " +"aanwezig is" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js:31 msgid "" "Visualize how a metric changes over time using bars. Add a group by " "column to visualize group level metrics and how they change over time." msgstr "" +"Visualiseer hoe een metriek verandert over de tijd met behulp van staven." +" Voeg een groep per kolom toe om groepsniveau te visualiseren en hoe ze " +"na verloop van tijd veranderen." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js:36 -#, fuzzy msgid "Time-series Bar Chart (legacy)" -msgstr "Tijdreeks - Staafdiagram" +msgstr "Tijdreeks Staafdiagram (legacy)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bar/index.js:39 #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js:42 @@ -8478,20 +8764,20 @@ msgstr "Tijdreeks - Staafdiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts:82 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:85 msgid "Bar" -msgstr "" +msgstr "Staaf" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/BoxPlot/index.js:26 #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/index.ts:59 msgid "Box Plot" -msgstr "" +msgstr "Box Plot" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts:103 msgid "X Log Scale" -msgstr "" +msgstr "X Log Schaal" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/controlPanel.ts:106 msgid "Use a log scale for the X-axis" -msgstr "" +msgstr "Gebruik een log-schaal voor de X-as" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/index.js:28 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/index.ts:41 @@ -8500,59 +8786,61 @@ msgid "" "axis, Y axis, and bubble size). Bubbles from the same group can be " "showcased using bubble color." msgstr "" +"Visualiseert een metriek over drie dimensies van gegevens in één grafiek " +"(X-as, Y-as en bubbelgrootte). Bubbels uit dezelfde groep kunnen worden " +"getoond met behulp van bubbelkleur." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bubble/index.js:33 -#, fuzzy msgid "Bubble Chart (legacy)" -msgstr "Bubbelgrafiek" +msgstr "Bubble diagram (legacy)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:38 msgid "Ranges" -msgstr "" +msgstr "Bereiken" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:40 msgid "Ranges to highlight with shading" -msgstr "" +msgstr "Bereiken om te markeren met schaduw" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:47 msgid "Range labels" -msgstr "" +msgstr "Bereik labels" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:49 msgid "Labels for the ranges" -msgstr "" +msgstr "Labels voor de bereiken" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:58 msgid "Markers" -msgstr "" +msgstr "Markeringen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:60 msgid "List of values to mark with triangles" -msgstr "" +msgstr "Lijst van waarden te markeren met driehoeken" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:67 msgid "Marker labels" -msgstr "" +msgstr "Marker labels" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:69 msgid "Labels for the markers" -msgstr "" +msgstr "Labels voor de markeringen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:78 msgid "Marker lines" -msgstr "" +msgstr "Marker lijnen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:80 msgid "List of values to mark with lines" -msgstr "" +msgstr "Lijst van waarden om te markeren met lijnen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:87 msgid "Marker line labels" -msgstr "" +msgstr "Marker lijn labels" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/controlPanel.ts:89 msgid "Labels for the marker lines" -msgstr "" +msgstr "Labels voor de markeringslijnen" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/index.js:26 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/index.ts:28 @@ -8561,13 +8849,15 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/index.ts:53 #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/index.ts:44 msgid "KPI" -msgstr "" +msgstr "KPI" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Bullet/index.js:28 msgid "" "Showcases the progress of a single metric against a given target. The " "higher the fill, the closer the metric is to the target." msgstr "" +"Toont de voortgang van een enkele metriek tegen een bepaald doel. Hoe " +"hoger de vulling, hoe dichter de metriek bij het doel ligt." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js:28 msgid "" @@ -8575,27 +8865,30 @@ msgid "" "chart is being deprecated and we recommend using the Time-series Chart " "instead." msgstr "" +"Visualiseert veel verschillende tijd-series objecten in een enkele " +"grafiek. Deze grafiek wordt niet meer ondersteund en we raden in plaats " +"daarvan het gebruik van de Tijd series grafiek aan." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Compare/index.js:32 msgid "Time-series Percent Change" -msgstr "" +msgstr "Tijdreeks Percentage Verandering" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/controlPanel.ts:81 msgid "Sort Bars" -msgstr "" +msgstr "Sorteer Staven" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/controlPanel.ts:84 msgid "Sort bars by x labels." -msgstr "" +msgstr "Sorteer staven op x labels." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/controlPanel.ts:121 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:157 msgid "Breakdowns" -msgstr "" +msgstr "Uitsplitsing" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/controlPanel.ts:122 msgid "Defines how each series is broken down" -msgstr "" +msgstr "Bepaalt hoe elke serie is opgesplitst" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js:30 msgid "" @@ -8603,37 +8896,42 @@ msgid "" "used to indicate the magnitude of each value and color is used to " "differentiate groups." msgstr "" +"Vergelijk metrieken van verschillende categorieën met behulp van bars. " +"Lengtes worden gebruikt om de grootte van elke waarde en kleur aan te " +"geven om groepen te onderscheiden." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js:39 msgid "Bar Chart (legacy)" -msgstr "" +msgstr "Staafdiagram (legacy)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/DistBar/index.js:41 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/index.ts:40 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts:61 #: superset-frontend/plugins/plugin-chart-table/src/index.ts:47 msgid "Additive" -msgstr "" +msgstr "Additief" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/controlPanel.ts:59 msgid "Propagate" -msgstr "" +msgstr "Propageren" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/controlPanel.ts:62 msgid "Send range filter events to other charts" -msgstr "" +msgstr "Stuur filter bereik gebeurtenissen naar andere grafieken" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/index.js:32 msgid "Classic chart that visualizes how metrics change over time." msgstr "" +"Klassieke grafiek die visualiseert hoe metrieken na verloop van tijd " +"veranderen." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/index.js:36 msgid "Battery level over time" -msgstr "" +msgstr "Batterij niveau na verloop van tijd" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Line/index.js:39 -msgid "Time-series Line Chart (legacy)" -msgstr "" +msgid "Line Chart (legacy)" +msgstr "Lijndiagram (legacy)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:49 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:98 @@ -8641,16 +8939,15 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:111 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:94 msgid "Label Type" -msgstr "" +msgstr "Label Type" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:53 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:116 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:146 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:102 #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:115 -#, fuzzy msgid "Category Name" -msgstr "Query naam" +msgstr "Categorie Naam" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:54 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:117 @@ -8672,7 +8969,7 @@ msgstr "Waarde" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:104 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:66 msgid "Percentage" -msgstr "" +msgstr "Percentage" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:56 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:119 @@ -8682,21 +8979,21 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:117 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:100 msgid "Category and Value" -msgstr "" +msgstr "Categorie en Waarde" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:57 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:122 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:152 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:106 msgid "Category and Percentage" -msgstr "" +msgstr "Categorie en Percentage" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:58 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:126 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:156 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:107 msgid "Category, Value and Percentage" -msgstr "" +msgstr "Categorie, Waarde en Percentage" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:60 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:110 @@ -8704,17 +9001,17 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:119 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:102 msgid "What should be shown on the label?" -msgstr "" +msgstr "Wat moet er op het label staan?" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:81 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:220 msgid "Donut" -msgstr "" +msgstr "Donut" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:84 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:223 msgid "Do you want a donut or a pie?" -msgstr "" +msgstr "Wil je een donut of een taart?" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:94 #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:183 @@ -8723,58 +9020,56 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:72 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:70 msgid "Show Labels" -msgstr "" +msgstr "Toon Labels" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:97 msgid "" "Whether to display the labels. Note that the label only displays when the" " 5% threshold." msgstr "" +"Of de labels moeten worden weergegeven. Merk op dat het label alleen " +"wordt weergegeven als de drempel van 5% is bereikt." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:107 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:161 msgid "Put labels outside" -msgstr "" +msgstr "Plaats labels buiten" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/controlPanel.ts:110 msgid "Put the labels outside the pie?" -msgstr "" +msgstr "Plaats de labels buiten de cirkel?" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/Pie/index.js:28 -#, fuzzy msgid "Pie Chart (legacy)" -msgstr "Tijdreeks - Staafdiagram" +msgstr "Cirkel Grafiek (legacy)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:54 msgid "Frequency" -msgstr "" +msgstr "Frequentie" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:59 msgid "Year (freq=AS)" -msgstr "" +msgstr "Jaar (freq=AS)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:60 -#, fuzzy msgid "52 weeks starting Monday (freq=52W-MON)" -msgstr "Week beginnend op maandag" +msgstr "52 weken beginnend op maandag (freq=52W-MA)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:61 -#, fuzzy msgid "1 week starting Sunday (freq=W-SUN)" -msgstr "Week beginnend op zondag" +msgstr "1 week beginnend op zondag (freq=W-SUN)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:62 -#, fuzzy msgid "1 week starting Monday (freq=W-MON)" -msgstr "Week beginnend op maandag" +msgstr "1 week beginnend op maandag (freq=W-MON)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:63 msgid "Day (freq=D)" -msgstr "" +msgstr "Dag (freq=D)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:64 msgid "4 weeks (freq=4W-MON)" -msgstr "" +msgstr "4 weken (freq=4W-MA)" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/controlPanel.ts:66 msgid "" @@ -8783,203 +9078,203 @@ msgid "" " Click on the info bubble for more details on accepted " "\"freq\" expressions." msgstr "" +"De periodiciteit waarover tijd moet worden gepivoteerd. Gebruikers kunnen" +"\n" +" \"Pandas\" offset alias aanbieden.\n" +" Klik op de info-bubbel voor meer details over de " +"geaccepteerde \"freq\" expressies." #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/TimePivot/index.js:28 msgid "Time-series Period Pivot" -msgstr "" +msgstr "Tijdreeks Periodieke Pivoting" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/vendor/superset/AnnotationTypes.js:33 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:587 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationTypes.js:32 -#, fuzzy msgid "Formula" -msgstr "D3 formaat" +msgstr "Formule" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/vendor/superset/AnnotationTypes.js:37 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationTypes.js:36 -#, fuzzy msgid "Event" -msgstr "Recente" +msgstr "Gebeurtenis" #: superset-frontend/plugins/legacy-preset-chart-nvd3/src/vendor/superset/AnnotationTypes.js:42 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationTypes.js:41 -#, fuzzy msgid "Interval" -msgstr "Interval vernieuwen" +msgstr "Interval" #: superset-frontend/plugins/plugin-chart-echarts/src/constants.ts:83 msgid "Stack" -msgstr "" +msgstr "Stapel" #: superset-frontend/plugins/plugin-chart-echarts/src/constants.ts:84 -#, fuzzy msgid "Stream" -msgstr "Histogram" +msgstr "Stroom" #: superset-frontend/plugins/plugin-chart-echarts/src/constants.ts:90 -#, fuzzy msgid "Expand" -msgstr "en" +msgstr "Uitklappen" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:55 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:41 msgid "Show legend" -msgstr "" +msgstr "Toon legenda" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:58 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:44 msgid "Whether to display a legend for the chart" -msgstr "" +msgstr "Of een legenda van de grafiek moet worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:52 msgid "Margin" -msgstr "" +msgstr "Marge" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:56 msgid "Additional padding for legend." -msgstr "" +msgstr "Additionele opvulling voor legende." #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:69 msgid "Scroll" -msgstr "" +msgstr "Scroll" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:70 msgid "Plain" -msgstr "" +msgstr "Gewoon" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:74 msgid "Legend type" -msgstr "" +msgstr "Legenda type" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:85 -#, fuzzy msgid "Orientation" -msgstr "aantekening" +msgstr "Oriëntatie" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:88 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:375 msgid "Bottom" -msgstr "" +msgstr "Onderaan" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:90 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:392 msgid "Right" -msgstr "" +msgstr "Rechts" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:94 -#, fuzzy msgid "Legend Orientation" -msgstr "Aantekening verwijderen" +msgstr "Legenda Oriëntatie" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:112 msgid "Show Value" -msgstr "" +msgstr "Toon Waarde" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:115 msgid "Show series values on the chart" -msgstr "" +msgstr "Toon series waarden op de grafiek" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:168 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:118 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:127 msgid "Stack series on top of each other" -msgstr "" +msgstr "Stapel series bovenop elkaar" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:135 msgid "Only Total" -msgstr "" +msgstr "Alleen Totaal" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:138 msgid "" "Only show the total value on the stacked chart, and not show on the " "selected category" msgstr "" +"Toon alleen de totale waarde in de gestapelde grafiek en niet in de " +"geselecteerde categorie" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:80 #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:84 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:150 msgid "Percentage threshold" -msgstr "" +msgstr "Percentage drempelwaarde" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:84 #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:88 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:154 msgid "Minimum threshold in percentage points for showing labels." -msgstr "" +msgstr "Minimale drempelwaarde in percentage voor het tonen van labels." #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:180 msgid "Rich tooltip" -msgstr "" +msgstr "Rijke tooltip" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:183 msgid "Shows a list of all series available at that point in time" -msgstr "" +msgstr "Toont een lijst van alle series die beschikbaar zijn op dat moment" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:193 msgid "Tooltip time format" -msgstr "" +msgstr "Tooltip tijd opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:203 msgid "Tooltip sort by metric" -msgstr "" +msgstr "Tooltip sorteren op metriek" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:206 msgid "Whether to sort tooltip by the selected metric in descending order." msgstr "" +"Of de tooltip moet worden gesorteerd op de geselecteerde metriek in " +"aflopende volgorde." #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:215 #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ScopingTreePanel.tsx:118 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:205 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:211 msgid "Tooltip" -msgstr "" +msgstr "Tooltip" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:226 -#, fuzzy msgid "Sort Series By" -msgstr "Importeer queries" +msgstr "Sorteer Serie Op" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:230 msgid "Based on what should series be ordered on the chart and legend" -msgstr "" +msgstr "Gebaseerd op hoe series moet worden gesorteerd op de grafiek en legende" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:240 -#, fuzzy msgid "Sort Series Ascending" -msgstr "Sorteer oplopend" +msgstr "Sorteer Series Oplopend" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:243 msgid "Sort series in ascending order" -msgstr "" +msgstr "Sorteer series in oplopende volgorde" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:253 msgid "Rotate x axis label" -msgstr "" +msgstr "Roteer x-as label" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:202 #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:261 msgid "Input field supports custom rotation. e.g. 30 for 30°" -msgstr "" +msgstr "Invoerveld ondersteunt aangepaste rotatie. b.v. 30 voor 30°" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:266 -#, fuzzy msgid "Series Order" -msgstr "Series" +msgstr "Series Volgorde" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:275 -#, fuzzy msgid "Truncate X Axis" -msgstr "Sorteer meeteenheid" +msgstr "X-as Afkappen" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:278 msgid "" "Truncate X Axis. Can be overridden by specifying a min or max bound. Only" " applicable for numercal X axis." msgstr "" +"X-as afkappen. Kan worden overschreven door het specificeren van een min " +"of max grens. Alleen van toepassing op numerieke X assen." #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:288 msgid "X Axis Bounds" -msgstr "" +msgstr "X-as Grenzen" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:291 msgid "" @@ -8988,27 +9283,32 @@ msgid "" "min/max of the data. Note that this feature will only expand the axis " "range. It won't narrow the data's extent." msgstr "" +"Grenzen voor numerieke X-as. Niet van toepassing voor tijdelijke of " +"categorische assen. Wanneer leeg gelaten, worden de grenzen dynamisch " +"gedefinieerd op basis van de min/max van de gegevens. Merk op dat deze " +"functie alleen de as groter maakt. Het zal de grootte van de gegevens " +"niet verkleinen." #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:306 msgid "Minor ticks" -msgstr "" +msgstr "Kleine tikken" #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:309 msgid "Show minor ticks on axes." -msgstr "" +msgstr "Toon kleine tikken op assen." #: superset-frontend/plugins/plugin-chart-echarts/src/controls.tsx:320 msgid "Make the x-axis categorical" -msgstr "" +msgstr "Maak de x-as categorisch" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx:86 #, python-format msgid "Last available value seen on %s" -msgstr "" +msgstr "Laatst beschikbare waarde gezien op %s" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx:89 msgid "Not up to date" -msgstr "" +msgstr "Niet up to date" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx:134 #: superset-frontend/src/components/Table/index.tsx:222 @@ -9019,51 +9319,53 @@ msgstr "Geen data" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx:191 msgid "No data after filtering or data is NULL for the latest time record" -msgstr "" +msgstr "Geen gegevens na filteren of gegevens is NULL voor het laatste tijdrecord" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberViz.tsx:194 msgid "Try applying different filters or ensuring your datasource has data" msgstr "" +"Probeer andere filters toe te passen of zorg ervoor dat uw gegevensbron " +"data heeft" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:28 msgid "Big Number Font Size" -msgstr "" +msgstr "Groot getal lettertype" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:35 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:69 msgid "Tiny" -msgstr "" +msgstr "Klein" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:39 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:73 #: superset-frontend/src/dashboard/util/headerStyleOptions.ts:25 msgid "Small" -msgstr "" +msgstr "Klein" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:43 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:77 msgid "Normal" -msgstr "" +msgstr "Normaal" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:47 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:81 #: superset-frontend/src/dashboard/util/headerStyleOptions.ts:35 msgid "Large" -msgstr "" +msgstr "Groot" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:51 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:85 msgid "Huge" -msgstr "" +msgstr "Enorm" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/sharedControls.ts:62 msgid "Subheader Font Size" -msgstr "" +msgstr "Ondertitel Lettergrootte" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx:153 -#, python-format +#, fuzzy, python-format msgid "Data for %s" -msgstr "" +msgstr "Extra data voor JS" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx:158 msgid "Value difference between the time periods" @@ -9074,9 +9376,8 @@ msgid "Percentage difference between the time periods" msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:50 -#, fuzzy msgid "Range for Comparison" -msgstr "Tijdsvergelijking" +msgstr "Bereik voor Vergelijking" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:60 msgid "" @@ -9088,27 +9389,28 @@ msgid "" msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:74 -#, fuzzy msgid "Filters for Comparison" -msgstr "Tijdsvergelijking" +msgstr "Filters voor vergelijking" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:127 +#, fuzzy msgid "Percent Difference format" -msgstr "" +msgstr "Forceer datum opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:144 +#, fuzzy msgid "Comparison font size" -msgstr "" +msgstr "Vergelijking achtervoegsel" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:153 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:156 msgid "Add color for positive/negative change" -msgstr "" +msgstr "Kleur toevoegen voor positieve/negatieve wijziging" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:165 #, fuzzy msgid "color scheme for comparison" -msgstr "Tijdsvergelijking" +msgstr "Filters voor vergelijking" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/controlPanel.ts:174 msgid "" @@ -9118,20 +9420,19 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberPeriodOverPeriod/index.ts:31 msgid "Big Number with Time Period Comparison" -msgstr "" +msgstr "Groot getal met vergelijking van tijdsperiode" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:37 -#, fuzzy msgid "Display settings" -msgstr "Planning instellingen" +msgstr "Weergave instellingen" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:46 msgid "Subheader" -msgstr "" +msgstr "Ondertitel" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:48 msgid "Description text that shows up below your Big Number" -msgstr "" +msgstr "Beschrijvingstekst die onder uw Grote Nummer verschijnt" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:70 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:144 @@ -9143,26 +9444,25 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:301 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:330 msgid "Date format" -msgstr "" +msgstr "Datum opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:83 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:157 msgid "Force date format" -msgstr "" +msgstr "Forceer datum opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:86 #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:160 msgid "Use date formatting even when metric value is not a timestamp" -msgstr "" +msgstr "Gebruik datum opmaak zelfs wanneer metrische waarde geen tijdstempel is" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:98 -#, fuzzy msgid "Conditional Formatting" -msgstr "Bijkomende informatie" +msgstr "Voorwaardelijke opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/controlPanel.ts:99 msgid "Apply conditional color formatting to metric" -msgstr "" +msgstr "Pas voorwaardelijke kleuropmaak toe op metriek" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/index.ts:31 msgid "" @@ -9170,14 +9470,17 @@ msgid "" "call attention to a KPI or the one thing you want your audience to focus " "on." msgstr "" +"Toont een enkele metriek op de voorgrond. Een groot getal wordt het beste" +" gebruikt om de aandacht te vestigen op een KPI of het belangrijkste " +"aspect waarop u uw publiek wilt laten focussen." #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/index.ts:35 msgid "A Big Number" -msgstr "" +msgstr "Een groot getal" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/index.ts:36 msgid "With a subheader" -msgstr "" +msgstr "Met een ondertitel" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberTotal/index.ts:38 msgid "Big Number" @@ -9185,60 +9488,63 @@ msgstr "Groot Getal" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:53 msgid "Comparison Period Lag" -msgstr "" +msgstr "Vergelijking Periode Vertraging" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:55 msgid "Based on granularity, number of time periods to compare against" -msgstr "" +msgstr "Gebaseerd op granulariteit, aantal perioden te vergelijken met" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:66 msgid "Comparison suffix" -msgstr "" +msgstr "Vergelijking achtervoegsel" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:67 msgid "Suffix to apply after the percentage display" -msgstr "" +msgstr "Achtervoegsel om toe te passen na het percentage" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:76 msgid "Show Timestamp" -msgstr "" +msgstr "Toon Tijdstempel" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:79 msgid "Whether to display the timestamp" -msgstr "" +msgstr "Of de tijdstempel moet worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:88 msgid "Show Trend Line" -msgstr "" +msgstr "Toon Trendlijn" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:91 msgid "Whether to display the trend line" -msgstr "" +msgstr "Of de trendlijn moet worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:100 msgid "Start y-axis at 0" -msgstr "" +msgstr "Start y-as op 0" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:103 msgid "" "Start y-axis at zero. Uncheck to start y-axis at minimum value in the " "data." msgstr "" +"Start y-axis op nul. Haal het vinkje weg om y-as te starten op minimale " +"waarde in de gegevens." #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:114 msgid "Fix to selected Time Range" -msgstr "" +msgstr "Repareer naar geselecteerde tijdbereik" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:115 msgid "" "Fix the trend line to the full time range specified in case filtered " "results do not include the start or end dates" msgstr "" +"Repareer de trendlijn tot het volledige tijdbereik gespecificeerd in het " +"geval gefilterde resultaten niet de begin- of einddatum bevatten" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx:283 -#, fuzzy msgid "TEMPORAL X-AXIS" -msgstr "Is tijdelijk" +msgstr "TIJDELIJK X-AXIS" #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/index.ts:33 msgid "" @@ -9246,6 +9552,9 @@ msgid "" "attention to an important metric along with its change over time or other" " dimension." msgstr "" +"Toont een enkel getal vergezeld van een eenvoudige lijndiagram, om de " +"aandacht te vestigen op een belangrijke metriek in combinatie met zijn " +"verandering in de tijd of andere dimensie." #: superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/index.ts:37 msgid "Big Number with Trendline" @@ -9253,40 +9562,39 @@ msgstr "Groot getal met trendlijn" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:88 msgid "Whisker/outlier options" -msgstr "" +msgstr "Opties whisker/outlier" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:90 msgid "Determines how whiskers and outliers are calculated." -msgstr "" +msgstr "Bepaalt hoe whiskers en outliers worden berekend." #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:94 -#, fuzzy msgid "Tukey" -msgstr "query" +msgstr "Tukey" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:95 msgid "Min/max (no outliers)" -msgstr "" +msgstr "Min/max (geen outliers)" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:96 msgid "2/98 percentiles" -msgstr "" +msgstr "2/98 percentielen" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:97 msgid "9/91 percentiles" -msgstr "" +msgstr "9/91 percentielen" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:164 msgid "Categories to group by on the x-axis." -msgstr "" +msgstr "Categorieën om te groeperen op de x-as." #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:167 msgid "Distribute across" -msgstr "" +msgstr "Verspreid over" #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/controlPanel.ts:169 msgid "Columns to calculate distribution across." -msgstr "" +msgstr "Kolommen om de distributie te berekenen." #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/index.ts:55 msgid "" @@ -9295,6 +9603,11 @@ msgid "" "middle emphasizes the mean, median, and inner 2 quartiles. The whiskers " "around each box visualize the min, max, range, and outer 2 quartiles." msgstr "" +"Ook bekend als een doos en whisker plot, deze visualisatie vergelijkt de " +"verdeling van een verwante metriek over meerdere groepen. De doos in het " +"midden legt de middelste nadruk op de middelmatige, middelbare en " +"binnenste kwartieren. De whiskers rond elke box visualiseer de min, max, " +"bereik en de buitenste 2 quartiles." #: superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/index.ts:60 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/index.ts:52 @@ -9317,37 +9630,38 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/index.ts:64 #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:131 msgid "ECharts" -msgstr "" +msgstr "EGrafieken" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:97 msgid "Bubble size number format" -msgstr "" +msgstr "Bubbel grootte nummer opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:106 -#, fuzzy msgid "Bubble Opacity" -msgstr "Bubbelgrafiek" +msgstr "Bubbel doorzichtigheid" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:112 msgid "Opacity of bubbles, 0 means completely transparent, 1 means opaque" msgstr "" +"Zichtbaarheid van bubbels, 0 betekent volledig transparant, 1 betekent " +"ondoorzichtig" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:143 msgid "X AXIS TITLE MARGIN" -msgstr "" +msgstr "X AXIS TITEL MARGE" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:164 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:167 msgid "Logarithmic x-axis" -msgstr "" +msgstr "Logaritmische x-as" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:195 msgid "Rotate y axis label" -msgstr "" +msgstr "Roteer y-as label" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:215 msgid "Y AXIS TITLE MARGIN" -msgstr "" +msgstr "Y AXIS TITEL MARGE" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:228 #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:231 @@ -9365,7 +9679,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:190 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:193 msgid "Logarithmic y-axis" -msgstr "" +msgstr "Logaritmische y-as" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:242 #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:344 @@ -9375,7 +9689,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:166 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:216 msgid "Truncate Y Axis" -msgstr "" +msgstr "Y-as Afkappen" #: superset-frontend/plugins/plugin-chart-echarts/src/Bubble/controlPanel.tsx:245 #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:347 @@ -9386,11 +9700,13 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:219 msgid "Truncate Y Axis. Can be overridden by specifying a min or max bound." msgstr "" +"Y-as afkappen. Kan worden overschreven door een min of max grens te " +"specificeren." #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:80 -#, fuzzy, python-format +#, python-format msgid "% calculation" -msgstr "Soort berekening" +msgstr "% berekening" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:81 msgid "" @@ -9398,18 +9714,21 @@ msgid "" "value, from the first step of the funnel, or from the previous step in " "the funnel." msgstr "" +"Toon percentages in de label en tooltip als percentage van de totale " +"waarde vanaf de eerste stap van de funnel, of vanaf de vorige stap in de " +"funnel." #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:85 msgid "Calculate from first step" -msgstr "" +msgstr "Bereken vanaf de eerste stap" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:88 msgid "Calculate from previous step" -msgstr "" +msgstr "Bereken vanaf vorige stap" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:90 msgid "Percent of total" -msgstr "" +msgstr "Percentage van totaal" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:106 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:92 @@ -9417,30 +9736,28 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:66 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:64 msgid "Labels" -msgstr "" +msgstr "Labels" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:112 -#, fuzzy msgid "Label Contents" -msgstr "Cel inhoud" +msgstr "Label Inhoud" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:130 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:108 msgid "Value and Percentage" -msgstr "" +msgstr "Waarde en Percentage" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:133 msgid "What should be shown as the label" -msgstr "" +msgstr "Wat moet worden weergegeven als het label" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:142 -#, fuzzy msgid "Tooltip Contents" -msgstr "Cel inhoud" +msgstr "Tooltip inhoud" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:159 msgid "What should be shown as the tooltip label" -msgstr "" +msgstr "Wat moet worden weergegeven als het tooltip label" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:186 #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:152 @@ -9448,15 +9765,15 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:75 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:73 msgid "Whether to display the labels." -msgstr "" +msgstr "Of de labels getoond moeten worden." #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:195 msgid "Show Tooltip Labels" -msgstr "" +msgstr "Toon Tooltip Labels" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/controlPanel.tsx:198 msgid "Whether to display the tooltip labels." -msgstr "" +msgstr "Of de tooltiplabels moeten worden weergegeven." #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/index.ts:55 msgid "" @@ -9464,23 +9781,26 @@ msgid "" "chart is useful for visualizing drop-off between stages in a pipeline or " "lifecycle." msgstr "" +"Toont hoe een metriek veranderd naarmate de trechter vordert. Deze " +"klassieke grafiek is handig voor het visualiseren van achtergronden " +"tussen fases in een pipeline of lifecycle." #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/index.ts:59 msgid "Funnel Chart" -msgstr "" +msgstr "Trechter Grafiek" #: superset-frontend/plugins/plugin-chart-echarts/src/Funnel/index.ts:65 #: superset-frontend/plugins/plugin-chart-table/src/index.ts:52 msgid "Sequential" -msgstr "" +msgstr "Sequentieel" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:41 msgid "Columns to group by" -msgstr "" +msgstr "Kolommen om te groeperen bij" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:75 msgid "General" -msgstr "" +msgstr "Algemeen" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:84 #: superset-frontend/src/explore/components/controls/BoundsControl.tsx:96 @@ -9489,7 +9809,7 @@ msgstr "Min" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:85 msgid "Minimum value on the gauge axis" -msgstr "" +msgstr "Minimale waarde op de graadmeter" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:95 #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:49 @@ -9499,131 +9819,136 @@ msgstr "Max" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:96 msgid "Maximum value on the gauge axis" -msgstr "" +msgstr "Maximale waarde op de graadmeter-as" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:105 msgid "Start angle" -msgstr "" +msgstr "Start hoek" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:106 msgid "Angle at which to start progress axis" -msgstr "" +msgstr "Hoek waarop de progress as moet beginnen" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:115 msgid "End angle" -msgstr "" +msgstr "Einde hoek" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:116 msgid "Angle at which to end progress axis" -msgstr "" +msgstr "Hoek waarop de voortgangsas eindigt" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:128 msgid "Font size" -msgstr "" +msgstr "Font size" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:129 msgid "Font size for axis labels, detail value and other text elements" -msgstr "" +msgstr "Tekengrootte voor as labels, detailwaarde en andere tekstelementen" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:161 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:290 msgid "Value format" -msgstr "" +msgstr "Waarde opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:162 msgid "Additional text to add before or after the value, e.g. unit" -msgstr "" +msgstr "Extra tekst om toe te voegen voor of na de waarde, bijvoorbeeld eenheid" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:175 msgid "Show pointer" -msgstr "" +msgstr "Toon aanwijzer" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:176 msgid "Whether to show the pointer" -msgstr "" +msgstr "Of de aanwijzer moet worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:187 msgid "Animation" -msgstr "" +msgstr "Animatie" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:188 msgid "Whether to animate the progress and the value or just display them" msgstr "" +"Of u nu de voortgang en de waarde wilt animeren of ze gewoon wilt " +"weergeven" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:196 msgid "Axis" -msgstr "" +msgstr "As" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:202 msgid "Show axis line ticks" -msgstr "" +msgstr "Toon as lijntikken" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:203 msgid "Whether to show minor ticks on the axis" -msgstr "" +msgstr "Of er kleine tikken op de as moeten worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:214 msgid "Show split lines" -msgstr "" +msgstr "Toon gesplitste lijnen" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:215 msgid "Whether to show the split lines on the axis" -msgstr "" +msgstr "Of de splitslijnen op de as moeten worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:226 msgid "Split number" -msgstr "" +msgstr "Splits nummer" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:227 msgid "Number of split segments on the axis" -msgstr "" +msgstr "Aantal gesplitste segmenten op de as" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:235 #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:83 msgid "Progress" -msgstr "" +msgstr "Voortgang" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:241 msgid "Show progress" -msgstr "" +msgstr "Toon voortgang" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:242 msgid "Whether to show the progress of gauge chart" -msgstr "" +msgstr "Of de voortgang van het graadmeterdiagram moet worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:253 msgid "Overlap" -msgstr "" +msgstr "Overlap" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:254 msgid "Whether the progress bar overlaps when there are multiple groups of data" -msgstr "" +msgstr "Of de voortgangsbalk overlapt wanneer er meerdere groepen gegevens zijn" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:267 msgid "Round cap" -msgstr "" +msgstr "Ronde dop" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:268 msgid "Style the ends of the progress bar with a round cap" -msgstr "" +msgstr "Stijl de uiteindes van de voortgangsbalk met een ronde dop" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:276 msgid "Intervals" -msgstr "" +msgstr "Intervallen" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:282 msgid "Interval bounds" -msgstr "" +msgstr "Interval grenzen" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:283 msgid "" "Comma-separated interval bounds, e.g. 2,4,5 for intervals 0-2, 2-4 and " "4-5. Last number should match the value provided for MAX." msgstr "" +"Kommagescheiden interval grenzen, bijvoorbeeld 2,4,5 voor intervallen " +"0-2, 2-4 en 4-5. Laatste getal moet overeenkomen met de opgegeven waarde " +"voor MAX." #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:296 msgid "Interval colors" -msgstr "" +msgstr "Interval kleuren" #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/controlPanel.tsx:297 msgid "" @@ -9631,6 +9956,9 @@ msgid "" "denote colors from the chosen color scheme and are 1-indexed. Length must" " be matching that of interval bounds." msgstr "" +"Kommagescheiden kleurenkiezers voor de intervals, bijvoorbeeld 1,2,4. " +"Gehele getallen denote kleuren van het gekozen kleurenschema en zijn 1 " +"geïndexeerd. Lengte moet overeenkomen met die van interval grenzen." #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/index.ts:46 msgid "" @@ -9638,197 +9966,209 @@ msgid "" "position of the dial represents the progress and the terminal value in " "the gauge represents the target value." msgstr "" +"Gebruikt een graadmeter om de voortgang van een metriek naar een doel te " +"laten zien. De positie van de wijzer geeft de vooruitgang weer en de " +"waarde in de meter vertegenwoordigt de doelwaarde." #: superset-frontend/plugins/plugin-chart-echarts/src/Gauge/index.ts:50 msgid "Gauge Chart" -msgstr "" +msgstr "Gauge Grafiek" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:53 msgid "Name of the source nodes" -msgstr "" +msgstr "Naam van de bronknooppunten" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:63 msgid "Name of the target nodes" -msgstr "" +msgstr "Naam van het doel knooppunten" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:73 msgid "Source category" -msgstr "" +msgstr "Bron categorie" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:74 msgid "" "The category of source nodes used to assign colors. If a node is " "associated with more than one category, only the first will be used." msgstr "" +"De categorie van bronnodes die worden gebruikt om kleuren toe te wijzen. " +"Als een knooppunt is gekoppeld met meer dan één categorie, zal alleen de " +"eerste worden gebruikt." #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:86 msgid "Target category" -msgstr "" +msgstr "Doel categorie" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:87 msgid "Category of target nodes" -msgstr "" +msgstr "Categorie van de doelnode" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:96 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:105 msgid "Chart options" -msgstr "" +msgstr "Grafiek opties" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:101 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:108 msgid "Layout" -msgstr "" +msgstr "Indeling" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:108 msgid "Graph layout" -msgstr "" +msgstr "Grafiek indeling" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:111 msgid "Force" -msgstr "" +msgstr "Forceer" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:114 msgid "Layout type of graph" -msgstr "" +msgstr "Indeling type van de grafiek" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:124 msgid "Edge symbols" -msgstr "" +msgstr "Rand symbolen" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:125 msgid "Symbol of two ends of edge line" -msgstr "" +msgstr "Symbool van twee uiteinden van de randlijn" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:128 msgid "None -> None" -msgstr "" +msgstr "Geen -> Geen" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:129 msgid "None -> Arrow" -msgstr "" +msgstr "Geen -> Pijl" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:130 msgid "Circle -> Arrow" -msgstr "" +msgstr "Cirkel -> Pijl" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:131 msgid "Circle -> Circle" -msgstr "" +msgstr "Cirkel -> Cirkel" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:141 msgid "Enable node dragging" -msgstr "" +msgstr "Schakel node slepen in" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:144 msgid "Whether to enable node dragging in force layout mode." msgstr "" +"Of het slepen van knooppunten in de geforceerde lay-outmodus moet worden " +"ingeschakeld." #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:161 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:268 msgid "Enable graph roaming" -msgstr "" +msgstr "Schakel grafiekroaming in" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:165 #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:185 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:272 msgid "Disabled" -msgstr "" +msgstr "Uitgeschakeld" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:166 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:273 msgid "Scale only" -msgstr "" +msgstr "Alleen schalen" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:167 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:274 msgid "Move only" -msgstr "" +msgstr "Enkel verplaatsen" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:168 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:275 msgid "Scale and Move" -msgstr "" +msgstr "Schaal en Verplaats" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:170 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:277 msgid "Whether to enable changing graph position and scaling." msgstr "" +"Of het wijzigen van de grafiekpositie en schaling moet worden " +"ingeschakeld." #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:182 msgid "Node select mode" -msgstr "" +msgstr "Node selectiemodus" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:186 msgid "Single" -msgstr "" +msgstr "Enkelvoudig" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:187 msgid "Multiple" -msgstr "" +msgstr "Meerdere" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:189 msgid "Allow node selections" -msgstr "" +msgstr "Sta node selecties toe" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:198 msgid "Label threshold" -msgstr "" +msgstr "Label drempelwaarde" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:202 msgid "Minimum value for label to be displayed on graph." -msgstr "" +msgstr "Minimale waarde van het label op grafiek." #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:213 msgid "Node size" -msgstr "" +msgstr "Node grootte" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:217 msgid "" "Median node size, the largest node will be 4 times larger than the " "smallest" msgstr "" +"Mediaangrootte van knooppunt, het grootste knooppunt zal 4 keer groter " +"zijn dan het kleinste" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:226 msgid "Edge width" -msgstr "" +msgstr "Rand dikte" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:230 msgid "" "Median edge width, the thickest edge will be 4 times thicker than the " "thinnest." -msgstr "" +msgstr "Mediaanrandbreedte, de dikste rand zal 4 keer dikker zijn dan de dunste." #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:241 msgid "Edge length" -msgstr "" +msgstr "Rand lengte" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:247 msgid "Edge length between nodes" -msgstr "" +msgstr "Lengte rand tussen nodes" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:262 msgid "Gravity" -msgstr "" +msgstr "Zwaartekracht" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:268 msgid "Strength to pull the graph toward center" -msgstr "" +msgstr "Sterkte om de grafiek naar het midden te trekken" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:283 msgid "Repulsion" -msgstr "" +msgstr "Afstoting" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:289 msgid "Repulsion strength between nodes" -msgstr "" +msgstr "Afstotingskracht tussen knooppunten" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:304 msgid "Friction" -msgstr "" +msgstr "Wrijving" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/controlPanel.tsx:310 msgid "Friction between nodes" -msgstr "" +msgstr "Wrijving tussen nodes" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:36 msgid "" @@ -9837,19 +10177,25 @@ msgid "" " Graph charts can be configured to be force-directed or circulate. If " "your data has a geospatial component, try the deck.gl Arc chart." msgstr "" +"Toont verbindingen tussen entiteiten in een grafiekstructuur. Handig voor" +" het toewijzen van relaties en tonen van welke knooppunten belangrijk " +"zijn in een netwerk. Grafieken kunnen worden geconfigureerd om geforceerd" +" te worden geleid of te circuleren. Als uw gegevens een geospatiële " +"component hebben, probeer dan de deck.gl boog." #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:40 msgid "Graph Chart" -msgstr "" +msgstr "Grafiek diagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Graph/index.ts:47 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/index.ts:46 msgid "Structural" -msgstr "" +msgstr "Structureel" #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:117 +#, fuzzy msgid "Legend Type" -msgstr "" +msgstr "Legenda type" #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:121 msgid "Piecewise" @@ -9860,8 +10206,9 @@ msgid "Hard value bounds applied for color coding." msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Heatmap/controlPanel.tsx:289 +#, fuzzy msgid "Y-Axis" -msgstr "" +msgstr "Y-as" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:107 #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx:48 @@ -9871,56 +10218,56 @@ msgstr "Aflopend of oplopend sorteren" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:144 msgid "Series type" -msgstr "" +msgstr "Series type" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:150 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:82 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:84 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/index.ts:68 msgid "Smooth Line" -msgstr "" +msgstr "Vloeiende lijn" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:152 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:83 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:86 msgid "Step - start" -msgstr "" +msgstr "Stap - start" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:153 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:84 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:87 msgid "Step - middle" -msgstr "" +msgstr "Stap - midden" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:154 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:85 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:88 msgid "Step - end" -msgstr "" +msgstr "Stap - einde" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:156 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:87 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:90 msgid "Series chart type (line, bar etc)" -msgstr "" +msgstr "Series grafiek type (lijn, staaf etc)" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:165 msgid "Stack series" -msgstr "" +msgstr "Stapel series" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:177 msgid "Area chart" -msgstr "" +msgstr "Vlakdiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:180 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:103 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:97 msgid "Draw area under curves. Only applicable for line types." -msgstr "" +msgstr "Teken gebied onder curves. Alleen toepasbaar voor lijntypes." #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:211 msgid "Opacity of area chart." -msgstr "" +msgstr "Ondoorzichtigheid van het vlakdiagram." #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:220 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:145 @@ -9929,7 +10276,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:75 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:127 msgid "Marker" -msgstr "" +msgstr "Marker" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:223 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:148 @@ -9938,11 +10285,11 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:78 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:130 msgid "Draw a marker on data points. Only applicable for line types." -msgstr "" +msgstr "Teken een markering op gegevenspunten. Alleen toepasbaar op lijntypes." #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:234 msgid "Marker size" -msgstr "" +msgstr "Marker grootte" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:239 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:164 @@ -9951,44 +10298,41 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:94 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:146 msgid "Size of marker. Also applies to forecast observations." -msgstr "" +msgstr "Grootte van marker. Ook van toepassing op de waarnemingen bij de prognose." #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:252 msgid "Primary" -msgstr "" +msgstr "Primair" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:253 msgid "Secondary" -msgstr "" +msgstr "Secundair" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:258 msgid "Primary or secondary y-axis" -msgstr "" +msgstr "Primaire of secundaire y-as" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:288 -#, fuzzy msgid "Shared query fields" -msgstr "Gedeelde zoekopdracht" +msgstr "Gedeelde query velden" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:292 #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:303 msgid "Query A" -msgstr "" +msgstr "Query A" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:293 -#, fuzzy msgid "Advanced analytics Query A" -msgstr "Geavanceerde analytics" +msgstr "Geavanceerde analytics zoekopdracht A" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:294 #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:304 msgid "Query B" -msgstr "" +msgstr "Query B" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:295 -#, fuzzy msgid "Advanced analytics Query B" -msgstr "Geavanceerde analytics" +msgstr "Geavanceerde analytics zoekopdracht B" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:310 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:178 @@ -9998,7 +10342,7 @@ msgstr "Geavanceerde analytics" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:107 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:159 msgid "Data Zoom" -msgstr "" +msgstr "Data Zoom" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:313 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:181 @@ -10008,7 +10352,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:110 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:162 msgid "Enable data zooming controls" -msgstr "" +msgstr "Gegevens zoomen inschakelen" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:330 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:220 @@ -10018,7 +10362,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:152 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:202 msgid "Minor Split Line" -msgstr "" +msgstr "Kleine Splitlijn" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:333 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:223 @@ -10027,11 +10371,11 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:155 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:205 msgid "Draw split lines for minor y-axis ticks" -msgstr "" +msgstr "Gesplitste lijnen tekenen voor kleine y-as tikken" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:358 msgid "Primary y-axis Bounds" -msgstr "" +msgstr "Primaire y-as Grenzen" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:361 msgid "" @@ -10040,18 +10384,22 @@ msgid "" "feature will only expand the axis range. It won't narrow the data's " "extent." msgstr "" +"Grenzen voor de primaire Y-as. Wanneer leeg gelaten, worden de grenzen " +"dynamisch gedefinieerd op basis van min/max van de gegevens. Merk op dat " +"deze functie alleen de as groter maakt. Het zal de grootte van de " +"gegevens niet verkleinen." #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:375 msgid "Primary y-axis format" -msgstr "" +msgstr "Primair y-as formaat" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:388 msgid "Logarithmic scale on primary y-axis" -msgstr "" +msgstr "Logaritmische schaal op primaire y-as" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:397 msgid "Secondary y-axis Bounds" -msgstr "" +msgstr "Secundaire y-as grenzen" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:400 msgid "" @@ -10062,22 +10410,29 @@ msgid "" "will only expand\n" " the axis range. It won't narrow the data's extent." msgstr "" +"Grenzen voor de secundaire Y-as. Werkt alleen als Onafhankelijke Y-as\n" +" grenzen zijn ingeschakeld. Wanneer leeg, wanneer leeg, de" +" grenzen worden dynamisch gedefinieerd\n" +" op basis van de min/max van de gegevens. Merk op dat deze" +" functie het assortiment alleen\n" +" zal uitbreiden. Het zal de omvang van de data niet " +"verkleinen." #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:414 msgid "Secondary y-axis format" -msgstr "" +msgstr "Secundaire y-as opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:423 msgid "Secondary currency format" -msgstr "" +msgstr "Secundaire valuta opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:432 msgid "Secondary y-axis title" -msgstr "" +msgstr "Secundaire titel y-as" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/controlPanel.tsx:447 msgid "Logarithmic scale on secondary y-axis" -msgstr "" +msgstr "Logaritmische schaal op secundaire y-as" #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/index.ts:58 msgid "" @@ -10085,54 +10440,55 @@ msgid "" "series can be visualized with a different chart type (e.g. 1 using bars " "and 1 using a line)." msgstr "" +"Visualiseer twee verschillende reeksen met behulp van dezelfde x-as. Let " +"op dat beide reeksen kunnen worden gevisualiseerd met een ander " +"grafiektype (bijv. 1 met staven en 1 met een lijn)." #: superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/index.ts:68 -#, fuzzy msgid "Mixed Chart" -msgstr "Grafiek verkleinen" +msgstr "Gemengde Grafiek" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:164 msgid "Put the labels outside of the pie?" -msgstr "" +msgstr "Plaats de labels buiten de cirkel?" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:175 msgid "Label Line" -msgstr "" +msgstr "Label Regel" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:178 msgid "Draw line from Pie to label when labels outside?" -msgstr "" +msgstr "Teken lijn van Taart naar label als labels buiten vallen?" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:191 #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:99 -#, fuzzy msgid "Show Total" -msgstr "Toon tabel" +msgstr "Toon Totaal" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:194 #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:102 msgid "Whether to display the aggregate count" -msgstr "" +msgstr "Of het geaggregeerde aantal moet worden weergegeven" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:199 msgid "Pie shape" -msgstr "" +msgstr "Cirkel vorm" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:205 msgid "Outer Radius" -msgstr "" +msgstr "Buitenste Radius" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:211 msgid "Outer edge of Pie chart" -msgstr "" +msgstr "Buitenste rand van cirkeldiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:232 msgid "Inner Radius" -msgstr "" +msgstr "Inner Radius" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/controlPanel.tsx:238 msgid "Inner radius of donut hole" -msgstr "" +msgstr "Inner radius van donut gat" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/index.ts:59 msgid "" @@ -10144,44 +10500,51 @@ msgid "" " relative proportion is important, consider using a bar or other chart " "type instead." msgstr "" +"De klassieker. Ideaal om te laten zien hoeveel van een bedrijf elke " +"belegger krijgt, welke demografie uw blog volgt, of welk deel van de " +"begroting gaat naar het militaire industriële complex.\n" +"\n" +" Cirkeldiagrammen kunnen moeilijk te interpreteren zijn. Als de " +"helderheid van relatieve verhoudingen belangrijk is, kun je in plaats " +"daarvan een staaf- of ander grafiektype gebruiken." #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/index.ts:68 msgid "Pie Chart" -msgstr "" +msgstr "Cirkel diagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Pie/transformProps.ts:339 #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/transformProps.ts:388 #, python-format msgid "Total: %s" -msgstr "" +msgstr "Totaal: %s" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:50 msgid "The maximum value of metrics. It is an optional configuration" -msgstr "" +msgstr "De maximale waarde van de metrieken. Het is een optionele configuratie" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:122 msgid "Label position" -msgstr "" +msgstr "Label positie" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:158 msgid "Radar" -msgstr "" +msgstr "Radar" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:164 msgid "Customize Metrics" -msgstr "" +msgstr "Aanpassen van Metrieken" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:165 msgid "Further customize how to display each metric" -msgstr "" +msgstr "Verder aanpassen hoe elke metriek weer te geven" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:198 msgid "Circle radar shape" -msgstr "" +msgstr "Cirkel radarvorm" #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/controlPanel.tsx:201 msgid "Radar render type, whether to display 'circle' shape." -msgstr "" +msgstr "Radar render type, of het de 'cirkel' vorm moet tonen." #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts:57 msgid "" @@ -10189,22 +10552,25 @@ msgid "" " visualized using its own line of points and each metric is represented " "as an edge in the chart." msgstr "" +"Visualiseer een parallelle reeks metrieken over meerdere groepen. Elke " +"groep wordt gevisualiseerd met behulp van zijn eigen lijn van punten en " +"elk getal wordt weergegeven als een rand in de grafiek." #: superset-frontend/plugins/plugin-chart-echarts/src/Radar/index.ts:61 msgid "Radar Chart" -msgstr "" +msgstr "Radar Diagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:157 msgid "Primary Metric" -msgstr "" +msgstr "Primaire Metriek" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:158 msgid "The primary metric is used to define the arc segment sizes" -msgstr "" +msgstr "De primaire metriek wordt gebruikt om de boogsegmentformaten te definiëren" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:163 msgid "Secondary Metric" -msgstr "" +msgstr "Secundaire Metriek" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:165 msgid "" @@ -10212,18 +10578,25 @@ msgid "" "against the primary metric. When omitted, the color is categorical and " "based on labels" msgstr "" +"[optioneel] deze secundaire metriek wordt gebruikt om de kleur te " +"definiëren als een verhouding ten opzichte van de primaire metriek. " +"Indien weggelaten, is de kleur categorisch en gebaseerd op labels" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:172 msgid "When only a primary metric is provided, a categorical color scale is used." msgstr "" +"Wanneer alleen een primaire metriek wordt verstrekt, wordt een " +"categorische kleurschaal gebruikt." #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:182 msgid "When a secondary metric is provided, a linear color scale is used." msgstr "" +"Wanneer een secundaire metrieke wordt verstrekt, wordt een lineaire " +"kleurschaal gebruikt." #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:192 msgid "Hierarchy" -msgstr "" +msgstr "Hierarchy" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/controlPanel.tsx:193 msgid "" @@ -10231,6 +10604,9 @@ msgid "" " represented by one ring with the innermost circle as the top of " "the hierarchy." msgstr "" +"Stelt de hiërarchie niveaus van de grafiek in. Elk niveau is\n" +" vertegenwoordigd door een ring met de binnenste cirkel als " +"bovenkant van de hiërarchie." #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts:42 msgid "" @@ -10239,20 +10615,25 @@ msgid "" "the stages a value took. Useful for multi-stage, multi-group visualizing " "funnels and pipelines." msgstr "" +"Gebruikt cirkels om de doorstroming van gegevens door verschillende fasen" +" van een systeem te visualiseren. Beweeg over individuele paden in de " +"visualisatie om te begrijpen welke fasen een waarde heeft doorlopen. " +"Handig voor het visualiseren van trechters en pijplijnen met meerdere " +"fasen en groepen." #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts:46 msgid "Sunburst Chart" -msgstr "" +msgstr "Zonnestraal Grafiek" #: superset-frontend/plugins/plugin-chart-echarts/src/Sunburst/index.ts:47 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/index.ts:44 #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts:66 msgid "Multi-Levels" -msgstr "" +msgstr "Multi-Niveaus" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/constants.ts:90 msgid "When using other than adaptive formatting, labels may overlap" -msgstr "" +msgstr "Bij het gebruik van andere dan adaptieve opmaak kunnen labels overlappen" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts:48 msgid "" @@ -10260,35 +10641,40 @@ msgid "" "scatter, and bar charts. This viz type has many customization options as " "well." msgstr "" +"Het Zwitserse zakmes voor het visualiseren van gegevens. Kies tussen " +"stap, lijn, verspreidings en staafdiagrammen. Dit viz type heeft ook veel" +" aanpassingsmogelijkheden." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/index.ts:58 msgid "Generic Chart" -msgstr "" +msgstr "Algemene Grafiek" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts:580 msgid "zoom area" -msgstr "" +msgstr "zoom gebied" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts:581 msgid "restore zoom" -msgstr "" +msgstr "herstel zoom" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:77 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:78 msgid "Series Style" -msgstr "" +msgstr "Series Stijl" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:96 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:114 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:108 msgid "Area chart opacity" -msgstr "" +msgstr "Vlakdiagram doorzichtigheid" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:102 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:120 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:114 msgid "Opacity of Area Chart. Also applies to confidence band." msgstr "" +"Ondoorzichtigheid van het vlakdiagram. Ook van toepassing op het " +"betrouwbaarheidsinterval." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/controlPanel.tsx:159 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:147 @@ -10296,7 +10682,7 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/controlPanel.tsx:89 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:141 msgid "Marker Size" -msgstr "" +msgstr "Marker Grootte" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/index.ts:54 msgid "" @@ -10304,53 +10690,54 @@ msgid "" "with the same scale, but area charts stack the metrics on top of each " "other." msgstr "" +"Vlakdiagrammen zijn vergelijkbaar met lijndiagrammen waarin ze variabelen" +" met dezelfde schaal vertegenwoordigen, maar de grafieken stapelen de " +"metrieken boven op elkaar." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Area/index.ts:64 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/controlPanel.tsx:100 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:94 msgid "Area Chart" -msgstr "" +msgstr "Vlakdiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:71 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:102 -#, fuzzy msgid "Axis Title" -msgstr "Titel tabblad" +msgstr "As Titel" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:87 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:118 msgid "AXIS TITLE MARGIN" -msgstr "" +msgstr "AXIS TITEL MARGIN" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:135 msgid "AXIS TITLE POSITION" -msgstr "" +msgstr "AXIS TITEL POSITIE" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:182 -#, fuzzy msgid "Axis Format" -msgstr "Y-as Formaat" +msgstr "As Opmaak" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:194 #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:197 msgid "Logarithmic axis" -msgstr "" +msgstr "Logaritmische as" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:211 msgid "Draw split lines for minor axis ticks" -msgstr "" +msgstr "Gesplitste lijnen tekenen voor kleine as tikken" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:224 msgid "Truncate Axis" -msgstr "" +msgstr "As Afkappen" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:227 msgid "It’s not recommended to truncate axis in Bar chart." -msgstr "" +msgstr "Het wordt niet aanbevolen om de as in de staafdiagram te verkorten." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:238 msgid "Axis Bounds" -msgstr "" +msgstr "As Grenzen" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:241 msgid "" @@ -10358,36 +10745,40 @@ msgid "" "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 "" +"Grenzen voor de as. Wanneer leeg gelaten, worden de grenzen dynamisch " +"gedefinieerd op basis van de min/max van de gegevens. Merk op dat deze " +"functie alleen de as groter maakt. Het zal de grootte van de gegevens " +"niet verkleinen." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:263 msgid "Chart Orientation" -msgstr "" +msgstr "Grafiek Oriëntatie" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:272 -#, fuzzy msgid "Bar orientation" -msgstr "aantekening" +msgstr "Staaf oriëntatie" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:275 msgid "Vertical" -msgstr "" +msgstr "Verticaal" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:276 msgid "Horizontal" -msgstr "" +msgstr "Horizontaal" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/controlPanel.tsx:278 -#, fuzzy msgid "Orientation of bar chart" -msgstr "Verdeling - Staafdiagram" +msgstr "Oriëntatie van de staafdiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts:60 msgid "Bar Charts are used to show metrics as a series of bars." msgstr "" +"Staafdiagrammen worden gebruikt om metrieken als reeks staven weer te " +"geven." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Bar/index.ts:74 msgid "Bar Chart" -msgstr "" +msgstr "Staafdiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/index.ts:59 msgid "" @@ -10396,10 +10787,15 @@ msgid "" "data points connected by straight line segments. It is a basic type of " "chart common in many fields." msgstr "" +"Lijndiagram wordt gebruikt voor het visualiseren van metingen over een " +"bepaalde categorie. Een lijndiagram is een type grafiek dat informatie " +"weergeeft als een serie gegevenspunten verbonden door rechte " +"lijnsegmenten. Het is een basissoort grafiek dat op veel gebieden " +"gebruikelijk is." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Line/index.ts:69 msgid "Line Chart" -msgstr "" +msgstr "Lijndiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Scatter/index.ts:58 msgid "" @@ -10407,20 +10803,25 @@ msgid "" "connected in order. It shows a statistical relationship between two " "variables." msgstr "" +"Een spreidingsplot heeft de horizontale as in lineaire eenheden, en de " +"punten zijn verbonden in volgorde. Het toont een statistische relatie " +"tussen twee variabelen." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/Scatter/index.ts:68 msgid "Scatter Plot" -msgstr "" +msgstr "Spreidingsplot" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Regular/SmoothLine/index.ts:58 msgid "" "Smooth-line is a variation of the line chart. Without angles and hard " "edges, Smooth-line sometimes looks smarter and more professional." msgstr "" +"Vloeiende lijn is een variatie van de lijndiagram. Zonder hoeken en harde" +" randen ziet de vloeiende lijn soms slimmer en professioneler uit." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:74 msgid "Step type" -msgstr "" +msgstr "Stap type" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:78 #: superset-frontend/src/pages/AnnotationList/index.tsx:174 @@ -10428,9 +10829,8 @@ msgid "Start" msgstr "Start" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:79 -#, fuzzy msgid "Middle" -msgstr "Bestand" +msgstr "Midden" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/controlPanel.tsx:80 #: superset-frontend/src/pages/AnnotationList/index.tsx:183 @@ -10442,6 +10842,8 @@ msgid "" "Defines whether the step should appear at the beginning, middle or end " "between two data points" msgstr "" +"Definieert of de stap moet verschijnen in het begin, midden of einde " +"tussen twee gegevenspunten" #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/index.ts:49 msgid "" @@ -10450,236 +10852,239 @@ msgid "" "chart can be useful when you want to show the changes that occur at " "irregular intervals." msgstr "" +"Getrapte lijngrafiek (ook wel stappendiagram genoemd) is een variatie van" +" lijndiagram, maar met de lijn vormen een reeks stappen tussen " +"datapunten. Een stappendiagram kan handig zijn als je veranderingen wilt " +"laten zien die met onregelmatige tussenpozen optreden." #: superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/Step/index.ts:59 msgid "Stepped Line" -msgstr "" +msgstr "Getrapte Lijn" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:50 msgid "Id" -msgstr "" +msgstr "Id" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:51 msgid "Name of the id column" -msgstr "" +msgstr "Naam van de id kolom" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:60 msgid "Parent" -msgstr "" +msgstr "Bovenliggende" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:61 msgid "Name of the column containing the id of the parent node" -msgstr "" +msgstr "Naam van de kolom die het id van het bovenliggende knooppunt bevat" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:73 msgid "Optional name of the data column." -msgstr "" +msgstr "Optionele naam van de gegevenskolom." #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:84 msgid "Root node id" -msgstr "" +msgstr "Root knooppunt id" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:85 msgid "Id of root node of the tree." -msgstr "" +msgstr "Id van root node van de boomstructuur." #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:96 msgid "Metric for node values" -msgstr "" +msgstr "Metriek voor knooppuntwaarden" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:115 msgid "Tree layout" -msgstr "" +msgstr "Boomstructuur indeling" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:118 msgid "Orthogonal" -msgstr "" +msgstr "Orthogonaal" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:119 msgid "Radial" -msgstr "" +msgstr "Radial" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:121 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:244 msgid "Layout type of tree" -msgstr "" +msgstr "Indeling type van boomstructuur" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:132 msgid "Tree orientation" -msgstr "" +msgstr "Boomstructuur oriëntatie" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:135 msgid "Left to Right" -msgstr "" +msgstr "Van Links naar Rechts" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:136 msgid "Right to Left" -msgstr "" +msgstr "Rechts naar Links" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:137 msgid "Top to Bottom" -msgstr "" +msgstr "Van boven naar beneden" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:138 msgid "Bottom to Top" -msgstr "" +msgstr "Onderaan naar boven" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:140 msgid "Orientation of tree" -msgstr "" +msgstr "Oriëntatie van de structuur" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:153 msgid "Node label position" -msgstr "" +msgstr "Node label positie" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:156 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:174 msgid "left" -msgstr "" +msgstr "links" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:157 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:175 msgid "top" -msgstr "" +msgstr "bovenkant" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:158 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:176 msgid "right" -msgstr "" +msgstr "rechts" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:159 #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:177 msgid "bottom" -msgstr "" +msgstr "onderkant" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:161 msgid "Position of intermediate node label on tree" -msgstr "" +msgstr "Positie van tussenliggende knooppuntlabel in de boom" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:171 msgid "Child label position" -msgstr "" +msgstr "Onderliggend label positie" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:179 msgid "Position of child node label on tree" -msgstr "" +msgstr "Positie van het label van het kindknooppunt op de boom" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:189 msgid "Emphasis" -msgstr "" +msgstr "Nadruk" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:192 msgid "ancestor" -msgstr "" +msgstr "voorouder" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:193 msgid "descendant" -msgstr "" +msgstr "afstammeling" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:195 msgid "Which relatives to highlight on hover" -msgstr "" +msgstr "Welke verwanten te markeren bij zweven" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:208 msgid "Symbol" -msgstr "" +msgstr "Symbool" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:212 msgid "Empty circle" -msgstr "" +msgstr "Lege cirkel" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:216 msgid "Circle" -msgstr "" +msgstr "Cirkel" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:220 msgid "Rectangle" -msgstr "" +msgstr "Rechthoek" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:224 msgid "Triangle" -msgstr "" +msgstr "Driehoek" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:228 msgid "Diamond" -msgstr "" +msgstr "Diamant" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:232 msgid "Pin" -msgstr "" +msgstr "Vastzetten" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:236 msgid "Arrow" -msgstr "" +msgstr "Pijl" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:253 msgid "Symbol size" -msgstr "" +msgstr "Symbool grootte" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/controlPanel.tsx:259 msgid "Size of edge symbols" -msgstr "" +msgstr "Grootte van randsymbolen" #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/index.ts:36 msgid "" "Visualize multiple levels of hierarchy using a familiar tree-like " "structure." msgstr "" +"Visualiseer meerdere niveaus van hiërarchie met behulp van een bekende " +"boomstructuur." #: superset-frontend/plugins/plugin-chart-echarts/src/Tree/index.ts:40 msgid "Tree Chart" -msgstr "" +msgstr "Boomdiagram" #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:82 msgid "Show Upper Labels" -msgstr "" +msgstr "Toon Bovenste Labels" #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:85 msgid "Show labels when the node has children." -msgstr "" +msgstr "Toon labels wanneer knooppunt kinderen heeft." #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/controlPanel.tsx:98 -#, fuzzy msgid "Key" -msgstr "Sankey" +msgstr "Sleutel" #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts:57 msgid "" "Show hierarchical relationships of data, with the value represented by " "area, showing proportion and contribution to the whole." msgstr "" +"Toon hiërarchische relaties van gegevens, met de waarde van gebied, en " +"laat proporties en bijdragen zien in het geheel." #: superset-frontend/plugins/plugin-chart-echarts/src/Treemap/index.ts:61 msgid "Treemap" -msgstr "Treemap" +msgstr "Boomstructuur" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/constants.ts:22 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/constants.ts:27 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:89 msgid "Total" -msgstr "" +msgstr "Totaal" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/constants.ts:23 -#, fuzzy msgid "Assist" -msgstr "Berekende kolom [%s] vereist een uitdrukking" +msgstr "Assisteren" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/constants.ts:25 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:71 -#, fuzzy msgid "Increase" -msgstr "Maak" +msgstr "Verhoog" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/constants.ts:26 #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:80 -#, fuzzy msgid "Decrease" -msgstr "Maak" +msgstr "Verlaag" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:64 -#, fuzzy msgid "Series colors" -msgstr "Time series kolommen" +msgstr "Series kleuren" #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/controlPanel.tsx:159 msgid "" @@ -10687,6 +11092,10 @@ msgid "" " This can help viewers understand how each category affects the " "overall value." msgstr "" +"Breekt de serie door de categorie gespecificeerd in dit " +"besturingselement.\n" +" Dit kan de kijkers helpen te begrijpen hoe elke categorie de " +"algemene waarde beïnvloedt." #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/index.ts:53 msgid "" @@ -10697,16 +11106,20 @@ msgid "" " These intermediate values can either be time based or category " "based." msgstr "" +"Een waterval grafiek is een vorm van gegevensweergave die helpt om\n" +" het cumulatieve effect van opeenvolgende positieve of negatieve" +" waarden te begrijpen.\n" +" Deze intermediate waarden kunnen gebaseerd zijn op tijd of " +"categorie." #: superset-frontend/plugins/plugin-chart-echarts/src/Waterfall/index.ts:63 -#, fuzzy msgid "Waterfall Chart" -msgstr "Alle grafieken" +msgstr "Waterval Diagram" #: superset-frontend/plugins/plugin-chart-handlebars/src/consts.ts:24 #: superset-frontend/plugins/plugin-chart-table/src/consts.ts:26 msgid "page_size.all" -msgstr "" +msgstr "page_size.all" #: superset-frontend/plugins/plugin-chart-handlebars/src/components/Handlebars/HandlebarsViewer.tsx:74 #: superset-frontend/src/components/Select/AsyncSelect.tsx:605 @@ -10719,39 +11132,39 @@ msgstr "Bezig met laden…" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/index.ts:40 msgid "Write a handlebars template to render the data" -msgstr "" +msgstr "Schrijf een handlebars sjabloon om de gegevens weer te geven" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/index.ts:41 -#, fuzzy msgid "Handlebars" -msgstr "waarschuwingen" +msgstr "Handlebars" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/columns.tsx:46 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:112 msgid "must have a value" -msgstr "" +msgstr "moet een waarde hebben" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/handlebarTemplate.tsx:60 -#, fuzzy msgid "Handlebars Template" -msgstr "Verwijder template" +msgstr "Handlebars Sjabloon" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/handlebarTemplate.tsx:61 msgid "A handlebars template that is applied to the data" -msgstr "" +msgstr "Een handlebars sjabloon die wordt toegepast op de gegevens" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/includeTime.ts:27 msgid "Include time" -msgstr "" +msgstr "Includeer tijd" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/includeTime.ts:28 msgid "Whether to include the time granularity as defined in the time section" msgstr "" +"Of de tijdgranulariteit moet worden opgenomen zoals gedefinieerd in de " +"tijdsectie" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/metrics.tsx:33 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:121 msgid "Percentage metrics" -msgstr "" +msgstr "Percentage metrieken" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/metrics.tsx:34 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:122 @@ -10761,11 +11174,16 @@ msgid "" "data within the row limit. You can use an aggregation function on a " "column or write custom SQL to create a percentage metric." msgstr "" +"Selecteer een of meerdere metrieken om weer te geven, die worden " +"weergegeven in de percentages van het totaal. Percentage metrieken worden" +" alleen berekend op basis van gegevens binnen de rij limiet. U kunt een " +"aggregatie functie gebruiken op een kolom of aangepaste SQL schrijven om " +"een percentage te maken." #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/metrics.tsx:105 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:342 msgid "Show totals" -msgstr "" +msgstr "Toon totalen" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/metrics.tsx:107 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:344 @@ -10773,16 +11191,18 @@ msgid "" "Show total aggregations of selected metrics. Note that row limit does not" " apply to the result." msgstr "" +"Toon de totale aggregatie van de geselecteerde metrieken. Merk op dat de " +"rijlimiet niet van toepassing is op het resultaat." #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx:28 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:272 msgid "Ordering" -msgstr "" +msgstr "Volgorde" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx:29 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:273 msgid "Order results by selected columns" -msgstr "" +msgstr "Sorteer de resultaten op geselecteerde kolommen" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/orderBy.tsx:46 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:327 @@ -10793,49 +11213,49 @@ msgstr "Sorteer aflopend" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/pagination.tsx:32 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:291 msgid "Server pagination" -msgstr "" +msgstr "Server paginatie" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/pagination.tsx:33 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:292 msgid "Enable server side pagination of results (experimental feature)" -msgstr "" +msgstr "Schakel server side paginering van resultaten in (experimentele functie)" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/pagination.tsx:46 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:313 msgid "Server Page Length" -msgstr "" +msgstr "Server Pagina Lengte" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/pagination.tsx:49 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:316 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:383 msgid "Rows per page, 0 means no pagination" -msgstr "" +msgstr "Rijen per pagina, 0 betekent geen paginering" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/queryMode.tsx:29 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:86 msgid "Query mode" -msgstr "" +msgstr "Query modus" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/shared.ts:59 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:80 msgid "Group By, Metrics or Percentage Metrics must have a value" -msgstr "" +msgstr "Groeperen Op, Metrieken of Percentage Metrieken moeten een waarde hebben" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/style.tsx:53 msgid "You need to configure HTML sanitization to use CSS" -msgstr "" +msgstr "Je moet HTML sanitisering configureren om CSS te gebruiken" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/style.tsx:75 msgid "CSS Styles" -msgstr "" +msgstr "CSS Styles" #: superset-frontend/plugins/plugin-chart-handlebars/src/plugin/controls/style.tsx:76 msgid "CSS applied to the chart" -msgstr "" +msgstr "CSS toegepast op de grafiek" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:50 msgid "Columns to group by on the columns" -msgstr "" +msgstr "Kolommen om te groeperen op de kolommen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:59 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:115 @@ -10846,23 +11266,23 @@ msgstr "Rijen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:60 msgid "Columns to group by on the rows" -msgstr "" +msgstr "Kolommen om te groeperen op de rijen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:111 msgid "Apply metrics on" -msgstr "" +msgstr "Metrieken toepassen op" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:117 msgid "Use metrics as a top level group for columns or for rows" -msgstr "" +msgstr "Gebruik metrieken als topniveau groep voor kolommen of rijen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:130 msgid "Cell limit" -msgstr "" +msgstr "Cel limiet" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:131 msgid "Limits the number of cells that get retrieved." -msgstr "" +msgstr "Beperkt het aantal cellen dat wordt opgehaald." #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:141 msgid "" @@ -10870,228 +11290,232 @@ msgid "" "limit is present. If undefined reverts to the first metric (where " "appropriate)." msgstr "" +"Metriek wordt gebruikt om te bepalen hoe de top series worden gesorteerd " +"als een serie of cel limiet aanwezig is. Indien ongedefinieerd wordt deze" +" teruggekeerd naar de eerste metriek (indien gepast)." #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:171 msgid "Aggregation function" -msgstr "" +msgstr "Aggregatie functie" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:174 -#, fuzzy msgid "Count" -msgstr "kolom" +msgstr "Tel" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:175 msgid "Count Unique Values" -msgstr "" +msgstr "Unieke waarde tellen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:176 -#, fuzzy msgid "List Unique Values" -msgstr "Uitgestuurde waarden" +msgstr "Lijst Unieke Waarden" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:177 msgid "Sum" -msgstr "" +msgstr "Som" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:178 -#, fuzzy msgid "Average" -msgstr "Beheer" +msgstr "Gemiddeld" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:179 msgid "Median" -msgstr "" +msgstr "Mediaan" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:180 msgid "Sample Variance" -msgstr "" +msgstr "Steekproefvariantie" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:181 msgid "Sample Standard Deviation" -msgstr "" +msgstr "Steekproefstandaarddeviatie" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:182 #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1144 msgid "Minimum" -msgstr "" +msgstr "Minimum" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:183 #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1150 msgid "Maximum" -msgstr "" +msgstr "Maximum" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:184 msgid "First" -msgstr "" +msgstr "Eerste" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:185 #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:31 msgid "Last" -msgstr "" +msgstr "Laatste" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:186 msgid "Sum as Fraction of Total" -msgstr "" +msgstr "Som als Fractie van Totaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:187 msgid "Sum as Fraction of Rows" -msgstr "" +msgstr "Som als Fractie van Rijen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:188 msgid "Sum as Fraction of Columns" -msgstr "" +msgstr "Som als Fractie van Kolommen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:189 msgid "Count as Fraction of Total" -msgstr "" +msgstr "Tel als fractie van het totaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:190 msgid "Count as Fraction of Rows" -msgstr "" +msgstr "Tel als fractie van de rijen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:193 msgid "Count as Fraction of Columns" -msgstr "" +msgstr "Tel als fractie van de kolommen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:197 msgid "" "Aggregate function to apply when pivoting and computing the total rows " "and columns" msgstr "" +"Aggregate functie om toe te passen bij pivoting en berekening van de " +"totale rijen en kolommen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:209 msgid "Show rows total" -msgstr "" +msgstr "Toon rijen totaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:212 msgid "Display row level total" -msgstr "" +msgstr "Toon rijniveau totaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:221 msgid "Show rows subtotal" -msgstr "" +msgstr "Toon rijen subtotaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:224 msgid "Display row level subtotal" -msgstr "" +msgstr "Toon rijniveau subtotaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:233 msgid "Show columns total" -msgstr "" +msgstr "Toon kolommen totaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:236 msgid "Display column level total" -msgstr "" +msgstr "Toon kolomniveau totaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:245 msgid "Show columns subtotal" -msgstr "" +msgstr "Toon kolommen subtotaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:248 msgid "Display column level subtotal" -msgstr "" +msgstr "Toon kolomniveau subtotaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:257 msgid "Transpose pivot" -msgstr "" +msgstr "Pivot transponeren" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:259 msgid "Swap rows and columns" -msgstr "" +msgstr "Wissel rijen en kolommen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:269 msgid "Combine metrics" -msgstr "" +msgstr "Combineer metrieken" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:271 msgid "" "Display metrics side by side within each column, as opposed to each " "column being displayed side by side for each metric." msgstr "" +"Toon metrieken naast elkaar binnen elke kolom, in tegenstelling tot de " +"kolom die naast elkaar wordt weergegeven voor elke metriek." #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:305 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:369 msgid "D3 time format for datetime columns" -msgstr "" +msgstr "D3 tijdnotatie voor datumtijd kolommen" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:314 msgid "Sort rows by" -msgstr "" +msgstr "Sorteer rijen op" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:318 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:346 msgid "key a-z" -msgstr "" +msgstr "sleutel a-z" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:319 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:347 msgid "key z-a" -msgstr "" +msgstr "sleutel z-a" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:320 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:348 msgid "value ascending" -msgstr "" +msgstr "waarde oplopend" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:321 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:349 msgid "value descending" -msgstr "" +msgstr "waarde aflopend" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:326 msgid "Change order of rows." -msgstr "" +msgstr "Verander de volgorde van rijen." #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:327 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:355 msgid "Available sorting modes:" -msgstr "" +msgstr "Beschikbare sorteer modi:" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:329 msgid "By key: use row names as sorting key" -msgstr "" +msgstr "Op sleutel: gebruik rij namen als sorteersleutel" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:330 #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:358 msgid "By value: use metric values as sorting key" -msgstr "" +msgstr "Op waarde: gebruik metriek waarden als sorteersleutel" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:342 msgid "Sort columns by" -msgstr "" +msgstr "Sorteer kolommen op" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:354 msgid "Change order of columns." -msgstr "" +msgstr "Wijzig volgorde van kolommen." #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:357 msgid "By key: use column names as sorting key" -msgstr "" +msgstr "Op sleutel: gebruik kolomnamen als sorteersleutel" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:370 msgid "Rows subtotal position" -msgstr "" +msgstr "Rijen subtotaal positie" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:378 msgid "Position of row level subtotal" -msgstr "" +msgstr "Positie van rij niveau subtotaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:387 msgid "Columns subtotal position" -msgstr "" +msgstr "Kolommen subtotaal positie" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:395 msgid "Position of column level subtotal" -msgstr "" +msgstr "Positie van kolomniveau subtotaal" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:405 #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:495 msgid "Conditional formatting" -msgstr "" +msgstr "Voorwaardelijke opmaak" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx:406 msgid "Apply conditional color formatting to metrics" -msgstr "" +msgstr "Pas voorwaardelijke kleuropmaak toe op metrieken" #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts:56 msgid "" @@ -11100,6 +11524,11 @@ msgid "" "status and assignee, active users by age and location. Not the most " "visually stunning visualization, but highly informative and versatile." msgstr "" +"Wordt gebruikt om een set gegevens samen te vatten door meerdere " +"statistieken te groeperen over twee assen. Voorbeelden: Verkoop nummers " +"per regio en per maand, taken per status en taakontvanger, actieve " +"gebruikers per leeftijd en per locatie. Niet de meest visueel " +"verbluffende visualisatie, maar zeer informatief en veelzijdig." #: superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/index.ts:60 msgid "Pivot Table" @@ -11107,107 +11536,114 @@ msgstr "Draaitabel" #: superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx:28 #: superset-frontend/src/explore/components/controls/FixedOrMetricControl/index.jsx:136 -#, fuzzy msgid "metric" -msgstr "Meeteenheid" +msgstr "metriek" #: superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx:500 #: superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx:565 #: superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/TableRenderers.jsx:786 #, python-format msgid "Total (%(aggregatorName)s)" -msgstr "" +msgstr "Totaal (%(aggregatorName)s)" #: superset-frontend/plugins/plugin-chart-pivot-table/src/react-pivottable/utilities.js:843 msgid "Unknown input format" -msgstr "" +msgstr "Onbekend invoerformaat" #: superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx:169 msgid "search.num_records" msgstr "" #: superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx:171 -#, python-format +#, fuzzy, python-format msgid "Search %s records" -msgstr "" +msgstr "Ruwe records" #: superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx:185 msgid "page_size.show" -msgstr "" +msgstr "page_size.show" #: superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx:205 msgid "page_size.entries" -msgstr "" +msgstr "page_size.entries" #: superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx:211 -#, fuzzy msgid "No matching records found" -msgstr "Geen gegevens gevonden" +msgstr "Geen overeenkomende records gevonden" #: superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx:596 msgid "Shift + Click to sort by multiple columns" -msgstr "" +msgstr "Shift + Klik om te sorteren op meerdere kolommen" #: superset-frontend/plugins/plugin-chart-table/src/TableChart.tsx:643 msgid "Totals" -msgstr "" +msgstr "Totalen" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:364 msgid "Timestamp format" -msgstr "" +msgstr "Tijdsstempel opmaak" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:380 msgid "Page length" -msgstr "" +msgstr "Pagina lengte" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:395 msgid "Search box" -msgstr "" +msgstr "Zoek vak" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:398 msgid "Whether to include a client-side search box" -msgstr "" +msgstr "Of er een zoekvak aan de clientzijde moet worden opgenomen" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:405 msgid "Cell bars" -msgstr "" +msgstr "Cel balken" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:408 #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:115 msgid "Whether to display a bar chart background in table columns" msgstr "" +"Of er een staafdiagram achtergrond moet worden weergegeven in " +"tabelkolommen" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:419 #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:122 msgid "Align +/-" -msgstr "" +msgstr "Uitlijnen +/-" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:422 msgid "" "Whether to align background charts with both positive and negative values" " at 0" msgstr "" +"Of achtergrondgrafieken moeten worden uitgelijnd met zowel positieve als " +"negatieve waarden op 0" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:431 #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:132 msgid "Color +/-" -msgstr "" +msgstr "Kleur +/-" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:434 msgid "" "Whether to colorize numeric values by whether they are positive or " "negative" msgstr "" +"Of numerieke waarden moeten worden gekleurd op basis van of ze positief " +"of negatief zijn" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:445 msgid "Allow columns to be rearranged" -msgstr "" +msgstr "Kolommen kunnen worden gerangschikt" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:448 msgid "" "Allow end user to drag-and-drop column headers to rearrange them. Note " "their changes won't persist for the next time they open the chart." msgstr "" +"Laat de eindgebruiker de kolomkoppen slepen om ze te herschikken. Merk op" +" dat hun wijzigingen niet blijven bestaan voor de volgende keer dat ze de" +" grafiek openen." #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:459 msgid "Render columns in HTML format" @@ -11219,121 +11655,116 @@ msgstr "" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:471 msgid "Customize columns" -msgstr "" +msgstr "Kolommen aanpassen" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:472 msgid "Further customize how to display each column" -msgstr "" +msgstr "Verder aanpassen hoe elke kolom te tonen" #: superset-frontend/plugins/plugin-chart-table/src/controlPanel.tsx:496 msgid "Apply conditional color formatting to numeric columns" -msgstr "" +msgstr "Pas voorwaardelijke kleuropmaak toe op numerieke kolommen" #: superset-frontend/plugins/plugin-chart-table/src/index.ts:41 msgid "" "Classic row-by-column spreadsheet like view of a dataset. Use tables to " "showcase a view into the underlying data or to show aggregated metrics." msgstr "" +"Klassieke rij-voor-kolom werkblad zoals weergave van een dataset. Gebruik" +" tabellen om een weergave in de onderliggende gegevens te tonen of " +"geaggregeerde metrieken te tonen." #: superset-frontend/plugins/plugin-chart-table/src/DataTable/components/SelectPageSize.tsx:38 msgid "Show" -msgstr "" +msgstr "Weergeven" #: superset-frontend/plugins/plugin-chart-table/src/DataTable/components/SelectPageSize.tsx:58 -#, fuzzy msgid "entries" -msgstr "Series" +msgstr "items" #: superset-frontend/plugins/plugin-chart-word-cloud/src/legacyPlugin/index.ts:29 #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/index.ts:39 msgid "Word Cloud" -msgstr "" +msgstr "Woord Cloud" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:59 msgid "Minimum Font Size" -msgstr "" +msgstr "Minimale Lettergrootte" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:62 msgid "Font size for the smallest value in the list" -msgstr "" +msgstr "Lettergrootte voor de kleinste waarde in de lijst" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:70 msgid "Maximum Font Size" -msgstr "" +msgstr "Maximale Lettergrootte" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:73 msgid "Font size for the biggest value in the list" -msgstr "" +msgstr "Lettergrootte voor de grootste waarde in de lijst" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:82 msgid "Word Rotation" -msgstr "" +msgstr "Woord Rotatie" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:84 -#, fuzzy msgid "random" -msgstr "en" +msgstr "willekeurig" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:86 -#, fuzzy msgid "square" -msgstr "Kwartaal" +msgstr "vierkant" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/controlPanel.ts:91 msgid "Rotation to apply to words in the cloud" -msgstr "" +msgstr "Rotatie om toe te passen op woorden in de cloud" #: superset-frontend/plugins/plugin-chart-word-cloud/src/plugin/index.ts:35 msgid "" "Visualizes the words in a column that appear the most often. Bigger font " "corresponds to higher frequency." msgstr "" +"Visualiseert de woorden in een kolom die het meest wordt weergegeven. " +"Groter lettertype komt overeen met een hogere frequentie." #: superset-frontend/src/constants.ts:139 #: superset-frontend/src/explore/components/DataTableControl/index.tsx:243 msgid "N/A" -msgstr "" +msgstr "N/B" #: superset-frontend/src/SqlLab/constants.ts:33 #: superset-frontend/src/SqlLab/constants.ts:54 -#, fuzzy msgid "offline" -msgstr "Offline" +msgstr "offline" #: superset-frontend/src/SqlLab/constants.ts:34 #: superset-frontend/src/SqlLab/constants.ts:52 -#, fuzzy msgid "failed" -msgstr "Mislukt" +msgstr "mislukt" #: superset-frontend/src/SqlLab/constants.ts:35 #: superset-frontend/src/SqlLab/constants.ts:55 -#, fuzzy msgid "pending" -msgstr "Rapport verzenden" +msgstr "in behandeling" #: superset-frontend/src/SqlLab/constants.ts:36 -#, fuzzy msgid "fetching" -msgstr "Instellingen" +msgstr "ophalen" #: superset-frontend/src/SqlLab/constants.ts:37 #: superset-frontend/src/SqlLab/constants.ts:53 -#, fuzzy msgid "running" -msgstr "Running" +msgstr "bezig" #: superset-frontend/src/SqlLab/constants.ts:38 -#, fuzzy msgid "stopped" -msgstr "Voeg toe" +msgstr "gestopt" #: superset-frontend/src/SqlLab/constants.ts:39 #: superset-frontend/src/SqlLab/constants.ts:51 #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:42 -#, fuzzy msgid "success" -msgstr "Succes" +msgstr "succes" #: superset-frontend/src/SqlLab/actions/sqlLab.js:114 msgid "The query couldn't be loaded" @@ -11368,29 +11799,40 @@ msgstr "Query is gestopt." #: superset-frontend/src/SqlLab/actions/sqlLab.js:414 #, python-format msgid "Failed at stopping query. %s" -msgstr "" +msgstr "Opschorten van query mislukt. %s" #: superset-frontend/src/SqlLab/actions/sqlLab.js:439 msgid "" "Unable to migrate table schema state to backend. Superset will retry " "later. Please contact your administrator if this problem persists." msgstr "" +"Kan de status van het tabelschema niet migreren naar de backend. Superset" +" zal het later opnieuw proberen. Neem contact op met uw beheerder als dit" +" probleem zich blijft voordoen." #: superset-frontend/src/SqlLab/actions/sqlLab.js:457 msgid "" "Unable to migrate query state to backend. Superset will retry later. " "Please contact your administrator if this problem persists." msgstr "" +"Kan de query status niet migreren naar de backend. Superset zal het later" +" opnieuw proberen. Neem contact op met uw beheerder als dit probleem zich" +" blijft voordoen." #: superset-frontend/src/SqlLab/actions/sqlLab.js:504 msgid "" "Unable to migrate query editor state to backend. Superset will retry " "later. Please contact your administrator if this problem persists." msgstr "" +"Het is niet mogelijk om de status van de query-editor te migreren naar de" +" backend. Superset zal later opnieuw proberen. Neem contact op met uw " +"beheerder als dit probleem aanhoudt." #: superset-frontend/src/SqlLab/actions/sqlLab.js:538 msgid "Unable to add a new tab to the backend. Please contact your administrator." msgstr "" +"Kan geen nieuw tabblad toevoegen aan de backend. Neem contact op met uw " +"beheerder." #: superset-frontend/src/SqlLab/actions/sqlLab.js:567 msgid "" @@ -11398,6 +11840,9 @@ msgid "" "clear your cookies or change browsers.\n" "\n" msgstr "" +"-- Let op: Tenzij u uw query opslaat, zullen deze tabbladen NIET bewaard " +"blijven als u uw cookies leegt of van browser verandert.\n" +"\n" #: superset-frontend/src/SqlLab/actions/sqlLab.js:601 #: superset-frontend/src/SqlLab/actions/sqlLab.js:1220 @@ -11421,10 +11866,14 @@ msgstr "Er is een fout opgetreden tijdens het ophalen van de tabbladstatus" #: superset-frontend/src/SqlLab/actions/sqlLab.js:750 msgid "An error occurred while removing tab. Please contact your administrator." msgstr "" +"Er is een fout opgetreden tijdens het verwijderen van het tabblad. Neem " +"contact op met de beheerder." #: superset-frontend/src/SqlLab/actions/sqlLab.js:787 msgid "An error occurred while removing query. Please contact your administrator." msgstr "" +"Er is een fout opgetreden tijdens het verwijderen van de query. Neem " +"contact op met de beheerder." #: superset-frontend/src/SqlLab/actions/sqlLab.js:843 msgid "Your query could not be saved" @@ -11432,7 +11881,7 @@ msgstr "Uw zoekopdracht kon niet worden opgeslagen" #: superset-frontend/src/SqlLab/actions/sqlLab.js:858 msgid "Your query was not properly saved" -msgstr "" +msgstr "Uw query is niet correct opgeslagen" #: superset-frontend/src/SqlLab/actions/sqlLab.js:861 msgid "Your query was saved" @@ -11452,6 +11901,9 @@ msgid "" "losing your changes, please save your query using the \"Save Query\" " "button." msgstr "" +"Er is een fout opgetreden tijdens het opslaan van uw zoekopdracht in de " +"backend. Sla uw query op met de knop \"Opslaan\" om te voorkomen dat u uw" +" wijzigingen verliest." #: superset-frontend/src/SqlLab/actions/sqlLab.js:1047 msgid "" @@ -11513,19 +11965,27 @@ msgid "" "delete the tab.\n" "Note that you will need to close other SQL Lab windows before you do this." msgstr "" +"SQL Lab gebruikt de lokale opslag van je browser om query's en resultaten" +" op te slaan.\n" +"Momenteel gebruikt u een opslagruimte %(currentUsage)s KB van " +"%(maxStorage)d KB.\n" +"Om te voorkomen dat SQL Lab crasht, verwijder een aantal query tabbladen." +"\n" +"U kunt deze zoekopdrachten heropenen met behulp van de 'Opslaan' functie " +"voordat u het tabblad verwijdert.\n" +"Merk op dat u andere SQL Lab vensters moet sluiten voordat u dit doet." #: superset-frontend/src/SqlLab/components/ColumnElement/index.tsx:63 msgid "Primary key" -msgstr "" +msgstr "Primaire sleutel" #: superset-frontend/src/SqlLab/components/ColumnElement/index.tsx:64 msgid "Foreign key" -msgstr "" +msgstr "Foreign key" #: superset-frontend/src/SqlLab/components/ColumnElement/index.tsx:65 -#, fuzzy msgid "Index" -msgstr "Mijn" +msgstr "Index" #: superset-frontend/src/SqlLab/components/EstimateQueryCostButton/index.tsx:99 msgid "Estimate selected query cost" @@ -11550,14 +12010,12 @@ msgstr "Verken de resultaten in de gegevensverkenningsweergave" #: superset-frontend/src/SqlLab/components/ExploreCtasResultsButton/index.tsx:89 #: superset-frontend/src/SqlLab/components/ExploreResultsButton/index.tsx:47 -#, fuzzy msgid "explore" -msgstr "Verken" +msgstr "verkennen" #: superset-frontend/src/SqlLab/components/ExploreResultsButton/index.tsx:49 -#, fuzzy msgid "Create Chart" -msgstr "Maak een nieuwe grafiek" +msgstr "Grafiek aanmaken" #: superset-frontend/src/SqlLab/components/HighlightedSql/index.tsx:76 msgid "Source SQL" @@ -11565,7 +12023,7 @@ msgstr "Bron SQL" #: superset-frontend/src/SqlLab/components/HighlightedSql/index.tsx:82 msgid "Executed SQL" -msgstr "" +msgstr "Uitgevoerde SQL" #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:44 #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:45 @@ -11574,9 +12032,8 @@ msgid "Run query" msgstr "Zoekopdracht uitvoeren" #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:47 -#, fuzzy msgid "Run current query" -msgstr "Zoekopdracht uitvoeren" +msgstr "Voer huidige query uit" #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:48 #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:49 @@ -11589,36 +12046,31 @@ msgid "New tab" msgstr "Nieuw tabblad" #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:52 -#, fuzzy msgid "Previous Line" -msgstr "Vorige" +msgstr "Vorige regel" #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:53 #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:669 -#, fuzzy msgid "Format SQL" -msgstr "D3 formaat" +msgstr "Formatteer SQL" #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:55 #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:56 -#, fuzzy msgid "Find" -msgstr "in" +msgstr "Zoeken" #: superset-frontend/src/SqlLab/components/KeyboardShortcutButton/index.tsx:93 #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:686 msgid "Keyboard shortcuts" -msgstr "" +msgstr "Toetsenbord snelkoppelingen" #: superset-frontend/src/SqlLab/components/QueryHistory/index.tsx:143 -#, fuzzy msgid "Run a query to display query history" -msgstr "Voer een query uit om de resultaten hier weer te geven" +msgstr "Voer een query uit om de querygeschiedenis weer te geven" #: superset-frontend/src/SqlLab/components/QueryLimitSelect/index.tsx:104 -#, fuzzy msgid "LIMIT" -msgstr "Rij limiet" +msgstr "LIMIT" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:80 #: superset-frontend/src/pages/ExecutionLogList/index.tsx:101 @@ -11627,9 +12079,8 @@ msgid "State" msgstr "Status" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:81 -#, fuzzy msgid "Started" -msgstr "Status" +msgstr "Gestart" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:82 #: superset-frontend/src/pages/ExecutionLogList/index.tsx:142 @@ -11675,11 +12126,11 @@ msgstr "Mislukt" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:147 #: superset-frontend/src/pages/QueryHistoryList/index.tsx:183 msgid "Running" -msgstr "Running" +msgstr "Bezig" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:153 msgid "Fetching" -msgstr "" +msgstr "Ophalen" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:159 #: superset-frontend/src/pages/QueryHistoryList/index.tsx:188 @@ -11694,7 +12145,7 @@ msgstr "Gepland" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:177 msgid "Unknown Status" -msgstr "" +msgstr "Onbekende Status" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:226 #: superset-frontend/src/dashboard/components/menu/MarkdownModeDropdown.tsx:35 @@ -11714,13 +12165,12 @@ msgstr "Bewerk" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:245 #: superset-frontend/src/pages/AlertReportList/index.tsx:378 -#, fuzzy msgid "View" -msgstr "Preview" +msgstr "Bekijken" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:248 msgid "Data preview" -msgstr "Data preview" +msgstr "Data voorbeeld" #: superset-frontend/src/SqlLab/components/QueryTable/index.tsx:286 msgid "Overwrite text in the editor with a query on this table" @@ -11736,7 +12186,7 @@ msgstr "Verwijder de query uit de log" #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:271 msgid "Unable to create chart without a query id." -msgstr "" +msgstr "Kan de grafiek niet aanmaken zonder query id." #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:301 #: superset-frontend/src/SqlLab/components/SaveQuery/index.tsx:195 @@ -11753,7 +12203,7 @@ msgstr "Overschrijven en verkennen" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopoverTrigger.tsx:154 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricPopoverTrigger.tsx:252 msgid "Save this query as a virtual dataset to continue exploring" -msgstr "" +msgstr "Deze query opslaan als virtueel dataset om verder te blijven verkennen" #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:317 msgid "Download to CSV" @@ -11774,6 +12224,9 @@ msgid "" "configuration DISPLAY_MAX_ROW. Please add additional limits/filters or " "download to csv to see more rows up to the %(limit)d limit." msgstr "" +"Het aantal weergegeven resultaten is beperkt tot %(rows)d door de " +"configuratie DISPLAY_MAX_ROW. Voeg extra limieten/filters of download " +"naar csv om meer rijen van %(limit)d te zien." #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:362 #, python-format @@ -11782,16 +12235,21 @@ msgid "" "additional limits/filters, download to csv, or contact an admin to see " "more rows up to the %(limit)d limit." msgstr "" +"Het aantal weergegeven resultaten is beperkt tot %(rows)d. Voeg extra " +"limieten/filters, download naar csv, of neem contact op met een beheerder" +" om meer rijen te zien tot de %(limit)d limiet." #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:373 #, python-format msgid "The number of rows displayed is limited to %(rows)d by the query" -msgstr "" +msgstr "Het aantal getoonde rijen is beperkt tot %(rows)d door de query" #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:381 #, python-format msgid "The number of rows displayed is limited to %(rows)d by the limit dropdown." msgstr "" +"Het aantal rijen dat wordt weergegeven is beperkt tot %(rows)d door de " +"keuzelijst limiet." #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:386 #, python-format @@ -11799,32 +12257,34 @@ msgid "" "The number of rows displayed is limited to %(rows)d by the query and " "limit dropdown." msgstr "" +"Het aantal weergegeven rijen is beperkt tot %(rows)d door de query en de " +"keuzelijst limiet." #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:392 #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:405 #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:419 #, python-format msgid "%(rows)d rows returned" -msgstr "" +msgstr "%(rows)d rijen teruggegeven" #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:407 #, python-format msgid "The number of rows displayed is limited to %(rows)d by the dropdown." -msgstr "" +msgstr "Het aantal getoonde rijen is beperkt tot %(rows)d door de keuzelijst." #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:456 #: superset-frontend/src/explore/components/RowCountLabel/index.tsx:47 #, fuzzy, python-format msgid "%s row" -msgstr "%s Fout" +msgstr "%s rij" #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:486 msgid "Track job" -msgstr "Track job" +msgstr "Job volgen" #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:487 msgid "See query details" -msgstr "" +msgstr "Bekijk query details" #: superset-frontend/src/SqlLab/components/ResultSet/index.tsx:502 msgid "Query was stopped" @@ -11872,9 +12332,8 @@ msgid "Stop running (Ctrl + x)" msgstr "Stop de uitvoering (Ctrl + x)" #: superset-frontend/src/SqlLab/components/RunQueryActionButton/index.tsx:115 -#, fuzzy msgid "Stop running (Ctrl + e)" -msgstr "Stop de uitvoering (Ctrl + x)" +msgstr "Stop de uitvoering (Ctrl + e)" #: superset-frontend/src/SqlLab/components/RunQueryActionButton/index.tsx:131 msgid "Run query (Ctrl + Return)" @@ -11920,9 +12379,8 @@ msgid "Save" msgstr "Opslaan" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:147 -#, fuzzy msgid "Untitled Dataset" -msgstr "Bewerk de dataset" +msgstr "Naamloze Dataset" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:320 msgid "An error occurred saving dataset" @@ -11930,14 +12388,14 @@ msgstr "Er is een fout opgetreden bij het opslaan van dataset" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:353 msgid "Save or Overwrite Dataset" -msgstr "" +msgstr "Dataset opslaan of overschrijven" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:370 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1141 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1158 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1178 msgid "Back" -msgstr "" +msgstr "Terug" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:399 #: superset-frontend/src/SqlLab/components/SaveQuery/index.tsx:218 @@ -11945,24 +12403,20 @@ msgid "Save as new" msgstr "Opslaan als nieuw" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:409 -#, fuzzy msgid "Overwrite existing" -msgstr "Blijf bewerken" +msgstr "Overschrijf bestaande" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:415 -#, fuzzy msgid "Select or type dataset name" -msgstr "Selecteer tabel of type tabelnaam" +msgstr "Selecteer of typ dataset naam" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:416 -#, fuzzy msgid "Existing dataset" -msgstr "Ontbrekende dataset" +msgstr "Bestaande dataset" #: superset-frontend/src/SqlLab/components/SaveDatasetModal/index.tsx:431 -#, fuzzy msgid "Are you sure you want to overwrite this dataset?" -msgstr "Weet je zeker dat je de geselecteerde datasets wilt verwijderen?" +msgstr "Weet je zeker dat je deze data wilt overschrijven?" #: superset-frontend/src/SqlLab/components/SaveQuery/index.tsx:93 #: superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx:134 @@ -11970,9 +12424,8 @@ msgid "Undefined" msgstr "Ongedefinieerd" #: superset-frontend/src/SqlLab/components/SaveQuery/index.tsx:108 -#, fuzzy msgid "Save dataset" -msgstr "Wijzig dataset" +msgstr "Dataset opslaan" #: superset-frontend/src/SqlLab/components/SaveQuery/index.tsx:203 #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:254 @@ -12004,7 +12457,7 @@ msgstr "Annuleer" #: superset-frontend/src/SqlLab/components/SaveQuery/index.tsx:227 msgid "Update" -msgstr "Update" +msgstr "Bijwerken" #: superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx:172 msgid "Label for your query" @@ -12012,11 +12465,11 @@ msgstr "Label voor uw zoekopdracht" #: superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx:186 msgid "Write a description for your query" -msgstr "Schrijf een omschrijving voor uw zoekopdracht." +msgstr "Schrijf een omschrijving voor uw query" #: superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx:209 msgid "Submit" -msgstr "" +msgstr "Bevestigen" #: superset-frontend/src/SqlLab/components/ScheduleQueryButton/index.tsx:229 msgid "Schedule query" @@ -12053,7 +12506,7 @@ msgstr "Kopieer link" #: superset-frontend/src/SqlLab/components/SouthPane/Results.tsx:71 #: superset-frontend/src/explore/components/DataTablesPane/components/useResultsPane.tsx:109 msgid "Run a query to display results" -msgstr "" +msgstr "Voer een query uit om resultaten weer te geven" #: superset-frontend/src/SqlLab/components/SouthPane/Results.tsx:87 msgid "No stored results found, you need to re-run your query" @@ -12068,7 +12521,7 @@ msgstr "Geschiedenis van de opzoeking" #: superset-frontend/src/SqlLab/components/SouthPane/index.tsx:165 #, python-format msgid "Preview: `%s`" -msgstr "Preview: `%s`" +msgstr "Voorbeeld: `%s`" #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:638 msgid "Schedule the query periodically" @@ -12084,7 +12537,7 @@ msgstr "" #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:652 msgid "Autocomplete" -msgstr "Autocomplete" +msgstr "Automatisch aanvullen" #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:712 msgid "CREATE TABLE AS" @@ -12100,19 +12553,19 @@ msgstr "Kostenraming voordat een query wordt uitgevoerd" #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:848 msgid "Specify name to CREATE VIEW AS schema in: public" -msgstr "" +msgstr "Specificeer de naam van CREATE VIEW AS schema in: public" #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:849 msgid "Specify name to CREATE TABLE AS schema in: public" -msgstr "" +msgstr "Specificeer de naam van CREATE TABLE AS schema in: public" #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:891 msgid "Select a database to write a query" -msgstr "" +msgstr "Selecteer een database om een query te schrijven" #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:892 msgid "Choose one of the available databases from the panel on the left." -msgstr "" +msgstr "Kies een van de beschikbare databases uit het paneel aan de linkerkant." #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:914 #: superset-frontend/src/SqlLab/components/SqlEditor/index.tsx:923 @@ -12121,11 +12574,11 @@ msgstr "Maak" #: superset-frontend/src/SqlLab/components/SqlEditorLeftBar/index.tsx:198 msgid "Collapse table preview" -msgstr "" +msgstr "Tabel voorbeeld inklappen" #: superset-frontend/src/SqlLab/components/SqlEditorLeftBar/index.tsx:198 msgid "Expand table preview" -msgstr "" +msgstr "Tabel voorbeeld uitklappen" #: superset-frontend/src/SqlLab/components/SqlEditorLeftBar/index.tsx:284 msgid "Reset state" @@ -12160,9 +12613,8 @@ msgid "Duplicate tab" msgstr "Tabblad Dupliceren" #: superset-frontend/src/SqlLab/components/TabbedSqlEditors/index.tsx:253 -#, fuzzy msgid "Add a new tab" -msgstr "Zoekopdracht in een nieuw tabblad" +msgstr "Een nieuw tabblad toevoegen" #: superset-frontend/src/SqlLab/components/TabbedSqlEditors/index.tsx:259 #: superset-frontend/src/SqlLab/components/TabbedSqlEditors/index.tsx:300 @@ -12176,7 +12628,7 @@ msgstr "Nieuw tabblad (Ctrl + t)" #: superset-frontend/src/SqlLab/components/TabbedSqlEditors/index.tsx:277 msgid "Add a new tab to create SQL Query" -msgstr "" +msgstr "Voeg een nieuw tabblad toe om een SQL Query aan te maken" #: superset-frontend/src/SqlLab/components/TableElement/index.tsx:137 msgid "An error occurred while fetching table metadata" @@ -12226,31 +12678,28 @@ msgid "Remove table preview" msgstr "Verwijder tabel preview" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:67 -#, fuzzy msgid "Assign a set of parameters as" -msgstr "Dataset parameters zijn ongeldig." +msgstr "Een set parameters toewijzen als" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:69 msgid "below (example:" -msgstr "" +msgstr "hieronder (voorbeeld:" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:71 msgid "), and they become available in your SQL (example:" -msgstr "" +msgstr "), en ze zijn beschikbaar in uw SQL (voorbeeld:" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:72 msgid "by using" -msgstr "" +msgstr "door te gebruiken" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:78 -#, fuzzy msgid "Jinja templating" -msgstr "Bewerk template" +msgstr "Jinja templating" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:80 -#, fuzzy msgid "syntax." -msgstr "Syntax" +msgstr "syntax." #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:104 msgid "Edit template parameters" @@ -12258,7 +12707,7 @@ msgstr "Bewerk template parameters" #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:108 msgid "Parameters " -msgstr "" +msgstr "Parameters " #: superset-frontend/src/SqlLab/components/TemplateParamsEditor/index.tsx:114 msgid "Invalid JSON" @@ -12276,17 +12725,17 @@ msgstr "%s%s" #: superset-frontend/src/components/AlteredSliceTag/index.tsx:221 msgid "Control" -msgstr "" +msgstr "Controle" #: superset-frontend/src/components/AlteredSliceTag/index.tsx:225 #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:75 msgid "Before" -msgstr "" +msgstr "Voor" #: superset-frontend/src/components/AlteredSliceTag/index.tsx:229 #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:82 msgid "After" -msgstr "" +msgstr "Na" #: superset-frontend/src/components/AlteredSliceTag/index.tsx:248 msgid "Click to see difference" @@ -12301,9 +12750,9 @@ msgid "Chart changes" msgstr "Veranderingen in de grafiek" #: superset-frontend/src/components/AuditInfo/index.tsx:40 -#, fuzzy, python-format +#, python-format msgid "Modified by: %s" -msgstr "Laatst gewijzigd door %s" +msgstr "Gewijzigd door: %s" #: superset-frontend/src/components/CachedLabel/TooltipContent.tsx:30 msgid "Loaded data cached" @@ -12318,9 +12767,8 @@ msgid "Click to force-refresh" msgstr "Klik om te herladen" #: superset-frontend/src/components/CachedLabel/index.tsx:51 -#, fuzzy msgid "Cached" -msgstr "cached" +msgstr "Gebufferd" #: superset-frontend/src/components/Chart/Chart.jsx:253 #, fuzzy, python-format @@ -12330,37 +12778,41 @@ msgstr "Weergave %s van %s" #: superset-frontend/src/components/Chart/Chart.jsx:254 #, fuzzy msgid "Waiting on database..." -msgstr "Importeer databases" +msgstr "Beheer je databases" #: superset-frontend/src/components/Chart/Chart.jsx:304 msgid "Add required control values to preview chart" -msgstr "" +msgstr "Vereiste controlewaarden toevoegen aan de grafiek voorbeeld" #: superset-frontend/src/components/Chart/Chart.jsx:320 msgid "Your chart is ready to go!" -msgstr "" +msgstr "Je grafiek is klaar om te beginnen!" #: superset-frontend/src/components/Chart/Chart.jsx:323 msgid "" "Click on \"Create chart\" button in the control panel on the left to " "preview a visualization or" msgstr "" +"Klik op de knop \"Maak grafiek\" in het controlepaneel links om een " +"visualisatie te bekijken of" #: superset-frontend/src/components/Chart/Chart.jsx:327 #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:353 msgid "click here" -msgstr "" +msgstr "klik hier" #: superset-frontend/src/components/Chart/ChartRenderer.jsx:296 #: superset-frontend/src/explore/components/DataTablesPane/components/useResultsPane.tsx:134 msgid "No results were returned for this query" -msgstr "" +msgstr "Er zijn geen resultaten gevonden voor deze zoekopdracht" #: superset-frontend/src/components/Chart/ChartRenderer.jsx:299 msgid "" "Make sure that the controls are configured properly and the datasource " "contains data for the selected time range" msgstr "" +"Zorg ervoor dat de besturingselementen correct zijn geconfigureerd en dat" +" de gegevensbron gegevens bevat voor het geselecteerde tijdsbereik" #: superset-frontend/src/components/Chart/chartAction.js:553 msgid "An error occurred while loading the SQL" @@ -12369,97 +12821,91 @@ msgstr "Er is een fout opgetreden bij het laden van de SQL" #: superset-frontend/src/components/Chart/chartAction.js:613 #: superset-frontend/src/explore/components/DataTablesPane/components/useResultsPane.tsx:89 msgid "Sorry, an error occurred" -msgstr "" +msgstr "Sorry, er is een fout opgetreden" #: superset-frontend/src/components/Chart/chartReducer.ts:84 msgid "Updating chart was stopped" -msgstr "" +msgstr "Bijwerken van grafiek is gestopt" #: superset-frontend/src/components/Chart/chartReducer.ts:96 #, python-format msgid "An error occurred while rendering the visualization: %s" -msgstr "" +msgstr "Er is een fout opgetreden bij het renderen van de visualisatie: %s" #: superset-frontend/src/components/Chart/chartReducer.ts:108 #: superset-frontend/src/components/Chart/chartReducer.ts:169 msgid "Network error." -msgstr "" +msgstr "Netwerk fout." #: superset-frontend/src/components/Chart/ChartContextMenu/ChartContextMenu.tsx:162 msgid "Cross-filter will be applied to all of the charts that use this dataset." msgstr "" +"Cross-filter zal worden toegepast op alle grafieken die deze data " +"gebruiken." #: superset-frontend/src/components/Chart/ChartContextMenu/ChartContextMenu.tsx:167 msgid "You can also just click on the chart to apply cross-filter." -msgstr "" +msgstr "Je kunt ook gewoon op de grafiek klikken om cross-filter toe te passen." #: superset-frontend/src/components/Chart/ChartContextMenu/ChartContextMenu.tsx:174 -#, fuzzy msgid "Cross-filtering is not enabled for this dashboard." -msgstr "Er zijn geen filters in dit dashboard." +msgstr "Cross-filtering is niet ingeschakeld voor dit dashboard." #: superset-frontend/src/components/Chart/ChartContextMenu/ChartContextMenu.tsx:181 -#, fuzzy msgid "This visualization type does not support cross-filtering." -msgstr "Dit visualisatietype wordt niet ondersteund." +msgstr "Dit visualisatietype ondersteunt geen cross-filtering." #: superset-frontend/src/components/Chart/ChartContextMenu/ChartContextMenu.tsx:188 msgid "You can't apply cross-filter on this data point." -msgstr "" +msgstr "U kunt geen cross-filter toepassen op dit datapunt." #: superset-frontend/src/components/Chart/ChartContextMenu/ChartContextMenu.tsx:204 -#, fuzzy msgid "Remove cross-filter" -msgstr "Item verwijderen" +msgstr "Verwijder cross-filter" #: superset-frontend/src/components/Chart/ChartContextMenu/ChartContextMenu.tsx:207 -#, fuzzy msgid "Add cross-filter" -msgstr "Filter toevoegen" +msgstr "Cross-filter toevoegen" #: superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx:147 msgid "Failed to load dimensions for drill by" -msgstr "" +msgstr "Fout bij het laden van dimensies voor filteren op" #: superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx:195 msgid "Drill by is not yet supported for this chart type" -msgstr "" +msgstr "Filteren op is nog niet ondersteund voor dit type grafiek" #: superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx:197 msgid "Drill by is not available for this data point" -msgstr "" +msgstr "Filteren op is niet beschikbaar voor dit datapunt" #: superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx:204 #: superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx:214 msgid "Drill by" -msgstr "" +msgstr "Filteren op" #: superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx:230 -#, fuzzy msgid "Search columns" -msgstr "%s kolom(men)" +msgstr "Zoek kolommen" #: superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx:273 -#, fuzzy msgid "No columns found" -msgstr "Geen kolommen" +msgstr "Geen kolommen gevonden" #: superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx:103 msgid "Failed to generate chart edit URL" -msgstr "" +msgstr "Kan geen URL voor het bewerken van grafieken genereren" #: superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx:123 #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailModal.tsx:60 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:482 -#, fuzzy msgid "You do not have sufficient permissions to edit the chart" -msgstr "U heeft geen toestemming om deze grafiek te bewerken" +msgstr "U heeft niet voldoende rechten om de grafiek te bewerken" #: superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx:135 #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailModal.tsx:64 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:488 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:753 -#, fuzzy msgid "Edit chart" msgstr "Bewerk grafiek" @@ -12481,34 +12927,31 @@ msgstr "Sluit" #: superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx:422 #: superset-frontend/src/pages/Chart/index.tsx:69 msgid "Failed to load chart data." -msgstr "" +msgstr "Laden van grafiekgegevens mislukt." #: superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx:440 #, python-format msgid "Drill by: %s" -msgstr "" +msgstr "Filteren op: %s" #: superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx:470 -#, fuzzy msgid "There was an error loading the chart data" -msgstr "" -"Sorry er is een fout opgetreden bij het ophalen van database informatie: " -"%s" +msgstr "Er is een fout opgetreden bij het laden van de grafiekgegevens" #: superset-frontend/src/components/Chart/DrillBy/useResultsTableView.tsx:59 #: superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx:218 #: superset-frontend/src/explore/components/DataTablesPane/components/ResultsPaneOnDashboard.tsx:84 -#, fuzzy, python-format +#, python-format msgid "Results %s" -msgstr "Resultaten" +msgstr "Resultaten %s" #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailMenuItems.tsx:47 msgid "Drill to detail" -msgstr "" +msgstr "Doorklikken naar detail" #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailMenuItems.tsx:48 msgid "Drill to detail by" -msgstr "" +msgstr "Doorklikken naar detail per" #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailMenuItems.tsx:50 msgid "" @@ -12521,43 +12964,46 @@ msgid "" "Drill to detail is disabled because this chart does not group data by " "dimension value." msgstr "" +"Doorklikken naar detail is uitgeschakeld omdat deze grafiek geen data " +"groepeert naar dimensiewaarde." #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailMenuItems.tsx:56 msgid "Right-click on a dimension value to drill to detail by that value." msgstr "" +"Rechtsklik op een dimensiewaarde om door te klikken met detail met die " +"waarde." #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailMenuItems.tsx:59 msgid "Drill to detail by value is not yet supported for this chart type." msgstr "" +"Doorklikken naar detail per waarde wordt nog niet ondersteund voor dit " +"type grafiek." #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailModal.tsx:126 #, python-format msgid "Drill to detail: %s" -msgstr "" +msgstr "Doorklikken naar detail: %s" #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailPane.tsx:128 -#, fuzzy msgid "Formatting" -msgstr "D3 formaat" +msgstr "Opmaken" #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailPane.tsx:132 -#, fuzzy msgid "Formatted value" -msgstr "Uitgestuurde waarden" +msgstr "Opgemaakte waarde" #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailPane.tsx:287 msgid "No rows were returned for this dataset" -msgstr "" +msgstr "Er zijn geen rijen teruggegeven voor deze dataset" #: superset-frontend/src/components/Chart/DrillDetail/DrillDetailTableControls.tsx:133 -#, fuzzy msgid "Reload" -msgstr "Upload" +msgstr "Herlaad" #: superset-frontend/src/components/CopyToClipboard/index.tsx:39 #: superset-frontend/src/explore/components/DataTableControl/index.tsx:84 msgid "Copy" -msgstr "" +msgstr "Kopiëren" #: superset-frontend/src/components/CopyToClipboard/index.tsx:43 #: superset-frontend/src/dashboard/components/URLShortLinkButton/index.tsx:88 @@ -12605,7 +13051,7 @@ msgstr "elk uur" #: superset-frontend/src/components/CronPicker/CronPicker.tsx:34 msgid "every minute" -msgstr "" +msgstr "elke minuut" #: superset-frontend/src/components/CronPicker/CronPicker.tsx:41 msgid "minute" @@ -12630,9 +13076,8 @@ msgstr "op" #: superset-frontend/src/components/CronPicker/CronPicker.tsx:47 #: superset-frontend/src/pages/ChartCreation/index.tsx:298 -#, fuzzy msgid "or" -msgstr "uur" +msgstr "of" #: superset-frontend/src/components/CronPicker/CronPicker.tsx:48 #: superset-frontend/src/components/CronPicker/CronPicker.tsx:50 @@ -12645,7 +13090,7 @@ msgstr ":" #: superset-frontend/src/components/CronPicker/CronPicker.tsx:51 msgid "minute(s)" -msgstr "" +msgstr "minu(u)t(en)" #: superset-frontend/src/components/CronPicker/CronPicker.tsx:52 msgid "Invalid cron expression" @@ -12809,13 +13254,12 @@ msgstr "DEC" #: superset-frontend/src/components/DatabaseSelector/index.tsx:244 msgid "There was an error loading the schemas" -msgstr "" +msgstr "Er is een fout opgetreden bij het laden van de schema's" #: superset-frontend/src/components/DatabaseSelector/index.tsx:275 #: superset-frontend/src/components/DatabaseSelector/index.tsx:283 -#, fuzzy msgid "Select database or type to search databases" -msgstr "Selecteer tabel of type tabelnaam" +msgstr "Selecteer database of type om databases te zoeken" #: superset-frontend/src/components/DatabaseSelector/index.tsx:295 msgid "Force refresh schema list" @@ -12824,11 +13268,11 @@ msgstr "Forceer vernieuwen schema lijst" #: superset-frontend/src/components/DatabaseSelector/index.tsx:300 #: superset-frontend/src/components/DatabaseSelector/index.tsx:307 msgid "Select schema or type to search schemas" -msgstr "" +msgstr "Selecteer schema of type om schema's te zoeken" #: superset-frontend/src/components/DatabaseSelector/index.tsx:306 msgid "No compatible schema found" -msgstr "" +msgstr "Geen compatibel schema gevonden" #: superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx:51 msgid "" @@ -12855,24 +13299,22 @@ msgid "dataset" msgstr "dataset" #: superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx:199 -#, fuzzy msgid "Successfully changed dataset!" -msgstr "Wijzig dataset" +msgstr "Gegevens succesvol gewijzigd!" #: superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx:231 msgid "Connection" -msgstr "" +msgstr "Verbinding" #: superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx:260 #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:324 #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:468 -#, fuzzy msgid "Swap dataset" -msgstr "dataset" +msgstr "Wissel dataset" #: superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx:275 msgid "Proceed" -msgstr "" +msgstr "Doorgaan" #: superset-frontend/src/components/Datasource/ChangeDatasourceModal.tsx:292 msgid "Warning!" @@ -12887,23 +13329,20 @@ msgid "Add item" msgstr "Voeg item toe" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:147 -#, fuzzy msgid "STRING" -msgstr "Waarschuwing" +msgstr "STRING" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:148 -#, fuzzy msgid "NUMERIC" -msgstr "Mijn meeteenheid" +msgstr "NUMERIC" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:149 -#, fuzzy msgid "DATETIME" -msgstr "Datum/Tijd" +msgstr "DATUMTIJD" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:150 msgid "BOOLEAN" -msgstr "" +msgstr "BOOLEAN" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:154 msgid "Physical (table or view)" @@ -12922,22 +13361,20 @@ msgstr "Data type" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:293 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:365 -#, fuzzy msgid "Advanced data type" -msgstr "Geladen gegevens in de cache" +msgstr "Geavanceerd gegevenstype" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:297 -#, fuzzy msgid "Advanced Data type" -msgstr "Geladen gegevens in de cache" +msgstr "Geavanceerde Data type" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:306 msgid "Datetime format" -msgstr "Datetime formaat" +msgstr "Datumtijd opmaak" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:310 msgid "The pattern of timestamp format. For strings use " -msgstr "Het patroon van het timestamp formaat. Voor tekenreeksen gebruik je " +msgstr "Het patroon van de tijdstempel opmaak. Voor strings gebruik je " #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:312 msgid "Python datetime string pattern" @@ -12968,15 +13405,29 @@ msgid "" "defaults on a per\n" " database/column name level via the extra parameter." msgstr "" +" standaard om ervoor te zorgen dat de lexicografische volgorde\n" +" samenvalt met de chronologische volgorde. Als het " +"tijdstempel\n" +" niet overeenkomt met de ISO 8601 standaard\n" +" dan moet u een expressie definiëren en typen voor\n" +" om de tekenreeks om te zetten in een datum of " +"tijdstempel. Note\n" +" currently time zones are not supported Als de tijd " +"wordt opgeslagen\n" +" in epoch formaat, zet `epoch_s` of `epoch_ms`. Als " +"er geen patroon\n" +" is opgegeven, vallen we terug naar de optionele " +"standaardwaarden op een\n" +" database/kolom naam niveau via de extra parameter." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:338 msgid "Certified By" -msgstr "" +msgstr "Gecertificeerd door" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:339 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1285 msgid "Person or group that has certified this metric" -msgstr "Persoon of groep die deze meetwaarde heeft gecertificeerd" +msgstr "Persoon of groep die deze metriek heeft gecertificeerd" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:343 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1283 @@ -13010,7 +13461,7 @@ msgstr "Is dimensie" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:369 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:377 msgid "Default datetime" -msgstr "" +msgstr "Standaard datum/tijd" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:370 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:378 @@ -13019,14 +13470,13 @@ msgstr "Kan gefilterd worden" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:506 #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1495 -#, fuzzy msgid "" -msgstr "kolom" +msgstr "" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:567 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1306 msgid "Select owners" -msgstr "" +msgstr "Selecteer eigenaren" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:782 #, python-format @@ -13064,7 +13514,7 @@ msgstr "Kolomnaam [%s] is gedupliceerd" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:836 #, python-format msgid "Metric name [%s] is duplicated" -msgstr "Meeteenheid naam [%s] is dubbel" +msgstr "Metriek naam [%s] is dubbel" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:845 #, python-format @@ -13073,7 +13523,7 @@ msgstr "Berekende kolom [%s] vereist een uitdrukking" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:860 msgid "Invalid currency code in saved metrics" -msgstr "" +msgstr "Ongeldige valuta code in opgeslagen metriek" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:878 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1794 @@ -13092,7 +13542,7 @@ msgstr "" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:904 msgid "Autocomplete filters" -msgstr "Autocomplete filters" +msgstr "Filters automatisch aanvullen" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:905 msgid "Whether to populate autocomplete filters options" @@ -13110,6 +13560,13 @@ msgid "" "the table. Typically the intent would be to limit the scan by applying a " "relative time filter on a partitioned or indexed time-related field." msgstr "" +"Wanneer u \"Autocomplete filters\" gebruikt, kan dit worden gebruikt om " +"de prestaties van de query te verbeteren die deze waarden ophaalt. " +"Gebruik deze optie om een voorspelling toe te passen (WHERE clausule) om " +"de query te selecteren uit de verschillende waarden van de tabel. Meestal" +" zou het doel zijn om het scannen te beperken door een relatieve " +"tijdfilter toe te passen op een gepartitioneerd of geïndexeerd " +"tijdgebonden veld." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:933 msgid "" @@ -13118,18 +13575,24 @@ msgid "" " \"details\": \"This table is the source of truth.\" }, " "\"warning_markdown\": \"This is a warning.\" }`." msgstr "" +"Extra gegevens om tabelmetagegevens te specificeren. Ondersteunt " +"momenteel metadata van het formaat: `{ \"certification\": { " +"\"certified_by\": \"Data Platform Team\", \"details\": \"Deze tabel is de" +" bron van de waarheid. }, \"warning_markdown\": \"Dit is een " +"waarschuwing\" }`." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:969 #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:402 msgid "Cache timeout" -msgstr "Cache timeout" +msgstr "Buffer time-out" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:970 -#, fuzzy msgid "" "The duration of time in seconds before the cache is invalidated. Set to " "-1 to bypass the cache." -msgstr "De tijdsduur in seconden voordat de cache ongeldig wordt gemaakt" +msgstr "" +"De tijdsduur in seconden voordat de cache ongeldig is. Stel in op -1 om " +"de cache te omzeilen." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:977 msgid "Hours offset" @@ -13140,31 +13603,32 @@ msgid "" "The number of hours, negative or positive, to shift the time column. This" " can be used to move UTC time to local time." msgstr "" +"Het aantal uren, negatief of positief, om de tijd kolom te verschuiven. " +"Dit kan worden gebruikt om de UTC tijd naar lokale tijd te verplaatsen." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:996 -#, fuzzy msgid "Normalize column names" -msgstr "Geen tijdskolommen" +msgstr "Normaliseer kolomnamen" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1005 -#, fuzzy msgid "Always filter main datetime column" -msgstr "Kolom Hoofd Datumtijd" +msgstr "Filter altijd de hoofdkolom datumtijd" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1006 msgid "" "When the secondary temporal columns are filtered, apply the same filter " "to the main datetime column." msgstr "" +"Wanneer de secundaire tijdelijke kolommen worden gefilterd, pas hetzelfde" +" filter toe op de belangrijkste datumtijd kolom." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1027 -#, fuzzy msgid "" -msgstr "Ruimtelijk" +msgstr "" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1028 msgid "" -msgstr "" +msgstr "" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1059 msgid "Click the lock to make changes." @@ -13188,6 +13652,9 @@ msgid "" "this statement as a subquery while grouping and filtering on the " "generated parent queries." msgstr "" +"Bij het specificeren van SQL, fungeert de gegevensbron als een weergave. " +"Superset zal deze verklaring gebruiken als een subquery tijdens het " +"groeperen en filteren op de gegenereerde bovenliggende queries." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1154 #: superset-frontend/src/pages/DatasetList/index.tsx:364 @@ -13201,17 +13668,21 @@ msgid "" " associated to this Superset logical table, and this logical table points" " the physical table referenced here." msgstr "" +"De aanwijzer naar een fysieke tabel (of weergave). Houd er rekening mee " +"dat de grafiek gekoppeld is aan deze Superset logische tabel en deze " +"logische tabel wijst hier op de fysieke tabel waarnaar wordt verwezen." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1237 -#, fuzzy msgid "Metric Key" -msgstr "Meeteenheid" +msgstr "Metriek Sleutel" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1242 msgid "" "This field is used as a unique identifier to attach the metric to charts." " It is also used as the alias in the SQL query." msgstr "" +"Dit veld wordt gebruikt als unieke id voor het koppelen van de metrieken " +"aan de grafieken. Het wordt ook gebruikt als de alias in de SQL query." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1263 #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:47 @@ -13221,11 +13692,11 @@ msgstr "D3 formaat" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1270 msgid "Metric currency" -msgstr "" +msgstr "Metriek valuta" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1274 msgid "Select or type currency symbol" -msgstr "" +msgstr "Selecteer of typ valuta symbool" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1307 #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx:232 @@ -13235,12 +13706,11 @@ msgstr "Waarschuwing" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1309 msgid "Optional warning about use of this metric" -msgstr "Optionele waarschuwing voor het gebruik van deze meeteenheid" +msgstr "Optionele waarschuwing voor het gebruik van deze metriek" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1326 -#, fuzzy msgid "" -msgstr "Opgeslagen meeteenheid" +msgstr "" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1402 msgid "Be careful." @@ -13251,6 +13721,9 @@ msgid "" "Changing these settings will affect all charts using this dataset, " "including charts owned by other people." msgstr "" +"Het wijzigen van deze instellingen zal van invloed zijn op alle grafieken" +" die deze data gebruiken, inclusief grafieken die eigendom zijn van " +"andere mensen." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1450 msgid "Sync columns from source" @@ -13265,10 +13738,13 @@ msgid "" "This field is used as a unique identifier to attach the calculated " "dimension to charts. It is also used as the alias in the SQL query." msgstr "" +"Dit veld wordt gebruikt als een uniek id om de berekende dimensie aan " +"grafieken toe te voegen. Het wordt ook gebruikt als de alias in de SQL " +"query." #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1498 msgid "" -msgstr "" +msgstr "" #: superset-frontend/src/components/Datasource/DatasourceEditor.jsx:1504 #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:191 @@ -13284,9 +13760,8 @@ msgid "The dataset has been saved" msgstr "De dataset is opgeslagen" #: superset-frontend/src/components/Datasource/DatasourceModal.tsx:219 -#, fuzzy msgid "Error saving dataset" -msgstr "Er is een fout opgetreden bij het opslaan van dataset" +msgstr "Fout bij opslaan dataset" #: superset-frontend/src/components/Datasource/DatasourceModal.tsx:253 msgid "" @@ -13324,11 +13799,11 @@ msgstr "Bewerk Dataset " #: superset-frontend/src/components/Datasource/DatasourceModal.tsx:302 msgid "Use legacy datasource editor" -msgstr "Gebruik de legacy datasource editor" +msgstr "Gebruik de verouderde gegevensbron editor" #: superset-frontend/src/components/Datasource/DatasourceModal.tsx:325 msgid "This dataset is managed externally, and can't be edited in Superset" -msgstr "" +msgstr "Deze dataset wordt extern beheerd en kan niet worden bewerkt in Superset" #: superset-frontend/src/components/DeleteModal/index.tsx:69 #: superset-frontend/src/dashboard/components/gridComponents/Tabs.jsx:231 @@ -13347,9 +13822,8 @@ msgid "Type \"%s\" to confirm" msgstr "Type “%s” om te bevestigen" #: superset-frontend/src/components/DropdownContainer/index.tsx:125 -#, fuzzy msgid "More" -msgstr "Zie meer" +msgstr "Meer" #: superset-frontend/src/components/EditableTitle/index.tsx:211 msgid "Click to edit" @@ -13361,16 +13835,15 @@ msgstr "Je hebt niet de rechten om deze titel te veranderen." #: superset-frontend/src/components/EmptyState/index.tsx:228 msgid "No databases match your search" -msgstr "" +msgstr "Er komen geen databases overeen met uw zoekopdracht" #: superset-frontend/src/components/EmptyState/index.tsx:229 msgid "There are no databases available" -msgstr "" +msgstr "Er zijn geen databases beschikbaar" #: superset-frontend/src/components/EmptyState/index.tsx:230 -#, fuzzy msgid "Manage your databases" -msgstr "Importeer databases" +msgstr "Beheer je databases" #: superset-frontend/src/components/EmptyState/index.tsx:231 #: superset-frontend/src/components/ImportModal/ErrorAlert.tsx:60 @@ -13379,7 +13852,7 @@ msgstr "Importeer databases" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1065 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1869 msgid "here" -msgstr "" +msgstr "hier" #: superset-frontend/src/components/ErrorBoundary/index.tsx:61 #: superset-frontend/src/components/ErrorMessage/ErrorMessageWithStackTrace.tsx:24 @@ -13395,7 +13868,7 @@ msgstr "Dit kan veroorzaakt worden door:" #: superset-frontend/src/components/ErrorMessage/TimeoutErrorMessage.tsx:72 #, fuzzy msgid "Please reach out to the Chart Owner for assistance." -msgstr "Neem contact op met de eigenaar van de grafiek voor hulp." +msgstr "Neem contact op met de grafiek eigenaar voor hulp." #: superset-frontend/src/components/ErrorMessage/DatabaseErrorMessage.tsx:70 #: superset-frontend/src/components/ErrorMessage/TimeoutErrorMessage.tsx:83 @@ -13410,6 +13883,9 @@ msgid "" "This may be triggered by: \n" "%(issues)s" msgstr "" +"%(message)s\n" +"Dit kan worden geactiveerd door: \n" +"%(issues)s" #: superset-frontend/src/components/ErrorMessage/DatabaseErrorMessage.tsx:89 #, python-format @@ -13438,7 +13914,7 @@ msgstr "Kopieer bericht" #: superset-frontend/src/components/ErrorMessage/MarshmallowErrorMessage.tsx:98 msgid "Details" -msgstr "" +msgstr "Details" #: superset-frontend/src/components/ErrorMessage/OAuth2RedirectMessage.tsx:170 msgid "Authorization needed" @@ -13468,6 +13944,8 @@ msgid "" "We’re having trouble loading this visualization. Queries are set to " "timeout after %s second." msgstr "" +"We ondervinden problemen bij het laden van deze visualisatie. Queries " +"zijn ingesteld op time-out na %s seconde." #: superset-frontend/src/components/ErrorMessage/TimeoutErrorMessage.tsx:52 #, fuzzy, python-format @@ -13475,6 +13953,8 @@ msgid "" "We’re having trouble loading these results. Queries are set to timeout " "after %s second." msgstr "" +"We ondervinden problemen bij het laden van deze resultaten. Vragen zijn " +"ingesteld op time-out na %s seconde." #: superset-frontend/src/components/ErrorMessage/TimeoutErrorMessage.tsx:93 #, python-format @@ -13483,6 +13963,9 @@ msgid "" "This may be triggered by:\n" " %(issue)s" msgstr "" +"%(subtitle)s\n" +"Dit kan geactiveerd worden door:\n" +" %(issue)s" #: superset-frontend/src/components/ErrorMessage/TimeoutErrorMessage.tsx:98 msgid "Timeout error" @@ -13497,20 +13980,20 @@ msgid "Cell content" msgstr "Cel inhoud" #: superset-frontend/src/components/Form/LabeledErrorBoundInput.tsx:134 -#, fuzzy msgid "Hide password." -msgstr "Wachtwoord" +msgstr "Verberg wachtwoord." #: superset-frontend/src/components/Form/LabeledErrorBoundInput.tsx:138 -#, fuzzy msgid "Show password." -msgstr "Toon Dashboard" +msgstr "Toon wachtwoord." #: superset-frontend/src/components/ImportModal/ErrorAlert.tsx:51 msgid "" "Database driver for importing maybe not installed. Visit the Superset " "documentation page for installation instructions: " msgstr "" +"Misschien is er geen Database driver voor het importeren geïnstalleerd. " +"Bezoek de Superset documentatiepagina voor installatie instructies: " #: superset-frontend/src/components/ImportModal/index.tsx:267 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1469 @@ -13518,33 +14001,32 @@ msgid "OVERWRITE" msgstr "OVERSCHRIJVEN" #: superset-frontend/src/components/ImportModal/index.tsx:291 -#, fuzzy msgid "Database passwords" -msgstr "Database poort" +msgstr "Database wachtwoorden" #: superset-frontend/src/components/ImportModal/index.tsx:298 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1390 -#, fuzzy, python-format +#, python-format msgid "%s PASSWORD" -msgstr "Wachtwoord" +msgstr "%s WACHTWOORD" #: superset-frontend/src/components/ImportModal/index.tsx:318 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1408 #, python-format msgid "%s SSH TUNNEL PASSWORD" -msgstr "" +msgstr "%s SSH TUNNEL WACHTWOORD" #: superset-frontend/src/components/ImportModal/index.tsx:341 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1426 #, python-format msgid "%s SSH TUNNEL PRIVATE KEY" -msgstr "" +msgstr "%s SSH PRIVATE KEY" #: superset-frontend/src/components/ImportModal/index.tsx:363 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1446 #, python-format msgid "%s SSH TUNNEL PRIVATE KEY PASSWORD" -msgstr "" +msgstr "%s SSH PRIVATE KEY WACHTWOORD" #: superset-frontend/src/components/ImportModal/index.tsx:426 #: superset-frontend/src/explore/components/DatasourcePanel/index.tsx:386 @@ -13565,9 +14047,8 @@ msgid "Import %s" msgstr "Importeer %s" #: superset-frontend/src/components/ImportModal/index.tsx:445 -#, fuzzy msgid "Select file" -msgstr "Alles deselecteren" +msgstr "Selecteer bestand" #: superset-frontend/src/components/LastUpdated/index.tsx:74 #, python-format @@ -13578,13 +14059,13 @@ msgstr "Laatst bijgewerkt %s" #: superset-frontend/src/components/ListView/CardSortSelect.tsx:83 #: superset-frontend/src/components/Table/index.tsx:227 msgid "Sort" -msgstr "" +msgstr "Sorteren" #: superset-frontend/src/components/ListView/CrossLinksTooltip.tsx:64 #: superset-frontend/src/components/TruncatedList/index.tsx:143 #, python-format msgid "+ %s more" -msgstr "" +msgstr "+ %s meer" #: superset-frontend/src/components/ListView/ListView.tsx:252 #, python-format @@ -13597,20 +14078,19 @@ msgstr "Alles deselecteren" #: superset-frontend/src/components/ListView/ListView.tsx:415 msgid "Add Tag" -msgstr "" +msgstr "Label toevoegen" #: superset-frontend/src/components/ListView/ListView.tsx:451 msgid "No results match your filter criteria" -msgstr "" +msgstr "Geen resultaten gevonden met uw filtercriteria" #: superset-frontend/src/components/ListView/ListView.tsx:452 msgid "Try different criteria to display results." -msgstr "" +msgstr "Probeer andere criteria om resultaten weer te geven." #: superset-frontend/src/components/ListView/ListView.tsx:455 -#, fuzzy msgid "clear all filters" -msgstr "Zoek in alle filteropties" +msgstr "wis alle filters" #: superset-frontend/src/components/ListView/ListView.tsx:460 msgid "No Data" @@ -13624,30 +14104,28 @@ msgstr "%s-%s van %s" #: superset-frontend/src/components/ListView/Filters/DateRange.tsx:67 #: superset-frontend/src/features/annotations/AnnotationModal.tsx:306 -#, fuzzy msgid "Start date" -msgstr "Toe grafiek" +msgstr "Start datum" #: superset-frontend/src/components/ListView/Filters/DateRange.tsx:67 #: superset-frontend/src/features/annotations/AnnotationModal.tsx:306 -#, fuzzy msgid "End date" -msgstr "datum" +msgstr "Eind datum" #: superset-frontend/src/components/ListView/Filters/Search.tsx:75 msgid "Type a value" -msgstr "" +msgstr "Voer een waarde in" #: superset-frontend/src/components/ListView/Filters/Select.tsx:93 #: superset-frontend/src/components/ListView/Filters/Select.tsx:106 #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FilterTitlePane.tsx:56 msgid "Filter" -msgstr "" +msgstr "Filter" #: superset-frontend/src/components/ListView/Filters/Select.tsx:99 #: superset-frontend/src/components/ListView/Filters/Select.tsx:113 msgid "Select or type a value" -msgstr "" +msgstr "Selecteer of typ een waarde" #: superset-frontend/src/components/MetadataBar/ContentConfig.tsx:80 #: superset-frontend/src/pages/AlertReportList/index.tsx:328 @@ -13686,7 +14164,7 @@ msgstr "Gemaakt op" #: superset-frontend/src/components/PageHeaderWithActions/index.tsx:166 msgid "Menu actions trigger" -msgstr "" +msgstr "Menu acties trigger" #: superset-frontend/src/components/Select/AsyncSelect.tsx:136 #: superset-frontend/src/components/Select/Select.tsx:113 @@ -13696,80 +14174,68 @@ msgid "Select ..." msgstr "Selecteer …" #: superset-frontend/src/components/Table/index.tsx:216 -#, fuzzy msgid "Filter menu" -msgstr "Filter naam" +msgstr "Filter menu" #: superset-frontend/src/components/Table/index.tsx:218 msgid "Reset" -msgstr "" +msgstr "Reset" #: superset-frontend/src/components/Table/index.tsx:219 -#, fuzzy msgid "No filters" -msgstr "Alle filters" +msgstr "Geen filters" #: superset-frontend/src/components/Table/index.tsx:220 -#, fuzzy msgid "Select all items" -msgstr "Alles deselecteren" +msgstr "Selecteer alle items" #: superset-frontend/src/components/Table/index.tsx:221 -#, fuzzy msgid "Search in filters" -msgstr "Zoek / Filter" +msgstr "Zoek in filters" #: superset-frontend/src/components/Table/index.tsx:223 -#, fuzzy msgid "Select current page" -msgstr "Selecteer parent filters" +msgstr "Selecteer huidige pagina" #: superset-frontend/src/components/Table/index.tsx:224 msgid "Invert current page" -msgstr "" +msgstr "Huidige pagina omkeren" #: superset-frontend/src/components/Table/index.tsx:225 -#, fuzzy msgid "Clear all data" -msgstr "Wis alles" +msgstr "Wis alle gegevens" #: superset-frontend/src/components/Table/index.tsx:226 -#, fuzzy msgid "Select all data" -msgstr "Alles deselecteren" +msgstr "Selecteer alle gegevens" #: superset-frontend/src/components/Table/index.tsx:228 -#, fuzzy msgid "Expand row" -msgstr "Koptekst rij" +msgstr "Rij uitklappen" #: superset-frontend/src/components/Table/index.tsx:229 -#, fuzzy msgid "Collapse row" -msgstr "Alles inklappen" +msgstr "Rij inklappen" #: superset-frontend/src/components/Table/index.tsx:230 -#, fuzzy msgid "Click to sort descending" -msgstr "Sorteer aflopend" +msgstr "Klik om aflopend te sorteren" #: superset-frontend/src/components/Table/index.tsx:231 -#, fuzzy msgid "Click to sort ascending" -msgstr "Controle op oplopend sorteren" +msgstr "Klik om oplopend te sorteren" #: superset-frontend/src/components/Table/index.tsx:232 msgid "Click to cancel sorting" -msgstr "" +msgstr "Klik om sortering te annuleren" #: superset-frontend/src/components/TableSelector/index.tsx:188 -#, fuzzy msgid "List updated" -msgstr "Laatst bijgewerkt %s" +msgstr "Lijst bijgewerkt" #: superset-frontend/src/components/TableSelector/index.tsx:195 msgid "There was an error loading the tables" -msgstr "" +msgstr "Er is een fout opgetreden bij het laden van de tabellen" #: superset-frontend/src/components/TableSelector/index.tsx:284 msgid "See table schema" @@ -13777,33 +14243,32 @@ msgstr "Zie tabel schema" #: superset-frontend/src/components/TableSelector/index.tsx:291 #: superset-frontend/src/components/TableSelector/index.tsx:302 -#, fuzzy msgid "Select table or type to search tables" -msgstr "Selecteer tabel of type tabelnaam" +msgstr "Selecteer tabel of type om tabellen te zoeken" #: superset-frontend/src/components/TableSelector/index.tsx:314 msgid "Force refresh table list" msgstr "Forceer vernieuwen tabel lijst" #: superset-frontend/src/components/Tags/utils.tsx:73 -#, fuzzy msgid "You do not have permission to read tags" -msgstr "U heeft geen toestemming om deze grafiek te bewerken" +msgstr "Je hebt geen toestemming om tags te lezen" #: superset-frontend/src/components/TimezoneSelector/index.tsx:129 msgid "Timezone selector" -msgstr "" +msgstr "Tijdzonekiezer" #: superset-frontend/src/dashboard/actions/dashboardInfo.ts:129 -#, fuzzy msgid "Failed to save cross-filter scoping" -msgstr "Cross-filter scoping" +msgstr "Opslaan van cross-filter scope mislukt" #: superset-frontend/src/dashboard/actions/dashboardLayout.js:182 msgid "" "There is not enough space for this component. Try decreasing its width, " "or increasing the destination width." msgstr "" +"Er is niet genoeg ruimte voor dit component. Probeer de breedte ervan te " +"verlagen, of vergroot de doelbreedte." #: superset-frontend/src/dashboard/actions/dashboardLayout.js:213 msgid "Can not move top level tab into nested tabs" @@ -13825,11 +14290,11 @@ msgstr "Er was een probleem met het promoten van dit dashboard." #: superset-frontend/src/dashboard/actions/dashboardState.js:147 msgid "This dashboard is now published" -msgstr "" +msgstr "Dit dashboard is nu gepubliceerd" #: superset-frontend/src/dashboard/actions/dashboardState.js:148 msgid "This dashboard is now hidden" -msgstr "" +msgstr "Dit dashboard is nu verborgen" #: superset-frontend/src/dashboard/actions/dashboardState.js:156 msgid "You do not have permissions to edit this dashboard." @@ -13837,7 +14302,7 @@ msgstr "U hebt geen rechten om dit dashboard te bewerken." #: superset-frontend/src/dashboard/actions/dashboardState.js:256 msgid "[ untitled dashboard ]" -msgstr "" +msgstr "[ naamloos dashboard ]" #: superset-frontend/src/dashboard/actions/dashboardState.js:309 #: superset-frontend/src/dashboard/actions/dashboardState.js:348 @@ -13845,14 +14310,13 @@ msgid "This dashboard was saved successfully." msgstr "Dit dashboard is succesvol opgeslagen." #: superset-frontend/src/dashboard/actions/dashboardState.js:355 -#, fuzzy msgid "Sorry, an unknown error occurred" -msgstr "Sorry, er is een fout opgetreden" +msgstr "Sorry, er is een onbekende fout opgetreden" #: superset-frontend/src/dashboard/actions/dashboardState.js:358 #, python-format msgid "Sorry, there was an error saving this dashboard: %s" -msgstr "" +msgstr "Sorry, er is een fout opgetreden bij het opslaan van dit dashboard: %s" #: superset-frontend/src/dashboard/actions/dashboardState.js:364 #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:135 @@ -13863,7 +14327,7 @@ msgstr "U hebt geen toestemming om dit dashboard te bewerken" #: superset-frontend/src/dashboard/actions/dashboardState.js:443 msgid "Please confirm the overwrite values." -msgstr "" +msgstr "Bevestig de overschrijving waarden." #: superset-frontend/src/dashboard/actions/dashboardState.js:642 #, python-format @@ -13872,6 +14336,9 @@ msgid "" "fully undo subsequent actions. You may save your current state to reset " "the history." msgstr "" +"Je hebt alle %(historyLength)s \"maak ongedaan\" slots gebruikt en kan de" +" volgende acties niet ongedaan maken. Je kunt je huidige status opslaan " +"om de geschiedenis te resetten." #: superset-frontend/src/dashboard/actions/sliceEntities.ts:157 #: superset-frontend/src/dashboard/reducers/sliceEntities.js:73 @@ -13896,7 +14363,7 @@ msgstr "Je hebt niet opgeslagen wijzigingen." #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:206 msgid "Drag and drop components and charts to the dashboard" -msgstr "" +msgstr "Versleep de componenten en grafieken naar het dashboard" #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:207 #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:230 @@ -13904,6 +14371,8 @@ msgid "" "You can create a new chart or use existing ones from the panel on the " "right" msgstr "" +"Je kunt een nieuwe grafiek maken of bestaande vanuit het paneel aan de " +"rechterkant gebruiken" #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:213 #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:236 @@ -13914,28 +14383,29 @@ msgstr "Maak een nieuwe grafiek" #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:229 #: superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:187 msgid "Drag and drop components to this tab" -msgstr "" +msgstr "Versleep onderdelen naar dit tabblad" #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:250 #: superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:188 msgid "There are no components added to this tab" -msgstr "" +msgstr "Er zijn geen componenten toegevoegd aan dit tabblad" #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:252 msgid "You can add the components in the edit mode." -msgstr "" +msgstr "Je kunt de componenten toevoegen in de bewerkingsmodus." #: superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx:668 #: superset-frontend/src/dashboard/components/DashboardGrid.jsx:254 -#, fuzzy msgid "Edit the dashboard" -msgstr "Bewerk dashboard" +msgstr "Bewerk het dashboard" #: superset-frontend/src/dashboard/components/MissingChart.jsx:31 msgid "" "There is no chart definition associated with this component, could it " "have been deleted?" msgstr "" +"Er is geen grafiek definitie gekoppeld aan dit onderdeel, zou het " +"verwijderd kunnen zijn?" #: superset-frontend/src/dashboard/components/MissingChart.jsx:36 msgid "Delete this container and save to remove this message." @@ -13943,7 +14413,7 @@ msgstr "Verwijder deze container en sla op om dit bericht te verwijderen." #: superset-frontend/src/dashboard/components/RefreshIntervalModal.tsx:79 msgid "Refresh interval saved" -msgstr "" +msgstr "Vernieuwing interval opgeslagen" #: superset-frontend/src/dashboard/components/RefreshIntervalModal.tsx:111 #: superset-frontend/src/dashboard/components/RefreshIntervalModal.tsx:116 @@ -13988,14 +14458,12 @@ msgid "also copy (duplicate) charts" msgstr "kopieer ook (duplicate) grafieken" #: superset-frontend/src/dashboard/components/SliceAdder.jsx:74 -#, fuzzy msgid "viz type" -msgstr "Viz type" +msgstr "viz type" #: superset-frontend/src/dashboard/components/SliceAdder.jsx:76 -#, fuzzy msgid "recent" -msgstr "Recente" +msgstr "recent" #: superset-frontend/src/dashboard/components/SliceAdder.jsx:340 #: superset-frontend/src/pages/ChartCreation/index.tsx:375 @@ -14007,18 +14475,17 @@ msgid "Filter your charts" msgstr "Filter je grafieken" #: superset-frontend/src/dashboard/components/SliceAdder.jsx:348 -#, fuzzy msgid "Filter charts" -msgstr "Filter je grafieken" +msgstr "Filter grafieken" #: superset-frontend/src/dashboard/components/SliceAdder.jsx:359 #, python-format msgid "Sort by %s" -msgstr "" +msgstr "Sorteer op %s" #: superset-frontend/src/dashboard/components/SliceAdder.jsx:380 msgid "Show only my charts" -msgstr "" +msgstr "Toon alleen mijn grafieken" #: superset-frontend/src/dashboard/components/SliceAdder.jsx:383 msgid "" @@ -14027,6 +14494,10 @@ msgid "" " Your filter selection will be saved and remain active until" " you choose to change it." msgstr "" +"Je kunt kiezen om alle grafieken weer te geven waar je toegang toe hebt, " +"of alleen degene waar je eigenaar van bent.\n" +" Je filterselectie zal worden opgeslagen en actief blijven " +"totdat je ervoor kiest om deze te wijzigen." #: superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.tsx:137 #: superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.tsx:164 @@ -14034,9 +14505,8 @@ msgid "Added" msgstr "Toegevoegd" #: superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.tsx:193 -#, fuzzy msgid "Unknown type" -msgstr "Onbekende fout" +msgstr "Onbekend type" #: superset-frontend/src/dashboard/components/AddSliceCard/AddSliceCard.tsx:279 msgid "Viz type" @@ -14065,7 +14535,7 @@ msgstr "Kijk naar deze grafiek in het dashboard:" #: superset-frontend/src/dashboard/components/BuilderComponentPane/index.tsx:81 msgid "Layout elements" -msgstr "" +msgstr "Indelingselementen" #: superset-frontend/src/dashboard/components/CssEditor/index.tsx:91 msgid "An error occurred while fetching available CSS templates" @@ -14082,98 +14552,100 @@ msgid "Live CSS editor" msgstr "Live CSS editor" #: superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx:547 -#, fuzzy msgid "Collapse tab content" -msgstr "Cel inhoud" +msgstr "Tabbladinhoud inklappen" #: superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx:661 msgid "There are no charts added to this dashboard" -msgstr "" +msgstr "Er zijn geen grafieken toegevoegd aan dit dashboard" #: superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx:664 msgid "Go to the edit mode to configure the dashboard and add charts" msgstr "" +"Ga naar de bewerkingsmodus om het dashboard te configureren en grafieken " +"toe te voegen" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:80 msgid "Changes saved." -msgstr "" +msgstr "Wijzigingen opgeslagen." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:98 msgid "Disable embedding?" -msgstr "" +msgstr "Embedding uitschakelen?" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:99 msgid "This will remove your current embed configuration." -msgstr "" +msgstr "Hiermee verwijdert u uw huidige embed configuratie." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:108 msgid "Embedding deactivated." -msgstr "" +msgstr "Embedden gedeactiveerd." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:114 -#, fuzzy msgid "Sorry, something went wrong. Embedding could not be deactivated." -msgstr "Sorry, er ging iets mis. Probeer het later nog eens." +msgstr "Sorry, er ging iets mis. Embedding kon niet worden gedeactiveerd." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:138 -#, fuzzy msgid "Sorry, something went wrong. Please try again." -msgstr "Sorry, er ging iets mis. Probeer het later nog eens." +msgstr "Er is iets fout gegaan. Probeer het opnieuw." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:169 msgid "" "This dashboard is ready to embed. In your application, pass the following" " id to the SDK:" msgstr "" +"Dit dashboard staat klaar om te embedden. Geef de volgende id door aan de" +" SDK:" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:178 msgid "Configure this dashboard to embed it into an external web application." msgstr "" +"Configureer dit dashboard om het in een externe webapplicatie in te " +"sluiten." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:184 msgid "For further instructions, consult the" -msgstr "" +msgstr "Voor verdere instructies, raadpleeg de" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:188 msgid "Superset Embedded SDK documentation." -msgstr "" +msgstr "Superset ingesloten SDK documentatie." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:194 msgid "Allowed Domains (comma separated)" -msgstr "" +msgstr "Toegestane domeinen (komma gescheiden)" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:196 msgid "" "A list of domain names that can embed this dashboard. Leaving this field " "empty will allow embedding from any domain." msgstr "" +"Een lijst met domeinnamen die dit dashboard kunnen embedden. Als dit veld" +" leeg blijft, kan de embedding van elk domein worden toegestaan." #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:217 -#, fuzzy msgid "Deactivate" -msgstr "Actief" +msgstr "Deactiveren" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:225 -#, fuzzy msgid "Save changes" -msgstr "Wijzigingen weggooien" +msgstr "Wijzigingen opslaan" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:234 msgid "Enable embedding" -msgstr "" +msgstr "Embedding inschakelen" #: superset-frontend/src/dashboard/components/EmbeddedModal/index.tsx:249 -#, fuzzy msgid "Embed" -msgstr "November" +msgstr "Insluiten" #: superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/index.tsx:127 -#, fuzzy, python-format +#, python-format msgid "Applied cross-filters (%d)" -msgstr "Toegepaste dwarsfilters (%d)" +msgstr "Toegepaste cross-filters (%d)" #: superset-frontend/src/dashboard/components/FiltersBadge/DetailsPanel/index.tsx:149 -#, fuzzy, python-format +#, python-format msgid "Applied filters (%d)" msgstr "Toegepaste filters (%d)" @@ -14183,35 +14655,33 @@ msgid "" "This dashboard is currently auto refreshing; the next auto refresh will " "be in %s." msgstr "" +"Dit dashboard wordt momenteel automatisch vernieuwd; de volgende " +"automatische vernieuwing zal in %s zijn." #: superset-frontend/src/dashboard/components/Header/index.jsx:409 msgid "Your dashboard is too large. Please reduce its size before saving it." -msgstr "" +msgstr "Uw dashboard is te groot. Beperk de grootte voordat u het opslaat." #: superset-frontend/src/dashboard/components/Header/index.jsx:512 -#, fuzzy msgid "Add the name of the dashboard" -msgstr "Opslaan en naar dashboard gaan" +msgstr "Naam van het dashboard toevoegen" #: superset-frontend/src/dashboard/components/Header/index.jsx:513 -#, fuzzy msgid "Dashboard title" -msgstr "dashboard" +msgstr "Dashboard titel" #: superset-frontend/src/dashboard/components/Header/index.jsx:551 -#, fuzzy msgid "Undo the action" -msgstr "Selectie uitvoeren" +msgstr "Actie ongedaan maken" #: superset-frontend/src/dashboard/components/Header/index.jsx:571 msgid "Redo the action" -msgstr "" +msgstr "De actie opnieuw uitvoeren" #: superset-frontend/src/dashboard/components/Header/index.jsx:596 #: superset-frontend/src/dashboard/components/Header/index.jsx:598 -#, fuzzy msgid "Discard" -msgstr "dashboard" +msgstr "Negeren" #: superset-frontend/src/dashboard/components/Header/index.jsx:630 #: superset-frontend/src/dashboard/components/Header/index.jsx:632 @@ -14219,9 +14689,8 @@ msgid "Edit dashboard" msgstr "Bewerk dashboard" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:126 -#, fuzzy msgid "Refreshing charts" -msgstr "Maak een nieuwe grafiek" +msgstr "Verversen grafieken" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:179 msgid "Superset dashboard" @@ -14229,7 +14698,7 @@ msgstr "Superset dashboard" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:181 msgid "Check out this dashboard: " -msgstr "Kijk naar dit dashboard:" +msgstr "Kijk naar dit dashboard: " #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:203 msgid "Refresh dashboard" @@ -14238,12 +14707,12 @@ msgstr "Vernieuw dashboard" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:212 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:699 msgid "Exit fullscreen" -msgstr "" +msgstr "Volledig scherm afsluiten" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:213 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:700 msgid "Enter fullscreen" -msgstr "" +msgstr "Open volledig scherm" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:221 msgid "Edit properties" @@ -14256,19 +14725,16 @@ msgstr "Bewerk CSS" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:263 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:846 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:323 -#, fuzzy msgid "Download" -msgstr "Download naar CSV" +msgstr "Download" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:267 -#, fuzzy msgid "Export to PDF" -msgstr "Export naar YAML" +msgstr "Exporteer naar PDF" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:268 -#, fuzzy msgid "Download as Image" -msgstr "Download als afbeelding" +msgstr "Download als Afbeelding" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:278 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:821 @@ -14280,25 +14746,21 @@ msgstr "Deel" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:282 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:829 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:371 -#, fuzzy msgid "Copy permalink to clipboard" -msgstr "Kopieer query link naar uw klembord" +msgstr "Kopieer permalink naar klembord" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:283 -#, fuzzy msgid "Share permalink by email" -msgstr "Deel grafiek per e-mail" +msgstr "Deel permalink via e-mail" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:297 -#, fuzzy msgid "Embed dashboard" -msgstr "Dashboard opslaan" +msgstr "Dashboard embedden" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:304 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:399 -#, fuzzy msgid "Manage email report" -msgstr "Beheer e-mailrapporten voor grafieken" +msgstr "E-mailrapport beheren" #: superset-frontend/src/dashboard/components/Header/HeaderActionsDropdown/index.jsx:332 msgid "Set filter mapping" @@ -14309,28 +14771,26 @@ msgid "Set auto-refresh interval" msgstr "Stel auto-refresh in" #: superset-frontend/src/dashboard/components/OverwriteConfirm/OverwriteConfirmModal.tsx:132 -#, fuzzy msgid "Confirm overwrite" -msgstr "Opslaan bevestigen" +msgstr "Overschrijven bevestigen" #: superset-frontend/src/dashboard/components/OverwriteConfirm/OverwriteConfirmModal.tsx:135 msgid "Scroll down to the bottom to enable overwriting changes. " -msgstr "" +msgstr "Scroll naar beneden om overschrijvingen mogelijk te maken. " #: superset-frontend/src/dashboard/components/OverwriteConfirm/OverwriteConfirmModal.tsx:154 #: superset-frontend/src/dashboard/components/OverwriteConfirm/OverwriteConfirmModal.tsx:199 msgid "Yes, overwrite changes" -msgstr "" +msgstr "Ja, wijzigingen overschrijven" #: superset-frontend/src/dashboard/components/OverwriteConfirm/OverwriteConfirmModal.tsx:163 -#, fuzzy msgid "Are you sure you intend to overwrite the following values?" -msgstr "Weet je zeker dat je de geselecteerde query’s wilt verwijderen?" +msgstr "Weet u zeker dat u de volgende waarden wilt overschrijven?" #: superset-frontend/src/dashboard/components/OverwriteConfirm/OverwriteConfirmModal.tsx:182 -#, fuzzy, python-format +#, python-format msgid "Last Updated %s by %s" -msgstr "Laatst bijgewerkt %s" +msgstr "Laatst bijgewerkt %s door %s" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:113 #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/ActionButtons/index.tsx:142 @@ -14345,20 +14805,19 @@ msgstr "Toepassen" #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:97 #: superset-frontend/src/pages/AlertReportList/index.tsx:66 msgid "Error" -msgstr "" +msgstr "Fout" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:296 msgid "A valid color scheme is required" msgstr "Een geldig kleurenschema is vereist" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:365 -#, fuzzy msgid "JSON metadata is invalid!" -msgstr "json is ongeldig" +msgstr "JSON metadata is ongeldig!" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:444 msgid "Dashboard properties updated" -msgstr "" +msgstr "Dashboard eigenschappen bijgewerkt" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:462 msgid "The dashboard has been saved" @@ -14376,6 +14835,8 @@ msgid "" "Owners is a list of users who can alter the dashboard. Searchable by name" " or username." msgstr "" +"Eigenaren zijn een lijst met gebruikers die het dashboard kunnen " +"veranderen. Doorzoekbaar op naam of gebruikersnaam." #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:497 msgid "Colors" @@ -14387,6 +14848,10 @@ msgid "" "access to a dashboard will bypass dataset level checks. If no roles are " "defined, regular access permissions apply." msgstr "" +"Rollen is een lijst die toegang tot het dashboard definieert. Het " +"verlenen van een rol toegang tot een dashboard zal controle op het " +"dataset niveau omzeilen. Als geen rollen zijn gedefinieerd, zijn " +"reguliere toegangsrechten van toepassing." #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:636 msgid "Dashboard properties" @@ -14394,7 +14859,7 @@ msgstr "Dashboard eigenschappen" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:658 msgid "This dashboard is managed externally, and can't be edited in Superset" -msgstr "" +msgstr "Dit dashboard wordt extern beheerd en kan niet worden bewerkt in Superset" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:679 #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:353 @@ -14415,21 +14880,21 @@ msgstr "Een leesbare URL voor uw dashboard" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:706 #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:376 msgid "Certification" -msgstr "" +msgstr "Certificering" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:715 msgid "Person or group that has certified this dashboard." -msgstr "" +msgstr "Persoon of groep die dit dashboard gecertificeerd heeft." #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:726 #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:393 msgid "Any additional detail to show in the certification tooltip." -msgstr "" +msgstr "Alle aanvullende details in de certificatietooltip te tonen." #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:751 #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:444 msgid "A list of tags that have been applied to this chart." -msgstr "" +msgstr "Een lijst met tags die zijn toegepast op deze grafiek." #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:772 #: superset-frontend/src/features/annotations/AnnotationModal.tsx:335 @@ -14438,12 +14903,12 @@ msgstr "JSON metadata" #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:791 msgid "Please DO NOT overwrite the \"filter_scopes\" key." -msgstr "" +msgstr "Gelieve NIET de \"filter_scopes\" sleutel overschrijven." #: superset-frontend/src/dashboard/components/PropertiesModal/index.tsx:798 #, python-format msgid "Use \"%(menuName)s\" menu instead." -msgstr "" +msgstr "Gebruik in plaats daarvan \"%(menuName)s\" menu." #: superset-frontend/src/dashboard/components/PublishedStatus/index.jsx:33 msgid "" @@ -14459,6 +14924,9 @@ msgid "" "list of dashboards. Favorite it to see it there or access it by using the" " URL directly." msgstr "" +"Dit dashboard is niet gepubliceerd, wat betekent dat het niet zal " +"verschijnen in de lijst van dashboards. Favoriet het om het daar te zien " +"of er toegang toe te krijgen door de URL direct te gebruiken." #: superset-frontend/src/dashboard/components/PublishedStatus/index.jsx:43 msgid "This dashboard is published. Click to make it a draft." @@ -14469,7 +14937,7 @@ msgstr "Dit dashboard is gepubliceerd. Klik op om er een ontwerp van te maken." #: superset-frontend/src/pages/DashboardList/index.tsx:321 #: superset-frontend/src/pages/DashboardList/index.tsx:511 msgid "Draft" -msgstr "Draft" +msgstr "Concept" #: superset-frontend/src/dashboard/components/SliceHeader/index.tsx:57 msgid "Annotation layers are still loading." @@ -14484,15 +14952,17 @@ msgid "" "This chart applies cross-filters to charts whose datasets contain columns" " with the same name." msgstr "" +"Deze grafiek past kruisfilters toe op grafieken waarvan de datasets " +"kolommen met dezelfde naam bevatten." #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:584 msgid "Data refreshed" -msgstr "" +msgstr "Gegevens verversen" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:682 #, python-format msgid "Cached %s" -msgstr "Cached %s" +msgstr "Gebufferd %s" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:685 #, python-format @@ -14502,28 +14972,25 @@ msgstr "Opgehaald %s" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:694 #, python-format msgid "Query %s: %s" -msgstr "" +msgstr "Query %s: %s" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:732 msgid "Force refresh" msgstr "Vernieuwen forceren" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:745 -#, fuzzy msgid "Hide chart description" -msgstr "Toggle grafiek omschrijving" +msgstr "Grafiek beschrijving verbergen" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:746 -#, fuzzy msgid "Show chart description" -msgstr "Toggle grafiek omschrijving" +msgstr "Toon grafiekbeschrijving" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:760 #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ScopingModal.tsx:302 #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBarSettings/index.tsx:176 -#, fuzzy msgid "Cross-filtering scoping" -msgstr "Cross-filter scoping" +msgstr "Cross-filtering scoping" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:770 #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:772 @@ -14533,14 +15000,13 @@ msgid "View query" msgstr "Bekijk zoekopdracht" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:788 -#, fuzzy msgid "View as table" -msgstr "Bekijk voorbeelden" +msgstr "Bekijk als tabel" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:792 -#, fuzzy, python-format +#, python-format msgid "Chart Data: %s" -msgstr "Laatst bijgewerkt %s" +msgstr "Grafiekgegevens: %s" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:830 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:374 @@ -14549,28 +15015,25 @@ msgstr "Deel grafiek per e-mail" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:832 msgid "Check out this chart: " -msgstr "" +msgstr "Bekijk deze grafiek: " #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:854 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:347 -#, fuzzy msgid "Export to .CSV" -msgstr "Export naar YAML" +msgstr "Exporteer naar .CSV" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:860 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:366 -#, fuzzy msgid "Export to Excel" -msgstr "Export naar YAML" +msgstr "Exporteer naar Excel" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:871 msgid "Export to full .CSV" -msgstr "" +msgstr "Exporteer naar volledige .CSV" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:877 -#, fuzzy msgid "Export to full Excel" -msgstr "Export naar YAML" +msgstr "Exporteren naar volledige Excel" #: superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx:886 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:360 @@ -14578,9 +15041,8 @@ msgid "Download as image" msgstr "Download als afbeelding" #: superset-frontend/src/dashboard/components/URLShortLinkButton/index.tsx:63 -#, fuzzy msgid "Something went wrong." -msgstr "Sorry, er ging iets mis. Probeer het later nog eens." +msgstr "Er ging iets mis." #: superset-frontend/src/dashboard/components/filterscope/FilterScopeSelector.jsx:708 msgid "Search..." @@ -14617,12 +15079,11 @@ msgstr "Alles inklappen" #: superset-frontend/src/dashboard/components/gridComponents/Chart.jsx:321 msgid "An error occurred while opening Explore" -msgstr "" +msgstr "Er is een fout opgetreden tijdens het openen van Verkennen" #: superset-frontend/src/dashboard/components/gridComponents/Column.jsx:273 -#, fuzzy msgid "Empty column" -msgstr "kolom" +msgstr "Lege kolom" #: superset-frontend/src/dashboard/components/gridComponents/Markdown.jsx:85 msgid "This markdown component has an error." @@ -14631,32 +15092,32 @@ msgstr "Deze markdown component heeft een fout." #: superset-frontend/src/dashboard/components/gridComponents/Markdown.jsx:203 msgid "This markdown component has an error. Please revert your recent changes." msgstr "" +"Deze markdown component heeft een fout. Gelieve uw recente wijzigingen " +"terug te draaien." #: superset-frontend/src/dashboard/components/gridComponents/Row.jsx:354 msgid "Empty row" -msgstr "" +msgstr "Lege rij" #: superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:194 -#, fuzzy msgid "You can" -msgstr "Bedoelde je:" +msgstr "U kunt" #: superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:200 -#, fuzzy msgid "create a new chart" -msgstr "Maak een nieuwe grafiek" +msgstr "maak een nieuwe grafiek" #: superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:202 msgid "or use existing ones from the panel on the right" -msgstr "" +msgstr "of gebruik bestaande vanuit het paneel aan de rechterkant" #: superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:206 msgid "You can add the components in the" -msgstr "" +msgstr "U kunt de componenten toevoegen aan de" #: superset-frontend/src/dashboard/components/gridComponents/Tab.jsx:212 msgid "edit mode" -msgstr "" +msgstr "bewerk modus" #: superset-frontend/src/dashboard/components/gridComponents/Tabs.jsx:214 msgid "Delete dashboard tab?" @@ -14667,15 +15128,16 @@ msgid "" "Deleting a tab will remove all content within it. You may still reverse " "this action with the" msgstr "" +"Het verwijderen van een tabblad zal alle inhoud erin verwijderen. U kunt " +"deze actie nog steeds ongedaan maken met de" #: superset-frontend/src/dashboard/components/gridComponents/Tabs.jsx:221 -#, fuzzy msgid "undo" -msgstr "Ongedaan maken?" +msgstr "ongedaan maken" #: superset-frontend/src/dashboard/components/gridComponents/Tabs.jsx:222 msgid "button (cmd + z) until you save your changes." -msgstr "" +msgstr "knop (cmd + z) totdat je jouw wijzigingen opslaat." #: superset-frontend/src/dashboard/components/gridComponents/Tabs.jsx:232 #: superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterLabel.tsx:330 @@ -14689,12 +15151,12 @@ msgstr "Verdeler" #: superset-frontend/src/dashboard/components/gridComponents/new/NewHeader.jsx:31 msgid "Header" -msgstr "Header" +msgstr "Koptekst" #: superset-frontend/src/dashboard/components/gridComponents/new/NewMarkdown.jsx:31 #: superset-frontend/src/visualizations/TimeTable/index.ts:38 msgid "Text" -msgstr "" +msgstr "Tekst" #: superset-frontend/src/dashboard/components/gridComponents/new/NewTabs.jsx:31 #: superset-frontend/src/dashboard/components/nativeFilters/FilterCard/ScopeRow.tsx:59 @@ -14703,11 +15165,11 @@ msgstr "Tabs" #: superset-frontend/src/dashboard/components/menu/BackgroundStyleDropdown.tsx:79 msgid "background" -msgstr "" +msgstr "achtergrond" #: superset-frontend/src/dashboard/components/menu/MarkdownModeDropdown.tsx:39 msgid "Preview" -msgstr "Preview" +msgstr "Voorvertoning" #: superset-frontend/src/dashboard/components/menu/DownloadMenuItems/DownloadAsImage.tsx:43 #: superset-frontend/src/dashboard/components/menu/DownloadMenuItems/DownloadAsPdf.tsx:43 @@ -14721,62 +15183,59 @@ msgstr "Sorry, er ging iets mis. Probeer het later nog eens." #: superset-frontend/src/dashboard/components/nativeFilters/utils.ts:253 msgid "Unknown value" -msgstr "" +msgstr "Onbekende waarde" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/Header/index.tsx:126 #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/Horizontal.tsx:146 msgid "Add/Edit Filters" -msgstr "" +msgstr "Filters toevoegen/bewerken" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/Horizontal.tsx:152 -#, fuzzy msgid "No filters are currently added to this dashboard." -msgstr "Er zijn geen filters in dit dashboard." +msgstr "Er zijn momenteel geen filters toegevoegd aan dit dashboard." #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/Vertical.tsx:170 msgid "No global filters are currently added" -msgstr "" +msgstr "Geen globale filters zijn momenteel toegevoegd" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/Vertical.tsx:174 msgid "Click on \"+Add/Edit Filters\" button to create new dashboard filters" msgstr "" +"Klik op de \"+Toevoegen/Bewerken van Filters\" knop om nieuwe dashboard " +"filters te maken" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/ActionButtons/index.tsx:142 msgid "Apply filters" -msgstr "" +msgstr "Filters toepassen" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/ActionButtons/index.tsx:152 msgid "Clear all" msgstr "Wis alles" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/CrossFilterTitle.tsx:82 -#, fuzzy msgid "Locate the chart" -msgstr "Maak een nieuwe grafiek" +msgstr "Zoek de grafiek" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/VerticalCollapse.tsx:82 -#, fuzzy msgid "Cross-filters" -msgstr "Cross-filter scoping" +msgstr "Cross-filters" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ChartsScopingListPanel.tsx:139 msgid "Add custom scoping" -msgstr "" +msgstr "Aangepaste scoping toevoegen" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ChartsScopingListPanel.tsx:146 msgid "All charts/global scoping" -msgstr "" +msgstr "Alle grafieken/globale scoping" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ScopingTreePanel.tsx:132 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1482 -#, fuzzy msgid "Select chart" -msgstr "Superset grafiek" +msgstr "Selecteer grafiek" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ScopingTreePanel.tsx:169 -#, fuzzy msgid "Cross-filtering is not enabled in this dashboard" -msgstr "Er zijn geen filters in dit dashboard." +msgstr "Cross-filtering is niet ingeschakeld in dit dashboard" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ScopingTreePanel.tsx:188 msgid "" @@ -14785,6 +15244,10 @@ msgid "" "filters to all charts that use the same dataset or contain the same " "column name in the dashboard." msgstr "" +"Selecteer de grafieken waaraan je cross-filters wilt toepassen bij " +"interactie met deze grafiek. Je kunt \"Alle grafieken\" selecteren om " +"filters toe te passen op alle grafieken die dezelfde dataset gebruiken of" +" dezelfde kolomnaam op het dashboard bevatten." #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ScopingTreePanel.tsx:191 msgid "" @@ -14794,6 +15257,12 @@ msgid "" "\"All charts\" to apply cross-filters to all charts that use the same " "dataset or contain the same column name in the dashboard." msgstr "" +"Selecteer de grafieken waaraan je cross-filters wilt toepassen in dit " +"dashboard. Het deselecteren van een grafiek zal ervoor zorgen dat het " +"niet gefilterd wordt bij het toepassen van cross-filters in elke grafiek " +"op het dashboard. Je kunt \"Alle grafieken\" selecteren om cross-filters " +"toe te passen op alle grafieken die dezelfde dataset gebruiken of " +"dezelfde kolomnaam op het dashboard bevatten." #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/ScopingTreePanel.tsx:200 #: superset-frontend/src/dashboard/components/nativeFilters/FilterCard/ScopeRow.tsx:55 @@ -14804,36 +15273,33 @@ msgid "All charts" msgstr "Alle grafieken" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBarSettings/index.tsx:159 -#, fuzzy msgid "Enable cross-filtering" -msgstr "Cross-filter scoping" +msgstr "Schakel cross-filtering in" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBarSettings/index.tsx:184 msgid "Orientation of filter bar" -msgstr "" +msgstr "Oriëntatie van de filterbalk" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBarSettings/index.tsx:188 msgid "Vertical (Left)" -msgstr "" +msgstr "Verticaal (Links)" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterBarSettings/index.tsx:192 msgid "Horizontal (Top)" -msgstr "" +msgstr "Horizontaal (Boven)" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx:251 -#, fuzzy msgid "More filters" -msgstr "Parent filter" +msgstr "Meer filters" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx:255 -#, fuzzy msgid "No applied filters" -msgstr "Verwijder ongeldige filters" +msgstr "Geen toegepaste filters" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterControls.tsx:260 -#, fuzzy, python-format +#, python-format msgid "Applied filters: %s" -msgstr "Toegepaste filters (%d)" +msgstr "Toegepaste filters %s" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterValue.tsx:308 #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1240 @@ -14843,28 +15309,30 @@ msgstr "Kan filter niet laden" #: superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FiltersOutOfScopeCollapsible/index.tsx:92 #, python-format msgid "Filters out of scope (%d)" -msgstr "" +msgstr "Filters buiten bereik (%d)" #: superset-frontend/src/dashboard/components/nativeFilters/FilterCard/DependenciesRow.tsx:85 msgid "Dependent on" -msgstr "" +msgstr "Afhankelijk van" #: superset-frontend/src/dashboard/components/nativeFilters/FilterCard/DependenciesRow.tsx:87 msgid "Filter only displays values relevant to selections made in other filters." msgstr "" +"Het filter toont alleen de waarden die relevant zijn voor de selecties " +"gemaakt in andere filters." #: superset-frontend/src/dashboard/components/nativeFilters/FilterCard/ScopeRow.tsx:67 msgid "Scope" -msgstr "" +msgstr "Scope" #: superset-frontend/src/dashboard/components/nativeFilters/FilterCard/TypeRow.tsx:31 #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:830 msgid "Filter type" -msgstr "" +msgstr "Filter type" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/DividerConfigForm.tsx:44 msgid "Title is required" -msgstr "" +msgstr "Titel is verplicht" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FilterTitleContainer.tsx:122 msgid "(Removed)" @@ -14876,60 +15344,55 @@ msgstr "Ongedaan maken?" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FilterTitlePane.tsx:109 msgid "Add filters and dividers" -msgstr "" +msgstr "Filters en scheidingen toevoegen" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.tsx:306 -#, fuzzy msgid "[untitled]" -msgstr "[Untitled]" +msgstr "[ongetiteld]" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.tsx:485 msgid "Cyclic dependency detected" -msgstr "" +msgstr "Cyclische afhankelijkheid gedetecteerd" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.tsx:629 msgid "Add and edit filters" -msgstr "" +msgstr "Filters toevoegen en bewerken" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.tsx:128 msgid "Column select" -msgstr "" +msgstr "Kolom selecteren" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.tsx:131 msgid "Select a column" -msgstr "" +msgstr "Selecteer een kolom" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/ColumnSelect.tsx:132 msgid "No compatible columns found" -msgstr "" +msgstr "Geen compatibele kolommen gevonden" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.tsx:94 -#, fuzzy msgid "No compatible datasets found" -msgstr "Onverenigbare filters (%d)" +msgstr "Geen compatibele datasets gevonden" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DatasetSelect.tsx:95 -#, fuzzy msgid "Select a dataset" -msgstr "Alles deselecteren" +msgstr "Selecteer een dataset" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DefaultValue.tsx:84 msgid "Value is required" -msgstr "" +msgstr "Waarde is vereist" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DependencyList.tsx:101 msgid "(deleted or invalid type)" -msgstr "" +msgstr "(verwijderd of ongeldig type)" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DependencyList.tsx:107 -#, fuzzy msgid "Limit type" -msgstr "Viz type" +msgstr "Limiet type" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DependencyList.tsx:157 -#, fuzzy msgid "No available filters." -msgstr "Alle filters" +msgstr "Geen beschikbare filters." #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DependencyList.tsx:176 #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterControl/index.jsx:372 @@ -14938,17 +15401,19 @@ msgstr "Filter toevoegen" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DependencyList.tsx:204 msgid "Values are dependent on other filters" -msgstr "" +msgstr "Waarden zijn afhankelijk van andere filters" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DependencyList.tsx:207 msgid "" "Values selected in other filters will affect the filter options to only " "show relevant values" msgstr "" +"Waarden geselecteerd in andere filters hebben invloed op de filteropties " +"om alleen relevante waarden te tonen" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/DependencyList.tsx:211 msgid "Values dependent on" -msgstr "" +msgstr "Waarden afhankelijk van" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:285 msgid "Scoping" @@ -14956,54 +15421,54 @@ msgstr "Scoping" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:292 msgid "Filter Configuration" -msgstr "" +msgstr "Filter configuratie" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:296 msgid "Filter Settings" -msgstr "" +msgstr "Filter Instellingen" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:321 #: superset-frontend/src/filters/components/Select/index.ts:28 msgid "Select filter" -msgstr "" +msgstr "Selecteer filter" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:322 #: superset-frontend/src/filters/components/Range/index.ts:28 msgid "Range filter" -msgstr "" +msgstr "Bereik filter" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:322 msgid "Numerical range" -msgstr "" +msgstr "Numeriek bereik" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:323 #: superset-frontend/src/filters/components/Time/index.ts:27 msgid "Time filter" -msgstr "" +msgstr "Tijdfilter" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:323 #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1018 #: superset-frontend/src/explore/constants.ts:131 #: superset-frontend/src/pages/QueryHistoryList/index.tsx:419 msgid "Time range" -msgstr "Tijdsspanne" +msgstr "Tijdbereik" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:324 #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:764 #: superset-frontend/src/explore/constants.ts:132 #: superset-frontend/src/filters/components/TimeColumn/index.ts:28 msgid "Time column" -msgstr "" +msgstr "Tijdkolom" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:325 #: superset-frontend/src/explore/constants.ts:133 #: superset-frontend/src/filters/components/TimeGrain/index.ts:28 msgid "Time grain" -msgstr "" +msgstr "Tijdsinterval" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:326 msgid "Group By" -msgstr "" +msgstr "Groeperen op" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:326 msgid "Group by" @@ -15011,15 +15476,15 @@ msgstr "Groep per" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:648 msgid "Pre-filter is required" -msgstr "" +msgstr "Vooraf-filter is vereist" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:769 msgid "Time column to apply dependent temporal filter to" -msgstr "" +msgstr "Tijdkolom om afhankelijke tijdelijke filter toe te passen op" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:770 msgid "Time column to apply time range to" -msgstr "" +msgstr "Tijdkolom om het tijdsbereik op toe te passen" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:816 msgid "Filter name" @@ -15037,11 +15502,11 @@ msgstr "Naam is vereist" #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:136 #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:264 msgid "Filter Type" -msgstr "Filter Type" +msgstr "Filter type" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:848 msgid "Datasets do not contain a temporal column" -msgstr "" +msgstr "Datasets bevatten geen tijdelijke kolom" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:869 msgid "" @@ -15050,6 +15515,12 @@ msgid "" "chart\n" " filters to have this dashboard filter impact those charts." msgstr "" +"Filter voor tijdbereik van het dashboard is van toepassing op tijdelijke " +"kolommen gedefinieerd in\n" +" het filter gedeelte van elke grafiek. Voeg tijdelijke kolommen " +"toe aan de kaart\n" +" filters om dit dashboard filter van invloed te laten zijn op " +"die grafieken." #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:897 msgid "Dataset is required" @@ -15057,7 +15528,7 @@ msgstr "Dataset is vereist" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:968 msgid "Pre-filter available values" -msgstr "" +msgstr "Vooraf-filter beschikbare waarden" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:969 msgid "" @@ -15071,25 +15542,34 @@ msgid "" " of the underlying data or limit the available values " "displayed in the filter." msgstr "" +"Voeg filterclausules toe om de bronquery van het filter te beheren,\n" +" echter alleen in de context van de autocomplete i. .," +" deze voorwaarden\n" +" hebben geen invloed op hoe het filter wordt toegepast" +" op het dashboard. Dit is handig\n" +" wanneer u de prestaties van de zoekopdracht wilt " +"verbeteren door alleen een subset\n" +" van de onderliggende gegevens te scannen of de " +"beschikbare waarden in het filter te beperken." #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1009 msgid "Pre-filter" -msgstr "" +msgstr "Vooraf-filter" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1020 #: superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterLabel.tsx:311 #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:35 #: superset-frontend/src/explore/controls.jsx:326 msgid "No filter" -msgstr "" +msgstr "Geen filter" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1051 msgid "Sort filter values" -msgstr "" +msgstr "Sorteer filterwaarden" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1065 msgid "Sort type" -msgstr "" +msgstr "Sorteer type" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1072 #: superset-frontend/src/filters/components/Select/controlPanel.ts:63 @@ -15098,47 +15578,49 @@ msgstr "Sorteer oplopend" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1082 msgid "Sort Metric" -msgstr "" +msgstr "Sorteer Metriek" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1085 msgid "If a metric is specified, sorting will be done based on the metric value" msgstr "" +"Als een metriek is opgegeven, zal sortering worden gedaan op basis van de" +" metrische waarde" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1095 msgid "Sort metric" -msgstr "Sorteer meeteenheid" +msgstr "Sorteer metriek" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1118 msgid "Single Value" -msgstr "" +msgstr "Enkele Waarde" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1135 msgid "Single value type" -msgstr "" +msgstr "Enkelvoudige waarde type" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1147 msgid "Exact" -msgstr "" +msgstr "Exact" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1181 msgid "Filter has default value" -msgstr "" +msgstr "Filter heeft een standaardwaarde" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1198 msgid "Default Value" -msgstr "Default Value" +msgstr "Standaard waarde" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1227 msgid "Default value is required" -msgstr "" +msgstr "Standaardwaarde is vereist" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1274 msgid "Refresh the default values" -msgstr "" +msgstr "Ververs de standaard waarden" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx:1280 msgid "Fill all required fields to enable \"Default Value\"" -msgstr "" +msgstr "Vul alle verplichte velden in om \"Standaardwaarde\" in te schakelen" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/RemovedFilter.tsx:39 msgid "You have removed this filter." @@ -15150,25 +15632,31 @@ msgstr "Herstel Filter" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/getControlItemsMap.tsx:118 msgid "Column is required" -msgstr "" +msgstr "Kolom is vereist" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/getControlItemsMap.tsx:173 msgid "Populate \"Default value\" to enable this control" -msgstr "" +msgstr "Vul \"Standaardwaarde\" in om deze controle te activeren" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/state.ts:88 msgid "" "Default value set automatically when \"Select first filter value by " "default\" is checked" msgstr "" +"Standaardwaarde wordt automatisch ingesteld wanneer \"Selecteer eerste " +"standaard filter\" is aangevinkt" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/state.ts:92 msgid "Default value must be set when \"Filter value is required\" is checked" msgstr "" +"Standaardwaarde moet worden ingesteld wanneer \"Filterwaarde is vereist\"" +" is aangevinkt" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/state.ts:96 msgid "Default value must be set when \"Filter has default value\" is checked" msgstr "" +"Standaardwaarde moet worden ingesteld wanneer \"Filter heeft " +"standaardwaarde\" is ingeschakeld" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/FilterScope.tsx:128 msgid "Apply to all panels" @@ -15188,11 +15676,13 @@ msgstr "Alle panelen met deze kolom zullen door deze filter worden beïnvloed" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/state.ts:36 msgid "All panels" -msgstr "" +msgstr "Alle panelen" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FilterScope/utils.ts:60 msgid "This chart might be incompatible with the filter (datasets don't match)" msgstr "" +"Deze grafiek is mogelijk niet compatibel met het filter (datasets komen " +"niet overeen)" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/Footer/CancelConfirmationAlert.tsx:57 msgid "Keep editing" @@ -15204,7 +15694,7 @@ msgstr "Ja, annuleer" #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/Footer/Footer.tsx:45 msgid "There are unsaved changes." -msgstr "" +msgstr "Er zijn niet opgeslagen wijzigingen." #: superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/Footer/Footer.tsx:49 msgid "Are you sure you want to cancel?" @@ -15213,42 +15703,42 @@ msgstr "Weet je zeker dat je wilt annuleren?" #: superset-frontend/src/dashboard/containers/DashboardPage.tsx:206 msgid "Error loading chart datasources. Filters may not work correctly." msgstr "" +"Fout bij het laden van grafiek gegevensbronnen. Filters werken mogelijk " +"niet correct." #: superset-frontend/src/dashboard/util/backgroundStyleOptions.ts:25 msgid "Transparent" -msgstr "" +msgstr "Transparant" #: superset-frontend/src/dashboard/util/backgroundStyleOptions.ts:30 msgid "White" -msgstr "" +msgstr "Wit" #: superset-frontend/src/dashboard/util/getFilterFieldNodesTree.js:44 msgid "All filters" msgstr "Alle filters" #: superset-frontend/src/dashboard/util/getSliceHeaderTooltip.tsx:27 -#, fuzzy, python-format +#, python-format msgid "Click to edit %s." -msgstr "Klik om te bewerken" +msgstr "Klik om te bewerken %s." #: superset-frontend/src/dashboard/util/getSliceHeaderTooltip.tsx:28 -#, fuzzy msgid "Click to edit chart." -msgstr "Klik om te bewerken" +msgstr "Klik om de grafiek te bewerken." #: superset-frontend/src/dashboard/util/getSliceHeaderTooltip.tsx:31 -#, fuzzy, python-format +#, python-format msgid "Use %s to open in a new tab." -msgstr "Zoekopdracht in een nieuw tabblad" +msgstr "Gebruik %s om een nieuw tabblad te openen." #: superset-frontend/src/dashboard/util/headerStyleOptions.ts:30 msgid "Medium" -msgstr "" +msgstr "Gemiddeld" #: superset-frontend/src/dashboard/util/newComponentFactory.js:49 -#, fuzzy msgid "New header" -msgstr "Nieuwe grafiek" +msgstr "Nieuwe koptekst" #: superset-frontend/src/dashboard/util/newComponentFactory.js:58 #: superset-frontend/src/dashboard/util/newComponentFactory.js:59 @@ -15261,89 +15751,81 @@ msgid "" "work as intended. If you are the developer of this app, please check that" " the guest token is being generated correctly." msgstr "" +"Deze sessie ondervond een onderbreking, en sommige controles werken " +"mogelijk niet zoals bedoeld. Als je de ontwikkelaar van deze app bent, " +"controleer dan of de \"guest token\" correct wordt gegenereerd." #: superset-frontend/src/explore/constants.ts:58 msgid "Equal to (=)" -msgstr "" +msgstr "Gelijk aan (=)" #: superset-frontend/src/explore/constants.ts:59 -#, fuzzy msgid "Not equal to (≠)" -msgstr "!= (Is niet gelijk)" +msgstr "Niet gelijk aan (≠)" #: superset-frontend/src/explore/constants.ts:60 msgid "Less than (<)" -msgstr "" +msgstr "Minder dan (<)" #: superset-frontend/src/explore/constants.ts:62 -#, fuzzy msgid "Less or equal (<=)" -msgstr "<= (Kleiner of gelijk)" +msgstr "Minder of gelijk aan (<=)" #: superset-frontend/src/explore/constants.ts:65 -#, fuzzy msgid "Greater than (>)" -msgstr "maak een " +msgstr "Groter dan (>)" #: superset-frontend/src/explore/constants.ts:67 -#, fuzzy msgid "Greater or equal (>=)" -msgstr ">= (Groter of gelijk)" +msgstr "Groter of gelijk aan (>=)" #: superset-frontend/src/explore/constants.ts:70 -#, fuzzy msgid "In" -msgstr "in" +msgstr "In" #: superset-frontend/src/explore/constants.ts:71 -#, fuzzy msgid "Not in" -msgstr "aantekening" +msgstr "Niet in" #: superset-frontend/src/explore/constants.ts:72 msgid "Like" -msgstr "" +msgstr "Like" #: superset-frontend/src/explore/constants.ts:74 -#, fuzzy msgid "Like (case insensitive)" -msgstr "Filterwaarde (hoofdlettergevoelig)" +msgstr "Like (hoofdlettergevoelig)" #: superset-frontend/src/explore/constants.ts:78 -#, fuzzy msgid "Is not null" -msgstr "Not null" +msgstr "Is niet null" #: superset-frontend/src/explore/constants.ts:81 -#, fuzzy msgid "Is null" -msgstr "Not null" +msgstr "Is null" #: superset-frontend/src/explore/constants.ts:83 -#, fuzzy msgid "use latest_partition template" -msgstr "laatste partitie:" +msgstr "gebruik laatste_partitie sjabloon" #: superset-frontend/src/explore/constants.ts:86 msgid "Is true" -msgstr "" +msgstr "Is waar" #: superset-frontend/src/explore/constants.ts:87 msgid "Is false" -msgstr "" +msgstr "Is onwaar" #: superset-frontend/src/explore/constants.ts:89 -#, fuzzy msgid "TEMPORAL_RANGE" -msgstr "Is tijdelijk" +msgstr "TIJDELIJK_BEREIK" #: superset-frontend/src/explore/constants.ts:134 msgid "Time granularity" -msgstr "" +msgstr "Tijd granulariteit" #: superset-frontend/src/explore/controls.jsx:90 msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)" -msgstr "" +msgstr "Duur in ms (100.40008 => 100ms 400μs 80ns)" #: superset-frontend/src/explore/controls.jsx:126 msgid "" @@ -15351,10 +15833,13 @@ msgid "" "include a series limit to limit the number of fetched and rendered " "series." msgstr "" +"Eén of meerdere kolommen om te groeperen. Hoge kardinaliteitsgroepen " +"moeten een limiet in de serie bevatten om het aantal opgehaalde en " +"weergegeven series te beperken." #: superset-frontend/src/explore/controls.jsx:162 msgid "One or many metrics to display" -msgstr "Eén of vele meeteenheden om weer te geven" +msgstr "Eén of vele metrieken om weer te geven" #: superset-frontend/src/explore/controls.jsx:205 msgid "Fixed color" @@ -15362,11 +15847,11 @@ msgstr "Vaste kleur" #: superset-frontend/src/explore/controls.jsx:214 msgid "Right axis metric" -msgstr "Meeteenheid rechteras" +msgstr "Rechter as metriek" #: superset-frontend/src/explore/controls.jsx:216 msgid "Choose a metric for right axis" -msgstr "Kies een meeteenheid voor de rechteras" +msgstr "Kies een metriek voor de rechteras" #: superset-frontend/src/explore/controls.jsx:221 msgid "Linear color scheme" @@ -15374,7 +15859,7 @@ msgstr "Lineair kleurenpalet" #: superset-frontend/src/explore/controls.jsx:234 msgid "Color metric" -msgstr "Kleur meeteenheid" +msgstr "Kleur metriek" #: superset-frontend/src/explore/controls.jsx:245 msgid "One or many controls to pivot as columns" @@ -15385,6 +15870,9 @@ 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 "" +"De tijd granulariteit voor de visualisatie. Merk op dat u eenvoudige " +"natuurlijke taal kunt typen en gebruiken zoals in `10 seconden`,`1 dag` " +"of `56 weken`" #: superset-frontend/src/explore/controls.jsx:310 msgid "" @@ -15393,6 +15881,10 @@ msgid "" "granularity. The options here are defined on a per database engine basis " "in the Superset source code." msgstr "" +"De tijd-granulariteit voor de visualisatie. Dit is een datum " +"transformatie naar de tijdkolom en definieert een nieuwe " +"tijdgranulariteit. De opties hier zijn gedefinieerd op een per database " +"engine basis in de Superset source code." #: superset-frontend/src/explore/controls.jsx:327 msgid "" @@ -15404,10 +15896,18 @@ msgid "" " explicitly set the timezone per the ISO 8601 format if specifying either" " the start and/or end time." msgstr "" +"Het tijdsbereik voor de visualisatie. Alle relatieve tijden, bijvoorbeeld" +" \"Afgelopen maand\", \"Laatste 7 dagen\", \"nu\", etc. worden " +"geëvalueerd op de server door gebruik te maken van de lokale tijd (zonder" +" tijdzone). Alle tooltips en de tijd van de tijdelijke placeholder worden" +" uitgedrukt in UTC (zonder tijdzone). De tijdstempels worden vervolgens " +"geëvalueerd door de database met behulp van de lokale tijdzone van de " +"engine. Merk op dat de tijdzone per ISO 8601 formaat expliciet kan worden" +" ingesteld als de start- en/of eindtijd wordt aangegeven." #: superset-frontend/src/explore/controls.jsx:344 msgid "Limits the number of rows that get displayed." -msgstr "" +msgstr "Beperkt het aantal rijen die worden weergegeven." #: superset-frontend/src/explore/controls.jsx:367 msgid "" @@ -15415,20 +15915,25 @@ msgid "" "limit is present. If undefined reverts to the first metric (where " "appropriate)." msgstr "" +"Metriek wordt gebruikt om te bepalen hoe de top series worden gesorteerd " +"als een serie of rijlimiet aanwezig is. Indien ongedefinieerd wordt deze " +"teruggekeerd naar de eerste metriek (indien gepast)." #: superset-frontend/src/explore/controls.jsx:383 msgid "" "Defines the grouping of entities. Each series is shown as a specific " "color on the chart and has a legend toggle" msgstr "" +"Definieert de groepering van entiteiten. Elke serie wordt weergegeven als" +" een specifieke kleur op de grafiek en heeft een legende schakelaar" #: superset-frontend/src/explore/controls.jsx:402 msgid "Metric assigned to the [X] axis" -msgstr "Meeteenheid toegewezen aan de [X]-as" +msgstr "Metriek toegewezen aan de [X]-as" #: superset-frontend/src/explore/controls.jsx:410 msgid "Metric assigned to the [Y] axis" -msgstr "Meeteenheid toegewezen aan de [Y]-as" +msgstr "Metriek toegewezen aan de [Y]-as" #: superset-frontend/src/explore/controls.jsx:415 msgid "Bubble size" @@ -15439,6 +15944,8 @@ msgid "" "When `Calculation type` is set to \"Percentage change\", the Y Axis " "Format is forced to `.1%`" msgstr "" +"Wanneer `Bereken type` is ingesteld op \"Percentage verandering\", wordt " +"de Y Axis Opmaak geforceerd naar `.1%`" #: superset-frontend/src/explore/components/controls/ColorSchemeControl/index.tsx:87 #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:217 @@ -15450,49 +15957,49 @@ msgstr "Kleurenschema" #: superset-frontend/src/explore/actions/exploreActions.ts:89 msgid "An error occurred while starring this chart" -msgstr "" +msgstr "Er is een fout opgetreden tijdens het sterren van deze kaart" #: superset-frontend/src/explore/actions/saveModalActions.js:142 -#, fuzzy, python-format +#, python-format msgid "Chart [%s] has been saved" -msgstr "Grafiek [{}] is opgeslagen" +msgstr "Grafiek [%s] is opgeslagen" #: superset-frontend/src/explore/actions/saveModalActions.js:145 -#, fuzzy, python-format +#, python-format msgid "Chart [%s] has been overwritten" -msgstr "Grafiek [{}] is overschreven" +msgstr "Grafiek [%s] is overschreven" #: superset-frontend/src/explore/actions/saveModalActions.js:153 -#, fuzzy, python-format +#, python-format msgid "Dashboard [%s] just got created and chart [%s] was added to it" -msgstr "Dashboard [{}] is zojuist aangemaakt en grafiek [{}] is eraan toegevoegd" +msgstr "Dashboard [%s] is zojuist aangemaakt en grafiek [%s] is eraan toegevoegd" #: superset-frontend/src/explore/actions/saveModalActions.js:163 -#, fuzzy, python-format +#, python-format msgid "Chart [%s] was added to dashboard [%s]" -msgstr "Grafiek [{}] werd toegevoegd aan dashboard [{}]" +msgstr "Grafiek [%s] is toegevoegd aan dashboard [%s]" #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:39 #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:119 msgid "GROUP BY" -msgstr "" +msgstr "GROUP BY" #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:40 #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:120 msgid "Use this section if you want a query that aggregates" -msgstr "" +msgstr "Gebruik deze sectie als u een query wilt welke aggregeert" #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:53 msgid "NOT GROUPED BY" -msgstr "" +msgstr "NOT GROUPED BY" #: superset-frontend/src/explore/components/ControlPanelsContainer.test.tsx:54 msgid "Use this section if you want to query atomic rows" -msgstr "" +msgstr "Gebruik deze sectie als u atomische rijen wilt opvragen" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:309 msgid "The X-axis is not on the filters list" -msgstr "" +msgstr "De X-as staat niet op de filterlijst" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:311 msgid "" @@ -15501,45 +16008,56 @@ msgid "" " time range filters in dashboards. Would you like to add it to" " the filters list?" msgstr "" +"De X-as staat niet in de filterlijst, wat zal voorkomen dat deze wordt " +"gebruikt in\n" +" tijdbereik filters in dashboards. Wilt u het toevoegen aan de" +" filterlijst?" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:500 msgid "" "You cannot delete the last temporal filter as it's used for time range " "filters in dashboards." msgstr "" +"U kunt het laatste tijdelijke filter niet verwijderen omdat het gebruikt " +"wordt voor tijdbereik filters in de dashboards." #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:596 msgid "This section contains validation errors" -msgstr "" +msgstr "Deze sectie bevat validatiefouten" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:681 msgid "Keep control settings?" -msgstr "" +msgstr "Behoud de controle-instellingen?" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:682 msgid "" "You've changed datasets. Any controls with data (columns, metrics) that " "match this new dataset have been retained." msgstr "" +"Je hebt datasets gewijzigd. Alle bedieningselementen met gegevens " +"(kolommen, metrieken) die overeenkomen met deze nieuwe dataset zijn " +"behouden gebleven." #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:687 #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:698 msgid "Continue" -msgstr "" +msgstr "Doorgaan" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:688 msgid "Clear form" -msgstr "" +msgstr "Formulier wissen" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:693 msgid "No form settings were maintained" -msgstr "" +msgstr "Er zijn geen formulierinstellingen onderhouden" #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:694 msgid "" "We were unable to carry over any controls when switching to this new " "dataset." msgstr "" +"We waren niet in staat om enige bedieningselementen over te dragen bij " +"het overschakelen naar deze nieuwe dataset." #: superset-frontend/src/explore/components/ControlPanelsContainer.tsx:778 msgid "Customize" @@ -15547,43 +16065,39 @@ msgstr "Pas aan" #: superset-frontend/src/explore/components/EmbedCodeContent.jsx:82 msgid "Generating link, please wait.." -msgstr "" +msgstr "Link genereren, even geduld a.u.b." #: superset-frontend/src/explore/components/EmbedCodeContent.jsx:130 msgid "Chart height" -msgstr "" +msgstr "Grafiek hoogte" #: superset-frontend/src/explore/components/EmbedCodeContent.jsx:139 -#, fuzzy msgid "Chart width" -msgstr "grafiek" +msgstr "Grafiek breedte" #: superset-frontend/src/explore/components/SaveModal.tsx:136 -#, fuzzy msgid "An error occurred while loading dashboard information." -msgstr "Er is een fout opgetreden tijdens het ophalen van dashboards: %s" +msgstr "Er is een fout opgetreden bij het laden van dashboard informatie." #: superset-frontend/src/explore/components/SaveModal.tsx:344 msgid "Save (Overwrite)" msgstr "Opslaan (overschrijven)" #: superset-frontend/src/explore/components/SaveModal.tsx:352 -#, fuzzy msgid "Save as..." -msgstr "Opslaan als …" +msgstr "Opslaan als..." #: superset-frontend/src/explore/components/SaveModal.tsx:356 msgid "Chart name" msgstr "Grafiek naam" #: superset-frontend/src/explore/components/SaveModal.tsx:367 -#, fuzzy msgid "Dataset Name" msgstr "Dataset naam" #: superset-frontend/src/explore/components/SaveModal.tsx:369 msgid "A reusable dataset will be saved with your chart." -msgstr "" +msgstr "Een herbruikbaar dataset wordt opgeslagen met uw grafiek." #: superset-frontend/src/explore/components/SaveModal.tsx:383 msgid "Add to dashboard" @@ -15591,42 +16105,36 @@ msgstr "Toevoegen aan het dashboard" #: superset-frontend/src/explore/components/SaveModal.tsx:389 msgid "Select a dashboard" -msgstr "" +msgstr "Selecteer een dashboard" #: superset-frontend/src/explore/components/SaveModal.tsx:395 #: superset-frontend/src/explore/components/controls/VizTypeControl/index.tsx:134 msgid "Select" -msgstr "" +msgstr "Selecteer" #: superset-frontend/src/explore/components/SaveModal.tsx:396 -#, fuzzy msgid " a dashboard OR " -msgstr "Dashboard opslaan" +msgstr " een dashboard OF " #: superset-frontend/src/explore/components/SaveModal.tsx:397 -#, fuzzy msgid "create" -msgstr "Maak" +msgstr "aanmaken" #: superset-frontend/src/explore/components/SaveModal.tsx:398 -#, fuzzy msgid " a new one" -msgstr "Gewijzigd op" +msgstr " een nieuwe" #: superset-frontend/src/explore/components/SaveModal.tsx:426 -#, fuzzy msgid "A new chart and dashboard will be created." -msgstr "Dashboard kon niet worden aangemaakt." +msgstr "Een nieuwe grafiek en dashboard zullen worden aangemaakt." #: superset-frontend/src/explore/components/SaveModal.tsx:429 -#, fuzzy msgid "A new chart will be created." -msgstr "Grafiek kon niet worden aangemaakt." +msgstr "Er zal een nieuwe grafiek worden aangemaakt." #: superset-frontend/src/explore/components/SaveModal.tsx:432 -#, fuzzy msgid "A new dashboard will be created." -msgstr "Dashboard kon niet worden aangemaakt." +msgstr "Er zal een nieuw dashboard worden aangemaakt." #: superset-frontend/src/explore/components/SaveModal.tsx:453 msgid "Save & go to dashboard" @@ -15638,34 +16146,32 @@ msgstr "Grafiek opslaan" #: superset-frontend/src/explore/components/DataTableControl/index.tsx:146 msgid "Formatted date" -msgstr "" +msgstr "Opgemaakte datum" #: superset-frontend/src/explore/components/DataTableControl/index.tsx:198 msgid "Column Formatting" -msgstr "" +msgstr "Kolom Opmaak" #: superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx:168 -#, fuzzy msgid "Collapse data panel" -msgstr "Alles inklappen" +msgstr "Paneel data samenvouwen" #: superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx:173 msgid "Expand data panel" -msgstr "" +msgstr "Gegevenspaneel vergroten" #: superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.tsx:237 -#, fuzzy msgid "Samples" -msgstr "Voorbeelden" +msgstr "Monsters" #: superset-frontend/src/explore/components/DataTablesPane/components/SamplesPane.tsx:124 msgid "No samples were returned for this dataset" -msgstr "" +msgstr "Er zijn geen voorbeelden gevonden voor deze dataset" #: superset-frontend/src/explore/components/DataTablesPane/components/SamplesPane.tsx:143 #: superset-frontend/src/explore/components/DataTablesPane/components/SingleQueryResultPane.tsx:68 msgid "No results" -msgstr "" +msgstr "Geen resultaten" #: superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelItem.tsx:226 #: superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelItem.tsx:227 @@ -15680,15 +16186,15 @@ msgstr "" #: superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelItem.tsx:261 msgid "Show less..." -msgstr "" +msgstr "Toon minder..." #: superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelItem.tsx:261 msgid "Show all..." -msgstr "" +msgstr "Toon alles..." #: superset-frontend/src/explore/components/DatasourcePanel/index.tsx:292 msgid "Search Metrics & Columns" -msgstr "Zoek meeteenheden & kolommen" +msgstr "Zoek Metriek & Kolommen" #: superset-frontend/src/explore/components/DatasourcePanel/index.tsx:316 #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:330 @@ -15696,74 +16202,73 @@ msgstr "Zoek meeteenheden & kolommen" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:369 #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:393 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:419 -#, fuzzy msgid "Create a dataset" -msgstr "maak een " +msgstr "Een dataset aanmaken" #: superset-frontend/src/explore/components/DatasourcePanel/index.tsx:318 -#, fuzzy msgid " to edit or add columns and metrics." -msgstr "%s kolom(men) en meeteenhe(i)d(en)" +msgstr " om kolommen en metrieken toe te voegen of bewerken." #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:127 msgid "Unable to retrieve dashboard colors" -msgstr "" +msgstr "Dashboard kleuren kunnen niet worden opgehaald" #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:185 #, fuzzy, python-format msgid "Added to 1 dashboard" -msgstr "Toevoegen aan het dashboard" +msgstr "Toegevoegd aan het dashboard" #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:191 -#, fuzzy msgid "Not added to any dashboard" -msgstr "Toevoegen aan het dashboard" +msgstr "Niet toegevoegd aan enig dashboard" #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:194 msgid "You can preview the list of dashboards in the chart settings dropdown." msgstr "" +"Je kunt de lijst met dashboards bekijken in de keuzelijst van de " +"grafiekinstellingen." #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:202 #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:206 #: superset-frontend/src/features/datasets/metadataBar/useDatasetMetadataBar.tsx:72 msgid "Not available" -msgstr "" +msgstr "Niet beschikbaar" #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:230 -#, fuzzy msgid "Add the name of the chart" -msgstr "Het id van de actieve grafiek" +msgstr "Voeg de naam van de grafiek toe" #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:231 -#, fuzzy msgid "Chart title" -msgstr "Titel tabblad" +msgstr "Titel grafiek" #: superset-frontend/src/explore/components/ExploreChartHeader/index.jsx:265 msgid "Add required control values to save chart" -msgstr "" +msgstr "Verplichte controlewaarden om grafiek op te slaan toevoegen" #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:314 msgid "Chart type requires a dataset" -msgstr "" +msgstr "Grafiek type vereist een dataset" #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:321 msgid "" "This chart type is not supported when using an unsaved query as a chart " "source. " msgstr "" +"Dit grafiek type wordt niet ondersteund bij het gebruik van een niet-" +"opgeslagen query als grafiekbron. " #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:332 msgid " to visualize your data." -msgstr "" +msgstr " om uw gegevens te visualiseren." #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:341 msgid "Required control values have been removed" -msgstr "" +msgstr "Vereiste controlewaarden zijn verwijderd" #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:342 msgid "Your chart is not up to date" -msgstr "" +msgstr "Je grafiek is niet up to date" #: superset-frontend/src/explore/components/ExploreChartPanel/index.jsx:349 msgid "" @@ -15771,31 +16276,33 @@ msgid "" "updated automatically. Run the query by clicking on the \"Update chart\" " "button or" msgstr "" +"Je hebt de waarden in het bedieningspaneel bijgewerkt, maar de grafiek is" +" niet automatisch bijgewerkt. Voer de query uit door op de knop 'Grafiek " +"bijwerken' te klikken of" #: superset-frontend/src/explore/components/ExploreViewContainer/index.jsx:524 msgid "Controls labeled " -msgstr "" +msgstr "Bediening gelabeld " #: superset-frontend/src/explore/components/ExploreViewContainer/index.jsx:524 msgid "Control labeled " msgstr "Controle gelabeld " #: superset-frontend/src/explore/components/ExploreViewContainer/index.jsx:613 -#, fuzzy msgid "Chart Source" -msgstr "Data bron" +msgstr "Grafiek Bron" #: superset-frontend/src/explore/components/ExploreViewContainer/index.jsx:645 msgid "Open Datasource tab" -msgstr "Open Datasource tab" +msgstr "Open Gegevensbron Tabblad" #: superset-frontend/src/explore/components/ExportToCSVDropdown/index.tsx:75 msgid "Original" -msgstr "" +msgstr "Origineel" #: superset-frontend/src/explore/components/ExportToCSVDropdown/index.tsx:81 msgid "Pivoted" -msgstr "" +msgstr "Gepivoteerd" #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:94 msgid "You do not have permission to edit this chart" @@ -15803,44 +16310,47 @@ msgstr "U heeft geen toestemming om deze grafiek te bewerken" #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:245 msgid "Chart properties updated" -msgstr "" +msgstr "Grafiek eigenschappen bijgewerkt" #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:301 -#, fuzzy msgid "Edit Chart Properties" -msgstr "Grafiek eigenschappen bewerken" +msgstr "Bewerk Grafiek Eigenschappen" #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:322 msgid "This chart is managed externally, and can't be edited in Superset" -msgstr "" +msgstr "Deze grafiek wordt extern beheerd, en kan niet worden bewerkt in Superset" #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:371 msgid "" "The description can be displayed as widget headers in the dashboard view." " Supports markdown." msgstr "" +"De beschrijving kan worden weergegeven als widget headers in de dashboard" +" weergave. Markdown wordt ondersteund." #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:382 msgid "Person or group that has certified this chart." -msgstr "" +msgstr "Person of groep die deze grafiek heeft gecertificeerd." #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:400 msgid "Configuration" msgstr "Configuratie" #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:406 -#, fuzzy msgid "" "Duration (in seconds) of the caching timeout for this chart. Set to -1 to" " bypass the cache. Note this defaults to the dataset's timeout if " "undefined." msgstr "" -"Duur (in seconden) van de caching timeout voor deze grafiek. Merk op dat " -"dit standaard de timeout van de dataset is indien ongedefinieerd." +"Duur (in seconden) van de caching timeout voor deze grafiek. Stel in op " +"-1 om de cache te omzeilen. Hou er rekening mee dat dit standaard de " +"timeout van de dataset is, indien niet gedefinieerd." #: superset-frontend/src/explore/components/PropertiesModal/index.tsx:424 msgid "A list of users who can alter the chart. Searchable by name or username." msgstr "" +"Een lijst van gebruikers die de grafiek kunnen wijzigen. Zoekbaar op naam" +" of gebruikersnaam." #: superset-frontend/src/explore/components/RowCountLabel/index.tsx:31 msgid "" @@ -15850,15 +16360,13 @@ msgstr "" #: superset-frontend/src/explore/components/RunQueryButton/index.tsx:54 #: superset-frontend/src/utils/getChartRequiredFieldsMissingMessage.ts:22 -#, fuzzy msgid "Create chart" -msgstr "Maak een nieuwe grafiek" +msgstr "Grafiek aanmaken" #: superset-frontend/src/explore/components/RunQueryButton/index.tsx:54 #: superset-frontend/src/utils/getChartRequiredFieldsMissingMessage.ts:23 -#, fuzzy msgid "Update chart" -msgstr "Grafiek opslaan" +msgstr "Grafiek bijwerken" #: superset-frontend/src/explore/components/controls/SpatialControl.jsx:82 msgid "Invalid lat/long configuration." @@ -15901,15 +16409,14 @@ msgid "Sorry, An error occurred" msgstr "Sorry, er is een fout opgetreden" #: superset-frontend/src/explore/components/controls/ViewQueryModalFooter.tsx:38 -#, fuzzy msgid "Save as Dataset" -msgstr "Kies een dataset" +msgstr "Opslaan als Dataset" #: superset-frontend/src/explore/components/controls/ViewQueryModalFooter.tsx:39 #: superset-frontend/src/features/queries/QueryPreviewModal.tsx:142 #: superset-frontend/src/features/queries/SavedQueryPreviewModal.tsx:125 msgid "Open in SQL Lab" -msgstr "Open in SQL Lab" +msgstr "Openen in SQL Lab" #: superset-frontend/src/explore/components/controls/withAsyncVerification.tsx:201 #, python-format @@ -15917,14 +16424,12 @@ msgid "Failed to verify select options: %s" msgstr "Mislukt bij het verifiëren van geselecteerde opties: %s" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:115 -#, fuzzy msgid "No annotation layers" -msgstr "Aantekeningenlagen" +msgstr "Geen annotatielagen" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:118 -#, fuzzy msgid "Add an annotation layer" -msgstr "Aantekeningenlaag toevoegen" +msgstr "Voeg een aantekeningslaag toe" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:574 #: superset-frontend/src/pages/AnnotationLayerList/index.tsx:217 @@ -15933,9 +16438,8 @@ msgid "Annotation layer" msgstr "Aantekeningenlaag" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:575 -#, fuzzy msgid "Select the Annotation Layer you would like to use." -msgstr "Kies het aantekeningenlaagtype" +msgstr "Selecteer de annotatielaag die u wilt gebruiken." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:583 #, python-format @@ -15943,6 +16447,9 @@ msgid "" "Use another existing chart as a source for annotations and overlays.\n" " Your chart must be one of these visualization types: [%s]" msgstr "" +"Gebruik een andere bestaande grafiek als bron voor annotaties en " +"overlays.\n" +" Uw grafiek moet een van deze visualisatietypes zijn: [%s]" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:588 msgid "" @@ -15951,83 +16458,88 @@ msgid "" "formulas.\n" " Example: '2x+5'" msgstr "" +"Verwacht een formule met afhankelijk tijdsparameter 'x'\n" +" in milliseconden sinds epoch. mathjs wordt gebruikt om formules " +"te evalueren.\n" +" Voorbeeld: '2x+5'" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:597 msgid "Annotation layer value" -msgstr "" +msgstr "Annotatielaag waarde" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:620 msgid "Bad formula." -msgstr "" +msgstr "Onjuiste formule." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:657 msgid "Annotation Slice Configuration" msgstr "Configuratie van Aantekening sectie" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:658 -#, fuzzy msgid "" "This section allows you to configure how to use the slice\n" " to generate annotations." msgstr "" -"In dit gedeelte kunt u configureren hoe u de slice gebruikt\n" -" om aantekeningen te genereren." +"Dit gedeelte stelt je in staat om te configureren hoe je slice kan " +"gebruiken\n" +" om annotaties te genereren." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:664 msgid "Annotation layer time column" -msgstr "" +msgstr "Aantekening laag tijdkolom" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:669 msgid "Interval start column" -msgstr "" +msgstr "Interval Startkolom" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:670 msgid "Event time column" -msgstr "" +msgstr "Gebeurtenis tijdkolom" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:672 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:688 msgid "This column must contain date/time information." -msgstr "" +msgstr "Deze kolom moet datum/tijd informatie bevatten." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:684 msgid "Annotation layer interval end" -msgstr "" +msgstr "Annotatielaag interval einde" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:687 msgid "Interval End column" -msgstr "" +msgstr "Interval Eindkolom" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:698 msgid "Annotation layer title column" -msgstr "" +msgstr "Titel kolom annotatielaag" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:701 msgid "Title Column" -msgstr "" +msgstr "Titel Kolom" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:702 msgid "Pick a title for you annotation." -msgstr "" +msgstr "Kies een titel voor je annotatie." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:709 msgid "Annotation layer description columns" -msgstr "" +msgstr "Omschrijvingskolommen van annotatielaag" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:712 msgid "Description Columns" -msgstr "" +msgstr "Beschrijving Kolommen" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:713 msgid "" "Pick one or more columns that should be shown in the annotation. If you " "don't select a column all of them will be shown." msgstr "" +"Kies een of meer kolommen die in de annotatie moeten worden weergegeven. " +"Als u geen kolom selecteert, worden ze allemaal weergegeven." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:726 -#, fuzzy msgid "Override time range" -msgstr "Bewerk tijdspanne" +msgstr "Overschrijf tijdbereik" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:727 msgid "" @@ -16035,11 +16547,13 @@ msgid "" " view should be passed down to the chart containing the " "annotation data." msgstr "" +"Deze bepaalt of het \"time_range\" veld van de huidige\n" +" weergave moet worden doorgegeven aan de grafiek met de " +"annotatie gegevens." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:744 -#, fuzzy msgid "Override time grain" -msgstr "Toon Druid time origin" +msgstr "Overschrijf tijdgranulatie" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:745 msgid "" @@ -16047,12 +16561,17 @@ msgid "" " view should be passed down to the chart containing the " "annotation data." msgstr "" +"Dit bepaalt of het tijdsintervalveld van de huidige\n" +" weergave moet worden doorgegeven aan de grafiek met de " +"annotatie gegevens." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:768 msgid "" "Time delta in natural language\n" " (example: 24 hours, 7 days, 56 weeks, 365 days)" msgstr "" +"Tijdsdelta in natuurlijke taal\n" +" (voorbeeld: 24 uur, 7 dagen, 56 weken, 365 dagen)" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:807 msgid "Display configuration" @@ -16064,7 +16583,7 @@ msgstr "Configureer hier hoe uw overlay wordt weergegeven." #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:811 msgid "Annotation layer stroke" -msgstr "" +msgstr "Annotatielaag lijn" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:813 msgid "Style" @@ -16073,25 +16592,23 @@ msgstr "Stijl" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:816 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:831 msgid "Solid" -msgstr "" +msgstr "Stevig" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:817 -#, fuzzy msgid "Dashed" -msgstr "dashboard" +msgstr "Gestippeld" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:818 msgid "Long dashed" -msgstr "" +msgstr "Lang strepen" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:819 -#, fuzzy msgid "Dotted" -msgstr "Bewerkt" +msgstr "Gestippeld" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:826 msgid "Annotation layer opacity" -msgstr "" +msgstr "Doorzichtigheid annotatielaag" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:840 #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:262 @@ -16101,20 +16618,19 @@ msgstr "Kleur" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:853 msgid "Automatic Color" -msgstr "" +msgstr "Automatische kleur" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:869 msgid "Shows or hides markers for the time series" -msgstr "" +msgstr "Toont of verbergt markeringen voor de tijdreeks" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:878 -#, fuzzy msgid "Hide Line" -msgstr "Laag verbergen" +msgstr "Lijn verbergen" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:879 msgid "Hides the Line for the time series" -msgstr "" +msgstr "Verbergt de lijn voor de tijdreeks" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:911 msgid "Layer configuration" @@ -16135,11 +16651,11 @@ msgstr "Laag verbergen" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:930 msgid "Show label" -msgstr "" +msgstr "Toon label" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:933 msgid "Whether to always show the annotation label" -msgstr "" +msgstr "Of het annotatielabel altijd moet worden weergegeven" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:937 #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:940 @@ -16152,25 +16668,23 @@ msgstr "Kies het aantekeningenlaagtype" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:949 msgid "Annotation source type" -msgstr "" +msgstr "Annotatie bron type" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:951 msgid "Choose the source of your annotations" -msgstr "" +msgstr "Kies de bron van je annotaties" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:952 -#, fuzzy msgid "Annotation source" -msgstr "aantekening" +msgstr "Annotatie bron" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationLayer.jsx:974 msgid "Remove" msgstr "Verwijder" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/AnnotationTypes.js:46 -#, fuzzy msgid "Time series" -msgstr "Time series kolommen" +msgstr "Tijd series" #: superset-frontend/src/explore/components/controls/AnnotationLayerControl/index.jsx:184 msgid "Edit annotation layer" @@ -16199,12 +16713,16 @@ msgid "" "This color scheme is being overridden by custom label colors.\n" " Check the JSON metadata in the Advanced settings" msgstr "" +"Dit kleurenschema wordt overschreven door aangepaste labelkleuren.\n" +" Controleer de JSON-metadata in de geavanceerde instellingen" #: superset-frontend/src/explore/components/controls/ColorSchemeControl/index.tsx:55 msgid "" "The color scheme is determined by the related dashboard.\n" " Edit the color scheme in the dashboard properties." msgstr "" +"Het kleurenschema wordt bepaald door het gerelateerde dashboard.\n" +" Bewerk het kleurenschema in de dashboard eigenschappen." #: superset-frontend/src/explore/components/controls/ColorSchemeControl/index.tsx:115 #: superset-frontend/src/features/home/DashboardTable.tsx:77 @@ -16215,139 +16733,147 @@ msgstr "dashboard" #: superset-frontend/src/explore/components/controls/ColorSchemeControl/index.tsx:117 msgid "Dashboard scheme" -msgstr "" +msgstr "Dashboard schema" #: superset-frontend/src/explore/components/controls/ColorSchemeControl/index.tsx:177 msgid "Select color scheme" -msgstr "" +msgstr "Selecteer kleurschema" #: superset-frontend/src/explore/components/controls/ColorSchemeControl/index.tsx:183 msgid "Select scheme" -msgstr "" +msgstr "Selecteer schema" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigControl.tsx:159 msgid "Show less columns" -msgstr "" +msgstr "Toon minder kolommen" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/ColumnConfigControl.tsx:164 msgid "Show all columns" -msgstr "" +msgstr "Toon alle kolommen" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:75 msgid "Fraction digits" -msgstr "" +msgstr "Breuk cijfers" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:76 msgid "Number of decimal digits to round numbers to" -msgstr "" +msgstr "Aantal decimale cijfers om getallen af te ronden naar" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:85 msgid "Min Width" -msgstr "" +msgstr "Min Dikte" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:86 msgid "" "Default minimal column width in pixels, actual width may still be larger " "than this if other columns don't need much space" msgstr "" +"Standaard minimale kolombreedte in pixels, de werkelijke breedte kan nog " +"steeds groter zijn dan deze als andere kolommen niet veel ruimte nodig " +"hebben" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:100 msgid "Text align" -msgstr "" +msgstr "Tekst uitlijnen" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:101 msgid "Horizontal alignment" -msgstr "" +msgstr "Horizontale uitlijning" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:114 msgid "Show cell bars" -msgstr "" +msgstr "Toon cel balken" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:123 msgid "Whether to align positive and negative values in cell bar chart at 0" msgstr "" +"Of positieve en negatieve waarden in celbalkdiagram moeten worden " +"uitgelijnd op 0" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:133 msgid "Whether to colorize numeric values by if they are positive or negative" msgstr "" +"Of numerieke waarden moeten worden gekleurd op basis van of ze positief " +"of negatief zijn" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:142 msgid "Truncate Cells" -msgstr "" +msgstr "Cellen Afkappen" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:143 msgid "Truncate long cells to the \"min width\" set above" -msgstr "" +msgstr "Lange cellen afkappen naar de \"min breedte\" welke hierboven is gezet" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:151 msgid "" "Customize chart metrics or columns with currency symbols as prefixes or " "suffixes. Choose a symbol from dropdown or type your own." msgstr "" +"Pas grafiek metrieken of kolommen met valutasymbolen aan als voorvoegsels" +" of achtervoegsels. Kies een eigen symbool in de vervolgkeuzelijst of " +"typ." #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:163 msgid "Small number format" -msgstr "" +msgstr "Klein getal opmaak" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:164 msgid "" "D3 number format for numbers between -1.0 and 1.0, useful when you want " "to have different significant digits for small and large numbers" msgstr "" +"D3 nummer opmaak voor getallen tussen -1.0 en 1.0, handig als je " +"verschillende significante cijfers wilt hebben voor kleine en grote " +"getallen" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:190 -#, fuzzy msgid "Display" -msgstr "Toon naam" +msgstr "Weergeven" #: superset-frontend/src/explore/components/controls/ColumnConfigControl/constants.tsx:202 -#, fuzzy msgid "Number formatting" -msgstr "Datetime formaat" +msgstr "Nummer opmaak" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/ConditionalFormattingControl.tsx:151 msgid "Edit formatter" -msgstr "" +msgstr "Bewerk formatter" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/ConditionalFormattingControl.tsx:169 msgid "Add new formatter" -msgstr "" +msgstr "Nieuwe formatter toevoegen" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/ConditionalFormattingControl.tsx:176 msgid "Add new color formatter" -msgstr "" +msgstr "Voeg nieuwe kleur formatter toe" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:43 #: superset-frontend/src/pages/AlertReportList/index.tsx:112 msgid "alert" -msgstr "Waarschuwing" +msgstr "waarschuwing" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:44 -#, fuzzy msgid "error" -msgstr "%s Fout" +msgstr "fout" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:45 -#, fuzzy msgid "success dark" -msgstr "Succes" +msgstr "succes donker" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:46 -#, fuzzy msgid "alert dark" -msgstr "Waarschuwing" +msgstr "donkere waarschuwing" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:47 msgid "error dark" -msgstr "" +msgstr "fout donker" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:83 msgid "This value should be smaller than the right target value" -msgstr "" +msgstr "Deze waarde moet kleiner zijn dan de rechter doelwaarde" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:88 msgid "This value should be greater than the left target value" -msgstr "" +msgstr "Deze waarde moet groter zijn dan de linker doelwaarde" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:97 #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:101 @@ -16358,115 +16884,113 @@ msgstr "Vereist" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:129 #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:133 msgid "Operator" -msgstr "" +msgstr "Operator" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:147 msgid "Left value" -msgstr "" +msgstr "Linker waarde" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:160 msgid "Right value" -msgstr "" +msgstr "Rechter waarde" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:176 msgid "Target value" -msgstr "" +msgstr "Doel waarde" #: superset-frontend/src/explore/components/controls/ConditionalFormattingControl/FormattingPopoverContent.tsx:211 #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSqlTabContent/index.jsx:61 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:322 msgid "Select column" -msgstr "" +msgstr "Selecteer kolom" #: superset-frontend/src/explore/components/controls/ContourControl/ContourOption.tsx:81 -#, fuzzy msgid "Color: " -msgstr "Kleur" +msgstr "Kleur: " #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:89 msgid "Lower threshold must be lower than upper threshold" -msgstr "" +msgstr "Ondergrens moet lager zijn dan bovengrens" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:92 -#, fuzzy msgid "Upper threshold must be greater than lower threshold" -msgstr "`rij_limiet` moet groter of gelijk aan 0 zijn" +msgstr "Bovengrens moet groter zijn dan de ondergrens" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:225 -#, fuzzy msgid "Isoline" -msgstr "Offline" +msgstr "Isoline" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:232 msgid "Threshold" -msgstr "" +msgstr "Drempelwaarde" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:233 msgid "" "Defines the value that determines the boundary between different regions " "or levels in the data " msgstr "" +"Definieert de waarde die de grens tussen verschillende regio's of niveaus" +" in de gegevens bepaalt " #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:250 msgid "The width of the Isoline in pixels" -msgstr "" +msgstr "De breedte van de Isoline in pixels" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:263 msgid "The color of the isoline" -msgstr "" +msgstr "De kleur van de isoline" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:278 -#, fuzzy msgid "Isoband" -msgstr "en" +msgstr "Isoband" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:285 msgid "Lower Threshold" -msgstr "" +msgstr "Ondergrens" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:286 msgid "The lower limit of the threshold range of the Isoband" -msgstr "" +msgstr "De onderste limiet van het drempelbereik van de Isoband" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:300 msgid "Upper Threshold" -msgstr "" +msgstr "Bovengrens" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:301 msgid "The upper limit of the threshold range of the Isoband" -msgstr "" +msgstr "De bovengrens van het drempelbereik van de Isoband" #: superset-frontend/src/explore/components/controls/ContourControl/ContourPopoverControl.tsx:318 msgid "The color of the isoband" -msgstr "" +msgstr "De kleur van de isoband" #: superset-frontend/src/explore/components/controls/ContourControl/index.tsx:118 msgid "Click to add a contour" -msgstr "" +msgstr "Klik om een contour toe te voegen" #: superset-frontend/src/explore/components/controls/CurrencyControl/CurrencyControl.tsx:63 msgid "Prefix" -msgstr "" +msgstr "Voorvoegsel" #: superset-frontend/src/explore/components/controls/CurrencyControl/CurrencyControl.tsx:64 msgid "Suffix" -msgstr "" +msgstr "Achtervoegsel" #: superset-frontend/src/explore/components/controls/CurrencyControl/CurrencyControl.tsx:104 msgid "Currency prefix or suffix" -msgstr "" +msgstr "Valuta voorvoegsel of achtervoegsel" #: superset-frontend/src/explore/components/controls/CurrencyControl/CurrencyControl.tsx:106 msgid "Prefix or suffix" -msgstr "" +msgstr "Voorvoegsel of achtervoegsel" #: superset-frontend/src/explore/components/controls/CurrencyControl/CurrencyControl.tsx:116 msgid "Currency symbol" -msgstr "" +msgstr "Valuta symbool" #: superset-frontend/src/explore/components/controls/CurrencyControl/CurrencyControl.tsx:118 msgid "Currency" -msgstr "" +msgstr "Valuta" #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:297 msgid "Edit dataset" @@ -16478,6 +17002,9 @@ msgid "" "You must be a dataset owner in order to edit. Please reach out to a " "dataset owner to request modifications or edit access." msgstr "" +"Je moet een dataset eigenaar zijn om te kunnen bewerken. Neem contact op " +"met een dataset eigenaar om wijzigingen aan te vragen of toegang te " +"bewerken." #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:334 #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:374 @@ -16490,20 +17017,19 @@ msgstr "Bekijk in SQL Lab" #: superset-frontend/src/features/queries/SavedQueryPreviewModal.tsx:98 #: superset-frontend/src/pages/SavedQueryList/index.tsx:394 msgid "Query preview" -msgstr "Query preview" +msgstr "Query voorbeeld" #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:378 -#, fuzzy msgid "Save as dataset" -msgstr "Kies een dataset" +msgstr "Opslaan als dataset" #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:434 msgid "Missing URL parameters" -msgstr "" +msgstr "Ontbrekende URL-parameters" #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:439 msgid "The URL is missing the dataset_id or slice_id parameters." -msgstr "" +msgstr "De URL mist de dataset_id of slice_id parameters." #: superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx:457 msgid "The dataset linked to this chart may have been deleted." @@ -16516,7 +17042,7 @@ msgstr "BEREIK TYPE" #: superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterLabel.tsx:308 msgid "Actual time range" -msgstr "Reële tijdspanne" +msgstr "Werkelijk tijdsbereik" #: superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterLabel.tsx:340 msgid "APPLY" @@ -16524,11 +17050,11 @@ msgstr "TOEPASSEN" #: superset-frontend/src/explore/components/controls/DateFilterControl/DateFilterLabel.tsx:349 msgid "Edit time range" -msgstr "Bewerk tijdspanne" +msgstr "Tijdsbereik bewerken" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/AdvancedFrame.tsx:57 msgid "Configure Advanced Time Range " -msgstr "Geavanceerde tijdspanne configureren " +msgstr "Configureer geavanceerd tijdbereik " #: superset-frontend/src/explore/components/controls/DateFilterControl/components/AdvancedFrame.tsx:63 #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:129 @@ -16539,7 +17065,7 @@ msgstr "START (INCLUSIEF)" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/AdvancedFrame.tsx:65 #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:131 msgid "Start date included in time range" -msgstr "Begindatum opgenomen in de tijdspanne" +msgstr "Startdatum opgenomen in tijdsbereik" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/AdvancedFrame.tsx:75 #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:182 @@ -16550,19 +17076,19 @@ msgstr "EINDE (EXCLUSIEF)" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/AdvancedFrame.tsx:77 #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:184 msgid "End date excluded from time range" -msgstr "Einddatum uitgesloten uit de tijdspanne" +msgstr "Einddatum uitgesloten van tijdsbereik" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CalendarFrame.tsx:46 msgid "Configure Time Range: Previous..." -msgstr "Configureer Tijdspanne: Vorige…" +msgstr "Configureer Tijdbereik: Vorige..." #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CommonFrame.tsx:43 msgid "Configure Time Range: Last..." -msgstr "Configureer Tijdspanne: Laatste…" +msgstr "Configureer Tijdbereik: Laatste..." #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:125 msgid "Configure custom time range" -msgstr "Configureer aangepaste tijdspanne" +msgstr "Configureer een aangepast tijdsbereik" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:159 #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:211 @@ -16572,7 +17098,7 @@ msgstr "Relatieve hoeveelheid" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:171 #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:223 msgid "Relative period" -msgstr "" +msgstr "Relatieve periode" #: superset-frontend/src/explore/components/controls/DateFilterControl/components/CustomFrame.tsx:235 msgid "Anchor to" @@ -16613,6 +17139,8 @@ msgstr "Verplaatst de gegeven reeks datums met een opgegeven interval." #: superset-frontend/src/explore/components/controls/DateFilterControl/components/DateFunctionTooltip.tsx:58 msgid "Truncates the specified date to the accuracy specified by the date unit." msgstr "" +"De opgegeven datum wordt afgekapt tot de nauwkeurigheid gespecificeerd " +"door de datumeenheid." #: superset-frontend/src/explore/components/controls/DateFilterControl/components/DateFunctionTooltip.tsx:75 msgid "Get the last date by the date unit." @@ -16630,104 +17158,99 @@ msgstr "Vorige" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:33 msgid "Custom" -msgstr "" +msgstr "Aangepast" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:39 -#, fuzzy msgid "Last day" -msgstr "Zaterdag" +msgstr "Afgelopen dag" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:40 -#, fuzzy msgid "Last week" -msgstr "week" +msgstr "Afgelopen week" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:41 -#, fuzzy msgid "Last month" -msgstr "maand" +msgstr "Afgelopen maand" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:42 -#, fuzzy msgid "Last quarter" -msgstr "Kwartaal" +msgstr "Afgelopen kwartaal" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:43 -#, fuzzy msgid "Last year" -msgstr "jaar" +msgstr "Afgelopen jaar" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:50 msgid "previous calendar week" -msgstr "" +msgstr "vorige kalenderweek" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:53 msgid "previous calendar month" -msgstr "" +msgstr "vorige kalendermaand" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:55 msgid "previous calendar year" -msgstr "" +msgstr "vorig kalenderjaar" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:62 #, python-format msgid "Seconds %s" -msgstr "" +msgstr "Seconden %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:63 #, python-format msgid "Minutes %s" -msgstr "" +msgstr "Minuten %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:64 #, python-format msgid "Hours %s" -msgstr "" +msgstr "Uren %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:65 #, python-format msgid "Days %s" -msgstr "" +msgstr "Dagen %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:66 #, python-format msgid "Weeks %s" -msgstr "" +msgstr "Weken %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:67 #, python-format msgid "Months %s" -msgstr "" +msgstr "Maanden %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:68 #, python-format msgid "Quarters %s" -msgstr "" +msgstr "Kwartalen %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:69 #, python-format msgid "Years %s" -msgstr "" +msgstr "Jaren %s" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:87 msgid "Specific Date/Time" -msgstr "" +msgstr "Specifieke datum/tijd" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:88 msgid "Relative Date/Time" -msgstr "" +msgstr "Relatieve datum/tijd" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:89 msgid "Now" -msgstr "" +msgstr "Nu" #: superset-frontend/src/explore/components/controls/DateFilterControl/utils/constants.ts:90 msgid "Midnight" -msgstr "" +msgstr "Middernacht" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:286 msgid "Saved expressions" -msgstr "" +msgstr "Opgeslagen expressies" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:302 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:382 @@ -16746,30 +17269,31 @@ msgstr "%s kolom(men)" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:347 #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:382 msgid "No temporal columns found" -msgstr "" +msgstr "Geen tijdelijke kolommen gevonden" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:330 #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:348 msgid "No saved expressions found" -msgstr "" +msgstr "Geen opgeslagen expressies gevonden" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:334 msgid "Add calculated temporal columns to dataset in \"Edit datasource\" modal" msgstr "" +"Voeg berekende tijdelijke kolommen toe aan dataset in \"Bewerk " +"gegevensbron\" modal" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:337 msgid "Add calculated columns to dataset in \"Edit datasource\" modal" -msgstr "" +msgstr "Voeg berekende kolommen toe aan dataset in \"Bewerk gegevensbron\" modal" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:360 #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:395 msgid " to mark a column as a time column" -msgstr "" +msgstr " om een kolom als tijdkolom te markeren" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:371 -#, fuzzy msgid " to add calculated columns" -msgstr "Berekende kolommen" +msgstr " berekende kolommen toevoegen" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:378 #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx:212 @@ -16780,50 +17304,50 @@ msgstr "Eenvoudig" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:385 msgid "Mark a column as temporal in \"Edit datasource\" modal" -msgstr "" +msgstr "Markeer een kolom als tijdelijk in \"Bewerk gegevensbron\" modal" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx:422 #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopover/index.jsx:231 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:475 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:478 msgid "Custom SQL" -msgstr "Custom SQL" +msgstr "Aangepaste SQL" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopoverTrigger.tsx:41 #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelectPopoverTitle.jsx:65 msgid "My column" -msgstr "" +msgstr "Mijn kolom" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndAdhocFilterOption.tsx:72 msgid "This filter might be incompatible with current dataset" -msgstr "" +msgstr "Dit filter is mogelijk niet compatibel met het huidige dataset" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx:108 msgid "This column might be incompatible with current dataset" -msgstr "" +msgstr "Deze kolom is mogelijk niet compatibel met het huidige dataset" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.tsx:179 #, fuzzy msgid "Drop a column here or click" -msgstr "" +msgstr "Sleep hier een kolom of klik" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelectPopoverTitle.jsx:81 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopoverTitle.tsx:106 msgid "Click to edit label" -msgstr "" +msgstr "Klik om label te bewerken" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx:442 msgid "Drop columns/metrics here or click" -msgstr "" +msgstr "Sleep hier kolommen/metrieken of klik" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx:283 msgid "This metric might be incompatible with current dataset" -msgstr "" +msgstr "Deze metriek is mogelijk niet compatibel met huidig dataset" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndMetricSelect.tsx:357 #, fuzzy msgid "Drop a column/metric here or click" -msgstr "" +msgstr "Sleep hier de kolom/metriek naartoe of klik" #: superset-frontend/src/explore/components/controls/DndColumnSelectControl/Option.tsx:71 #: superset-frontend/src/explore/components/controls/OptionControls/index.tsx:394 @@ -16847,17 +17371,17 @@ msgstr "%s optie(s)" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:331 msgid "Select subject" -msgstr "" +msgstr "Selecteer onderwerp" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:334 msgid "No such column found. To filter on a metric, try the Custom SQL tab." msgstr "" -"Geen dergelijke kolom gevonden. Om te filteren op een meeteenheid, " -"probeer het Custom SQL tabblad." +"Geen dergelijke kolom gevonden. Om te filteren op een metriek, probeer " +"het Custom SQL tabblad." #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:344 msgid "To filter on a metric, use Custom SQL tab." -msgstr "Om te filteren op een meeteenheid, gebruikt u het tabblad Aangepaste SQL." +msgstr "Om te filteren op een metriek, gebruikt u het tabblad Aangepaste SQL." #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:353 #, python-format @@ -16866,11 +17390,11 @@ msgstr "%s operator(s)" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:359 msgid "Select operator" -msgstr "" +msgstr "Selecteer operator" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:368 msgid "Comparator option" -msgstr "" +msgstr "Vergelijkingsoptie" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx:375 msgid "Type a value here" @@ -16881,9 +17405,8 @@ msgid "Filter value (case sensitive)" msgstr "Filterwaarde (hoofdlettergevoelig)" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/useAdvancedDataTypes.ts:70 -#, fuzzy msgid "Failed to retrieve advanced type" -msgstr "Fout bij het ophalen van resultaten" +msgstr "Geavanceerd type ophalen mislukt" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSqlTabContent/index.jsx:99 msgid "choose WHERE or HAVING..." @@ -16895,7 +17418,7 @@ msgstr "Filter op kolommen" #: superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSqlTabContent/index.jsx:134 msgid "Filters by metrics" -msgstr "Filter op meeteenheden" +msgstr "Filter op metrieken" #: superset-frontend/src/explore/components/controls/FixedOrMetricControl/index.jsx:149 msgid "Fixed" @@ -16903,19 +17426,19 @@ msgstr "Vast" #: superset-frontend/src/explore/components/controls/FixedOrMetricControl/index.jsx:165 msgid "Based on a metric" -msgstr "Gebaseerd op een meeteenheid" +msgstr "Gebaseerd op een metriek" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopoverTitle.tsx:56 msgid "My metric" -msgstr "Mijn meeteenheid" +msgstr "Mijn metriek" #: superset-frontend/src/explore/components/controls/MetricControl/MetricsControl.jsx:333 msgid "Add metric" -msgstr "Meeteenheid toevoegen" +msgstr "Metriek toevoegen" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:331 msgid "Select aggregate options" -msgstr "" +msgstr "Selecteer aggregaat opties" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:332 #, python-format @@ -16924,34 +17447,33 @@ msgstr "%s aggrega(a)t(en)" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:340 msgid "Select saved metrics" -msgstr "" +msgstr "Selecteer opgeslagen metrieken" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:341 #, python-format msgid "%s saved metric(s)" -msgstr "%s opgeslagen meeteenhe(i)d(en)" +msgstr "%s opgeslagen metriek(en)" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:384 msgid "Saved metric" -msgstr "Opgeslagen meeteenheid" +msgstr "Opgeslagen metrieken" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:400 #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:408 msgid "No saved metrics found" -msgstr "" +msgstr "Geen opgeslagen metrieken gevonden" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:401 msgid "Add metrics to dataset in \"Edit datasource\" modal" -msgstr "" +msgstr "Metrieken toevoegen aan dataset in \"Bewerk gegevensbron\" modal" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:421 -#, fuzzy msgid " to add metrics" -msgstr "Meeteenheid toevoegen" +msgstr " om meetwaarden toe te voegen" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:432 msgid "Simple ad-hoc metrics are not enabled for this dataset" -msgstr "" +msgstr "Eenvoudige ad-hoc metrieken zijn niet ingeschakeld voor deze dataset" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:444 msgid "column" @@ -16964,11 +17486,13 @@ msgstr "aggregaat" #: superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/index.jsx:471 msgid "Custom SQL ad-hoc metrics are not enabled for this dataset" msgstr "" +"Aangepaste SQL ad hoc statistieken zijn niet ingeschakeld voor deze " +"dataset" #: superset-frontend/src/explore/components/controls/SelectAsyncControl/index.tsx:88 #, python-format msgid "Error while fetching data: %s" -msgstr "" +msgstr "Fout bij het ophalen van gegevens: %s" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:48 #: superset-frontend/src/visualizations/TimeTable/controlPanel.js:38 @@ -16976,31 +17500,29 @@ msgid "Time series columns" msgstr "Time series kolommen" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:64 -#, fuzzy msgid "Actual value" -msgstr "Nul waarden" +msgstr "Werkelijke waarde" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:73 msgid "Sparkline" -msgstr "" +msgstr "Sparkline" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:74 msgid "Period average" -msgstr "" +msgstr "Gemiddelde periode" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:196 -#, fuzzy msgid "The column header label" -msgstr "Sorteer kolommen alfabetisch" +msgstr "De kolomkop label" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:206 msgid "Column header tooltip" -msgstr "" +msgstr "Kolomkop tooltip" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:216 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:275 msgid "Type of comparison, value difference or percentage" -msgstr "" +msgstr "Type vergelijking, waarde verschil of percentage" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:228 #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:234 @@ -17009,63 +17531,63 @@ msgstr "Breedte" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:229 msgid "Width of the sparkline" -msgstr "" +msgstr "Breedte van de sparkline" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:240 msgid "Height of the sparkline" -msgstr "" +msgstr "Hoogte van de sparkline" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:250 -#, fuzzy msgid "Time lag" -msgstr "Tijdsspanne" +msgstr "Tijdvertraging" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:251 msgid "" "Number of periods to compare against. You can use negative numbers to " "compare from the beginning of the time range." msgstr "" +"Aantal periodes om te vergelijken. Je kunt negatieve getallen gebruiken " +"om te vergelijken vanaf het begin van het tijdsbereik." #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:258 -#, fuzzy msgid "Time Lag" -msgstr "Tijdsspanne" +msgstr "Tijdvertraging" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:263 -#, fuzzy msgid "Time ratio" -msgstr "Datetime formaat" +msgstr "Tijd ratio" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:264 msgid "Number of periods to ratio against" -msgstr "" +msgstr "Aantal periodes om tegen te verhouden" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:269 -#, fuzzy msgid "Time Ratio" -msgstr "Datetime formaat" +msgstr "Tijd Ratio" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:286 msgid "Show Y-axis" -msgstr "" +msgstr "Toon Y-as" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:287 msgid "" "Show Y-axis on the sparkline. Will display the manually set min/max if " "set or min/max values in the data otherwise." msgstr "" +"Laat de Y-as zien op de sparkline. Dit zal de handmatige instelling " +"min/max waardes weergeven anders of min/max waarden in de gegevens." #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:298 msgid "Y-axis bounds" -msgstr "" +msgstr "Y-as grenzen" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:299 msgid "Manually set min/max values for the y-axis." -msgstr "" +msgstr "Stel handmatig min/max waarden in voor de y-as." #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:308 msgid "Color bounds" -msgstr "" +msgstr "Kleur grenzen" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:309 msgid "" @@ -17074,37 +17596,39 @@ msgid "" "blue,\n" " you can enter either only min or max." msgstr "" +"Aantal grenzen gebruikt voor kleurencodering van rood naar blauw.\n" +" Zet de getallen voor blauw naar rood om. Om alleen rood of" +" blauw te krijgen,\n" +" kan je de min of max invoeren." #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:320 msgid "Optional d3 number format string" -msgstr "" +msgstr "Optionele d3 nummer opmaak string" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:325 msgid "Number format string" -msgstr "" +msgstr "Nummer opmaak string" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:331 msgid "Optional d3 date format string" -msgstr "" +msgstr "Optionele d3 datum opmaak string" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:336 -#, fuzzy msgid "Date format string" -msgstr "Datetime formaat" +msgstr "Datum opmaak string" #: superset-frontend/src/explore/components/controls/TimeSeriesColumnControl/index.jsx:363 -#, fuzzy msgid "Column Configuration" -msgstr "Check configuratie" +msgstr "Kolom Configuratie" #: superset-frontend/src/explore/components/controls/VizTypeControl/FastVizSwitcher.tsx:94 msgid "Select Viz Type" -msgstr "" +msgstr "Selecteer Viz Type" #: superset-frontend/src/explore/components/controls/VizTypeControl/FastVizSwitcher.tsx:131 #, python-format msgid "Currently rendered: %s" -msgstr "" +msgstr "Momenteel weergegeven: %s" #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:129 #, fuzzy @@ -17113,11 +17637,11 @@ msgstr "Aangemaakt" #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:791 msgid "Search all charts" -msgstr "" +msgstr "Zoek in alle grafieken" #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:858 msgid "No description available." -msgstr "" +msgstr "Geen beschrijving beschikbaar." #: superset-frontend/src/explore/components/controls/VizTypeControl/VizTypeGallery.tsx:865 #: superset-frontend/src/pages/Home/index.tsx:209 @@ -17129,9 +17653,8 @@ msgid "This visualization type is not supported." msgstr "Dit visualisatietype wordt niet ondersteund." #: superset-frontend/src/explore/components/controls/VizTypeControl/index.tsx:127 -#, fuzzy msgid "View all charts" -msgstr "Alle grafieken" +msgstr "Bekijk alle grafieken" #: superset-frontend/src/explore/components/controls/VizTypeControl/index.tsx:133 msgid "Select a visualization type" @@ -17157,25 +17680,24 @@ msgstr "Grafiek eigenschappen bewerken" #: superset-frontend/src/pages/ChartList/index.tsx:393 #, fuzzy msgid "On dashboards" -msgstr "dashboard" +msgstr "dashboards" #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:331 msgid "Export to original .CSV" -msgstr "" +msgstr "Exporteren naar origineel .CSV bestand" #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:338 msgid "Export to pivoted .CSV" -msgstr "" +msgstr "Exporteren naar pivoted .CSV" #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:354 -#, fuzzy msgid "Export to .JSON" -msgstr "Export naar YAML" +msgstr "Exporteer naar .JSON" #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:380 #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:382 msgid "Embed code" -msgstr "" +msgstr "Code embedden" #: superset-frontend/src/explore/components/useExploreAdditionalActionsMenu/index.jsx:438 msgid "Run in SQL Lab" @@ -17218,7 +17740,7 @@ msgstr "Aantekeningenlagen" #: superset-frontend/src/explore/controlUtils/controlUtils.test.tsx:75 msgid "My beautiful colors" -msgstr "" +msgstr "Mijn mooie kleuren" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:104 msgid "< (Smaller than)" @@ -17246,7 +17768,7 @@ msgstr "!= (Is niet gelijk)" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:128 msgid "Not null" -msgstr "Not null" +msgstr "Niet null" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:143 msgid "60 days" @@ -17257,20 +17779,21 @@ msgid "90 days" msgstr "90 dagen" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:164 +#, fuzzy msgid "Send as PDF" -msgstr "" +msgstr "Verstuur als PNG" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:168 msgid "Send as PNG" -msgstr "" +msgstr "Verstuur als PNG" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:172 msgid "Send as CSV" -msgstr "" +msgstr "Verstuur als CSV" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:176 msgid "Send as text" -msgstr "" +msgstr "Verstuur als tekst" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:354 #, fuzzy @@ -17284,7 +17807,7 @@ msgstr "Naam waarschuwingsconditie" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:356 #, fuzzy msgid "Alert contents" -msgstr "Cel inhoud" +msgstr "Label Inhoud" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:357 #, fuzzy @@ -17302,8 +17825,9 @@ msgid "owners" msgstr "Eigenaars" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:363 +#, fuzzy msgid "content type" -msgstr "" +msgstr "Stap type" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:364 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:553 @@ -17322,8 +17846,9 @@ msgid "alert condition" msgstr "Naam waarschuwingsconditie" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:367 +#, fuzzy msgid "crontab" -msgstr "" +msgstr "tellen" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:368 #, fuzzy @@ -17333,7 +17858,7 @@ msgstr "Time-out" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:369 #, fuzzy msgid "recipients" -msgstr "Recente" +msgstr "recente" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:370 msgid "Not all required fields are complete. Please provide the following:" @@ -17355,25 +17880,25 @@ msgstr "rapport" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:659 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:675 -#, fuzzy, python-format +#, python-format msgid "%s updated" -msgstr "Laatst bijgewerkt %s" +msgstr "laatst bijgewerkt %s" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1224 msgid "Edit Report" -msgstr "" +msgstr "Bewerk Rapport" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1227 msgid "Edit Alert" -msgstr "" +msgstr "Waarschuwing bewerken" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1230 msgid "Add Report" -msgstr "" +msgstr "Rapport toevoegen" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1233 msgid "Add Alert" -msgstr "" +msgstr "Alarm toevoegen" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1248 #: superset-frontend/src/features/annotationLayers/AnnotationLayerModal.tsx:229 @@ -17409,16 +17934,17 @@ msgstr "Naam van de waarschuwing" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1325 #, fuzzy, python-format msgid "Include description to be sent with %s" -msgstr "Omschrijving (dit is te zien in de lijst)" +msgstr "Voeg een beschrijving toe die zal worden verzonden met uw rapport" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1340 #, fuzzy msgid "Report is active" -msgstr "De poort is gesloten." +msgstr "E-mailrapporten actief" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1340 +#, fuzzy msgid "Alert is active" -msgstr "" +msgstr "E-mailrapporten actief" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1350 msgid "Define the database, SQL query, and triggering conditions for alert." @@ -17448,64 +17974,62 @@ msgstr "Trigger waarschuwing als…" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1415 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1417 msgid "Condition" -msgstr "" +msgstr "Voorwaarde" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1456 msgid "Customize data source, filters, and layout." msgstr "" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1467 +#, fuzzy msgid "Content type" -msgstr "" +msgstr "Stap type" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1471 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1475 #, fuzzy msgid "Select content type" -msgstr "Selecteer parent filters" +msgstr "Selecteer huidige pagina" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1498 #, fuzzy msgid "Select chart to use" -msgstr "Superset grafiek" +msgstr "Selecteer grafieken" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1504 #, fuzzy msgid "Select dashboard" -msgstr "Superset dashboard" +msgstr "Selecteer dashboards" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1521 #, fuzzy msgid "Select dashboard to use" -msgstr "Superset dashboard" +msgstr "Selecteer dashboards" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1534 #, fuzzy msgid "Content format" -msgstr "Datetime formaat" +msgstr "Datum opmaak" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1538 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1550 #, fuzzy msgid "Select format" -msgstr "Superset grafiek" +msgstr "Waarde opmaak" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1559 #: superset-frontend/src/features/reports/ReportModal/index.tsx:269 msgid "Screenshot width" -msgstr "" +msgstr "Schermafbeelding breedte" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1567 #: superset-frontend/src/features/reports/ReportModal/index.tsx:276 msgid "Input custom width in pixels" -msgstr "" +msgstr "Voer aangepaste breedte in pixels in" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1581 -#, fuzzy msgid "Ignore cache when generating report" -msgstr "" -"Rapportage planning uitvoering mislukt bij het genereren van een " -"screenshot." +msgstr "Negeer cache bij genereren van rapport" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1590 msgid "Define delivery schedule, timezone, and frequency settings." @@ -17514,7 +18038,7 @@ msgstr "" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1607 #: superset-frontend/src/features/reports/ReportModal/index.tsx:349 msgid "Timezone" -msgstr "" +msgstr "Tijdzone" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1617 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1622 @@ -17533,9 +18057,8 @@ msgstr "Tijd in seconden" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1649 #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1663 -#, fuzzy msgid "seconds" -msgstr "30 seconden" +msgstr "seconden" #: superset-frontend/src/features/alerts/AlertReportModal.tsx:1655 msgid "Grace period" @@ -17551,9 +18074,8 @@ msgid "Recurring (every)" msgstr "" #: superset-frontend/src/features/alerts/components/AlertReportCronScheduler.tsx:43 -#, fuzzy msgid "CRON Schedule" -msgstr "Rapportageplanning" +msgstr "CRON tijdschema" #: superset-frontend/src/features/alerts/components/AlertReportCronScheduler.tsx:82 #: superset-frontend/src/features/alerts/components/AlertReportCronScheduler.tsx:87 @@ -17606,45 +18128,44 @@ msgstr "Methode voor kennisgeving" #: superset-frontend/src/features/alerts/components/NotificationMethod.tsx:115 msgid "Delivery method" -msgstr "" +msgstr "Levering methode" #: superset-frontend/src/features/alerts/components/NotificationMethod.tsx:118 msgid "Select Delivery Method" -msgstr "" +msgstr "Selecteer verzendmethode" #: superset-frontend/src/features/alerts/components/NotificationMethod.tsx:143 #, fuzzy, python-format msgid "%s recipients" -msgstr "Recente" +msgstr "recente" #: superset-frontend/src/features/alerts/components/NotificationMethod.tsx:155 msgid "Recipients are separated by \",\" or \";\"" msgstr "Ontvangers worden gescheiden door “,” of “;”" #: superset-frontend/src/features/allEntities/AllEntitiesTable.tsx:156 -#, fuzzy msgid "Queries" -msgstr "queries" +msgstr "Queries" #: superset-frontend/src/features/allEntities/AllEntitiesTable.tsx:162 msgid "No entities have this tag currently assigned" -msgstr "" +msgstr "Geen entiteiten hebben deze tag momenteel toegewezen" #: superset-frontend/src/features/allEntities/AllEntitiesTable.tsx:164 msgid "Add tag to entities" -msgstr "" +msgstr "Voeg tag toe aan entiteiten" #: superset-frontend/src/features/annotationLayers/AnnotationLayerModal.tsx:104 msgid "annotation_layer" -msgstr "annotation_layer" +msgstr "annotatie_laag" #: superset-frontend/src/features/annotationLayers/AnnotationLayerModal.tsx:139 msgid "Annotation template updated" -msgstr "" +msgstr "Annotatie sjabloon bijgewerkt" #: superset-frontend/src/features/annotationLayers/AnnotationLayerModal.tsx:154 msgid "Annotation template created" -msgstr "" +msgstr "Annotatie sjabloon gemaakt" #: superset-frontend/src/features/annotationLayers/AnnotationLayerModal.tsx:240 msgid "Edit annotation layer properties" @@ -17666,11 +18187,11 @@ msgstr "aantekening" #: superset-frontend/src/features/annotations/AnnotationModal.tsx:152 msgid "The annotation has been updated" -msgstr "" +msgstr "De annotatie is bijgewerkt" #: superset-frontend/src/features/annotations/AnnotationModal.tsx:168 msgid "The annotation has been saved" -msgstr "" +msgstr "De annotatie is opgeslagen" #: superset-frontend/src/features/annotations/AnnotationModal.tsx:281 #: superset-frontend/src/pages/AnnotationList/index.tsx:193 @@ -17727,7 +18248,7 @@ msgstr "Weet je zeker dat je wilt verwijderen" #: superset-frontend/src/features/tags/TagCard.tsx:104 #, python-format msgid "Modified %s" -msgstr "" +msgstr "Gewijzigd %s" #: superset-frontend/src/features/cssTemplates/CssTemplateModal.tsx:91 msgid "css_template" @@ -17751,15 +18272,15 @@ msgstr "gepubliceerd" #: superset-frontend/src/features/dashboards/DashboardCard.tsx:122 msgid "draft" -msgstr "draft" +msgstr "concept" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:85 msgid "Adjust how this database will interact with SQL Lab." -msgstr "" +msgstr "Pas aan hoe deze database communiceert met SQL Lab." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:98 msgid "Expose database in SQL Lab" -msgstr "" +msgstr "Database weergeven in SQL Lab" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:101 msgid "Allow this database to be queried in SQL Lab" @@ -17779,13 +18300,15 @@ msgstr "CTAS & CVAS SCHEMA" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:145 msgid "Create or select schema..." -msgstr "" +msgstr "Schema aanmaken of selecteren..." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:151 msgid "" "Force all tables and views to be created in this schema when clicking " "CTAS or CVAS in SQL Lab." msgstr "" +"Forceer dat alle tabellen en weergaven binnen dit schema worden gemaakt " +"bij het klikken van CTAS of CVAS in SQL Lab." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:167 msgid "" @@ -17797,25 +18320,29 @@ msgstr "" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:180 msgid "Enable query cost estimation" -msgstr "" +msgstr "Query kosten schatten inschakelen" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:183 msgid "" "For Bigquery, Presto and Postgres, shows a button to compute cost before " "running a query." msgstr "" +"Voor Bigquery, Presto en Postgres, toont een knop om de kosten te " +"berekenen voordat een query wordt uitgevoerd." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:196 msgid "Allow this database to be explored" -msgstr "" +msgstr "Toestaan dat deze database wordt verkend" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:199 msgid "When enabled, users are able to visualize SQL Lab results in Explore." msgstr "" +"Wanneer ingeschakeld, kunnen gebruikers de resultaten van SQL Lab " +"visualiseren in Verkenning." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:212 msgid "Disable SQL Lab data preview queries" -msgstr "" +msgstr "Schakel SQL Lab data preview queries uit" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:215 msgid "" @@ -17823,24 +18350,29 @@ msgid "" "avoid browser performance issues when using databases with very wide " "tables." msgstr "" +"Schakel datavoorvertoning uit bij het ophalen van tabelmetagegevens in " +"SQL Lab. Handig om prestatieproblemen van de browser te voorkomen bij het" +" gebruik van databases met zeer brede tabellen." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:230 msgid "Enable row expansion in schemas" -msgstr "" +msgstr "Rij-expansie in schema's inschakelen" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:233 msgid "" "For Trino, describe full schemas of nested ROW types, expanding them with" " dotted paths" msgstr "" +"Voor Trino, beschrijf volledige schema's van geneste ROW types, breidt ze" +" uit met stippellijnstukken" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:245 msgid "Performance" -msgstr "" +msgstr "Prestaties" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:247 msgid "Adjust performance settings of this database." -msgstr "" +msgstr "Pas de prestatie-instellingen van deze database aan." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:254 msgid "Chart cache timeout" @@ -17850,7 +18382,7 @@ msgstr "Grafiek cache timeout" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:281 #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:302 msgid "Enter duration in seconds" -msgstr "" +msgstr "Voer duur in seconden in" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:265 msgid "" @@ -17858,26 +18390,34 @@ msgid "" " A timeout of 0 indicates that the cache never expires, and -1 bypasses " "the cache. Note this defaults to the global timeout if undefined." msgstr "" +"Duur (in seconden) van de caching time-out voor grafieken van deze " +"database. Een time-out van 0 geeft aan dat de cache nooit verloopt, en -1" +" gaat voorbij aan de cache. Merk op dat de standaard timeout is ingesteld" +" op de globale timeout indien niet gedefinieerd." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:273 msgid "Schema cache timeout" -msgstr "" +msgstr "Schema cache time-out" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:287 msgid "" "Duration (in seconds) of the metadata caching timeout for schemas of this" " database. If left unset, the cache never expires." msgstr "" +"Duur (in seconden) van de metadata caching timeout voor schema's van deze" +" database. Indien dit niet ingesteld is, verloopt de cache niet." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:294 msgid "Table cache timeout" -msgstr "" +msgstr "Tabel cache time-out" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:308 msgid "" "Duration (in seconds) of the metadata caching timeout for tables of this " "database. If left unset, the cache never expires. " msgstr "" +"Duur (in seconden) van de metadata caching timeout voor de tabellen van " +"deze database. Indien dit niet ingesteld is, verloopt de cache niet. " #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:321 #: superset-frontend/src/pages/DatabaseList/index.tsx:341 @@ -17887,7 +18427,7 @@ msgstr "Asynchrone uitvoering van query’s" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:340 msgid "Cancel query on window unload event" -msgstr "" +msgstr "Query annuleren bij window unload gebeurtenis" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:343 msgid "" @@ -17895,16 +18435,18 @@ msgid "" "another page. Available for Presto, Hive, MySQL, Postgres and Snowflake " "databases." msgstr "" +"Beëindig de zoekopdrachten wanneer het browservenster gesloten of " +"navigeert naar een andere pagina. Beschikbaar voor Presto, Hive, MySQL, " +"Postgres en Snowflake databases." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:356 -#, fuzzy msgid "Add extra connection information." -msgstr "Bijkomende informatie" +msgstr "Extra verbindingsinformatie toevoegen." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:362 #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:367 msgid "Secure extra" -msgstr "Secure extra" +msgstr "Beveilig extra" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:377 msgid "" @@ -17913,20 +18455,26 @@ msgid "" "BigQuery which do not conform to the username:password syntax normally " "used by SQLAlchemy." msgstr "" +"JSON string met extra verbindingsconfiguratie. Dit wordt gebruikt om " +"verbindingsinformatie te verstrekken voor systemen zoals Hive, Presto en " +"BigQuery die niet voldoen aan de gebruikersnaam:wachtwoord syntax normaal" +" gesproken gebruikt door SQLAlchemy." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:392 msgid "Enter CA_BUNDLE" -msgstr "" +msgstr "Voer CA_BUNDLE in" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:397 msgid "" "Optional CA_BUNDLE contents to validate HTTPS requests. Only available on" " certain database engines." msgstr "" +"Optionele CA_BUNDLE inhoud voor het valideren van HTTPS-verzoeken. Alleen" +" beschikbaar voor bepaalde database engines." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:412 msgid "Impersonate logged in user (Presto, Trino, Drill, Hive, and GSheets)" -msgstr "" +msgstr "Inloggen als ingelogde gebruiker (Presto, Trino, Drill, Hive en GSheets)" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:417 msgid "" @@ -17936,71 +18484,83 @@ msgid "" "service account, but impersonate the currently logged on user via " "hive.server2.proxy.user property." msgstr "" +"Bij Presto of Trino, alle zoekopdrachten in SQL Lab zullen worden " +"uitgevoerd als de momenteel ingelogde gebruiker die toestemming moet " +"hebben om ze uit te voeren. Als bijenkorf en bijslag. erver2.enable.doAs " +"is ingeschakeld, worden de zoekopdrachten als serviceaccount uitgevoerd, " +"maar imiteer de momenteel ingelogde gebruiker via hive.server2.proxy.user" +" eigenschap." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:437 -#, fuzzy msgid "Allow file uploads to database" -msgstr "Selecteer een Excel-bestand dat moet worden geüpload naar een database." +msgstr "Sta bestandsuploads naar database toe" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:445 msgid "Schemas allowed for File upload" -msgstr "" +msgstr "Schemas toegestaan voor bestandsupload" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:459 -#, fuzzy msgid "A comma-separated list of schemas that files are allowed to upload to." msgstr "" -"Een door komma’s gescheiden lijst van kolommen die als datums moeten " -"worden geparseerd." +"Een komma gescheiden lijst van schema's waar bestanden naar mogen " +"uploaden." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:497 msgid "Additional settings." -msgstr "" +msgstr "Additionele instellingen." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:503 #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:507 msgid "Metadata Parameters" -msgstr "" +msgstr "Metadata Parameters" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:522 msgid "" "The metadata_params object gets unpacked into the sqlalchemy.MetaData " "call." msgstr "" +"De metadata_params object wordt uitgepakt in de sqlalchemy.MetaData " +"oproep." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:529 #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:533 msgid "Engine Parameters" -msgstr "" +msgstr "Engine Parameters" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:548 msgid "" "The engine_params object gets unpacked into the sqlalchemy.create_engine " "call." msgstr "" +"Het engine_params object wordt uitgepakt in de sqlalchemy.create_engine " +"call." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:556 #: superset-frontend/src/features/home/RightMenu.tsx:497 msgid "Version" -msgstr "" +msgstr "Versie" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:562 msgid "Version number" -msgstr "" +msgstr "Versienummer" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:568 msgid "" "Specify the database version. This is used with Presto for query cost " "estimation, and Dremio for syntax changes, among others." msgstr "" +"Geef de database versie op. Dit wordt gebruikt met Presto voor de query " +"kostenraming en Dremio voor syntax veranderingen, enz." #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:581 +#, fuzzy msgid "Disable drill to detail" -msgstr "" +msgstr "Doorklikken naar detail" #: superset-frontend/src/features/databases/DatabaseModal/ExtraOptions.tsx:584 +#, fuzzy msgid "Disables the drill to detail feature for this database." -msgstr "" +msgstr "Er zijn geen voorbeelden gevonden voor deze dataset" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:93 #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:117 @@ -18009,112 +18569,111 @@ msgstr "" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:178 #, python-format msgid "STEP %(stepCurr)s OF %(stepLast)s" -msgstr "" +msgstr "STAP %(stepCurr)s VAN %(stepLast)s" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:98 msgid "Enter Primary Credentials" -msgstr "" +msgstr "Voer primaire aanmeldgegevens in" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:100 msgid "Need help? Learn how to connect your database" -msgstr "" +msgstr "Hulp nodig? Leer hoe je je database verbindt" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:122 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:911 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:933 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1240 msgid "Database connected" -msgstr "" +msgstr "Database verbonden" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:124 msgid "" "Create a dataset to begin visualizing your data as a chart or go to\n" " SQL Lab to query your data." msgstr "" +"Maak een dataset aan om uw gegevens te visualiseren als grafiek of ga " +"naar\n" +" SQL Lab om uw gegevens op te vragen." #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:141 #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:184 #, python-format msgid "Enter the required %(dbModelName)s credentials" -msgstr "" +msgstr "Voer de vereiste %(dbModelName)s aanmeldgegevens in" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:146 msgid "Need help? Learn more about" -msgstr "" +msgstr "Hulp nodig? Leer meer over" #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:152 #, python-format msgid "connecting to %(dbModelName)s." -msgstr "" +msgstr "verbinding maken met %(dbModelName)s." #: superset-frontend/src/features/databases/DatabaseModal/ModalHeader.tsx:169 -#, fuzzy msgid "Select a database to connect" -msgstr "Stopte een onveilige database connectie" +msgstr "Selecteer een database om te verbinden" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:68 msgid "SSH Host" -msgstr "" +msgstr "SSH Host" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:45 #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:73 msgid "e.g. 127.0.0.1" -msgstr "" +msgstr "bijv. 127.0.0.1" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:83 msgid "SSH Port" -msgstr "" +msgstr "SSH Poort" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:87 msgid "22" -msgstr "" +msgstr "22" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:133 #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:105 msgid "e.g. Analytics" -msgstr "" +msgstr "bijv. Analytics" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:117 -#, fuzzy msgid "Login with" -msgstr "Lijndikte" +msgstr "Log in met" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:136 msgid "Private Key & Password" -msgstr "" +msgstr "Privésleutel & wachtwoord" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:148 -#, fuzzy msgid "SSH Password" -msgstr "Wachtwoord" +msgstr "SSH Wachtwoord" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:154 #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:175 #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:152 #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:200 msgid "e.g. ********" -msgstr "" +msgstr "bijv. ********" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:179 msgid "Private Key" -msgstr "" +msgstr "Privésleutel" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:183 msgid "Paste Private Key here" -msgstr "" +msgstr "Plak privésleutel hier" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelForm.tsx:196 -#, fuzzy msgid "Private Key Password" -msgstr "Broker Wachtwoord" +msgstr "Wachtwoord van privésleutel" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelSwitch.tsx:88 msgid "SSH Tunnel" -msgstr "" +msgstr "SSH Tunnel" #: superset-frontend/src/features/databases/DatabaseModal/SSHTunnelSwitch.tsx:90 msgid "SSH Tunnel configuration parameters" -msgstr "" +msgstr "SSH Tunnel configuratie parameters" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:195 #: superset-frontend/src/features/databases/DatabaseModal/SqlAlchemyForm.tsx:52 @@ -18123,7 +18682,7 @@ msgstr "Toon naam" #: superset-frontend/src/features/databases/DatabaseModal/SqlAlchemyForm.tsx:61 msgid "Name your database" -msgstr "" +msgstr "Geef uw database een naam" #: superset-frontend/src/features/databases/DatabaseModal/SqlAlchemyForm.tsx:66 msgid "Pick a name to help you identify this database." @@ -18131,15 +18690,15 @@ msgstr "Kies een naam om je te helpen deze database te identificeren." #: superset-frontend/src/features/databases/DatabaseModal/SqlAlchemyForm.tsx:83 msgid "dialect+driver://username:password@host:port/database" -msgstr "dialect+driver://username:password@host:port/database" +msgstr "dialect+driver://gebruikersnaam:wachtwoord@host:poort/database" #: superset-frontend/src/features/databases/DatabaseModal/SqlAlchemyForm.tsx:89 msgid "Refer to the" -msgstr "" +msgstr "Verwijs naar de" #: superset-frontend/src/features/databases/DatabaseModal/SqlAlchemyForm.tsx:97 msgid "for more information on how to structure your URI." -msgstr "" +msgstr "voor meer informatie over de structuur van uw URI." #: superset-frontend/src/features/databases/DatabaseModal/SqlAlchemyForm.tsx:108 msgid "Test connection" @@ -18152,7 +18711,7 @@ msgstr "Voer een SQLAlchemy URI in om te testen" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:113 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:680 msgid "e.g. world_population" -msgstr "" +msgstr "bijv. wereld_bevolking" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:794 #, fuzzy @@ -18161,7 +18720,7 @@ msgstr "Verbinding mislukt, controleer uw verbindingsinstellingen" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:882 msgid "Database settings updated" -msgstr "" +msgstr "Database instellingen bijgewerkt" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:948 #, python-format @@ -18172,29 +18731,34 @@ msgstr "" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1008 msgid "Or choose from a list of other databases we support:" -msgstr "" +msgstr "Of kies uit een lijst van andere databases die we ondersteunen:" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1010 msgid "Supported databases" -msgstr "" +msgstr "Ondersteunde databases" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1014 msgid "Choose a database..." -msgstr "" +msgstr "Kies een database..." #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1038 msgid "Want to add a new database?" -msgstr "" +msgstr "Wilt u een nieuwe database toevoegen?" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1043 msgid "Any databases that allow connections via SQL Alchemy URIs can be added. " msgstr "" +"Alle databases die verbindingen toestaan via SQL Alchemy URI's kunnen " +"worden toegevoegd. " #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1057 msgid "" "Any databases that allow connections via SQL Alchemy URIs can be added. " "Learn about how to connect a database driver " msgstr "" +"Alle databases die verbindingen via SQL Alchemy URI's toestaan, kunnen " +"worden toegevoegd. Meer informatie over het verbinden met een database " +"driver " #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1149 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1187 @@ -18202,17 +18766,17 @@ msgstr "" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1766 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1927 msgid "Connect" -msgstr "" +msgstr "Verbinden" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1167 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1215 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1927 msgid "Finish" -msgstr "" +msgstr "Beëindigen" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1209 msgid "This database is managed externally, and can't be edited in Superset" -msgstr "" +msgstr "Deze database wordt extern beheerd en kan niet worden bewerkt in Superset" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1374 msgid "" @@ -18221,6 +18785,11 @@ msgid "" "the database configuration are not present in explore files and should be" " added manually after the import if they are needed." msgstr "" +"De wachtwoorden voor de onderstaande databases zijn nodig om ze te " +"importeren. Houd er rekening mee dat de \"Beveilig Extra\" en " +"\"Certificaat\" secties van de database configuratie niet aanwezig zijn " +"in de gevonden bestanden en moeten handmatig worden toegevoegd na de " +"import, indien nodig." #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1484 msgid "" @@ -18234,28 +18803,30 @@ msgstr "" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1557 msgid "Database Creation Error" -msgstr "" +msgstr "Database Creatie Fout" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1558 msgid "" "We are unable to connect to your database. Click \"See more\" for " "database-provided information that may help troubleshoot the issue." msgstr "" +"We kunnen geen verbinding maken met uw database. Klik op \"Meer " +"bekijken\" voor database-gegeven informatie die kan helpen het probleem " +"op te lossen." #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1607 -#, fuzzy msgid "CREATE DATASET" -msgstr "Wijzig dataset" +msgstr "DATASET AANMAKEN" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1617 msgid "QUERY DATA IN SQL LAB" -msgstr "" +msgstr "QUERY DATA IN SQL LAB" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1731 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1771 #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1931 msgid "Connect a database" -msgstr "" +msgstr "Koppel een database" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1771 msgid "Edit database" @@ -18263,17 +18834,19 @@ msgstr "Bewerk database" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1837 msgid "Connect this database using the dynamic form instead" -msgstr "" +msgstr "Verbind deze database met behulp van een dynamisch formulier" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1840 msgid "" "Click this link to switch to an alternate form that exposes only the " "required fields needed to connect this database." msgstr "" +"Klik op deze link om over te schakelen naar een alternatief formulier dat" +" alleen de vereiste velden laat zien om deze database te verbinden." #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1856 msgid "Additional fields may be required" -msgstr "" +msgstr "Mogelijk zijn aanvullende velden verplicht" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1860 msgid "" @@ -18281,174 +18854,180 @@ msgid "" "Advanced tab to successfully connect the database. Learn what " "requirements your databases has " msgstr "" +"Selecteer databases vereist extra velden die moeten worden ingevuld op " +"het tabblad Geavanceerd om de database succesvol te verbinden. Leer welke" +" vereisten uw databases hebben " #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:1982 -#, fuzzy msgid "Import database from file" -msgstr "Importeer databases" +msgstr "Importeer database uit bestand" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:2020 msgid "Connect this database with a SQLAlchemy URI string instead" -msgstr "" +msgstr "Verbind deze database in plaats daarvan met een SQLAlchemy URI" #: superset-frontend/src/features/databases/DatabaseModal/index.tsx:2025 msgid "" "Click this link to switch to an alternate form that allows you to input " "the SQLAlchemy URL for this database manually." msgstr "" +"Klik op deze link om over te schakelen naar een alternatief formulier " +"waarmee u de SQLAlchemy URL voor deze database handmatig kunt invoeren." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:40 msgid "" "This can be either an IP address (e.g. 127.0.0.1) or a domain name (e.g. " "mydatabase.com)." msgstr "" +"Dit kan een IP-adres zijn (bijv. 127.0.0.1) of een domeinnaam (bijv. " +"mijndatabase.com)." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:47 msgid "Host" -msgstr "" +msgstr "Host" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:68 msgid "e.g. 5432" -msgstr "" +msgstr "bijv. 5432" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:70 -#, fuzzy msgid "Port" -msgstr "rapport" +msgstr "Poort" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:91 msgid "e.g. sql/protocolv1/o/12345" -msgstr "" +msgstr "e.g. sql/protocolv1/o/12345" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:94 msgid "Copy the name of the HTTP Path of your cluster." -msgstr "" +msgstr "Kopieer de naam van het HTTP-pad van uw cluster." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:116 msgid "Copy the name of the database you are trying to connect to." -msgstr "" +msgstr "Kopieer de naam van de database waarmee u verbinding probeert te maken." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:176 msgid "Access token" -msgstr "" +msgstr "Toegangstoken" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:197 msgid "Pick a nickname for how the database will display in Superset." -msgstr "" +msgstr "Kies een bijnaam voor de weergave van de database in Superset." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:218 msgid "e.g. param1=value1¶m2=value2" -msgstr "" +msgstr "bijv. param1=value1¶m2=value2" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:219 msgid "Additional Parameters" -msgstr "" +msgstr "Additionele Parameters" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:221 msgid "Add additional custom parameters" -msgstr "" +msgstr "Voeg additionele aangepaste parameters toe" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/CommonParameters.tsx:248 msgid "SSL Mode \"require\" will be used." -msgstr "" +msgstr "SSL-modus \"vereist\" zal worden gebruikt." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:72 msgid "Type of Google Sheets allowed" -msgstr "" +msgstr "Het type Google Sheets toegestaan" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:82 msgid "Publicly shared sheets only" -msgstr "" +msgstr "Alleen openbaar gedeelde sheets" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:85 msgid "Public and privately shared sheets" -msgstr "" +msgstr "Openbare en privé gedeelde sheets" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:93 msgid "How do you want to enter service account credentials?" -msgstr "" +msgstr "Hoe wilt u de serviceaccountgegevens invoeren?" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:101 msgid "Upload JSON file" -msgstr "" +msgstr "Upload JSON bestand" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:105 msgid "Copy and Paste JSON credentials" -msgstr "" +msgstr "Kopieer en plak JSON aanmeldgegevens" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:114 msgid "Service Account" -msgstr "" +msgstr "Service Account" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:120 msgid "Paste content of service credentials JSON file here" -msgstr "" +msgstr "Plak de inhoud van het JSON-bestand met service inloggegevens hier" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:125 msgid "Copy and paste the entire service account .json file here" -msgstr "" +msgstr "Kopieer en plak hier het volledige .json service-account bestand" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:135 msgid "Upload Credentials" -msgstr "" +msgstr "Upload Inloggegevens" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/EncryptedField.tsx:137 msgid "" "Use the JSON file you automatically downloaded when creating your service" " account." msgstr "" +"Gebruik het JSON bestand dat je automatisch hebt gedownload bij het " +"aanmaken van je serviceaccount." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.tsx:39 msgid "Connect Google Sheets as tables to this database" -msgstr "" +msgstr "Verbind Google Sheets als tabellen aan deze database" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.tsx:45 msgid "Google Sheet Name and URL" -msgstr "" +msgstr "Google Sheet Naam en URL" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.tsx:53 msgid "Enter a name for this sheet" -msgstr "" +msgstr "Voer een naam in voor dit blad" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.tsx:86 msgid "Paste the shareable Google Sheet URL here" -msgstr "" +msgstr "Plak de deelbare URL van Google Sheet hier" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/TableCatalog.tsx:106 msgid "Add sheet" -msgstr "" +msgstr "Voeg blad toe" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/ValidatedInputField.tsx:26 msgid "Copy the identifier of the account you are trying to connect to." msgstr "" +"Kopieer de identifier van de account waarmee u verbinding probeert te " +"maken." #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/ValidatedInputField.tsx:29 msgid "e.g. xy12345.us-east-2.aws" -msgstr "" +msgstr "bijv. xy12345.us-oost-2.aws" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/ValidatedInputField.tsx:32 msgid "e.g. compute_wh" -msgstr "" +msgstr "bijv. compute_wh" #: superset-frontend/src/features/databases/DatabaseModal/DatabaseConnectionForm/ValidatedInputField.tsx:36 msgid "e.g. AccountAdmin" -msgstr "" +msgstr "bijv. AccountAdmin" #: superset-frontend/src/features/datasets/DuplicateDatasetModal.tsx:61 -#, fuzzy msgid "Duplicate dataset" -msgstr "Bewerk de dataset" +msgstr "Dupliceer dataset" #: superset-frontend/src/features/datasets/DuplicateDatasetModal.tsx:64 #: superset-frontend/src/pages/DatasetList/index.tsx:487 -#, fuzzy msgid "Duplicate" -msgstr "Tabblad Dupliceren" +msgstr "Dupliceer" #: superset-frontend/src/features/datasets/DuplicateDatasetModal.tsx:66 -#, fuzzy msgid "New dataset name" -msgstr "Dataset naam" +msgstr "Nieuwe dataset naam" #: superset-frontend/src/features/datasets/constants.ts:23 msgid "" @@ -18458,6 +19037,11 @@ msgid "" " export files, and should be added manually after the import if they are " "needed." msgstr "" +"De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met" +" de datasets te importeren. Houd er rekening mee dat de secties " +"\"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet " +"aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden " +"toegevoegd na de import." #: superset-frontend/src/features/datasets/constants.ts:30 msgid "" @@ -18465,70 +19049,69 @@ msgid "" "might cause you to lose some of your work. Are you sure you want to " "overwrite?" msgstr "" +"U importeert één of meer datasets die al bestaan. Overschrijven kan " +"leiden tot verlies van je werk. Weet je zeker dat je wilt overschrijven?" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.tsx:175 -#, fuzzy msgid "Refreshing columns" -msgstr "Time series kolommen" +msgstr "Verversen kolommen" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.tsx:176 -#, fuzzy msgid "Table columns" -msgstr "Geen tijdskolommen" +msgstr "Tabel kolommen" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.tsx:177 -#, fuzzy msgid "Loading" -msgstr "Bezig met laden…" +msgstr "Laden" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.tsx:224 msgid "" "This table already has a dataset associated with it. You can only " "associate one dataset with a table.\n" msgstr "" +"Er is al een dataset aan deze tabel gekoppeld. Je kunt slechts één " +"dataset koppelen met een tabel.\n" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.tsx:227 -#, fuzzy msgid "View Dataset" -msgstr "Bewerk de dataset" +msgstr "Bekijk Dataset" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.tsx:234 #: superset-frontend/src/features/datasets/AddDataset/LeftPanel/index.tsx:164 msgid "This table already has a dataset" -msgstr "" +msgstr "Deze tabel heeft al een dataset" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/MessageContent.tsx:43 msgid "" "Datasets can be created from database tables or SQL queries. Select a " "database table to the left or " msgstr "" +"Datasets kunnen worden gemaakt vanuit databasetabellen of SQL queries. " +"Selecteer een databasetabel links of " #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/MessageContent.tsx:46 msgid "create dataset from SQL query" -msgstr "" +msgstr "maak data uit SQL query" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/MessageContent.tsx:47 msgid " to open SQL Lab. From there you can save the query as a dataset." -msgstr "" +msgstr " om SQL Lab te openen. Vanaf daar kunt u de query opslaan als dataset." #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/MessageContent.tsx:63 -#, fuzzy msgid "Select dataset source" -msgstr "Gebruik de legacy datasource editor" +msgstr "Selecteer dataset bron" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/MessageContent.tsx:64 -#, fuzzy msgid "No table columns" -msgstr "Geen tijdskolommen" +msgstr "Geen tabelkolommen" #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/MessageContent.tsx:65 msgid "" "This database table does not contain any data. Please select a different " "table." -msgstr "" +msgstr "Deze databasetabel bevat geen gegevens. Selecteer een andere tabel." #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/MessageContent.tsx:68 -#, fuzzy msgid "An Error Occurred" msgstr "Er is een fout opgetreden" @@ -18537,40 +19120,38 @@ msgid "" "Unable to load columns for the selected table. Please select a different " "table." msgstr "" +"Niet in staat om kolommen voor de geselecteerde tabel te laden. Selecteer" +" een andere tabel." #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/index.tsx:99 #: superset-frontend/src/features/datasets/AddDataset/DatasetPanel/index.tsx:105 #, python-format msgid "The API response from %s does not match the IDatabaseTable interface." -msgstr "" +msgstr "De API-reactie van %s komt niet overeen met de IDatabaseTable interface." #: superset-frontend/src/features/datasets/AddDataset/EditDataset/index.tsx:52 msgid "Usage" -msgstr "" +msgstr "Gebruik" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx:76 -#, fuzzy msgid "Chart owners" -msgstr "Eigenaar grafiek: %s" +msgstr "Grafiek eigenaars" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx:90 -#, fuzzy msgid "Chart last modified" -msgstr "Laatst gewijzigd" +msgstr "Grafiek laatst gewijzigd" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx:99 -#, fuzzy msgid "Chart last modified by" -msgstr "Laatst gewijzigd door %s" +msgstr "Grafiek laatst gewijzigd door" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx:109 -#, fuzzy msgid "Dashboard usage" -msgstr "[dashboard naam]" +msgstr "Dashboard gebruik" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx:144 msgid "Create chart with dataset" -msgstr "" +msgstr "Maak een grafiek met dataset" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx:177 #: superset-frontend/src/features/home/ChartTable.tsx:89 @@ -18585,64 +19166,52 @@ msgstr "Geen grafieken" #: superset-frontend/src/features/datasets/AddDataset/EditDataset/UsageTab/index.tsx:254 msgid "This dataset is not used to power any charts." -msgstr "" +msgstr "Deze dataset wordt niet gebruikt om enige grafieken aan te sturen." #: superset-frontend/src/features/datasets/AddDataset/Footer/index.tsx:87 -#, fuzzy msgid "Select a database table." -msgstr "Verwijder database" +msgstr "Selecteer een databasetabel." #: superset-frontend/src/features/datasets/AddDataset/Footer/index.tsx:109 -#, fuzzy msgid "Create dataset and create chart" -msgstr "Maak een nieuwe grafiek" +msgstr "Maak dataset aan en maak grafiek" #: superset-frontend/src/features/datasets/AddDataset/Header/index.tsx:36 -#, fuzzy msgid "New dataset" -msgstr "Wijzig dataset" +msgstr "Nieuw dataset" #: superset-frontend/src/features/datasets/AddDataset/Header/index.tsx:39 msgid "Select a database table and create dataset" -msgstr "" +msgstr "Selecteer een database tabel en maak dataset aan" #: superset-frontend/src/features/datasets/AddDataset/Header/index.tsx:83 #: superset-frontend/src/pages/AllEntities/index.tsx:122 -#, fuzzy msgid "dataset name" -msgstr "Dataset naam" +msgstr "dataset naam" #: superset-frontend/src/features/datasets/DatasetSelectLabel/index.tsx:106 #: superset-frontend/src/features/datasets/DatasetSelectLabel/index.tsx:116 -#, fuzzy msgid "Not defined" -msgstr "Ongedefinieerd" +msgstr "Niet gedefinieerd" #: superset-frontend/src/features/datasets/hooks/useDatasetLists.ts:66 #: superset-frontend/src/features/datasets/hooks/useDatasetLists.ts:67 -#, fuzzy msgid "There was an error fetching dataset" -msgstr "" -"Sorry er is een fout opgetreden bij het ophalen van database informatie: " -"%s" +msgstr "Er is een fout opgetreden bij het ophalen van dataset" #: superset-frontend/src/features/datasets/hooks/useGetDatasetRelatedCounts.ts:36 -#, fuzzy msgid "There was an error fetching dataset's related objects" msgstr "" -"Sorry er is een fout opgetreden bij het ophalen van database informatie: " -"%s" +"Er is een fout opgetreden bij het ophalen van dataset gerelateerde " +"objecten" #: superset-frontend/src/features/datasets/metadataBar/useDatasetMetadataBar.tsx:119 -#, fuzzy msgid "There was an error loading the dataset metadata" -msgstr "" -"Sorry er is een fout opgetreden bij het ophalen van database informatie: " -"%s" +msgstr "Er is een fout opgetreden bij het laden van de dataset metagegevens" #: superset-frontend/src/features/home/ActivityTable.tsx:85 msgid "[Untitled]" -msgstr "[Untitled]" +msgstr "[Ongetiteld]" #: superset-frontend/src/features/home/ActivityTable.tsx:86 msgid "Unknown" @@ -18651,7 +19220,7 @@ msgstr "Onbekend" #: superset-frontend/src/features/home/ActivityTable.tsx:115 #, python-format msgid "Viewed %s" -msgstr "" +msgstr "Bekeken %s" #: superset-frontend/src/features/home/ActivityTable.tsx:151 msgid "Edited" @@ -18682,7 +19251,7 @@ msgstr "Mijn" #: superset-frontend/src/features/home/DashboardTable.tsx:203 #: superset-frontend/src/features/home/SavedQueries.tsx:264 msgid "View All »" -msgstr "" +msgstr "Alles weergeven »" #: superset-frontend/src/features/home/DashboardTable.tsx:148 #: superset-frontend/src/pages/DashboardList/index.tsx:236 @@ -18692,61 +19261,55 @@ msgstr "Er is een fout opgetreden tijdens het ophalen van dashboards: %s" #: superset-frontend/src/features/home/EmptyState.tsx:28 msgid "charts" -msgstr "" +msgstr "grafieken" #: superset-frontend/src/features/home/EmptyState.tsx:29 msgid "dashboards" -msgstr "" +msgstr "dashboards" #: superset-frontend/src/features/home/EmptyState.tsx:30 msgid "recents" -msgstr "" +msgstr "recente" #: superset-frontend/src/features/home/EmptyState.tsx:31 msgid "saved queries" -msgstr "" +msgstr "opgeslagen queries" #: superset-frontend/src/features/home/EmptyState.tsx:35 -#, fuzzy msgid "No charts yet" -msgstr "Geen grafieken" +msgstr "Nog geen grafieken" #: superset-frontend/src/features/home/EmptyState.tsx:36 -#, fuzzy msgid "No dashboards yet" -msgstr "Geen dashboards" +msgstr "Nog geen dashboards" #: superset-frontend/src/features/home/EmptyState.tsx:37 -#, fuzzy msgid "No recents yet" -msgstr "Nog geen %s" +msgstr "Nog geen recenten" #: superset-frontend/src/features/home/EmptyState.tsx:38 -#, fuzzy msgid "No saved queries yet" -msgstr "Opgeslagen queries" +msgstr "Nog geen opgeslagen queries" #: superset-frontend/src/features/home/EmptyState.tsx:44 #, python-format msgid "%(other)s charts will appear here" -msgstr "" +msgstr "%(other)s grafieken verschijnen hier" #: superset-frontend/src/features/home/EmptyState.tsx:46 #, python-format msgid "%(other)s dashboards will appear here" -msgstr "" +msgstr "%(other)s dashboards zullen hier verschijnen" #: superset-frontend/src/features/home/EmptyState.tsx:48 #, python-format msgid "%(other)s recents will appear here" -msgstr "" +msgstr "%(other)s recenten verschijnen hier" #: superset-frontend/src/features/home/EmptyState.tsx:50 -#, fuzzy, python-format +#, python-format msgid "%(other)s saved queries will appear here" -msgstr "" -"Onlangs bekeken grafieken, dashboards, en opgeslagen queries zullen hier " -"verschijnen" +msgstr "%(other)s opgeslagen queries zullen hier verschijnen" #: superset-frontend/src/features/home/EmptyState.tsx:103 msgid "Recently viewed charts, dashboards, and saved queries will appear here" @@ -18778,39 +19341,38 @@ msgstr "Je hebt nog geen favorieten!" #: superset-frontend/src/features/home/EmptyState.tsx:181 #, python-format msgid "See all %(tableName)s" -msgstr "" +msgstr "Bekijk alle %(tableName)s" #: superset-frontend/src/features/home/RightMenu.tsx:174 -#, fuzzy msgid "Connect database" -msgstr "Verwijder database" +msgstr "Verbind database" #: superset-frontend/src/features/home/RightMenu.tsx:179 -#, fuzzy msgid "Create dataset" -msgstr "Wijzig dataset" +msgstr "Dataset aanmaken" #: superset-frontend/src/features/home/RightMenu.tsx:185 msgid "Connect Google Sheet" -msgstr "" +msgstr "Verbinden met Google Sheet" #: superset-frontend/src/features/home/RightMenu.tsx:190 -#, fuzzy msgid "Upload CSV to database" -msgstr "Importeer databases" +msgstr "Upload CSV naar database" #: superset-frontend/src/features/home/RightMenu.tsx:197 msgid "Upload columnar file to database" -msgstr "" +msgstr "Upload kolombestand naar database" #: superset-frontend/src/features/home/RightMenu.tsx:204 msgid "Upload Excel file to database" -msgstr "" +msgstr "Upload Excel-bestand naar database" #: superset-frontend/src/features/home/RightMenu.tsx:300 #: superset-frontend/src/features/home/SubMenu.tsx:303 msgid "Enable 'Allow file uploads to database' in any database's settings" msgstr "" +"Schakel 'Sta bestandsuploads naar database toe' in in alle database-" +"instellingen" #: superset-frontend/src/features/home/RightMenu.tsx:478 msgid "Info" @@ -18826,24 +19388,23 @@ msgstr "Over" #: superset-frontend/src/features/home/RightMenu.tsx:492 msgid "Powered by Apache Superset" -msgstr "" +msgstr "Mogelijk gemaakt door Apache Superset" #: superset-frontend/src/features/home/RightMenu.tsx:502 msgid "SHA" -msgstr "" +msgstr "SHA" #: superset-frontend/src/features/home/RightMenu.tsx:507 -#, fuzzy msgid "Build" -msgstr "Herbouw" +msgstr "Bouwen" #: superset-frontend/src/features/home/RightMenu.tsx:527 msgid "Documentation" -msgstr "" +msgstr "Documentatie" #: superset-frontend/src/features/home/RightMenu.tsx:544 msgid "Report a bug" -msgstr "" +msgstr "Meld een bug" #: superset-frontend/src/features/home/RightMenu.tsx:558 msgid "Login" @@ -18895,7 +19456,7 @@ msgstr "Verwijder Query?" #: superset-frontend/src/features/home/SavedQueries.tsx:281 #, python-format msgid "Ran %s" -msgstr "" +msgstr "Heeft %s geduurd" #: superset-frontend/src/features/home/commonMenuData.ts:26 #: superset-frontend/src/features/tags/TagModal.tsx:342 @@ -18916,7 +19477,7 @@ msgstr "Tab naam" #: superset-frontend/src/features/queries/QueryPreviewModal.tsx:156 msgid "User query" -msgstr "User query" +msgstr "Gebruikers query" #: superset-frontend/src/features/queries/QueryPreviewModal.tsx:164 msgid "Executed query" @@ -18939,43 +19500,43 @@ msgstr "Sorry, uw browser ondersteunt het kopiëren niet." #: superset-frontend/src/features/reports/ReportModal/actions.js:68 msgid "There was an issue fetching reports attached to this dashboard." msgstr "" +"Er was een probleem bij het ophalen van rapporten gekoppeld aan dit " +"dashboard." #: superset-frontend/src/features/reports/ReportModal/actions.js:110 msgid "The report has been created" -msgstr "" +msgstr "Het rapport is gemaakt" #: superset-frontend/src/features/reports/ReportModal/actions.js:121 -#, fuzzy msgid "Report updated" -msgstr "Rapport mislukt" +msgstr "Rapport bijgewerkt" #: superset-frontend/src/features/reports/ReportModal/actions.js:136 msgid "We were unable to active or deactivate this report." -msgstr "" +msgstr "We konden dit rapport niet activeren of deactiveren." #: superset-frontend/src/features/reports/ReportModal/actions.js:154 msgid "Your report could not be deleted" -msgstr "" +msgstr "Uw rapport kon niet worden verwijderd" #: superset-frontend/src/features/reports/ReportModal/index.tsx:126 #, python-format msgid "Weekly Report for %s" -msgstr "" +msgstr "Wekelijks Rapport voor %s" #: superset-frontend/src/features/reports/ReportModal/index.tsx:127 msgid "Weekly Report" -msgstr "" +msgstr "Wekelijks Rapport" #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:250 #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:271 #: superset-frontend/src/features/reports/ReportModal/index.tsx:217 msgid "Edit email report" -msgstr "" +msgstr "Bewerk e-mailrapport" #: superset-frontend/src/features/reports/ReportModal/index.tsx:217 -#, fuzzy msgid "Schedule a new email report" -msgstr "E-mailrapporten voor grafieken plannen" +msgstr "Plan een nieuw e-mailrapport" #: superset-frontend/src/features/reports/ReportModal/index.tsx:242 msgid "Message content" @@ -18983,55 +19544,57 @@ msgstr "Inhoud van het bericht" #: superset-frontend/src/features/reports/ReportModal/index.tsx:253 msgid "Text embedded in email" -msgstr "" +msgstr "Tekst ingesloten in e-mail" #: superset-frontend/src/features/reports/ReportModal/index.tsx:257 msgid "Image (PNG) embedded in email" -msgstr "" +msgstr "Afbeelding (PNG) ingesloten in e-mail" #: superset-frontend/src/features/reports/ReportModal/index.tsx:260 msgid "Formatted CSV attached in email" -msgstr "" +msgstr "Opgemaakte CSV gekoppeld aan e-mail" #: superset-frontend/src/features/reports/ReportModal/index.tsx:307 -#, fuzzy msgid "Report Name" -msgstr "Naam rapport" +msgstr "Rapport Naam" #: superset-frontend/src/features/reports/ReportModal/index.tsx:320 msgid "Include a description that will be sent with your report" -msgstr "" +msgstr "Voeg een beschrijving toe die zal worden verzonden met uw rapport" #: superset-frontend/src/features/reports/ReportModal/index.tsx:333 +#, fuzzy msgid "The report will be sent to your email at" msgstr "" +"Een schermafbeelding van het dashboard zal worden verzonden naar uw " +"e-mail om" #: superset-frontend/src/features/reports/ReportModal/index.tsx:366 msgid "Failed to update report" -msgstr "" +msgstr "Bijwerken van rapport mislukt" #: superset-frontend/src/features/reports/ReportModal/index.tsx:367 msgid "Failed to create report" -msgstr "" +msgstr "Aanmaken rapport mislukt" #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:228 #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:232 msgid "Set up an email report" -msgstr "" +msgstr "Stel een e-mailrapport in" #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:246 #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:261 msgid "Email reports active" -msgstr "" +msgstr "E-mailrapporten actief" #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:253 #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:277 msgid "Delete email report" -msgstr "" +msgstr "E-mailrapport verwijderen" #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:286 msgid "Schedule email report" -msgstr "" +msgstr "Plan een e-mailrapport" #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:332 #: superset-frontend/src/pages/AlertReportList/index.tsx:568 @@ -19041,35 +19604,31 @@ msgstr "Deze actie zal %s permanent verwijderen." #: superset-frontend/src/features/reports/ReportModal/HeaderReportDropdown/index.tsx:343 msgid "Delete Report?" -msgstr "" +msgstr "Verwijder Rapport?" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:151 -#, fuzzy msgid "rowlevelsecurity" -msgstr "Beveiligingsfilter op rijniveau" +msgstr "rij-level-beveiliging" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:278 msgid "Rule added" -msgstr "" +msgstr "Regel toegevoegd" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:349 -#, fuzzy msgid "Edit Rule" -msgstr "Bewerk query" +msgstr "Bewerk Regel" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:349 msgid "Add Rule" -msgstr "" +msgstr "Regel toevoegen" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:367 -#, fuzzy msgid "Rule Name" -msgstr "Query naam" +msgstr "Regel Naam" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:369 -#, fuzzy msgid "The name of the rule must be unique" -msgstr "De naam moet uniek zijn" +msgstr "De naam van de regel moet uniek zijn" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:377 msgid "" @@ -19078,15 +19637,20 @@ msgid "" "except the roles defined in the filter, and can be used to define what " "users can see if no RLS filters within a filter group apply to them." msgstr "" +"Normale filters voegen \"where\" clausules toe voor zoekopdrachten als " +"een gebruiker deel uitmaakt van een rol waarnaar wordt verwezen in het " +"filter, basisfilters passen filters toe op alle zoekopdrachten, behalve " +"de rollen die gedefinieerd zijn in het filter, en kan worden gebruikt om " +"te bepalen wat gebruikers kunnen zien als er geen RLB-filters binnen een " +"filtergroep op hen van toepassing zijn." #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:398 -#, fuzzy msgid "These are the datasets this filter will be applied to." -msgstr "Dit zijn de tabellen waarop dit filter zal worden toegepast." +msgstr "Dit zijn de datasets waarop dit filter zal worden toegepast." #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:417 msgid "Excluded roles" -msgstr "" +msgstr "Uitgesloten rollen" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:420 msgid "" @@ -19094,13 +19658,16 @@ msgid "" "For base filters, these are the roles that the filter DOES NOT apply to, " "e.g. Admin if admin should see all data." msgstr "" +"Voor reguliere filters zijn dit de rollen waarop dit filter zal worden " +"toegepast. Voor de basisfilters zijn dit de rollen waarop het filter NIET" +" van toepassing is, bijv. Admin als de beheerder alle gegevens zou moeten" +" zien." #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:445 #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:141 #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:276 -#, fuzzy msgid "Group Key" -msgstr "Groep per" +msgstr "Groep Sleutel" #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:447 msgid "" @@ -19113,6 +19680,15 @@ msgid "" "filter (department = 'Finance' OR department = 'Marketing') AND (region =" " 'Europe')." msgstr "" +"Filters met dezelfde groepssleutel worden binnen de groep ge-ORed, " +"terwijl verschillende filtergroepen samen met elkaar worden ge-ANDed. " +"Niet-gedefinieerde groepssleutels worden behandeld als unieke groepen, " +"d.w.z. ze worden niet gegroepeerd. Bijvoorbeeld, als een tabel drie " +"filters heeft, waarvan er twee voor afdelingen Financiën en Marketing " +"zijn (groepssleutel = 'afdeling'), en er wordt verwezen naar de regio " +"Europa (groepssleutel = 'regio'), de filterclausule zou het filter " +"toepassen (afdeling = 'Financiën' OR afdeling = 'Marketing') AND (regio =" +" 'Europa')." #: superset-frontend/src/features/rls/RowLevelSecurityModal.tsx:465 #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:146 @@ -19127,17 +19703,22 @@ msgid "" " a user belongs to a RLS filter role, a base filter can be created with " "the clause `1 = 0` (always false)." msgstr "" +"Dit is de voorwaarde die aan de WHERE clausule zal worden toegevoegd. Om " +"bijvoorbeeld alleen rijen terug te krijgen voor een bepaalde client, kan " +"je een standaard filter definiëren met de clausule `client_id = 9`. Om " +"geen rijen te weergeven, tenzij een gebruiker tot een RLB filterrol " +"behoort, kan een basis filter kan worden gemaakt met de clausule `1 = 0` " +"(altijd onwaar)." #: superset-frontend/src/features/rls/constants.ts:24 #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:271 msgid "Regular" -msgstr "" +msgstr "Normaal" #: superset-frontend/src/features/rls/constants.ts:28 #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:272 -#, fuzzy msgid "Base" -msgstr "database" +msgstr "Basis" #: superset-frontend/src/features/tags/BulkTagModal.tsx:74 #, python-format @@ -19145,69 +19726,62 @@ msgid "" "%s items could not be tagged because you don’t have edit permissions to " "all selected objects." msgstr "" +"%s items kunnen niet worden getagd omdat u geen bewerkrechten heeft voor " +"de geselecteerde objecten." #: superset-frontend/src/features/tags/BulkTagModal.tsx:81 #, python-format msgid "Tagged %s %ss" -msgstr "" +msgstr "Getagt %s %ss" #: superset-frontend/src/features/tags/BulkTagModal.tsx:84 -#, fuzzy msgid "Failed to tag items" -msgstr "Alles deselecteren" +msgstr "Fout bij het taggen van items" #: superset-frontend/src/features/tags/BulkTagModal.tsx:94 msgid "Bulk tag" -msgstr "" +msgstr "Bulk label" #: superset-frontend/src/features/tags/BulkTagModal.tsx:121 #, python-format msgid "You are adding tags to %s %ss" -msgstr "" +msgstr "U voegt labels toe aan %s %ss" #: superset-frontend/src/features/tags/BulkTagModal.tsx:123 -#, fuzzy msgid "tags" -msgstr "Status" +msgstr "tags" #: superset-frontend/src/features/tags/BulkTagModal.tsx:132 -#, fuzzy msgid "Select Tags" -msgstr "Alles deselecteren" +msgstr "Selecteer Tags" #: superset-frontend/src/features/tags/TagModal.tsx:237 -#, fuzzy msgid "Tag updated" -msgstr "Laatst bijgewerkt %s" +msgstr "Tag bijgewerkt" #: superset-frontend/src/features/tags/TagModal.tsx:255 -#, fuzzy msgid "Tag created" -msgstr "werd gecreëerd" +msgstr "Tag aangemaakt" #: superset-frontend/src/features/tags/TagModal.tsx:290 -#, fuzzy msgid "Tag name" -msgstr "Tab naam" +msgstr "Tag naam" #: superset-frontend/src/features/tags/TagModal.tsx:294 msgid "Name of your tag" -msgstr "" +msgstr "Naam van je tag" #: superset-frontend/src/features/tags/TagModal.tsx:301 -#, fuzzy msgid "Add description of your tag" -msgstr "Schrijf een omschrijving voor uw zoekopdracht." +msgstr "Voeg een beschrijving van je tag toe" #: superset-frontend/src/features/tags/TagModal.tsx:307 -#, fuzzy msgid "Select dashboards" -msgstr "Superset dashboard" +msgstr "Selecteer dashboards" #: superset-frontend/src/features/tags/TagModal.tsx:333 -#, fuzzy msgid "Select saved queries" -msgstr "Opgeslagen queries" +msgstr "Selecteer opgeslagen queries" #: superset-frontend/src/filters/components/Range/RangeFilterPlugin.tsx:316 msgid "Chosen non-numeric column" @@ -19219,7 +19793,7 @@ msgstr "Gekozen niet-numerieke kolom" #: superset-frontend/src/filters/components/TimeColumn/controlPanel.ts:25 #: superset-frontend/src/filters/components/TimeGrain/controlPanel.ts:25 msgid "UI Configuration" -msgstr "" +msgstr "UI Configuratie" #: superset-frontend/src/filters/components/Range/controlPanel.ts:53 #: superset-frontend/src/filters/components/Select/controlPanel.ts:87 @@ -19227,7 +19801,7 @@ msgstr "" #: superset-frontend/src/filters/components/TimeColumn/controlPanel.ts:33 #: superset-frontend/src/filters/components/TimeGrain/controlPanel.ts:33 msgid "Filter value is required" -msgstr "" +msgstr "Filterwaarde is vereist" #: superset-frontend/src/filters/components/Range/controlPanel.ts:56 #: superset-frontend/src/filters/components/Select/controlPanel.ts:90 @@ -19235,19 +19809,19 @@ msgstr "" #: superset-frontend/src/filters/components/TimeColumn/controlPanel.ts:36 #: superset-frontend/src/filters/components/TimeGrain/controlPanel.ts:36 msgid "User must select a value before applying the filter" -msgstr "" +msgstr "Gebruiker moet een waarde selecteren voordat hij de filter toepast" #: superset-frontend/src/filters/components/Range/controlPanel.ts:65 msgid "Single value" -msgstr "" +msgstr "Enkele waarde" #: superset-frontend/src/filters/components/Range/controlPanel.ts:68 msgid "Use only a single value." -msgstr "" +msgstr "Gebruik slechts één waarde." #: superset-frontend/src/filters/components/Range/index.ts:29 msgid "Range filter plugin using AntD" -msgstr "" +msgstr "Bereik filterplugin met behulp van AntD" #: superset-frontend/src/filters/components/Range/index.ts:31 #: superset-frontend/src/filters/components/Select/index.ts:32 @@ -19255,11 +19829,11 @@ msgstr "" #: superset-frontend/src/filters/components/TimeColumn/index.ts:31 #: superset-frontend/src/filters/components/TimeGrain/index.ts:31 msgid "Experimental" -msgstr "" +msgstr "Experimenteel" #: superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:133 msgid " (excluded)" -msgstr "" +msgstr " (uitgesloten)" #: superset-frontend/src/filters/components/Select/SelectFilterPlugin.tsx:210 #: superset-frontend/src/filters/components/TimeColumn/TimeColumnFilterPlugin.tsx:86 @@ -19274,27 +19848,27 @@ msgstr "Controle op oplopend sorteren" #: superset-frontend/src/filters/components/Select/controlPanel.ts:74 msgid "Can select multiple values" -msgstr "" +msgstr "Kan meerdere waarden selecteren" #: superset-frontend/src/filters/components/Select/controlPanel.ts:101 msgid "Select first filter value by default" -msgstr "" +msgstr "Selecteer de eerste filterwaarde als standaard" #: superset-frontend/src/filters/components/Select/controlPanel.ts:107 msgid "When using this option, default value can’t be set" -msgstr "" +msgstr "Bij gebruik van deze optie kan de standaardwaarde niet worden ingesteld" #: superset-frontend/src/filters/components/Select/controlPanel.ts:120 msgid "Inverse selection" -msgstr "" +msgstr "Selectie omkeren" #: superset-frontend/src/filters/components/Select/controlPanel.ts:122 msgid "Exclude selected values" -msgstr "" +msgstr "Geselecteerde waarden uitsluiten" #: superset-frontend/src/filters/components/Select/controlPanel.ts:133 msgid "Dynamically search all filter values" -msgstr "" +msgstr "Dynamisch alle filterwaarden zoeken" #: superset-frontend/src/filters/components/Select/controlPanel.ts:135 msgid "" @@ -19303,14 +19877,18 @@ msgid "" " enable dynamically searching that loads filter values as users type (may" " add stress to your database)." msgstr "" +"Standaard laadt elk filter maximaal 1000 keuzes bij de initiële lading. " +"Vink dit selectievakje aan als u meer dan 1000 filterwaarden hebt en het " +"dynamisch zoeken naar gebruikers als gebruikerstype wilt inschakelen (kan" +" stress toevoegen aan uw database)." #: superset-frontend/src/filters/components/Select/index.ts:29 msgid "Select filter plugin using AntD" -msgstr "" +msgstr "Selecteer filter plugin met behulp van AntD" #: superset-frontend/src/filters/components/Time/index.ts:28 msgid "Custom time filter plugin" -msgstr "" +msgstr "Aangepaste tijdfilter plugin" #: superset-frontend/src/filters/components/TimeColumn/TimeColumnFilterPlugin.tsx:85 msgid "No time columns" @@ -19318,23 +19896,23 @@ msgstr "Geen tijdskolommen" #: superset-frontend/src/filters/components/TimeColumn/index.ts:29 msgid "Time column filter plugin" -msgstr "" +msgstr "Tijdkolom filter plugin" #: superset-frontend/src/filters/components/TimeGrain/index.ts:29 msgid "Time grain filter plugin" -msgstr "" +msgstr "Tijdsinterval filter plugin" #: superset-frontend/src/pages/AlertReportList/index.tsx:65 msgid "Working" -msgstr "" +msgstr "Werken" #: superset-frontend/src/pages/AlertReportList/index.tsx:67 msgid "Not triggered" -msgstr "" +msgstr "Niet geactiveerd" #: superset-frontend/src/pages/AlertReportList/index.tsx:68 msgid "On Grace" -msgstr "" +msgstr "Op Grace" #: superset-frontend/src/pages/AlertReportList/index.tsx:113 #: superset-frontend/src/pages/AlertReportList/index.tsx:140 @@ -19416,11 +19994,9 @@ msgid "All" msgstr "Alle" #: superset-frontend/src/pages/AlertReportList/index.tsx:466 -#, fuzzy, python-format +#, python-format msgid "An error occurred while fetching owners values: %s" -msgstr "" -"Er is een fout opgetreden tijdens het ophalen van de grafiek eigenaars " -"waarden: %s" +msgstr "Er is een fout opgetreden bij het ophalen van eigenaars waarden: %s" #: superset-frontend/src/pages/AlertReportList/index.tsx:473 #: superset-frontend/src/pages/DashboardList/index.tsx:322 @@ -19442,8 +20018,8 @@ msgstr "Status" #, python-format msgid "An error occurred while fetching dataset datasource values: %s" msgstr "" -"Er is een fout opgetreden bij het ophalen van dataset datasource waarden:" -" %s" +"Er is een fout opgetreden bij het ophalen van dataset gegevensbron " +"waarden: %s" #: superset-frontend/src/pages/AlertReportList/index.tsx:519 #: superset-frontend/src/pages/AlertReportList/index.tsx:523 @@ -19469,16 +20045,12 @@ msgid "Are you sure you want to delete the selected %s?" msgstr "Weet u zeker dat u de geselecteerde %s wilt verwijderen?" #: superset-frontend/src/pages/AllEntities/index.tsx:180 -#, fuzzy msgid "Error Fetching Tagged Objects" -msgstr "" -"Sorry er is een fout opgetreden bij het ophalen van database informatie: " -"%s" +msgstr "Fout bij ophalen van getagde objecten" #: superset-frontend/src/pages/AllEntities/index.tsx:234 -#, fuzzy msgid "Edit Tag" -msgstr "Bewerk Log" +msgstr "Bewerk Tag" #: superset-frontend/src/pages/AnnotationLayerList/index.tsx:110 #, python-format @@ -19496,7 +20068,6 @@ msgid "Delete template" msgstr "Verwijder template" #: superset-frontend/src/pages/AnnotationLayerList/index.tsx:245 -#, fuzzy msgid "Changed by" msgstr "Gewijzigd door" @@ -19537,20 +20108,20 @@ msgid "No annotation yet" msgstr "Nog geen aantekeningen" #: superset-frontend/src/pages/AnnotationList/index.tsx:264 -#, fuzzy, python-format +#, python-format msgid "Annotation Layer %s" -msgstr "Aantekeningenlagen" +msgstr "Aannotatielaag %s" #: superset-frontend/src/pages/AnnotationList/index.tsx:267 #: superset-frontend/src/pages/AnnotationList/index.tsx:269 #: superset-frontend/src/pages/ExecutionLogList/index.tsx:185 msgid "Back to all" -msgstr "" +msgstr "Terug naar alles" #: superset-frontend/src/pages/AnnotationList/index.tsx:287 -#, fuzzy, python-format +#, python-format msgid "Are you sure you want to delete %s?" -msgstr "Weet je zeker dat je wilt verwijderen" +msgstr "Weet u zeker dat u %s wilt verwijderen?" #: superset-frontend/src/pages/AnnotationList/index.tsx:298 msgid "Delete Annotation?" @@ -19562,17 +20133,15 @@ msgstr "Weet u zeker dat u de geselecteerde aantekeningen wilt verwijderen?" #: superset-frontend/src/pages/Chart/index.tsx:57 msgid "Failed to load chart data" -msgstr "" +msgstr "Laden van grafiekgegevens mislukt" #: superset-frontend/src/pages/ChartCreation/index.tsx:292 -#, fuzzy msgid "view instructions" -msgstr "Tijd in seconden" +msgstr "bekijk instructies" #: superset-frontend/src/pages/ChartCreation/index.tsx:296 -#, fuzzy msgid "Add a dataset" -msgstr "Voeg dataset toe" +msgstr "Een dataset toevoegen" #: superset-frontend/src/pages/ChartCreation/index.tsx:329 #: superset-frontend/src/pages/ChartCreation/index.tsx:340 @@ -19581,11 +20150,11 @@ msgstr "Kies een dataset" #: superset-frontend/src/pages/ChartCreation/index.tsx:349 msgid "Choose chart type" -msgstr "" +msgstr "Kies grafiektype" #: superset-frontend/src/pages/ChartCreation/index.tsx:367 msgid "Please select both a Dataset and a Chart type to proceed" -msgstr "" +msgstr "Selecteer een Dataset en een grafiek type om verder te gaan" #: superset-frontend/src/pages/ChartList/index.tsx:94 msgid "" @@ -19595,6 +20164,11 @@ msgid "" " export files, and should be added manually after the import if they are " "needed." msgstr "" +"De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met" +" de grafieken te importeren. Houd er rekening mee dat de secties " +"\"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet " +"aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden " +"toegevoegd na de import." #: superset-frontend/src/pages/ChartList/index.tsx:101 msgid "" @@ -19602,10 +20176,12 @@ msgid "" "might cause you to lose some of your work. Are you sure you want to " "overwrite?" msgstr "" +"U importeert een of meer grafieken die al bestaan. Overschrijven kan " +"leiden tot verlies van je werk. Weet je zeker dat je wilt overschrijven?" #: superset-frontend/src/pages/ChartList/index.tsx:230 msgid "Chart imported" -msgstr "" +msgstr "Grafiek geïmporteerd" #: superset-frontend/src/pages/ChartList/index.tsx:258 #, python-format @@ -19614,7 +20190,7 @@ msgstr "Er was een probleem met het verwijderen van de geselecteerde grafieken: #: superset-frontend/src/pages/ChartList/index.tsx:292 msgid "An error occurred while fetching dashboards" -msgstr "" +msgstr "Er is een fout opgetreden bij het ophalen van dashboards" #: superset-frontend/src/pages/ChartList/index.tsx:556 #: superset-frontend/src/pages/ChartList/index.tsx:663 @@ -19631,7 +20207,7 @@ msgstr "Elke" #: superset-frontend/src/pages/SavedQueryList/index.tsx:494 #: superset-frontend/src/pages/Tags/index.tsx:324 msgid "Tag" -msgstr "" +msgstr "Tag" #: superset-frontend/src/pages/ChartList/index.tsx:635 #, python-format @@ -19644,7 +20220,7 @@ msgstr "" #: superset-frontend/src/pages/DashboardList/index.tsx:551 #: superset-frontend/src/pages/DatasetList/index.tsx:590 msgid "Certified" -msgstr "" +msgstr "Gecertificeerd" #: superset-frontend/src/pages/ChartList/index.tsx:697 #: superset-frontend/src/pages/DashboardList/index.tsx:591 @@ -19666,7 +20242,7 @@ msgstr "Meest recente wijziging" #: superset-frontend/src/pages/ChartList/index.tsx:772 msgid "Import charts" -msgstr "Import grafieken " +msgstr "Import grafieken" #: superset-frontend/src/pages/ChartList/index.tsx:796 msgid "Are you sure you want to delete the selected charts?" @@ -19706,6 +20282,11 @@ msgid "" " export files, and should be added manually after the import if they are " "needed." msgstr "" +"De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met" +" de dashboards te importeren. Houd er rekening mee dat de secties " +"\"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet " +"aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden " +"toegevoegd na de import." #: superset-frontend/src/pages/DashboardList/index.tsx:80 msgid "" @@ -19719,7 +20300,7 @@ msgstr "" #: superset-frontend/src/pages/DashboardList/index.tsx:177 msgid "Dashboard imported" -msgstr "" +msgstr "Dashboard geïmporteerd" #: superset-frontend/src/pages/DashboardList/index.tsx:262 msgid "There was an issue deleting the selected dashboards: " @@ -19744,23 +20325,20 @@ msgstr "" "gegevens: %s" #: superset-frontend/src/pages/DatabaseList/index.tsx:231 -#, fuzzy msgid "Upload file to database" -msgstr "Bewerk database" +msgstr "Upload bestand naar database" #: superset-frontend/src/pages/DatabaseList/index.tsx:234 -#, fuzzy msgid "Upload CSV" -msgstr "Upload Excel" +msgstr "Upload CSV" #: superset-frontend/src/pages/DatabaseList/index.tsx:241 msgid "Upload columnar file" -msgstr "" +msgstr "Upload kolombestand" #: superset-frontend/src/pages/DatabaseList/index.tsx:248 -#, fuzzy msgid "Upload Excel file" -msgstr "Upload Excel" +msgstr "Upload Excel-bestand" #: superset-frontend/src/pages/DatabaseList/index.tsx:344 #: superset-frontend/src/pages/DatabaseList/index.tsx:512 @@ -19790,6 +20368,10 @@ msgid "" "users have %s SQL Lab tabs using this database open. Are you sure you " "want to continue? Deleting the database will break those objects." msgstr "" +"De database %s is gekoppeld aan %s grafieken die verschijnen op %s " +"dashboards en gebruikers hebben %s SQL Lab tabbladen met behulp van deze " +"database. Weet u zeker dat u wilt doorgaan? Verwijderen van de database " +"zal deze objecten breken." #: superset-frontend/src/pages/DatabaseList/index.tsx:587 msgid "Delete Database?" @@ -19797,7 +20379,7 @@ msgstr "Database verwijderen?" #: superset-frontend/src/pages/DatasetList/index.tsx:201 msgid "Dataset imported" -msgstr "" +msgstr "Dataset geïmporteerd" #: superset-frontend/src/pages/DatasetList/index.tsx:237 msgid "An error occurred while fetching dataset related data" @@ -19822,9 +20404,8 @@ msgstr "Virtuele dataset" #: superset-frontend/src/pages/DatasetList/index.tsx:364 #: superset-frontend/src/pages/DatasetList/index.tsx:533 -#, fuzzy msgid "Virtual" -msgstr "virtueel" +msgstr "Virtueel" #: superset-frontend/src/pages/DatasetList/index.tsx:548 #, python-format @@ -19855,14 +20436,13 @@ msgid "There was an issue deleting the selected datasets: %s" msgstr "Er was een probleem bij het verwijderen van de geselecteerde datasets: %s" #: superset-frontend/src/pages/DatasetList/index.tsx:720 -#, fuzzy msgid "There was an issue duplicating the dataset." -msgstr "Er was een probleem bij het verwijderen van de geselecteerde datasets: %s" +msgstr "Er was een probleem bij het dupliceren van de dataset." #: superset-frontend/src/pages/DatasetList/index.tsx:736 -#, fuzzy, python-format +#, python-format msgid "There was an issue duplicating the selected datasets: %s" -msgstr "Er was een probleem bij het verwijderen van de geselecteerde datasets: %s" +msgstr "Er was een probleem met het dupliceren van de geselecteerde datasets: %s" #: superset-frontend/src/pages/DatasetList/index.tsx:750 #, python-format @@ -19871,6 +20451,9 @@ msgid "" "you sure you want to continue? Deleting the dataset will break those " "objects." msgstr "" +"De dataset %s is gekoppeld aan %s grafieken die verschijnen op %s " +"dashboards. Weet u zeker dat u wilt doorgaan? Het verwijderen van de " +"dataset zal deze objecten verbreken." #: superset-frontend/src/pages/DatasetList/index.tsx:771 msgid "Delete Dataset?" @@ -19920,7 +20503,6 @@ msgid "Error message" msgstr "Foutmelding" #: superset-frontend/src/pages/ExecutionLogList/index.tsx:166 -#, fuzzy msgid "Alert" msgstr "Waarschuwing" @@ -19930,23 +20512,23 @@ msgid "There was an issue fetching your recent activity: %s" msgstr "Er was een probleem bij het ophalen van uw recente activiteit: %s" #: superset-frontend/src/pages/Home/index.tsx:271 -#, fuzzy, python-format +#, python-format msgid "There was an issue fetching your dashboards: %s" -msgstr "Er was een probleem met het ophalen van uw dashboards: %s" +msgstr "Er was een probleem bij het ophalen van uw dashboards: %s" #: superset-frontend/src/pages/Home/index.tsx:282 -#, fuzzy, python-format +#, python-format msgid "There was an issue fetching your chart: %s" -msgstr "Er was een probleem met het ophalen van je grafiek: %s" +msgstr "Er was een probleem bij het ophalen van uw grafiek: %s" #: superset-frontend/src/pages/Home/index.tsx:294 -#, fuzzy, python-format +#, python-format msgid "There was an issue fetching your saved queries: %s" -msgstr "Er was een probleem met het ophalen van uw opgeslagen zoekopdrachten: %s" +msgstr "Er was een probleem bij het ophalen van uw opgeslagen queries: %s" #: superset-frontend/src/pages/Home/index.tsx:344 msgid "Thumbnails" -msgstr "" +msgstr "Thumbnails" #: superset-frontend/src/pages/Home/index.tsx:373 msgid "Recents" @@ -19974,36 +20556,33 @@ msgstr "Er is een fout opgetreden tijdens het ophalen van databasewaarden: %s" #: superset-frontend/src/pages/QueryHistoryList/index.tsx:412 #, python-format msgid "An error occurred while fetching user values: %s" -msgstr "" +msgstr "Er is een fout opgetreden bij het ophalen van gebruikers waarden: %s" #: superset-frontend/src/pages/QueryHistoryList/index.tsx:426 msgid "Search by query text" msgstr "Zoek op querytekst" #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:96 -#, fuzzy, python-format +#, python-format msgid "Deleted %s" -msgstr "Verwijderd: %s" +msgstr "Verwijderd %s" #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:110 -#, fuzzy msgid "Deleted" -msgstr "verwijder" +msgstr "Verwijderd" #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:113 -#, fuzzy, python-format +#, python-format msgid "There was an issue deleting rules: %s" -msgstr "Er was een probleem met het verwijderen van %s: %s" +msgstr "Er was een probleem met het verwijderen van regels: %s" #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:244 -#, fuzzy msgid "No Rules yet" -msgstr "Nog geen %s" +msgstr "Nog geen regels" #: superset-frontend/src/pages/RowLevelSecurityList/index.tsx:334 -#, fuzzy msgid "Are you sure you want to delete the selected rules?" -msgstr "Weet je zeker dat je de geselecteerde lagen wilt verwijderen?" +msgstr "Weet u zeker dat u de geselecteerde regels wilt verwijderen?" #: superset-frontend/src/pages/SavedQueryList/index.tsx:65 msgid "" @@ -20013,6 +20592,11 @@ msgid "" "present in export files, and should be added manually after the import if" " they are needed." msgstr "" +"De wachtwoorden voor de onderstaande databases zijn nodig om ze samen met" +" de opgeslagen queries te importeren. Houd er rekening mee dat de secties" +" \"Beveilig Extra\" en \"Certificaat\" van de database-configuratie niet " +"aanwezig zijn in exportbestanden, en moet indien nodig handmatig worden " +"toegevoegd na de import." #: superset-frontend/src/pages/SavedQueryList/index.tsx:72 msgid "" @@ -20020,10 +20604,13 @@ msgid "" "Overwriting might cause you to lose some of your work. Are you sure you " "want to overwrite?" msgstr "" +"U importeert een of meer opgeslagen query's die al bestaan. Overschrijven" +" kan leiden tot verlies van je werk. Weet je zeker dat je wilt " +"overschrijven?" #: superset-frontend/src/pages/SavedQueryList/index.tsx:156 msgid "Query imported" -msgstr "" +msgstr "Query geïmporteerd" #: superset-frontend/src/pages/SavedQueryList/index.tsx:174 #, python-format @@ -20070,25 +20657,25 @@ msgstr "queries" #: superset-frontend/src/pages/Tags/index.tsx:86 msgid "tag" -msgstr "" +msgstr "tag" #: superset-frontend/src/pages/Tags/index.tsx:130 -#, fuzzy msgid "No Tags created" -msgstr "werd gecreëerd" +msgstr "Geen Labels aangemaakt" #: superset-frontend/src/pages/Tags/index.tsx:352 -#, fuzzy msgid "Are you sure you want to delete the selected tags?" -msgstr "Weet u zeker dat u de geselecteerde %s wilt verwijderen?" +msgstr "Weet u zeker dat u de geselecteerde tags wilt verwijderen?" #: superset-frontend/src/utils/downloadAsImage.ts:55 msgid "Image download failed, please refresh and try again." msgstr "" +"Afbeelding downloaden mislukt, gelieve te vernieuwen en probeer het " +"opnieuw." #: superset-frontend/src/utils/downloadAsPdf.ts:55 msgid "PDF download failed, please refresh and try again." -msgstr "" +msgstr "PDF download is mislukt, vernieuw en probeer het opnieuw." #: superset-frontend/src/utils/getChartRequiredFieldsMissingMessage.ts:26 #, python-format @@ -20096,52 +20683,54 @@ msgid "" "Select values in highlighted field(s) in the control panel. Then run the " "query by clicking on the %s button." msgstr "" +"Selecteer de waarden in de gemarkeerde veld(en) in het controlepaneel. " +"Voer vervolgens de query uit door te klikken op de %s knop." #: superset-frontend/src/views/CRUD/hooks.ts:112 #, python-format msgid "An error occurred while fetching %s info: %s" -msgstr "" +msgstr "Er is een fout opgetreden bij het ophalen van %s info: %s" #: superset-frontend/src/views/CRUD/hooks.ts:180 #: superset-frontend/src/views/CRUD/hooks.ts:271 #: superset-frontend/src/views/CRUD/hooks.ts:359 #, python-format msgid "An error occurred while fetching %ss: %s" -msgstr "" +msgstr "Er is een fout opgetreden bij het ophalen van %s: %s" #: superset-frontend/src/views/CRUD/hooks.ts:314 #, python-format msgid "An error occurred while creating %ss: %s" -msgstr "" +msgstr "Er is een fout opgetreden tijdens het aanmaken van %s: %s" #: superset-frontend/src/views/CRUD/hooks.ts:445 msgid "Please re-export your file and try importing again" -msgstr "" +msgstr "Exporteer uw bestand opnieuw en probeer opnieuw te importeren" #: superset-frontend/src/views/CRUD/hooks.ts:512 #: superset-frontend/src/views/CRUD/hooks.ts:528 #, python-format msgid "An error occurred while importing %s: %s" -msgstr "" +msgstr "Er is een fout opgetreden tijdens het importeren van %s: %s" #: superset-frontend/src/views/CRUD/hooks.ts:604 #, python-format msgid "There was an error fetching the favorite status: %s" -msgstr "" +msgstr "Er is een fout opgetreden bij het ophalen van de favoriete status: %s" #: superset-frontend/src/views/CRUD/hooks.ts:627 #, python-format msgid "There was an error saving the favorite status: %s" -msgstr "" +msgstr "Er is een fout opgetreden bij het opslaan van de favoriete status: %s" #: superset-frontend/src/views/CRUD/hooks.ts:710 msgid "Connection looks good!" -msgstr "" +msgstr "Verbinding ziet er goed uit!" #: superset-frontend/src/views/CRUD/hooks.ts:713 #, python-format msgid "ERROR: %s" -msgstr "" +msgstr "FOUT: %s" #: superset-frontend/src/views/CRUD/utils.tsx:209 msgid "There was an error fetching your recent activity:" @@ -20161,18 +20750,22 @@ msgid "" "Templated link, it's possible to include {{ metric }} or other values " "coming from the controls." msgstr "" +"Sjabloonlink, het is mogelijk om {{ metric }} of andere waarden uit de " +"bedieningselementen op te nemen." #: superset-frontend/src/visualizations/TimeTable/index.ts:27 msgid "Time-series Table" -msgstr "Time-series Table" +msgstr "Tijdreeks Tabel" #: superset-frontend/src/visualizations/TimeTable/index.ts:28 msgid "" "Compare multiple time series charts (as sparklines) and related metrics " "quickly." msgstr "" +"Vergelijk snel meerdere tijds-series grafieken (als sparklines) en " +"gerelateerde metrieken." #: superset-frontend/src/visualizations/dashboardComponents/ExampleComponent/ExampleComponent.tsx:29 #, python-format msgid "We have the following keys: %s" -msgstr "" +msgstr "We hebben de volgende sleutels: %s" From a67b0edfb25f041ba5a218a89a0beab13be727c1 Mon Sep 17 00:00:00 2001 From: Evan Rusackas Date: Wed, 29 May 2024 11:45:51 -0600 Subject: [PATCH 57/60] fix(docs): fix url typo to fix a broken image (#28765) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6d73918104a62..aab794ec55ec4 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ Here are some of the major database solutions that are supported: postgresql mysql mssql-server - db2 + db2 sqlite sybase mariadb From 453a645356b540520de7ab1cb3339a0353cfbc5c Mon Sep 17 00:00:00 2001 From: "JUST.in DO IT" Date: Wed, 29 May 2024 11:17:37 -0700 Subject: [PATCH 58/60] fix(sqllab): Sort db selector options by the API order (#28749) --- .../DatabaseSelector.test.tsx | 33 ++++++++++++++++++- .../src/components/DatabaseSelector/index.tsx | 26 +++++++++++++-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/superset-frontend/src/components/DatabaseSelector/DatabaseSelector.test.tsx b/superset-frontend/src/components/DatabaseSelector/DatabaseSelector.test.tsx index 32373301f6030..72b22d4f282c6 100644 --- a/superset-frontend/src/components/DatabaseSelector/DatabaseSelector.test.tsx +++ b/superset-frontend/src/components/DatabaseSelector/DatabaseSelector.test.tsx @@ -154,6 +154,12 @@ const fakeDatabaseApiResult = { ], }; +const fakeDatabaseApiResultInReverseOrder = { + ...fakeDatabaseApiResult, + ids: [2, 1], + result: [...fakeDatabaseApiResult.result].reverse(), +}; + const fakeSchemaApiResult = { count: 2, result: ['information_schema', 'public'], @@ -168,7 +174,8 @@ const fakeFunctionNamesApiResult = { function_names: [], }; -const databaseApiRoute = 'glob:*/api/v1/database/?*'; +const databaseApiRoute = + 'glob:*/api/v1/database/?*order_column:database_name,order_direction*'; const catalogApiRoute = 'glob:*/api/v1/database/*/catalogs/?*'; const schemaApiRoute = 'glob:*/api/v1/database/*/schemas/?*'; const tablesApiRoute = 'glob:*/api/v1/database/*/tables/*'; @@ -241,6 +248,30 @@ test('Should database select display options', async () => { expect(await screen.findByText('test-mysql')).toBeInTheDocument(); }); +test('should display options in order of the api response', async () => { + fetchMock.get(databaseApiRoute, fakeDatabaseApiResultInReverseOrder, { + overwriteRoutes: true, + }); + const props = createProps(); + render(, { + useRedux: true, + store, + }); + const select = screen.getByRole('combobox', { + name: 'Select database or type to search databases', + }); + expect(select).toBeInTheDocument(); + userEvent.click(select); + const options = await screen.findAllByRole('option'); + + expect(options[0]).toHaveTextContent( + `${fakeDatabaseApiResultInReverseOrder.result[0].id}`, + ); + expect(options[1]).toHaveTextContent( + `${fakeDatabaseApiResultInReverseOrder.result[1].id}`, + ); +}); + test('Should fetch the search keyword when total count exceeds initial options', async () => { fetchMock.get( databaseApiRoute, diff --git a/superset-frontend/src/components/DatabaseSelector/index.tsx b/superset-frontend/src/components/DatabaseSelector/index.tsx index 14753c6dfe9dd..308ebc34bdb17 100644 --- a/superset-frontend/src/components/DatabaseSelector/index.tsx +++ b/superset-frontend/src/components/DatabaseSelector/index.tsx @@ -16,8 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -import React, { ReactNode, useState, useMemo, useEffect, useRef } from 'react'; +import React, { + ReactNode, + useState, + useMemo, + useEffect, + useRef, + useCallback, +} from 'react'; import { styled, SupersetClient, t } from '@superset-ui/core'; +import type { LabeledValue as AntdLabeledValue } from 'antd/lib/select'; import rison from 'rison'; import { AsyncSelect, Select } from 'src/components'; import Label from 'src/components/Label'; @@ -124,6 +132,10 @@ const SelectLabel = ({ const EMPTY_CATALOG_OPTIONS: CatalogOption[] = []; const EMPTY_SCHEMA_OPTIONS: SchemaOption[] = []; +interface AntdLabeledValueWithOrder extends AntdLabeledValue { + order: number; +} + export default function DatabaseSelector({ db, formMode = false, @@ -153,6 +165,11 @@ export default function DatabaseSelector({ const schemaRef = useRef(schema); schemaRef.current = schema; const { addSuccessToast } = useToasts(); + const sortComparator = useCallback( + (itemA: AntdLabeledValueWithOrder, itemB: AntdLabeledValueWithOrder) => + itemA.order - itemB.order, + [], + ); const loadDatabases = useMemo( () => @@ -165,7 +182,7 @@ export default function DatabaseSelector({ totalCount: number; }> => { const queryParams = rison.encode({ - order_columns: 'database_name', + order_column: 'database_name', order_direction: 'asc', page, page_size: pageSize, @@ -191,7 +208,8 @@ export default function DatabaseSelector({ if (result.length === 0) { if (onEmptyResults) onEmptyResults(search); } - const options = result.map((row: DatabaseObject) => ({ + + const options = result.map((row: DatabaseObject, order: number) => ({ label: ( , null, ); From 020c79970f49a599402befc475c2bd18c275146b Mon Sep 17 00:00:00 2001 From: Vitor Avila <96086495+Vitor-Avila@users.noreply.github.com> Date: Wed, 29 May 2024 16:05:48 -0300 Subject: [PATCH 59/60] fix(reports): Update the element class to wait for when taking a screenshot (#28745) --- superset/utils/webdriver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/superset/utils/webdriver.py b/superset/utils/webdriver.py index fc7f18aca930c..d79a9c7463d7f 100644 --- a/superset/utils/webdriver.py +++ b/superset/utils/webdriver.py @@ -187,7 +187,7 @@ def get_screenshot( # pylint: disable=too-many-locals, too-many-statements try: # chart containers didn't render logger.debug("Wait for chart containers to draw at url: %s", url) - slice_container_locator = page.locator(".slice_container") + slice_container_locator = page.locator(".chart-container") slice_container_locator.first.wait_for() for slice_container_elem in slice_container_locator.all(): slice_container_elem.wait_for() @@ -375,7 +375,7 @@ def get_screenshot(self, url: str, element_name: str, user: User) -> bytes | Non logger.debug("Wait for chart containers to draw at url: %s", url) WebDriverWait(driver, self._screenshot_locate_wait).until( EC.visibility_of_all_elements_located( - (By.CLASS_NAME, "slice_container") + (By.CLASS_NAME, "chart-container") ) ) except TimeoutException as ex: From 643ee175440c499ab634e0e32781c0d7226793cd Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Wed, 29 May 2024 15:07:21 -0400 Subject: [PATCH 60/60] chore: remove duplicate code in `SqlaTable` (#28752) --- superset/connectors/sqla/models.py | 45 +----------------------------- superset/models/helpers.py | 4 ++- superset/sql_parse.py | 4 +-- 3 files changed, 5 insertions(+), 48 deletions(-) diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index a566079b0fcab..587a184e17904 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -21,7 +21,6 @@ import dataclasses import logging import re -from collections import defaultdict from collections.abc import Hashable from dataclasses import dataclass, field from datetime import datetime, timedelta @@ -70,7 +69,7 @@ from sqlalchemy.sql.expression import Label, TextAsFrom from sqlalchemy.sql.selectable import Alias, TableClause -from superset import app, db, is_feature_enabled, security_manager +from superset import app, db, security_manager from superset.commands.dataset.exceptions import DatasetNotFoundError from superset.common.db_query_status import QueryStatus from superset.connectors.sqla.utils import ( @@ -1603,48 +1602,6 @@ def is_alias_used_in_orderby(col: ColumnElement) -> bool: if is_alias_used_in_orderby(col): col.name = f"{col.name}__" - def get_sqla_row_level_filters( - self, - template_processor: BaseTemplateProcessor, - ) -> list[TextClause]: - """ - Return the appropriate row level security filters for this table and the - current user. A custom username can be passed when the user is not present in the - Flask global namespace. - - :param template_processor: The template processor to apply to the filters. - :returns: A list of SQL clauses to be ANDed together. - """ - all_filters: list[TextClause] = [] - filter_groups: dict[int | str, list[TextClause]] = defaultdict(list) - try: - for filter_ in security_manager.get_rls_filters(self): - clause = self.text( - f"({template_processor.process_template(filter_.clause)})" - ) - if filter_.group_key: - filter_groups[filter_.group_key].append(clause) - else: - all_filters.append(clause) - - if is_feature_enabled("EMBEDDED_SUPERSET"): - for rule in security_manager.get_guest_rls_filters(self): - clause = self.text( - f"({template_processor.process_template(rule['clause'])})" - ) - all_filters.append(clause) - - grouped_filters = [or_(*clauses) for clauses in filter_groups.values()] - all_filters.extend(grouped_filters) - return all_filters - except TemplateError as ex: - raise QueryObjectValidationError( - _( - "Error in jinja expression in RLS filters: %(msg)s", - msg=ex.message, - ) - ) from ex - def text(self, clause: str) -> TextClause: return self.db_engine_spec.get_text_clause(clause) diff --git a/superset/models/helpers.py b/superset/models/helpers.py index dffb285663d47..e707284706607 100644 --- a/superset/models/helpers.py +++ b/superset/models/helpers.py @@ -805,7 +805,7 @@ def get_fetch_values_predicate( def get_sqla_row_level_filters( self, - template_processor: BaseTemplateProcessor, + template_processor: Optional[BaseTemplateProcessor] = None, ) -> list[TextClause]: """ Return the appropriate row level security filters for this table and the @@ -815,6 +815,8 @@ def get_sqla_row_level_filters( :param template_processor: The template processor to apply to the filters. :returns: A list of SQL clauses to be ANDed together. """ + template_processor = template_processor or self.get_template_processor() + all_filters: list[TextClause] = [] filter_groups: dict[Union[int, str], list[TextClause]] = defaultdict(list) try: diff --git a/superset/sql_parse.py b/superset/sql_parse.py index 192a998c3fbdc..8046e8f74f629 100644 --- a/superset/sql_parse.py +++ b/superset/sql_parse.py @@ -1269,10 +1269,8 @@ def get_rls_for_table( if not dataset: return None - template_processor = dataset.get_template_processor() predicate = " AND ".join( - str(filter_) - for filter_ in dataset.get_sqla_row_level_filters(template_processor) + str(filter_) for filter_ in dataset.get_sqla_row_level_filters() ) if not predicate: return None