Skip to content

Commit fc246aa

Browse files
authored
Separate visualizations into their own package (getredash#4837)
* Add visualizations project settings * Move visualizations to redash-visualizations * Delete shared components * Remove antd from deps * Remove p-r-5 from table utils * Remove visualization deps from package.json * Rename package and change its version * Test preinstall script * Update Dockerfile build for frontend * Test adding dockerignore * Update jest tests * Add step for jest tests * Include viz-lib on dev commands * User prettier v1 for now * Delete unused libs on the app * Add readme draft (to be finished) * Add getOptions to Editor * Add required libraries and finish basic example * Bump version
1 parent 4f8d2ca commit fc246aa

File tree

276 files changed

+13798
-198
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

276 files changed

+13798
-198
lines changed

.circleci/config.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,12 @@ jobs:
7676
- run: sudo pip3 install -r requirements_bundles.txt
7777
- run: npm ci
7878
- run: npm run bundle
79-
- run: npm test
79+
- run:
80+
name: Run App Tests
81+
command: npm test
82+
- run:
83+
name: Run Visualizations Tests
84+
command: (cd viz-lib && npm test)
8085
- run: npm run lint
8186
frontend-e2e-tests:
8287
environment:

.dockerignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
client/.tmp/
22
client/dist/
33
node_modules/
4+
viz-lib/node_modules/
45
.tmp/
56
.venv/
67
venv/

Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ FROM node:12 as frontend-builder
22

33
WORKDIR /frontend
44
COPY package.json package-lock.json /frontend/
5-
RUN npm ci
5+
COPY viz-lib /frontend/viz-lib
6+
RUN npm ci --unsafe-perm
67

78
COPY client /frontend/client
89
COPY webpack.config.js /frontend/

client/app/components/ApplicationArea/Router.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { isFunction, startsWith, trimStart, trimEnd } from "lodash";
22
import React, { useState, useEffect, useRef } from "react";
33
import PropTypes from "prop-types";
44
import UniversalRouter from "universal-router";
5-
import ErrorBoundary from "@/components/ErrorBoundary";
5+
import ErrorBoundary from "@redash/viz/lib/components/ErrorBoundary";
66
import location from "@/services/location";
77
import url from "@/services/url";
88

client/app/components/ApplicationArea/routeWithApiKeySession.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useEffect, useState, useContext } from "react";
22
import PropTypes from "prop-types";
3-
import { ErrorBoundaryContext } from "@/components/ErrorBoundary";
3+
import { ErrorBoundaryContext } from "@redash/viz/lib/components/ErrorBoundary";
44
import { Auth } from "@/services/auth";
55

66
// This wrapper modifies `route.render` function and instead of passing `currentRoute` passes an object

client/app/components/ApplicationArea/routeWithUserSession.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useEffect, useState } from "react";
22
import PropTypes from "prop-types";
3-
import ErrorBoundary, { ErrorBoundaryContext } from "@/components/ErrorBoundary";
3+
import ErrorBoundary, { ErrorBoundaryContext } from "@redash/viz/lib/components/ErrorBoundary";
44
import { Auth } from "@/services/auth";
55
import organizationStatus from "@/services/organizationStatus";
66
import ApplicationHeader from "./ApplicationHeader";

client/app/components/Parameters.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { size, filter, forEach, extend } from "lodash";
22
import React from "react";
33
import PropTypes from "prop-types";
4-
import { SortableContainer, SortableElement, DragHandle } from "@/components/sortable";
4+
import { SortableContainer, SortableElement, DragHandle } from "@redash/viz/lib/components/sortable";
55
import location from "@/services/location";
66
import { Parameter, createParameter } from "@/services/parameters";
77
import ParameterApplyButton from "@/components/ParameterApplyButton";

client/app/components/QueryLink.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from "react";
22
import PropTypes from "prop-types";
3-
import { VisualizationType } from "@/visualizations/prop-types";
3+
import { VisualizationType } from "@redash/viz/lib";
44
import VisualizationName from "@/components/visualizations/VisualizationName";
55

66
import "./QueryLink.less";

client/app/components/dashboards/TextboxDialog.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import Modal from "antd/lib/modal";
77
import Input from "antd/lib/input";
88
import Tooltip from "antd/lib/tooltip";
99
import Divider from "antd/lib/divider";
10-
import HtmlContent from "@/components/HtmlContent";
10+
import HtmlContent from "@redash/viz/lib/components/HtmlContent";
1111
import { wrap as wrapDialog, DialogPropType } from "@/components/DialogWrapper";
1212
import notification from "@/services/notification";
1313

client/app/components/dashboards/dashboard-widget/TextboxWidget.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useState } from "react";
22
import PropTypes from "prop-types";
33
import { markdown } from "markdown";
44
import Menu from "antd/lib/menu";
5-
import HtmlContent from "@/components/HtmlContent";
5+
import HtmlContent from "@redash/viz/lib/components/HtmlContent";
66
import TextboxDialog from "@/components/dashboards/TextboxDialog";
77
import Widget from "./Widget";
88

client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import { compact, isEmpty, invoke } from "lodash";
44
import { markdown } from "markdown";
55
import cx from "classnames";
66
import Menu from "antd/lib/menu";
7+
import HtmlContent from "@redash/viz/lib/components/HtmlContent";
78
import { currentUser } from "@/services/auth";
89
import recordEvent from "@/services/recordEvent";
910
import { formatDateTime } from "@/lib/utils";
10-
import HtmlContent from "@/components/HtmlContent";
1111
import Parameters from "@/components/Parameters";
1212
import TimeAgo from "@/components/TimeAgo";
1313
import Timer from "@/components/Timer";

