diff --git a/.github/workflows/bump-version.yaml b/.github/workflows/bump-version.yaml index c1bfff74a..d2f4a3d72 100644 --- a/.github/workflows/bump-version.yaml +++ b/.github/workflows/bump-version.yaml @@ -42,9 +42,13 @@ jobs: - name: Push branch if: steps.tag_version.outputs.new_version run: | - git checkout -b bot/v${{ steps.tag_version.outputs.new_version }} - git push -d origin bot/v${{ steps.tag_version.outputs.new_version }} - git push origin bot/v${{ steps.tag_version.outputs.new_version }} + branch_name="bot/v${{ steps.tag_version.outputs.new_version }}" + git fetch --prune origin + if git show-ref --quiet refs/remotes/origin/$branch_name; then + git push --delete origin $branch_name + fi + git checkout -b $branch_name || git checkout $branch_name + git push origin $branch_name - name: Create Pull Request if: steps.tag_version.outputs.new_version id: cpr diff --git a/.github/workflows/compile-translations.yaml b/.github/workflows/compile-translations.yaml index 62f488554..dc199422b 100644 --- a/.github/workflows/compile-translations.yaml +++ b/.github/workflows/compile-translations.yaml @@ -30,11 +30,13 @@ jobs: run: echo "::set-output name=date::$(date +'%Y-%m-%d')" - name: Push branch run: | - git status - git log -l 3 - git checkout -b bot/translations/${{ steps.date.outputs.date }} - git push -d origin bot/translations/${{ steps.date.outputs.date }} - git push origin bot/translations/${{ steps.date.outputs.date }} + branch_name="bot/translations/${{ steps.date.outputs.date }}" + git fetch --prune origin + if git show-ref --quiet refs/remotes/origin/$branch_name; then + git push --delete origin $branch_name + fi + git checkout -b $branch_name || git checkout $branch_name + git push origin $branch_name - name: Create Pull Request uses: peter-evans/create-pull-request@v5 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 83a3b702d..1a3beaa59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v0.24.0 - 2023-08-04 + +### [0.24.0](https://github.com/openedx/tutor-contrib-aspects/compare/v0.23.2...v0.24.0) (2023-08-04) + +#### Features + +- add superset owners configurable variable ([870a9d9](https://github.com/openedx/tutor-contrib-aspects/commit/870a9d9dd03e7ef1f0715b459d7d6150342ef117)) +- allow to translate markdown elements ([ceaf898](https://github.com/openedx/tutor-contrib-aspects/commit/ceaf89893f8ebe0c4e1296fdd4566d5b21808654)) + +## v0.23.2 - 2023-08-04 + +### [0.23.2](https://github.com/openedx/tutor-contrib-aspects/compare/v0.23.1...v0.23.2) (2023-08-04) + +### Bug Fixes + +- remove loading locale file before processing ([3401796](https://github.com/openedx/tutor-contrib-aspects/commit/3401796061b62e39f2c9cc6414b59a78565c5f80)) + +## v0.23.1 - 2023-08-04 + +### [0.23.1](https://github.com/openedx/tutor-contrib-aspects/compare/v0.23.0...v0.23.1) (2023-08-04) + +### Bug Fixes + +- use yaml delimiter to separate translations ([a95706d](https://github.com/openedx/tutor-contrib-aspects/commit/a95706d048f69762b03572498fd5c748020d931e)) + +## v0.23.0 - 2023-08-03 + +### [0.23.0](https://github.com/openedx/tutor-contrib-aspects/compare/v0.22.0...v0.23.0) (2023-08-03) + +#### Features + +- include current day in instructor dashboard ([19b7b47](https://github.com/openedx/tutor-contrib-aspects/commit/19b7b472dad2dc09c3f1900a3fc25055b92e879c)), closes [#246](https://github.com/openedx/tutor-contrib-aspects/issues/246) + +#### Bug Fixes + +- allow to translate dashboard headers ([12bc030](https://github.com/openedx/tutor-contrib-aspects/commit/12bc03018d1e82621562f531027e92c6ba8f313a)) +- remove extra parens from org filters ([dfef41c](https://github.com/openedx/tutor-contrib-aspects/commit/dfef41cbe6020b444a4701303c7e1c2d9b55927c)), closes [#258](https://github.com/openedx/tutor-contrib-aspects/issues/258) +- upgrade event-routing-backends to 5.5.4 ([454063c](https://github.com/openedx/tutor-contrib-aspects/commit/454063c226860f7477d24020b38e27b0b811bbc8)) + ## v0.22.0 - 2023-08-02 ### [0.22.0](https://github.com/openedx/tutor-contrib-aspects/compare/v0.21.0...v0.22.0) (2023-08-02) diff --git a/requirements/dev.txt b/requirements/dev.txt index b8d2ebd0f..fd4e3dee2 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -43,7 +43,7 @@ click==8.1.6 # black # transifex-python # tutor -cryptography==41.0.2 +cryptography==41.0.3 # via secretstorage dill==0.3.7 # via pylint @@ -97,7 +97,7 @@ mccabe==0.7.0 # via pylint mdurl==0.1.2 # via markdown-it-py -more-itertools==10.0.0 +more-itertools==10.1.0 # via jaraco-classes mypy==1.4.1 # via @@ -142,7 +142,7 @@ pycryptodome==3.18.0 # via # -r requirements/base.txt # tutor -pygments==2.15.1 +pygments==2.16.1 # via # readme-renderer # rich diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 5748bf667..ed274ee9c 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -10,7 +10,7 @@ click==8.1.6 # via pip-tools packaging==23.1 # via build -pip-tools==7.1.0 +pip-tools==7.2.0 # via -r requirements/pip-tools.in pyproject-hooks==1.0.0 # via build @@ -19,7 +19,7 @@ tomli==2.0.1 # build # pip-tools # pyproject-hooks -wheel==0.41.0 +wheel==0.41.1 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index fb1908e60..5e2f7602d 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,7 +4,7 @@ # # make upgrade # -wheel==0.41.0 +wheel==0.41.1 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: diff --git a/scripts/utils.py b/scripts/utils.py index d691a48bd..aa70d24e0 100644 --- a/scripts/utils.py +++ b/scripts/utils.py @@ -58,6 +58,9 @@ def extract_text(asset, type): if meta.get("text"): strings.append(meta["text"]) + if meta.get("code"): + strings.append(meta["code"]) + elif type == "charts": strings.append(asset["slice_name"]) elif type == "databases": @@ -101,9 +104,10 @@ def compile_translations(root_path): translation = tx.get_translation(string, language, None) translations[language][string] = translation if translation else "" + file.write("---\n") file.write(yaml.dump(translations)) - file.write("{{ patch('superset-extra-asset-translations')}}\n") + file.write("\n{{ patch('superset-extra-asset-translations')}}\n") def push_translations(root_path): diff --git a/setup.cfg b/setup.cfg index 3961b76cf..c5a44b132 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,4 @@ [bumpversion] -current_version = 0.22.0 +current_version = 0.24.0 commit = False tag = False diff --git a/tutoraspects/__about__.py b/tutoraspects/__about__.py index e3726b957..c7667f1d6 100644 --- a/tutoraspects/__about__.py +++ b/tutoraspects/__about__.py @@ -2,4 +2,4 @@ Expose some package metadata. """ -__version__ = "0.22.0" +__version__ = "0.24.0" diff --git a/tutoraspects/plugin.py b/tutoraspects/plugin.py index 4a64e7949..ab3f2233f 100644 --- a/tutoraspects/plugin.py +++ b/tutoraspects/plugin.py @@ -46,8 +46,8 @@ ( "OPENEDX_EXTRA_PIP_REQUIREMENTS", [ - "openedx-event-sink-clickhouse==0.1.0", - "edx-event-routing-backends==5.5.0", + "openedx-event-sink-clickhouse==0.1.1", + "edx-event-routing-backends==5.5.5", ], ), # ClickHouse xAPI settings @@ -165,6 +165,7 @@ }, ), ("SUPERSET_ADMIN_EMAIL", "admin@openedx.org"), + ("SUPERSET_OWNERS", []), # Set to 0 to have no row limit. ("SUPERSET_ROW_LIMIT", 100_000), ("SUPERSET_SENTRY_DSN", ""), diff --git a/tutoraspects/templates/aspects/apps/superset/pythonpath/assets.yaml b/tutoraspects/templates/aspects/apps/superset/pythonpath/assets.yaml index 764750578..adac15309 100644 --- a/tutoraspects/templates/aspects/apps/superset/pythonpath/assets.yaml +++ b/tutoraspects/templates/aspects/apps/superset/pythonpath/assets.yaml @@ -1,43 +1,6 @@ -{% include 'openedx-assets/Open_edX_Admin_Dashboard_2.yaml' %} -{% include 'openedx-assets/xapi_events_all_parsed.yaml' %} -{% include 'openedx-assets/xAPI_problem_events_by_block_7.yaml' %} -{% include 'openedx-assets/xAPI_events_by_course_11.yaml' %} -{% include 'openedx-assets/OpenedX_Clickhouse.yaml' %} -{% include 'openedx-assets/course_overviews.yaml' %} -{% include 'openedx-assets/Instructor_dashboard_9.yaml' %} -{% include 'openedx-assets/Watches_per_video_10.yaml' %} -{% include 'openedx-assets/fact_video_plays.yaml' %} -{% include 'openedx-assets/Transcript_closed_captioning_usage_per_video_11.yaml' %} -{% include 'openedx-assets/fact_transcript_usage.yaml' %} -{% include 'openedx-assets/Cumulative_enrollments_by_mode_15.yaml' %} -{% include 'openedx-assets/fact_enrollments.yaml' %} -{% include 'openedx-assets/Enrollment_events_per_day_16.yaml' %} -{% include 'openedx-assets/course_blocks.yaml' %} -{% include 'openedx-assets/dim_courses.yaml' %} -{% include 'openedx-assets/Enrolled_learners_per_day_36.yaml' %} -{% include 'openedx-assets/fact_enrollments_by_day.yaml' %} -{% include 'openedx-assets/Attempts_to_first_success_42.yaml' %} -{% include 'openedx-assets/Hints_and_answers_displayed_per_correct_answer_43.yaml' %} -{% include 'openedx-assets/Problem_submission_counts_38.yaml' %} -{% include 'openedx-assets/Response_distribution_39.yaml' %} -{% include 'openedx-assets/dim_course_problems.yaml' %} -{% include 'openedx-assets/fact_learner_problem_summary.yaml' %} -{% include 'openedx-assets/fact_problem_responses.yaml' %} -{% include 'openedx-assets/hints_per_success.yaml' %} -{% include 'openedx-assets/dim_course_videos.yaml' %} -{% include 'openedx-assets/fact_watched_video_segments.yaml' %} -{% include 'openedx-assets/Watched_video_segments_51.yaml' %} -{% include 'openedx-assets/Actor_IDs_over_time_47.yaml' %} -{% include 'openedx-assets/Courses_44.yaml' %} -{% include 'openedx-assets/Event_type_45.yaml' %} -{% include 'openedx-assets/Events_per_course_46.yaml' %} -{% include 'openedx-assets/Last_course_syncronized_41.yaml' %} -{% include 'openedx-assets/Last_received_xAPI_events_40.yaml' %} -{% include 'openedx-assets/Operator_Dashboard_5.yaml' %} -{% include 'openedx-assets/Organizations_42.yaml' %} -{% include 'openedx-assets/Synchronized_Courses_39.yaml' %} -{% include 'openedx-assets/Unique_actors_43.yaml' %} -{% include 'openedx-assets/xAPI_events_38.yaml' %} +{% for file in "openedx-assets/assets/"|walk_templates %} +{% include file %} +{% endfor %} {{ patch("superset-extra-assets") }} diff --git a/tutoraspects/templates/aspects/apps/superset/pythonpath/create_assets.py b/tutoraspects/templates/aspects/apps/superset/pythonpath/create_assets.py index b95d92f5f..5e51483bb 100644 --- a/tutoraspects/templates/aspects/apps/superset/pythonpath/create_assets.py +++ b/tutoraspects/templates/aspects/apps/superset/pythonpath/create_assets.py @@ -38,9 +38,21 @@ ASSETS_FILE_PATH = "/app/pythonpath/assets.yaml" ASSETS_ZIP_PATH = "/app/assets/assets.zip" -ASSETS_TRANSLATIONS = yaml.load( - open(TRANSLATIONS_FILE_PATH, "r"), Loader=yaml.FullLoader -) +merged_data = {} +with open(TRANSLATIONS_FILE_PATH, "r") as file: + yaml_content = file.read() + yaml_documents = yaml_content.split("\n---\n") + + for doc in yaml_documents: + data = yaml.safe_load(doc) + if data is not None: + for lang, translations in data.items(): + if lang not in merged_data: + merged_data[lang] = {} + merged_data[lang].update(translations) + + +ASSETS_TRANSLATIONS = merged_data def main(): @@ -137,7 +149,7 @@ def generate_translated_dashboard_elements(copy, language): """Generate translated elements for a dashboard""" position = copy.get("position", {}) - SUPPORTED_TYPES = ["TAB", "HEADER"] + SUPPORTED_TYPES = {"TAB": "text", "HEADER": "text", "MARKDOWN": "code"} for element in position.values(): if not isinstance(element, dict): @@ -158,16 +170,17 @@ def generate_translated_dashboard_elements(copy, language): meta["sliceName"] = translation meta["uuid"] = element_id - elif element.get("type") in SUPPORTED_TYPES: + elif element.get("type") in SUPPORTED_TYPES.keys(): + text_key = SUPPORTED_TYPES.get(element["type"]) chart_body_id = element.get("id") - if not meta or not meta.get("text"): + if not meta or not meta.get(text_key): continue element_type = element.get("type") element_id = chart_body_id - translation = get_translation(meta["text"], language) + translation = get_translation(meta[text_key], language) - meta["text"] = translation + meta[text_key] = translation if translation and element_type and element_id: print( @@ -215,11 +228,22 @@ def create_zip_and_import_assets(): def update_dashboard_roles(roles): """Update the roles of the dashboards""" + owners_username = {{SUPERSET_OWNERS}} + + owners = [] + + for owner in owners_username: + user = security_manager.find_user(username=owner) + if user: + owners.append(user) + for dashboard_uuid, role_ids in roles.items(): dashboard = db.session.query(Dashboard).filter_by(uuid=dashboard_uuid).one() print("Importing dashboard roles", dashboard_uuid, role_ids) dashboard.roles = role_ids dashboard.published = True + if owners: + dashboard.owners = owners db.session.commit() diff --git a/tutoraspects/templates/aspects/apps/superset/pythonpath/locale.yaml b/tutoraspects/templates/aspects/apps/superset/pythonpath/locale.yaml index 5aae405f6..504d90172 100644 --- a/tutoraspects/templates/aspects/apps/superset/pythonpath/locale.yaml +++ b/tutoraspects/templates/aspects/apps/superset/pythonpath/locale.yaml @@ -1,3 +1,4 @@ +--- de: Actor IDs over time: '' Attempts to first success: '' @@ -8,12 +9,10 @@ de: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -25,12 +24,9 @@ de: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' es: Actor IDs over time: IDs de actores a lo largo del tiempo Attempts to first success: "Intentos de primer \xE9xito" @@ -41,13 +37,11 @@ es: Enrollment events per day: "Eventos de inscripci\xF3n por d\xEDa" Event type: Tipo de evento Events per course: Eventos por curso - Events per day: "Eventos por d\xEDa" Hints and answers displayed per correct answer: Sugerencias y respuestas mostradas por respuesta correcta Instructor dashboard: Panel del Instructor Last course syncronized: "\xDAltimo curso sincronizado" Last received xAPI events: "\xDAltimo evento xAPI recibido" - Open edX Admin Dashboard: Panel de Administracion de Open edX Operator Dashboard: Panel de Operador Organizations: Organizaciones Problem engagement: "Participaci\xF3n en problemas" @@ -60,12 +54,9 @@ es: \ por video" Unique actors: "Actores \xFAnicos" Video engagement: "Participaci\xF3n en videos" - Video events: "Eventos de V\xEDdeo" Watched video segments: Segmentos de video vistos Watches per video: "Vistas por v\xEDdeo" xAPI events: Eventos xAPI - xAPI events by course: Eventos xAPI por curso - xAPI problem events by block: Eventos de problema xAPI por bloque fr: Actor IDs over time: '' Attempts to first success: '' @@ -76,12 +67,10 @@ fr: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -93,12 +82,9 @@ fr: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' it: Actor IDs over time: '' Attempts to first success: '' @@ -109,12 +95,10 @@ it: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -126,12 +110,9 @@ it: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' ja: Actor IDs over time: '' Attempts to first success: '' @@ -142,12 +123,10 @@ ja: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -159,12 +138,9 @@ ja: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' ko: Actor IDs over time: '' Attempts to first success: '' @@ -175,12 +151,10 @@ ko: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -192,12 +166,9 @@ ko: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' nl: Actor IDs over time: '' Attempts to first success: '' @@ -208,12 +179,10 @@ nl: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -225,12 +194,9 @@ nl: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' pt: Actor IDs over time: '' Attempts to first success: '' @@ -241,12 +207,10 @@ pt: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -258,12 +222,9 @@ pt: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' ru: Actor IDs over time: '' Attempts to first success: '' @@ -274,12 +235,10 @@ ru: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -291,12 +250,9 @@ ru: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' sk: Actor IDs over time: '' Attempts to first success: '' @@ -307,12 +263,10 @@ sk: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -324,12 +278,9 @@ sk: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' sl: Actor IDs over time: '' Attempts to first success: '' @@ -340,12 +291,10 @@ sl: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -357,12 +306,9 @@ sl: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' zh: Actor IDs over time: '' Attempts to first success: '' @@ -373,12 +319,10 @@ zh: Enrollment events per day: '' Event type: '' Events per course: '' - Events per day: '' Hints and answers displayed per correct answer: '' Instructor dashboard: '' Last course syncronized: '' Last received xAPI events: '' - Open edX Admin Dashboard: '' Operator Dashboard: '' Organizations: '' Problem engagement: '' @@ -390,10 +334,8 @@ zh: Transcript/closed captioning usage per video: '' Unique actors: '' Video engagement: '' - Video events: '' Watched video segments: '' Watches per video: '' xAPI events: '' - xAPI events by course: '' - xAPI problem events by block: '' + {{ patch('superset-extra-asset-translations')}} diff --git a/tutoraspects/templates/openedx-assets/Open_edX_Admin_Dashboard_2.yaml b/tutoraspects/templates/openedx-assets/Open_edX_Admin_Dashboard_2.yaml deleted file mode 100644 index 99db93217..000000000 --- a/tutoraspects/templates/openedx-assets/Open_edX_Admin_Dashboard_2.yaml +++ /dev/null @@ -1,182 +0,0 @@ -- _file_name: Open_edX_Admin_Dashboard_2.yaml - _roles: - - {{ SUPERSET_ROLES_MAPPING.admin }} - css: '' - dashboard_title: Open edX Admin Dashboard - description: null - metadata: - chart_configuration: {} - color_scheme: '' - default_filters: '{}' - expanded_slices: {} - label_colors: {} - native_filter_configuration: - - cascadeParentIds: [] - chartsInScope: - - 7 - - 8 - - 9 - - 10 - - 11 - controlValues: - defaultToFirstItem: false - enableEmptyFilter: false - inverseSelection: false - multiSelect: true - searchAllOptions: true - defaultDataMask: - extraFormData: {} - filterState: {} - ownState: {} - description: '' - filterType: filter_select - id: NATIVE_FILTER-yb49rspT2 - name: Course ID - scope: - excluded: [] - rootPath: - - ROOT_ID - tabsInScope: [] - targets: - - column: - name: course_key - datasetUuid: 2a2498dc-03ce-41a0-b798-d84f808f7da6 - type: NATIVE_FILTER - - cascadeParentIds: [] - controlValues: - enableEmptyFilter: false - defaultDataMask: - extraFormData: {} - filterState: {} - ownState: {} - description: '' - filterType: filter_time - id: NATIVE_FILTER-mqUjL9BMI - name: Time range - scope: - excluded: [] - rootPath: - - ROOT_ID - targets: - - {} - type: NATIVE_FILTER - refresh_frequency: 0 - shared_label_colors: {} - show_native_filters: true - timed_refresh_immune_slices: [] - position: - CHART-OxWNihq9pP: - children: [] - id: CHART-OxWNihq9pP - meta: - chartId: 8 - height: 50 - sliceName: Video events - uuid: 0cc08ea4-fe3f-45ef-89b9-21d9e2c4c5ff - width: 4 - parents: - - ROOT_ID - - GRID_ID - - ROW-hGj6cJyMJ - type: CHART - CHART-explore-10-1: - children: [] - id: CHART-explore-10-1 - meta: - chartId: 10 - height: 50 - sliceName: Events per day - uuid: 0eb95b3a-a61d-4fcf-b614-3bc3e78dbb4b - width: 4 - parents: - - ROOT_ID - - GRID_ID - - ROW-hGj6cJyMJ - type: CHART - CHART-explore-11-1: - children: [] - id: CHART-explore-11-1 - meta: - chartId: 11 - height: 50 - sliceName: xAPI events by course - uuid: c69ab610-f77a-4c54-a5ab-dc3a19a3003e - width: 4 - parents: - - ROOT_ID - - GRID_ID - - ROW-hGj6cJyMJ - type: CHART - CHART-explore-9-1: - children: [] - id: CHART-explore-9-1 - meta: - chartId: 9 - height: 50 - sliceName: xAPI events - uuid: eda31542-e23c-4a9e-b9d2-712c9536265d - width: 8 - parents: - - ROOT_ID - - GRID_ID - - ROW-EFh2InPgiC - type: CHART - CHART-jmqhhYm-W8: - children: [] - id: CHART-jmqhhYm-W8 - meta: - chartId: 7 - height: 50 - sliceName: xAPI problem events by block - uuid: 40b671ce-e987-4c19-bc9d-d07df1d944f8 - width: 4 - parents: - - ROOT_ID - - GRID_ID - - ROW-EFh2InPgiC - type: CHART - DASHBOARD_VERSION_KEY: v2 - GRID_ID: - children: - - ROW-hGj6cJyMJ - - ROW-EFh2InPgiC - id: GRID_ID - parents: - - ROOT_ID - type: GRID - HEADER_ID: - id: HEADER_ID - meta: - text: Open edX Admin Dashboard - type: HEADER - ROOT_ID: - children: - - GRID_ID - id: ROOT_ID - type: ROOT - ROW-EFh2InPgiC: - children: - - CHART-jmqhhYm-W8 - - CHART-explore-9-1 - id: ROW-EFh2InPgiC - meta: - background: BACKGROUND_TRANSPARENT - parents: - - ROOT_ID - - GRID_ID - type: ROW - ROW-hGj6cJyMJ: - children: - - CHART-explore-10-1 - - CHART-explore-11-1 - - CHART-OxWNihq9pP - id: ROW-hGj6cJyMJ - meta: - background: BACKGROUND_TRANSPARENT - parents: - - ROOT_ID - - GRID_ID - type: ROW - slug: admin-dashboard - uuid: 4bd1ace4-2327-4ff0-985b-ef014cb0503b - version: 1.0.0 diff --git a/tutoraspects/templates/openedx-assets/Actor_IDs_over_time_47.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Actor_IDs_over_time_47.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Actor_IDs_over_time_47.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Actor_IDs_over_time_47.yaml diff --git a/tutoraspects/templates/openedx-assets/Attempts_to_first_success_42.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Attempts_to_first_success_42.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Attempts_to_first_success_42.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Attempts_to_first_success_42.yaml diff --git a/tutoraspects/templates/openedx-assets/Courses_44.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Courses_44.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Courses_44.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Courses_44.yaml diff --git a/tutoraspects/templates/openedx-assets/Cumulative_enrollments_by_mode_15.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Cumulative_enrollments_by_mode_15.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Cumulative_enrollments_by_mode_15.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Cumulative_enrollments_by_mode_15.yaml diff --git a/tutoraspects/templates/openedx-assets/Enrolled_learners_per_day_36.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Enrolled_learners_per_day_36.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Enrolled_learners_per_day_36.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Enrolled_learners_per_day_36.yaml diff --git a/tutoraspects/templates/openedx-assets/Enrollment_events_per_day_16.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Enrollment_events_per_day_16.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Enrollment_events_per_day_16.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Enrollment_events_per_day_16.yaml diff --git a/tutoraspects/templates/openedx-assets/Event_type_45.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Event_type_45.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Event_type_45.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Event_type_45.yaml diff --git a/tutoraspects/templates/openedx-assets/Events_per_course_46.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Events_per_course_46.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Events_per_course_46.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Events_per_course_46.yaml diff --git a/tutoraspects/templates/openedx-assets/Hints_and_answers_displayed_per_correct_answer_43.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Hints_and_answers_displayed_per_correct_answer_43.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Hints_and_answers_displayed_per_correct_answer_43.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Hints_and_answers_displayed_per_correct_answer_43.yaml diff --git a/tutoraspects/templates/openedx-assets/Last_course_syncronized_41.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Last_course_syncronized_41.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Last_course_syncronized_41.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Last_course_syncronized_41.yaml diff --git a/tutoraspects/templates/openedx-assets/Last_received_xAPI_events_40.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Last_received_xAPI_events_40.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Last_received_xAPI_events_40.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Last_received_xAPI_events_40.yaml diff --git a/tutoraspects/templates/openedx-assets/Organizations_42.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Organizations_42.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Organizations_42.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Organizations_42.yaml diff --git a/tutoraspects/templates/openedx-assets/Problem_submission_counts_38.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Problem_submission_counts_38.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Problem_submission_counts_38.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Problem_submission_counts_38.yaml diff --git a/tutoraspects/templates/openedx-assets/Response_distribution_39.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Response_distribution_39.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Response_distribution_39.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Response_distribution_39.yaml diff --git a/tutoraspects/templates/openedx-assets/Synchronized_Courses_39.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Synchronized_Courses_39.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Synchronized_Courses_39.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Synchronized_Courses_39.yaml diff --git a/tutoraspects/templates/openedx-assets/Transcript_closed_captioning_usage_per_video_11.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Transcript_closed_captioning_usage_per_video_11.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Transcript_closed_captioning_usage_per_video_11.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Transcript_closed_captioning_usage_per_video_11.yaml diff --git a/tutoraspects/templates/openedx-assets/Unique_actors_43.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Unique_actors_43.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Unique_actors_43.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Unique_actors_43.yaml diff --git a/tutoraspects/templates/openedx-assets/Watched_video_segments_51.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Watched_video_segments_51.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Watched_video_segments_51.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Watched_video_segments_51.yaml diff --git a/tutoraspects/templates/openedx-assets/Watches_per_video_10.yaml b/tutoraspects/templates/openedx-assets/assets/charts/Watches_per_video_10.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Watches_per_video_10.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/Watches_per_video_10.yaml diff --git a/tutoraspects/templates/openedx-assets/xAPI_events_38.yaml b/tutoraspects/templates/openedx-assets/assets/charts/xAPI_events_38.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/xAPI_events_38.yaml rename to tutoraspects/templates/openedx-assets/assets/charts/xAPI_events_38.yaml diff --git a/tutoraspects/templates/openedx-assets/Instructor_dashboard_9.yaml b/tutoraspects/templates/openedx-assets/assets/dashboards/Instructor_dashboard_9.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Instructor_dashboard_9.yaml rename to tutoraspects/templates/openedx-assets/assets/dashboards/Instructor_dashboard_9.yaml diff --git a/tutoraspects/templates/openedx-assets/Operator_Dashboard_5.yaml b/tutoraspects/templates/openedx-assets/assets/dashboards/Operator_Dashboard_5.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/Operator_Dashboard_5.yaml rename to tutoraspects/templates/openedx-assets/assets/dashboards/Operator_Dashboard_5.yaml diff --git a/tutoraspects/templates/openedx-assets/OpenedX_Clickhouse.yaml b/tutoraspects/templates/openedx-assets/assets/databases/OpenedX_Clickhouse.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/OpenedX_Clickhouse.yaml rename to tutoraspects/templates/openedx-assets/assets/databases/OpenedX_Clickhouse.yaml diff --git a/tutoraspects/templates/openedx-assets/course_blocks.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/course_blocks.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/course_blocks.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/course_blocks.yaml diff --git a/tutoraspects/templates/openedx-assets/course_overviews.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/course_overviews.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/course_overviews.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/course_overviews.yaml diff --git a/tutoraspects/templates/openedx-assets/dim_course_problems.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/dim_course_problems.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/dim_course_problems.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/dim_course_problems.yaml diff --git a/tutoraspects/templates/openedx-assets/dim_course_videos.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/dim_course_videos.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/dim_course_videos.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/dim_course_videos.yaml diff --git a/tutoraspects/templates/openedx-assets/dim_courses.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/dim_courses.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/dim_courses.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/dim_courses.yaml diff --git a/tutoraspects/templates/openedx-assets/fact_enrollments.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/fact_enrollments.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/fact_enrollments.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/fact_enrollments.yaml diff --git a/tutoraspects/templates/openedx-assets/fact_enrollments_by_day.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/fact_enrollments_by_day.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/fact_enrollments_by_day.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/fact_enrollments_by_day.yaml diff --git a/tutoraspects/templates/openedx-assets/fact_learner_problem_summary.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/fact_learner_problem_summary.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/fact_learner_problem_summary.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/fact_learner_problem_summary.yaml diff --git a/tutoraspects/templates/openedx-assets/fact_problem_responses.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/fact_problem_responses.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/fact_problem_responses.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/fact_problem_responses.yaml diff --git a/tutoraspects/templates/openedx-assets/fact_transcript_usage.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/fact_transcript_usage.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/fact_transcript_usage.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/fact_transcript_usage.yaml diff --git a/tutoraspects/templates/openedx-assets/fact_video_plays.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/fact_video_plays.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/fact_video_plays.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/fact_video_plays.yaml diff --git a/tutoraspects/templates/openedx-assets/fact_watched_video_segments.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/fact_watched_video_segments.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/fact_watched_video_segments.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/fact_watched_video_segments.yaml diff --git a/tutoraspects/templates/openedx-assets/hints_per_success.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/hints_per_success.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/hints_per_success.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/hints_per_success.yaml diff --git a/tutoraspects/templates/openedx-assets/xapi_events_all_parsed.yaml b/tutoraspects/templates/openedx-assets/assets/datasets/xapi_events_all_parsed.yaml similarity index 100% rename from tutoraspects/templates/openedx-assets/xapi_events_all_parsed.yaml rename to tutoraspects/templates/openedx-assets/assets/datasets/xapi_events_all_parsed.yaml diff --git a/tutoraspects/templates/openedx-assets/xAPI_events_by_course_11.yaml b/tutoraspects/templates/openedx-assets/xAPI_events_by_course_11.yaml deleted file mode 100644 index 0b57d6e89..000000000 --- a/tutoraspects/templates/openedx-assets/xAPI_events_by_course_11.yaml +++ /dev/null @@ -1,43 +0,0 @@ -- _file_name: xAPI_events_by_course_11.yaml - cache_timeout: null - dataset_uuid: 2a2498dc-03ce-41a0-b798-d84f808f7da6 - params: - adhoc_filters: [] - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - datasource: 2__table - extra_form_data: {} - forecastInterval: 0.8 - forecastPeriods: 10 - granularity_sqla: emission_time - groupby: - - verb - - course_key - legendOrientation: top - legendType: scroll - metrics: - - count - only_total: true - order_desc: true - orientation: vertical - rich_tooltip: true - row_limit: 10000 - show_legend: true - time_grain_sqla: P1D - time_range: No filter - tooltipTimeFormat: smart_date - truncate_metric: true - viz_type: echarts_timeseries_bar - x_axis_time_format: smart_date - x_axis_title_margin: 15 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title_margin: 15 - y_axis_title_position: Left - slice_name: xAPI events by course - uuid: c69ab610-f77a-4c54-a5ab-dc3a19a3003e - version: 1.0.0 - viz_type: echarts_timeseries_bar diff --git a/tutoraspects/templates/openedx-assets/xAPI_problem_events_by_block_7.yaml b/tutoraspects/templates/openedx-assets/xAPI_problem_events_by_block_7.yaml deleted file mode 100644 index 1ef519f53..000000000 --- a/tutoraspects/templates/openedx-assets/xAPI_problem_events_by_block_7.yaml +++ /dev/null @@ -1,188 +0,0 @@ -- _file_name: xAPI_problem_events_by_block_7.yaml - cache_timeout: null - dataset_uuid: 2a2498dc-03ce-41a0-b798-d84f808f7da6 - - params: - adhoc_filters: - - clause: WHERE - comparator: - - http://adlnet.gov/expapi/verbs/evaluated - - http://adlnet.gov/expapi/verbs/attempted - - http://adlnet.gov/expapi/verbs/asked - expressionType: SIMPLE - filterOptionName: filter_0qzkqpapje2_6p5tpr4igwf - isExtra: false - isNew: false - operator: IN - operatorId: IN - sqlExpression: null - subject: verb_id - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - contributionMode: null - datasource: 2__table - extra_form_data: {} - forecastInterval: 0.8 - forecastPeriods: 10 - granularity_sqla: emission_time - groupby: - - verb - - object_id - legendOrientation: top - legendType: scroll - metrics: - - aggregate: null - column: null - expressionType: SQL - hasCustomLabel: false - isNew: false - label: count(verb) - optionName: metric_wdmlkvulpn7_ll3d19812 - sqlExpression: count(verb) - only_total: true - order_desc: true - orientation: vertical - rich_tooltip: true - row_limit: 10000 - show_legend: true - time_grain_sqla: P1D - time_range: No filter - tooltipTimeFormat: smart_date - truncate_metric: false - viz_type: echarts_timeseries_bar - x_axis_time_format: smart_date - x_axis_title_margin: 15 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title_margin: 15 - y_axis_title_position: Left - slice_name: xAPI problem events by block - uuid: 40b671ce-e987-4c19-bc9d-d07df1d944f8 - version: 1.0.0 - viz_type: echarts_timeseries_bar - -- _file_name: Video_events_8.yaml - cache_timeout: null - dataset_uuid: 2a2498dc-03ce-41a0-b798-d84f808f7da6 - params: - adhoc_filters: - - clause: WHERE - comparator: '1' - expressionType: SIMPLE - filterOptionName: filter_2x4i6oetd7v_4ybshif8gk4 - isExtra: false - isNew: false - operator: == - operatorId: EQUALS - sqlExpression: null - subject: video_event - annotation_layers: [] - color_scheme: supersetColors - comparison_type: values - contributionMode: null - datasource: 2__table - extra_form_data: {} - forecastInterval: 0.8 - forecastPeriods: 10 - granularity_sqla: emission_time - groupby: - - verb - - object_id - legendOrientation: top - legendType: scroll - metrics: - - aggregate: null - column: null - expressionType: SQL - hasCustomLabel: false - isNew: false - label: count(verb) - optionName: metric_wdmlkvulpn7_ll3d19812 - sqlExpression: count(verb) - only_total: true - order_desc: true - orientation: vertical - rich_tooltip: true - row_limit: 10000 - show_legend: true - time_grain_sqla: P1D - time_range: No filter - tooltipTimeFormat: smart_date - truncate_metric: false - viz_type: echarts_timeseries_bar - x_axis_time_format: smart_date - x_axis_title_margin: 15 - y_axis_bounds: - - null - - null - y_axis_format: SMART_NUMBER - y_axis_title_margin: 15 - y_axis_title_position: Left - slice_name: Video events - uuid: 0cc08ea4-fe3f-45ef-89b9-21d9e2c4c5ff - version: 1.0.0 - viz_type: echarts_timeseries_bar - -- _file_name: xAPI_events_9.yaml - cache_timeout: null - dataset_uuid: 2a2498dc-03ce-41a0-b798-d84f808f7da6 - - params: - adhoc_filters: [] - all_columns: - - verb_id - - course_id - color_pn: true - datasource: 2__table - extra_form_data: {} - granularity_sqla: emission_time - groupby: - - verb_id - - course_id - order_by_cols: [] - order_desc: true - percent_metrics: [] - query_mode: raw - row_limit: 10000 - server_page_length: 10 - show_cell_bars: true - table_timestamp_format: smart_date - time_grain_sqla: P1D - time_range: No filter - viz_type: table - slice_name: xAPI events - uuid: eda31542-e23c-4a9e-b9d2-712c9536265d - version: 1.0.0 - viz_type: table - -- _file_name: Events_per_day_10.yaml - cache_timeout: null - dataset_uuid: 2a2498dc-03ce-41a0-b798-d84f808f7da6 - params: - adhoc_filters: [] - color_picker: - a: 1 - b: 135 - g: 122 - r: 0 - datasource: 2__table - extra_form_data: {} - granularity_sqla: emission_time - header_font_size: 0.4 - metric: count - rolling_type: None - show_trend_line: true - start_y_axis_at_zero: true - subheader_font_size: 0.15 - time_format: smart_date - time_grain_sqla: P1D - time_range: No filter - viz_type: big_number - y_axis_format: SMART_NUMBER - slice_name: Events per day - uuid: 0eb95b3a-a61d-4fcf-b614-3bc3e78dbb4b - version: 1.0.0 - viz_type: big_number