client/app/components/visualizations/EditVisualizationDialog.jsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ import notification from "@/services/notification";
1010
import Visualization from "@/services/visualization";
1111
import recordEvent from "@/services/recordEvent";
1212
import getQueryResultData from "@/lib/getQueryResultData";
13-
import { VisualizationType } from "@/visualizations/prop-types";
14-
import { Renderer, Editor } from "@/components/visualizations/visualizationComponents";
15-
import registeredVisualizations, {
13+
import {
14+
registeredVisualizations,
1615
getDefaultVisualization,
1716
newVisualization,
18-
} from "@/visualizations/registeredVisualizations";
17+
VisualizationType,
18+
} from "@redash/viz/lib";
19+
import { Renderer, Editor } from "@/components/visualizations/visualizationComponents";
1920

2021
import "./EditVisualizationDialog.less";
2122

client/app/components/visualizations/VisualizationName.jsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from "react";
2-
import { VisualizationType } from "@/visualizations/prop-types";
3-
import registeredVisualizations from "@/visualizations/registeredVisualizations";
2+
import { VisualizationType, registeredVisualizations } from "@redash/viz/lib";
43

54
import "./VisualizationName.less";
65

client/app/components/visualizations/VisualizationRenderer.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import React, { useState, useMemo, useEffect, useRef } from "react";
33
import PropTypes from "prop-types";
44
import getQueryResultData from "@/lib/getQueryResultData";
55
import Filters, { FiltersType, filterData } from "@/components/Filters";
6-
import { VisualizationType } from "@/visualizations/prop-types";
6+
import { VisualizationType } from "@redash/viz/lib";
77
import { Renderer } from "@/components/visualizations/visualizationComponents";
88

99
function combineFilters(localFilters, globalFilters) {

client/app/components/visualizations/visualizationComponents.jsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import React from "react";
22
import { pick } from "lodash";
33
import HelpTrigger from "@/components/HelpTrigger";
4-
import { Renderer as VisRenderer, Editor as VisEditor } from "@/visualizations";
5-
import { updateVisualizationsSettings } from "@/visualizations/visualizationsSettings";
4+
import { Renderer as VisRenderer, Editor as VisEditor, updateVisualizationsSettings } from "@redash/viz/lib";
65
import { clientConfig } from "@/services/auth";
76

8-
import countriesDataUrl from "@/visualizations/choropleth/maps/countries.geo.json";
9-
import subdivJapanDataUrl from "@/visualizations/choropleth/maps/japan.prefectures.geo.json";
7+
import countriesDataUrl from "@redash/viz/lib/visualizations/choropleth/maps/countries.geo.json";
8+
import subdivJapanDataUrl from "@redash/viz/lib/visualizations/choropleth/maps/japan.prefectures.geo.json";
109

1110
function wrapComponentWithSettings(WrappedComponent) {
1211
return function VisualizationComponent(props) {

client/app/config/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import url from "@/services/url";
77
import "@/assets/images/avatar.svg";
88

99
// Register visualizations
10-
import "@/visualizations";
10+
import "@redash/viz/lib";
1111

1212
import "./antd-spinner";
1313

client/app/pages/queries/VisualizationEmbed.jsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ import Dropdown from "antd/lib/dropdown";
88
import Icon from "antd/lib/icon";
99
import Menu from "antd/lib/menu";
1010
import Tooltip from "antd/lib/tooltip";
11+
import HtmlContent from "@redash/viz/lib/components/HtmlContent";
1112
import routeWithApiKeySession from "@/components/ApplicationArea/routeWithApiKeySession";
1213
import { Query } from "@/services/query";
1314
import location from "@/services/location";
1415
import { formatDateTime } from "@/lib/utils";
15-
import HtmlContent from "@/components/HtmlContent";
1616
import Parameters from "@/components/Parameters";
1717
import { Moment } from "@/components/proptypes";
1818
import TimeAgo from "@/components/TimeAgo";
1919
import Timer from "@/components/Timer";
2020
import QueryResultsLink from "@/components/EditVisualizationButton/QueryResultsLink";
2121
import VisualizationName from "@/components/visualizations/VisualizationName";
2222
import VisualizationRenderer from "@/components/visualizations/VisualizationRenderer";
23-
import { VisualizationType } from "@/visualizations/prop-types";
23+
import { VisualizationType } from "@redash/viz/lib";
2424
import logoUrl from "@/assets/images/redash_icon_small.png";
2525

2626
function VisualizationEmbedHeader({ queryName, queryDescription, visualization }) {

client/app/services/widget.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { each, pick, extend, isObject, truncate, keys, difference, filter, map,
44
import location from "@/services/location";
55
import { cloneParameter } from "@/services/parameters";
66
import dashboardGridOptions from "@/config/dashboard-grid-options";
7-
import registeredVisualizations from "@/visualizations/registeredVisualizations";
7+
import { registeredVisualizations } from "@redash/viz/lib";
88
import { Query } from "./query";
99

1010
export const WidgetTypeEnum = {

client/app/visualizations/Editor.jsx

-14
This file was deleted.

0 commit comments

Comments
 (0)