mirror of https://github.com/apache/superset.git
chore(frontend): Spelling (#19676)
Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
This commit is contained in:
parent
ad1ffbd723
commit
78ede590ee
|
@ -48,10 +48,10 @@ while (directories.length) {
|
|||
// directory.
|
||||
const hasTypescriptFiles =
|
||||
getFilesByExtensions("./", [".ts", ".tsx"]).length > 0;
|
||||
const hasJavascriptFiles =
|
||||
const hasJavaScriptFiles =
|
||||
getFilesByExtensions("./", [".js", ".jsx"]).length > 0;
|
||||
|
||||
if (hasJavascriptFiles) {
|
||||
if (hasJavaScriptFiles) {
|
||||
console.log(
|
||||
`${" ".repeat(
|
||||
curDirectory.split("/").length - 1
|
||||
|
|
|
@ -347,7 +347,7 @@ export function saveNativeFilterSettings(charts: ChartSpec[]) {
|
|||
}
|
||||
|
||||
/** ************************************************************************
|
||||
* Cancel Native fitler settings
|
||||
* Cancel Native filter settings
|
||||
* @returns {None}
|
||||
* @summary helper for cancel native filters settings
|
||||
************************************************************************* */
|
||||
|
|
|
@ -84,11 +84,11 @@ export const databasesPage = {
|
|||
step: '.helper-top',
|
||||
selectDbStepTitle: '.select-db > h4',
|
||||
preferredBlockBigQuery: '.preferred > :nth-child(1)',
|
||||
prefferedBlockPostgreSQL: '.preferred > :nth-child(2)',
|
||||
prefferedBlockSnowflake: '.preferred > :nth-child(3)',
|
||||
prefferedBlockMySQL: '.preferred > :nth-child(4)',
|
||||
prefferedBlockAthena: '.preferred > :nth-child(5)',
|
||||
prefferedBlockSheets: '.preferred > :nth-child(6)',
|
||||
preferredBlockPostgreSQL: '.preferred > :nth-child(2)',
|
||||
preferredBlockSnowflake: '.preferred > :nth-child(3)',
|
||||
preferredBlockMySQL: '.preferred > :nth-child(4)',
|
||||
preferredBlockAthena: '.preferred > :nth-child(5)',
|
||||
preferredBlockSheets: '.preferred > :nth-child(6)',
|
||||
supportedDatabasesText: '.control-label',
|
||||
orChoose: '.available-label',
|
||||
dbDropdown: '[class="ant-select-selection-search-input"]',
|
||||
|
@ -590,7 +590,7 @@ export const exploreView = {
|
|||
okButton: '.ant-modal-confirm-btns .ant-btn-primary',
|
||||
},
|
||||
},
|
||||
vizualizationTypeModal: {
|
||||
visualizationTypeModal: {
|
||||
vizTypeButton: dataTestLocator('viztype-selector-container'),
|
||||
},
|
||||
};
|
||||
|
|
|
@ -26,7 +26,7 @@ module.exports = {
|
|||
'\\.svg$': '<rootDir>/spec/__mocks__/svgrMock.tsx',
|
||||
'^src/(.*)$': '<rootDir>/src/$1',
|
||||
'^spec/(.*)$': '<rootDir>/spec/$1',
|
||||
// mapping plugins of superset-ui to souce code
|
||||
// mapping plugins of superset-ui to source code
|
||||
'@superset-ui/(.*)$': '<rootDir>/node_modules/@superset-ui/$1/src',
|
||||
},
|
||||
testEnvironment: 'jsdom',
|
||||
|
|
|
@ -30,7 +30,7 @@ const config: ControlPanelConfig = {
|
|||
*
|
||||
* There are several predefined controls that can be used.
|
||||
* Some examples:
|
||||
* - groupby: columns to group by (tranlated to GROUP BY statement)
|
||||
* - groupby: columns to group by (translated to GROUP BY statement)
|
||||
* - series: same as groupby, but single selection.
|
||||
* - metrics: multiple metrics (translated to aggregate expression)
|
||||
* - metric: sane as metrics, but single selection
|
||||
|
@ -91,7 +91,7 @@ const config: ControlPanelConfig = {
|
|||
* by the `@superset-ui/core/lib/validator`:
|
||||
* - validateNonEmpty: must have at least one value
|
||||
* - validateInteger: must be an integer value
|
||||
* - validateNumber: must be an intger or decimal value
|
||||
* - validateNumber: must be an integer or decimal value
|
||||
*/
|
||||
|
||||
// For control input types, see: superset-frontend/src/explore/components/controls/index.js
|
||||
|
|
|
@ -21,7 +21,7 @@ import {
|
|||
PostProcessingRename,
|
||||
ensureIsArray,
|
||||
getMetricLabel,
|
||||
ComparisionType,
|
||||
ComparisonType,
|
||||
getXAxisLabel,
|
||||
} from '@superset-ui/core';
|
||||
import { PostProcessingFactory } from './types';
|
||||
|
@ -52,9 +52,9 @@ export const renameOperator: PostProcessingFactory<PostProcessingRename> = (
|
|||
(
|
||||
isTimeComparison(formData, queryObject) &&
|
||||
[
|
||||
ComparisionType.Difference,
|
||||
ComparisionType.Ratio,
|
||||
ComparisionType.Percentage,
|
||||
ComparisonType.Difference,
|
||||
ComparisonType.Ratio,
|
||||
ComparisonType.Percentage,
|
||||
].includes(formData.comparison_type)
|
||||
)
|
||||
) &&
|
||||
|
@ -68,7 +68,7 @@ export const renameOperator: PostProcessingFactory<PostProcessingRename> = (
|
|||
// we will rename the "metric" from the metricWithOffset label
|
||||
// for example: "count__1 year ago" => "1 year ago"
|
||||
isTimeComparison(formData, queryObject) &&
|
||||
formData.comparison_type === ComparisionType.Values
|
||||
formData.comparison_type === ComparisonType.Values
|
||||
) {
|
||||
const metricOffsetMap = getMetricOffsetsMap(formData, queryObject);
|
||||
const timeOffsets = ensureIsArray(formData.time_compare);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* specific language governing permissions and limitationsxw
|
||||
* under the License.
|
||||
*/
|
||||
import { ComparisionType, PostProcessingCompare } from '@superset-ui/core';
|
||||
import { ComparisonType, PostProcessingCompare } from '@superset-ui/core';
|
||||
import { getMetricOffsetsMap, isTimeComparison } from './utils';
|
||||
import { PostProcessingFactory } from './types';
|
||||
|
||||
|
@ -28,7 +28,7 @@ export const timeCompareOperator: PostProcessingFactory<PostProcessingCompare> =
|
|||
|
||||
if (
|
||||
isTimeComparison(formData, queryObject) &&
|
||||
comparisonType !== ComparisionType.Values
|
||||
comparisonType !== ComparisonType.Values
|
||||
) {
|
||||
return {
|
||||
operation: 'compare',
|
||||
|
|
|
@ -21,7 +21,7 @@ import {
|
|||
ensureIsArray,
|
||||
JsonObject,
|
||||
QueryFormData,
|
||||
ComparisionType,
|
||||
ComparisonType,
|
||||
} from '@superset-ui/core';
|
||||
import { isString } from 'lodash';
|
||||
|
||||
|
@ -30,7 +30,7 @@ export const isDerivedSeries = (
|
|||
formData: QueryFormData,
|
||||
): boolean => {
|
||||
const comparisonType = formData.comparison_type;
|
||||
if (comparisonType !== ComparisionType.Values) {
|
||||
if (comparisonType !== ComparisonType.Values) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* specific language governing permissions and limitationsxw
|
||||
* under the License.
|
||||
*/
|
||||
import { ComparisionType } from '@superset-ui/core';
|
||||
import { ComparisonType } from '@superset-ui/core';
|
||||
import { getMetricOffsetsMap } from './getMetricOffsetsMap';
|
||||
import { PostProcessingFactory } from '../types';
|
||||
|
||||
|
@ -29,7 +29,7 @@ export const isTimeComparison: PostProcessingFactory<boolean> = (
|
|||
const metricOffsetMap = getMetricOffsetsMap(formData, queryObject);
|
||||
|
||||
return (
|
||||
Object.values(ComparisionType).includes(comparisonType) &&
|
||||
Object.values(ComparisonType).includes(comparisonType) &&
|
||||
metricOffsetMap.size > 0
|
||||
);
|
||||
};
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* under the License.
|
||||
*/
|
||||
import React from 'react';
|
||||
import { t, RollingType, ComparisionType } from '@superset-ui/core';
|
||||
import { t, RollingType, ComparisonType } from '@superset-ui/core';
|
||||
import { ControlPanelSectionConfig } from '../types';
|
||||
import { formatSelectOptions } from '../utils';
|
||||
|
||||
|
@ -137,10 +137,10 @@ export const advancedAnalyticsControls: ControlPanelSectionConfig = {
|
|||
label: t('Calculation type'),
|
||||
default: 'values',
|
||||
choices: [
|
||||
[ComparisionType.Values, t('Actual values')],
|
||||
[ComparisionType.Difference, t('Difference')],
|
||||
[ComparisionType.Percentage, t('Percentage change')],
|
||||
[ComparisionType.Ratio, t('Ratio')],
|
||||
[ComparisonType.Values, t('Actual values')],
|
||||
[ComparisonType.Difference, t('Difference')],
|
||||
[ComparisonType.Percentage, t('Percentage change')],
|
||||
[ComparisonType.Ratio, t('Ratio')],
|
||||
],
|
||||
description: t(
|
||||
'How to display time shifts: as individual lines; as the ' +
|
||||
|
|
|
@ -149,7 +149,7 @@ export const SHARED_COLUMN_CONFIG_PROPS = {
|
|||
label: t('Small number format'),
|
||||
description: t(
|
||||
'D3 number format for numbers between -1.0 and 1.0, ' +
|
||||
'useful when you want to have different siginificant digits for small and large numbers',
|
||||
'useful when you want to have different significant digits for small and large numbers',
|
||||
),
|
||||
},
|
||||
d3TimeFormat,
|
||||
|
|
|
@ -40,7 +40,7 @@ import {
|
|||
getSequentialSchemeRegistry,
|
||||
SequentialScheme,
|
||||
legacyValidateInteger,
|
||||
ComparisionType,
|
||||
ComparisonType,
|
||||
isAdhocColumn,
|
||||
isPhysicalColumn,
|
||||
ensureIsArray,
|
||||
|
@ -308,7 +308,7 @@ const y_axis_format: SharedControlConfig<'SelectControl', SelectDefaultOption> =
|
|||
option.label.includes(search) || option.value.includes(search),
|
||||
mapStateToProps: state => {
|
||||
const isPercentage =
|
||||
state.controls?.comparison_type?.value === ComparisionType.Percentage;
|
||||
state.controls?.comparison_type?.value === ComparisonType.Percentage;
|
||||
return {
|
||||
choices: isPercentage
|
||||
? D3_FORMAT_OPTIONS.filter(option => option[0].includes('%'))
|
||||
|
|
|
@ -92,7 +92,7 @@ export interface ControlPanelState {
|
|||
}
|
||||
|
||||
/**
|
||||
* The action dispather will call Redux `dispatch` internally and return what's
|
||||
* The action dispatcher will call Redux `dispatch` internally and return what's
|
||||
* returned from `dispatch`, which by default is the original or another action.
|
||||
*/
|
||||
export interface ActionDispatcher<
|
||||
|
@ -200,7 +200,7 @@ export type TabOverride = 'data' | 'customize' | boolean;
|
|||
tab, or 'customize' if you want it to show up on that tam. Otherwise sections with ALL
|
||||
`renderTrigger: true` components will show up on the `Customize` tab.
|
||||
* - visibility: a function that uses control panel props to check whether a control should
|
||||
* be visibile.
|
||||
* be visible.
|
||||
*/
|
||||
export interface BaseControlConfig<
|
||||
T extends ControlType = ControlType,
|
||||
|
|
|
@ -74,7 +74,7 @@ export function expandControlConfig(
|
|||
// {
|
||||
// name: 'metric',
|
||||
// config: {
|
||||
// type: 'SelectControl' | SelectComonent
|
||||
// type: 'SelectControl' | SelectComponent
|
||||
// }
|
||||
// }
|
||||
if ('name' in control && 'config' in control) {
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import { ComparisionType, QueryObject, SqlaFormData } from '@superset-ui/core';
|
||||
import { ComparisonType, QueryObject, SqlaFormData } from '@superset-ui/core';
|
||||
import { renameOperator } from '@superset-ui/chart-controls';
|
||||
|
||||
const formData: SqlaFormData = {
|
||||
|
@ -74,9 +74,9 @@ test('should skip renameOperator if does not exist x_axis and is_timeseries', ()
|
|||
|
||||
test('should skip renameOperator if exists derived metrics', () => {
|
||||
[
|
||||
ComparisionType.Difference,
|
||||
ComparisionType.Ratio,
|
||||
ComparisionType.Percentage,
|
||||
ComparisonType.Difference,
|
||||
ComparisonType.Ratio,
|
||||
ComparisonType.Percentage,
|
||||
].forEach(type => {
|
||||
expect(
|
||||
renameOperator(
|
||||
|
@ -145,7 +145,7 @@ test('should add renameOperator if exist "actual value" time comparison', () =>
|
|||
{
|
||||
...formData,
|
||||
...{
|
||||
comparison_type: ComparisionType.Values,
|
||||
comparison_type: ComparisonType.Values,
|
||||
time_compare: ['1 year ago', '1 year later'],
|
||||
},
|
||||
},
|
||||
|
|
|
@ -107,8 +107,8 @@ test('rolling_type: sum/mean/std', () => {
|
|||
});
|
||||
|
||||
test('should append compared metrics when sets time compare type', () => {
|
||||
const comparisionTypes = ['values', 'difference', 'percentage', 'ratio'];
|
||||
comparisionTypes.forEach(cType => {
|
||||
const comparisonTypes = ['values', 'difference', 'percentage', 'ratio'];
|
||||
comparisonTypes.forEach(cType => {
|
||||
expect(
|
||||
rollingWindowOperator(
|
||||
{
|
||||
|
|
|
@ -90,8 +90,8 @@ test('should skip CompareOperator', () => {
|
|||
});
|
||||
|
||||
test('should generate difference/percentage/ratio CompareOperator', () => {
|
||||
const comparisionTypes = ['difference', 'percentage', 'ratio'];
|
||||
comparisionTypes.forEach(cType => {
|
||||
const comparisonTypes = ['difference', 'percentage', 'ratio'];
|
||||
comparisonTypes.forEach(cType => {
|
||||
expect(
|
||||
timeCompareOperator(
|
||||
{
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* under the License.
|
||||
*/
|
||||
import { isDerivedSeries } from '@superset-ui/chart-controls';
|
||||
import { SqlaFormData, ComparisionType } from '@superset-ui/core';
|
||||
import { SqlaFormData, ComparisonType } from '@superset-ui/core';
|
||||
|
||||
const formData: SqlaFormData = {
|
||||
datasource: 'foo',
|
||||
|
@ -31,15 +31,15 @@ const series = {
|
|||
|
||||
test('should be false if comparison type is not actual values', () => {
|
||||
expect(isDerivedSeries(series, formData)).toEqual(false);
|
||||
Object.keys(ComparisionType)
|
||||
.filter(type => type === ComparisionType.Values)
|
||||
Object.keys(ComparisonType)
|
||||
.filter(type => type === ComparisonType.Values)
|
||||
.forEach(type => {
|
||||
const formDataWithComparisionType = {
|
||||
const formDataWithComparisonType = {
|
||||
...formData,
|
||||
comparison_type: type,
|
||||
time_compare: ['1 month ago'],
|
||||
};
|
||||
expect(isDerivedSeries(series, formDataWithComparisionType)).toEqual(
|
||||
expect(isDerivedSeries(series, formDataWithComparisonType)).toEqual(
|
||||
false,
|
||||
);
|
||||
});
|
||||
|
@ -48,7 +48,7 @@ test('should be false if comparison type is not actual values', () => {
|
|||
test('should be true if comparison type is values', () => {
|
||||
const formDataWithActualTypes = {
|
||||
...formData,
|
||||
comparison_type: ComparisionType.Values,
|
||||
comparison_type: ComparisonType.Values,
|
||||
time_compare: ['1 month ago', '1 month later'],
|
||||
};
|
||||
expect(isDerivedSeries(series, formDataWithActualTypes)).toEqual(true);
|
||||
|
@ -62,7 +62,7 @@ test('should be false if series name does not match time_compare', () => {
|
|||
};
|
||||
const formDataWithActualTypes = {
|
||||
...formData,
|
||||
comparison_type: ComparisionType.Values,
|
||||
comparison_type: ComparisonType.Values,
|
||||
time_compare: ['1 month ago', '1 month later'],
|
||||
};
|
||||
expect(isDerivedSeries(arbitrary_series, formDataWithActualTypes)).toEqual(
|
||||
|
@ -78,7 +78,7 @@ test('should be false if time compare is not suffix', () => {
|
|||
};
|
||||
const formDataWithActualTypes = {
|
||||
...formData,
|
||||
comparison_type: ComparisionType.Values,
|
||||
comparison_type: ComparisonType.Values,
|
||||
time_compare: ['1 month ago', '1 month later'],
|
||||
};
|
||||
expect(isDerivedSeries(series, formDataWithActualTypes)).toEqual(false);
|
||||
|
@ -92,7 +92,7 @@ test('should be false if series name invalid', () => {
|
|||
};
|
||||
const formDataWithActualTypes = {
|
||||
...formData,
|
||||
comparison_type: ComparisionType.Values,
|
||||
comparison_type: ComparisonType.Values,
|
||||
time_compare: ['1 month ago', '1 month later'],
|
||||
};
|
||||
expect(isDerivedSeries(series, formDataWithActualTypes)).toEqual(false);
|
||||
|
|
|
@ -61,7 +61,7 @@ export type Props = Omit<SuperChartCoreProps, 'chartProps'> &
|
|||
FallbackComponent?: React.ComponentType<FallbackPropsWithDimension>;
|
||||
/** Event listener for unexpected errors from chart */
|
||||
onErrorBoundary?: ErrorBoundaryProps['onError'];
|
||||
/** Prop for form plugins uisng superchart */
|
||||
/** Prop for form plugins using superchart */
|
||||
showOverflow?: boolean;
|
||||
/** Prop for popovercontainer ref */
|
||||
parentRef?: RefObject<any>;
|
||||
|
|
|
@ -106,7 +106,7 @@ export function evalExpression(expression: string, value: number): number {
|
|||
const subExpressions = String(parsedExpression).split('=');
|
||||
parsedExpression = subExpressions[1] ?? subExpressions[0];
|
||||
// we can ignore the type requirement on `TOKENS`, as value is always `number`
|
||||
// and doesn't need to consider `number | underfined`.
|
||||
// and doesn't need to consider `number | undefined`.
|
||||
// @ts-ignore
|
||||
return Number(mexp.eval(parsedExpression, TOKENS, { x: value }));
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ export default function buildQueryObject<T extends QueryFormData>(
|
|||
|
||||
let queryObject: QueryObject = {
|
||||
// fallback `null` to `undefined` so they won't be sent to the backend
|
||||
// (JSON.strinify will ignore `undefined`.)
|
||||
// (JSON.stringify will ignore `undefined`.)
|
||||
time_range: time_range || undefined,
|
||||
since: since || undefined,
|
||||
until: until || undefined,
|
||||
|
|
|
@ -56,7 +56,7 @@ export default function normalizeOrderBy(
|
|||
};
|
||||
}
|
||||
|
||||
// todo: Removed `legacy_ordery_by` after refactoring
|
||||
// todo: Removed `legacy_order_by` after refactoring
|
||||
if (
|
||||
queryObject.legacy_order_by !== undefined &&
|
||||
queryObject.legacy_order_by !== null &&
|
||||
|
|
|
@ -29,7 +29,7 @@ export interface RollingWindow {
|
|||
min_periods?: number;
|
||||
}
|
||||
|
||||
export enum ComparisionType {
|
||||
export enum ComparisonType {
|
||||
Values = 'values',
|
||||
Difference = 'difference',
|
||||
Percentage = 'percentage',
|
||||
|
@ -37,7 +37,7 @@ export enum ComparisionType {
|
|||
}
|
||||
export interface TimeCompare {
|
||||
time_compare?: string;
|
||||
comparison_type?: ComparisionType;
|
||||
comparison_type?: ComparisonType;
|
||||
}
|
||||
|
||||
export default {};
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
*/
|
||||
import { JsonObject } from '../../connection';
|
||||
import { TimeGranularity } from '../../time-format';
|
||||
import { RollingType, ComparisionType } from './AdvancedAnalytics';
|
||||
import { RollingType, ComparisonType } from './AdvancedAnalytics';
|
||||
|
||||
export type NumpyFunction =
|
||||
| 'average'
|
||||
|
@ -57,7 +57,7 @@ export interface Aggregates {
|
|||
[colname: string]: {
|
||||
operator: NumpyFunction;
|
||||
/**
|
||||
* the name of the column to generate aggrates from.
|
||||
* the name of the column to generate aggregates from.
|
||||
*/
|
||||
column?: string;
|
||||
options?: JsonObject;
|
||||
|
@ -171,7 +171,7 @@ export interface _PostProcessingCompare {
|
|||
options: {
|
||||
source_columns: string[];
|
||||
compare_columns: string[];
|
||||
compare_type: Omit<ComparisionType, ComparisionType.Values>;
|
||||
compare_type: Omit<ComparisonType, ComparisonType.Values>;
|
||||
drop_original_columns: boolean;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -22,4 +22,4 @@ export * from './types';
|
|||
|
||||
export default {};
|
||||
|
||||
export { default as __hack_reexport_trasnslation } from './types';
|
||||
export { default as __hack_reexport_translation } from './types';
|
||||
|
|
|
@ -404,7 +404,7 @@ describe('Registry', () => {
|
|||
expect(listener).toBeCalledWith(['foo']);
|
||||
});
|
||||
|
||||
it('calls the listener when a value is overriden', () => {
|
||||
it('calls the listener when a value is overridden', () => {
|
||||
registry.registerValue('foo', 'bar');
|
||||
listener.mockClear();
|
||||
registry.registerValue('foo', 'baz');
|
||||
|
|
|
@ -62,7 +62,7 @@ describe('createD3NumberFormatter(config)', () => {
|
|||
});
|
||||
});
|
||||
describe('config.description', () => {
|
||||
it('set decription if specified', () => {
|
||||
it('set description if specified', () => {
|
||||
const formatter = createD3NumberFormatter({
|
||||
description: 'lorem ipsum',
|
||||
formatString: '.2f',
|
||||
|
|
|
@ -42,7 +42,7 @@ import {
|
|||
PostProcessingRolling,
|
||||
PostProcessingSort,
|
||||
} from '@superset-ui/core';
|
||||
import { ComparisionType, RollingType, TimeGranularity } from '../../../src';
|
||||
import { ComparisonType, RollingType, TimeGranularity } from '../../../src';
|
||||
|
||||
const AGGREGATES_OPTION: Aggregates = {
|
||||
bar: {
|
||||
|
@ -74,7 +74,7 @@ const COMPARE_RULE: PostProcessingCompare = {
|
|||
options: {
|
||||
source_columns: ['foo'],
|
||||
compare_columns: ['bar'],
|
||||
compare_type: ComparisionType.Percentage,
|
||||
compare_type: ComparisonType.Percentage,
|
||||
drop_original_columns: false,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -17,6 +17,6 @@
|
|||
* under the License.
|
||||
*/
|
||||
/**
|
||||
* Stub for the untypped jed module.
|
||||
* Stub for the untyped jed module.
|
||||
*/
|
||||
declare module 'jed';
|
||||
|
|
|
@ -31,7 +31,7 @@ export const controlsShown = () => (
|
|||
queriesData={[{ data }]}
|
||||
formData={{
|
||||
bottomMargin: 'auto',
|
||||
colorCcheme: 'd3Category10',
|
||||
colorScheme: 'd3Category10',
|
||||
contribution: false,
|
||||
groupby: ['region'],
|
||||
lineInterpolation: 'linear',
|
||||
|
|
|
@ -31,7 +31,7 @@ export const expanded = () => (
|
|||
queriesData={[{ data }]}
|
||||
formData={{
|
||||
bottomMargin: 'auto',
|
||||
colorCcheme: 'd3Category10',
|
||||
colorScheme: 'd3Category10',
|
||||
contribution: false,
|
||||
groupby: ['region'],
|
||||
lineInterpolation: 'linear',
|
||||
|
|
|
@ -31,7 +31,7 @@ export const stackedWithYAxisBounds = () => (
|
|||
queriesData={[{ data }]}
|
||||
formData={{
|
||||
bottomMargin: 'auto',
|
||||
colorCcheme: 'd3Category10',
|
||||
colorScheme: 'd3Category10',
|
||||
contribution: false,
|
||||
groupby: ['region'],
|
||||
lineInterpolation: 'linear',
|
||||
|
@ -66,7 +66,7 @@ export const stackedWithYAxisBoundsMinOnly = () => (
|
|||
queriesData={[{ data }]}
|
||||
formData={{
|
||||
bottomMargin: 'auto',
|
||||
colorCcheme: 'd3Category10',
|
||||
colorScheme: 'd3Category10',
|
||||
contribution: false,
|
||||
groupby: ['region'],
|
||||
lineInterpolation: 'linear',
|
||||
|
|
|
@ -110,7 +110,7 @@ export const fixedHeight100Width = () => {
|
|||
};
|
||||
fixedHeight100Width.story = { name: 'fixed height, 100% width' };
|
||||
|
||||
export const withErrorBoundar = () => {
|
||||
export const withErrorBoundary = () => {
|
||||
const width = text('Vis width', '500');
|
||||
const height = text('Vis height', '300');
|
||||
|
||||
|
|
|
@ -191,7 +191,7 @@ export class Switchboard {
|
|||
* Instead of an arguments list, arguments are supplied as a map.
|
||||
*
|
||||
* @param method the name of the method to call
|
||||
* @param args arguments that will be supplied. Must be serializable, no functions or other nonense.
|
||||
* @param args arguments that will be supplied. Must be serializable, no functions or other nonsense.
|
||||
* @returns whatever is returned from the method
|
||||
*/
|
||||
get<T = unknown>(method: string, args: unknown = undefined): Promise<T> {
|
||||
|
|
|
@ -27,7 +27,7 @@ const metadata = new ChartMetadata({
|
|||
category: t('Map'),
|
||||
credits: ['https://bl.ocks.org/john-guerra'],
|
||||
description: t(
|
||||
"Visualizes how a single metric varies across a country's principal subdivisions (states, provinces, etc) on a chloropleth map. Each subdivision's value is elevated when you hover over the corresponding geographic boundary.",
|
||||
"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.",
|
||||
),
|
||||
exampleGallery: [{ url: exampleUsa }, { url: exampleGermany }],
|
||||
name: t('Country Map'),
|
||||
|
|
|
@ -177,7 +177,7 @@ function Heatmap(element, props) {
|
|||
domain[d[k]] = (domain[d[k]] || 0) + d.v;
|
||||
actualKeys[d[k]] = d[k];
|
||||
});
|
||||
// Not usgin object.keys() as it converts to strings
|
||||
// Not using object.keys() as it converts to strings
|
||||
const keys = Object.keys(actualKeys).map(s => actualKeys[s]);
|
||||
if (sortMethod === 'alpha_asc') {
|
||||
domain = keys.sort(cmp);
|
||||
|
|
|
@ -23,17 +23,17 @@ import Component from './ParallelCoordinates';
|
|||
|
||||
const ReactComponent = reactify(Component);
|
||||
|
||||
const ParallelCoordianes = ({ className, ...otherProps }) => (
|
||||
const ParallelCoordinates = ({ className, ...otherProps }) => (
|
||||
<div className={className}>
|
||||
<ReactComponent {...otherProps} />
|
||||
</div>
|
||||
);
|
||||
|
||||
ParallelCoordianes.propTypes = {
|
||||
ParallelCoordinates.propTypes = {
|
||||
className: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
export default styled(ParallelCoordianes)`
|
||||
export default styled(ParallelCoordinates)`
|
||||
${({ theme }) => `
|
||||
.superset-legacy-chart-parallel-coordinates {
|
||||
div.grid {
|
||||
|
|
|
@ -26,9 +26,9 @@ import {
|
|||
CategoricalColorNamespace,
|
||||
} from '@superset-ui/core';
|
||||
|
||||
// a problem with 'd3-sankey-diagram' is that the sankey().extent() paramters, which
|
||||
// a problem with 'd3-sankey-diagram' is that the sankey().extent() parameters, which
|
||||
// informs the layout of the bounding box of the sankey columns, does not account
|
||||
// for labels and paths which happen to be layedout outside that rectangle.
|
||||
// for labels and paths which happen to be layed out outside that rectangle.
|
||||
// for that reason i've selected relatively large default left/right margins, and have
|
||||
// made 'margin' a property. i have raised an issue in the chart repo:
|
||||
//
|
||||
|
|
|
@ -27,7 +27,7 @@ import React from 'react';
|
|||
import PropTypes from 'prop-types';
|
||||
import Mousetrap from 'mousetrap';
|
||||
import { t, styled } from '@superset-ui/core';
|
||||
import BootrapSliderWrapper from './BootstrapSliderWrapper';
|
||||
import BootstrapSliderWrapper from './BootstrapSliderWrapper';
|
||||
|
||||
const StyledSlider = styled.div`
|
||||
${({ theme }) => `
|
||||
|
@ -210,7 +210,7 @@ export default class PlaySlider extends React.PureComponent {
|
|||
/>
|
||||
</div>
|
||||
<div className="play-slider-scrobbler padded">
|
||||
<BootrapSliderWrapper
|
||||
<BootstrapSliderWrapper
|
||||
value={range ? values : values[0]}
|
||||
range={range}
|
||||
formatter={this.formatter}
|
||||
|
|
|
@ -40,7 +40,7 @@ import getPointsFromPolygon from '../../utils/getPointsFromPolygon';
|
|||
// eslint-disable-next-line import/extensions
|
||||
import fitViewport from '../../utils/fitViewport';
|
||||
|
||||
const DOUBLE_CLICK_TRESHOLD = 250; // milliseconds
|
||||
const DOUBLE_CLICK_THRESHOLD = 250; // milliseconds
|
||||
|
||||
function getElevation(d, colorScaler) {
|
||||
/* in deck.gl 5.3.4 (used in Superset as of 2018-10-24), if a polygon has
|
||||
|
@ -228,7 +228,7 @@ class DeckGLPolygon extends React.Component {
|
|||
const { formData, onAddFilter } = this.props;
|
||||
|
||||
const now = new Date();
|
||||
const doubleClick = now - this.state.lastClick <= DOUBLE_CLICK_TRESHOLD;
|
||||
const doubleClick = now - this.state.lastClick <= DOUBLE_CLICK_THRESHOLD;
|
||||
|
||||
// toggle selected polygons
|
||||
const selected = [...this.state.selected];
|
||||
|
|
|
@ -119,7 +119,7 @@ const config: ControlPanelConfig = {
|
|||
renderTrigger: true,
|
||||
default: 250,
|
||||
description: t(
|
||||
'Maxium radius size of the circle, in pixels. As the zoom level changes, this ' +
|
||||
'Maximum radius size of the circle, in pixels. As the zoom level changes, this ' +
|
||||
'insures that the circle respects this maximum radius.',
|
||||
),
|
||||
},
|
||||
|
|
|
@ -121,7 +121,7 @@ export const jsColumns = {
|
|||
label: t('Extra data for JS'),
|
||||
default: [],
|
||||
description: t(
|
||||
'List of extra columns made available in Javascript functions',
|
||||
'List of extra columns made available in JavaScript functions',
|
||||
),
|
||||
},
|
||||
};
|
||||
|
@ -129,7 +129,7 @@ export const jsColumns = {
|
|||
export const jsDataMutator = {
|
||||
name: 'js_data_mutator',
|
||||
config: jsFunctionControl(
|
||||
t('Javascript data interceptor'),
|
||||
t('JavaScript data interceptor'),
|
||||
t(
|
||||
'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 ' +
|
||||
|
@ -141,7 +141,7 @@ export const jsDataMutator = {
|
|||
export const jsTooltip = {
|
||||
name: 'js_tooltip',
|
||||
config: jsFunctionControl(
|
||||
t('Javascript tooltip generator'),
|
||||
t('JavaScript tooltip generator'),
|
||||
t(
|
||||
'Define a function that receives the input and outputs the content for a tooltip',
|
||||
),
|
||||
|
@ -151,7 +151,7 @@ export const jsTooltip = {
|
|||
export const jsOnclickHref = {
|
||||
name: 'js_onclick_href',
|
||||
config: jsFunctionControl(
|
||||
t('Javascript onClick href'),
|
||||
t('JavaScript onClick href'),
|
||||
t('Define a function that returns a URL to navigate to when user clicks'),
|
||||
),
|
||||
};
|
||||
|
|
|
@ -21,7 +21,7 @@ import computeBoundsFromPoints from './computeBoundsFromPoints';
|
|||
import { Point } from '../types';
|
||||
|
||||
export type Viewport = {
|
||||
longtitude: number;
|
||||
longitude: number;
|
||||
latitude: number;
|
||||
zoom: number;
|
||||
bearing?: number;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
import moment from 'moment';
|
||||
|
||||
// array with the minimum values of each part of a timestamp -- note that
|
||||
// months are zero-indexed in Javascript
|
||||
// months are zero-indexed in JavaScript
|
||||
const truncatePartTo = [
|
||||
1, // year
|
||||
0, // month
|
||||
|
@ -62,13 +62,13 @@ export function truncate(timestamp, step) {
|
|||
function getStepSeconds(step, start) {
|
||||
/* Return number of seconds in a step.
|
||||
*
|
||||
* The step might be ambigous, eg, "1 month" has a variable number of
|
||||
* The step might be ambiguous, eg, "1 month" has a variable number of
|
||||
* seconds, which is why we need to know the start time.
|
||||
*/
|
||||
const startMillliseconds = parseInt(moment(start).format('x'), 10);
|
||||
const startMilliseconds = parseInt(moment(start).format('x'), 10);
|
||||
const endMilliseconds = parseInt(moment(start).add(step).format('x'), 10);
|
||||
|
||||
return endMilliseconds - startMillliseconds;
|
||||
return endMilliseconds - startMilliseconds;
|
||||
}
|
||||
|
||||
export function getPlaySliderParams(timestamps, timeGrain) {
|
||||
|
|
|
@ -97,7 +97,7 @@ const config: ControlPanelConfig = {
|
|||
renderTrigger: true,
|
||||
default: true,
|
||||
description: t(
|
||||
'Whether to display the labels. Note that the label only displays when the the 5% ' +
|
||||
'Whether to display the labels. Note that the label only displays when the 5% ' +
|
||||
'threshold.',
|
||||
),
|
||||
},
|
||||
|
|
|
@ -29,12 +29,12 @@ export default function buildQuery(formData: QueryFormData) {
|
|||
return buildQueryContext(formData, baseQueryObject => {
|
||||
let { metrics, orderby = [] } = baseQueryObject;
|
||||
metrics = metrics || [];
|
||||
// orverride orderby with timeseries metric
|
||||
// override orderby with timeseries metric
|
||||
if (sortByMetric) {
|
||||
orderby = [[sortByMetric, false]];
|
||||
} else if (metrics?.length > 0) {
|
||||
// default to ordering by first metric in descending order
|
||||
// when no "sort by" metric is set (regargless if "SORT DESC" is set to true)
|
||||
// when no "sort by" metric is set (regardless if "SORT DESC" is set to true)
|
||||
orderby = [[metrics[0], false]];
|
||||
}
|
||||
return [
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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
|
||||
* regardin
|
||||
* regarding
|
||||
* g 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
|
||||
|
|
|
@ -161,7 +161,7 @@ const controlPanel: ControlPanelConfig = {
|
|||
['right', t('right')],
|
||||
['bottom', t('bottom')],
|
||||
],
|
||||
description: t('Position of intermidiate node label on tree'),
|
||||
description: t('Position of intermediate node label on tree'),
|
||||
},
|
||||
},
|
||||
],
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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
|
||||
* regardin
|
||||
* regarding
|
||||
* g 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
|
||||
|
@ -50,7 +50,7 @@ export default class EchartsTreemapChartPlugin extends ChartPlugin<
|
|||
category: t('Part of a Whole'),
|
||||
credits: ['https://echarts.apache.org'],
|
||||
description: t(
|
||||
'Show hierarchical relationships of data, with with the value represented by area, showing proportion and contribution to the whole.',
|
||||
'Show hierarchical relationships of data, with the value represented by area, showing proportion and contribution to the whole.',
|
||||
),
|
||||
exampleGallery: [{ url: example1 }, { url: example2 }],
|
||||
name: t('Treemap'),
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* under the License.
|
||||
*/
|
||||
import {
|
||||
ComparisionType,
|
||||
ComparisonType,
|
||||
FreeFormAdhocFilter,
|
||||
RollingType,
|
||||
TimeGranularity,
|
||||
|
@ -72,14 +72,14 @@ const formDataMixedChartWithAA = {
|
|||
...formDataMixedChart,
|
||||
rolling_type: RollingType.Cumsum,
|
||||
time_compare: ['1 years ago'],
|
||||
comparison_type: ComparisionType.Values,
|
||||
comparison_type: ComparisonType.Values,
|
||||
resample_rule: '1AS',
|
||||
resample_method: 'zerofill',
|
||||
|
||||
rolling_type_b: RollingType.Sum,
|
||||
rolling_periods_b: 1,
|
||||
min_periods_b: 1,
|
||||
comparison_type_b: ComparisionType.Difference,
|
||||
comparison_type_b: ComparisonType.Difference,
|
||||
time_compare_b: ['3 years ago'],
|
||||
resample_rule_b: '1A',
|
||||
resample_method_b: 'asfreq',
|
||||
|
|
|
@ -20,7 +20,7 @@ import { ChartProps, QueryFormData, supersetTheme } from '@superset-ui/core';
|
|||
import { HandlebarsQueryFormData } from '../../src/types';
|
||||
import transformProps from '../../src/plugin/transformProps';
|
||||
|
||||
describe('Handlebars tranformProps', () => {
|
||||
describe('Handlebars transformProps', () => {
|
||||
const formData: HandlebarsQueryFormData = {
|
||||
colorScheme: 'bnbColors',
|
||||
datasource: '3__table',
|
||||
|
@ -40,7 +40,7 @@ describe('Handlebars tranformProps', () => {
|
|||
theme: supersetTheme,
|
||||
});
|
||||
|
||||
it('should tranform chart props for viz', () => {
|
||||
it('should transform chart props for viz', () => {
|
||||
expect(transformProps(chartProps)).toEqual(
|
||||
expect.objectContaining({
|
||||
width: 800,
|
||||
|
|
|
@ -478,7 +478,7 @@ export default function TableChart<D extends DataRecord = DataRecord>(
|
|||
// eslint-disable-next-line react/no-danger
|
||||
return <StyledCell {...cellProps} dangerouslySetInnerHTML={html} />;
|
||||
}
|
||||
// If cellProps renderes textContent already, then we don't have to
|
||||
// If cellProps renders textContent already, then we don't have to
|
||||
// render `Cell`. This saves some time for large tables.
|
||||
return (
|
||||
<StyledCell {...cellProps}>
|
||||
|
|
|
@ -71,12 +71,12 @@ const buildQuery: BuildQuery<TableChartFormData> = (
|
|||
|
||||
if (queryMode === QueryMode.aggregate) {
|
||||
metrics = metrics || [];
|
||||
// orverride orderby with timeseries metric when in aggregation mode
|
||||
// override orderby with timeseries metric when in aggregation mode
|
||||
if (sortByMetric) {
|
||||
orderby = [[sortByMetric, !orderDesc]];
|
||||
} else if (metrics?.length > 0) {
|
||||
// default to ordering by first metric in descending order
|
||||
// when no "sort by" metric is set (regargless if "SORT DESC" is set to true)
|
||||
// when no "sort by" metric is set (regardless if "SORT DESC" is set to true)
|
||||
orderby = [[metrics[0], false]];
|
||||
}
|
||||
// add postprocessing for percent metrics only when in aggregation mode
|
||||
|
|
|
@ -43,7 +43,7 @@ function isCompatibleDomainOrRange(
|
|||
}
|
||||
|
||||
/**
|
||||
* Convert encodeable scale object into @data-ui's scale config
|
||||
* Convert encodable scale object into @data-ui's scale config
|
||||
* @param scale
|
||||
*/
|
||||
export default function convertScaleToDataUIScale<Output extends Value>(
|
||||
|
|
|
@ -90,7 +90,7 @@ export type SupersetStyledSelectProps<
|
|||
// callback for paste event
|
||||
onPaste?: (e: SyntheticEvent) => void;
|
||||
forceOverflow?: boolean;
|
||||
// for simplier theme overrides
|
||||
// for simpler theme overrides
|
||||
themeConfig?: PartialThemeConfig;
|
||||
stylesConfig?: PartialStylesConfig;
|
||||
};
|
||||
|
@ -185,7 +185,7 @@ function styled<
|
|||
// `value` may be rendered values (strings), we want option objects
|
||||
const value: OptionType[] = findValue(value_, options || [], valueKey);
|
||||
|
||||
// Add backward compability to v1 API
|
||||
// Add backward compatibility to v1 API
|
||||
const isMulti = isMulti_ === undefined ? multi : isMulti_;
|
||||
const isClearable = isClearable_ === undefined ? clearable : isClearable_;
|
||||
|
||||
|
|
|
@ -60,7 +60,6 @@ describe('LabeledErrorBoundInput', () => {
|
|||
expect(textboxInput).toBeVisible();
|
||||
expect(errorText).toBeVisible();
|
||||
});
|
||||
|
||||
it('renders a LabeledErrorBoundInput with a InfoTooltip', async () => {
|
||||
defaultProps.hasTooltip = true;
|
||||
render(<LabeledErrorBoundInput {...defaultProps} />);
|
||||
|
|
|
@ -344,7 +344,7 @@ export function useListViewState({
|
|||
|
||||
const applyFilterValue = (index: number, value: any) => {
|
||||
setInternalFilters(currentInternalFilters => {
|
||||
// skip redunundant updates
|
||||
// skip redundant updates
|
||||
if (currentInternalFilters[index].value === value) {
|
||||
return currentInternalFilters;
|
||||
}
|
||||
|
|
|
@ -158,7 +158,7 @@ const mountHeader = (type: String) => {
|
|||
header = (
|
||||
<ControlHeader
|
||||
label="Control header"
|
||||
warning="Example of warning messsage"
|
||||
warning="Example of warning message"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -232,7 +232,7 @@ const SliceHeader: FC<SliceHeaderProps> = ({
|
|||
)}
|
||||
{!!Object.values(annotationError).length && (
|
||||
<Tooltip
|
||||
id="annoation-errors-tooltip"
|
||||
id="annotation-errors-tooltip"
|
||||
placement="top"
|
||||
title={annotationsError}
|
||||
>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
import handleHover from './handleHover';
|
||||
import handleDrop from './handleDrop';
|
||||
|
||||
// note: the 'type' hook is not useful for us as dropping is contigent on other properties
|
||||
// note: the 'type' hook is not useful for us as dropping is contingent on other properties
|
||||
const TYPE = 'DRAG_DROPPABLE';
|
||||
|
||||
export const dragConfig = [
|
||||
|
|
|
@ -211,7 +211,7 @@ class Chart extends React.Component {
|
|||
for (let i = 0; i < SHOULD_UPDATE_ON_PROP_CHANGES.length; i += 1) {
|
||||
const prop = SHOULD_UPDATE_ON_PROP_CHANGES[i];
|
||||
// use deep objects equality comparison to prevent
|
||||
// unneccessary updates when objects references change
|
||||
// unnecessary updates when objects references change
|
||||
if (!areObjectsEqual(nextProps[prop], this.props[prop])) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ import { nativeFilters } from 'spec/fixtures/mockNativeFilters';
|
|||
import { initialState } from 'src/SqlLab/fixtures';
|
||||
|
||||
describe('Tabs', () => {
|
||||
fetchMock.post('glob:*/r/shortner/', {});
|
||||
fetchMock.post('glob:*/r/shortener/', {});
|
||||
|
||||
const props = {
|
||||
id: 'TABS_ID',
|
||||
|
|
|
@ -129,7 +129,7 @@ export default function getControlItemsMap({
|
|||
doesColumnMatchFilterType(formFilter?.filterType || '', column)
|
||||
}
|
||||
onChange={() => {
|
||||
// We need reset default value when when column changed
|
||||
// We need reset default value when column changed
|
||||
setNativeFilterFieldValues(form, filterId, {
|
||||
defaultDataMask: null,
|
||||
});
|
||||
|
|
|
@ -72,7 +72,7 @@ interface PreselectedFilterColumn {
|
|||
[key: string]: boolean | string | number | string[] | number[];
|
||||
}
|
||||
|
||||
interface PreselectedFiltersMeatadata {
|
||||
interface PreselectedFiltersMetadata {
|
||||
[key: string]: PreselectedFilterColumn;
|
||||
}
|
||||
|
||||
|
@ -97,7 +97,7 @@ enum FILTER_COMPONENT_FILTER_TYPES {
|
|||
}
|
||||
|
||||
const getPreselectedValuesFromDashboard =
|
||||
(preselectedFilters: PreselectedFiltersMeatadata) =>
|
||||
(preselectedFilters: PreselectedFiltersMetadata) =>
|
||||
(filterKey: string, column: string) => {
|
||||
if (preselectedFilters[filterKey]?.[column]) {
|
||||
// overwrite default values by dashboard default_filters
|
||||
|
@ -154,7 +154,7 @@ const getFilterboxDependencies = (filterScopes: FilterScopesMetadata) => {
|
|||
export default function getNativeFilterConfig(
|
||||
chartData: SliceData[] = [],
|
||||
filterScopes: FilterScopesMetadata = {},
|
||||
preselectFilters: PreselectedFiltersMeatadata = {},
|
||||
preselectFilters: PreselectedFiltersMetadata = {},
|
||||
): Filter[] {
|
||||
const filterConfig: Filter[] = [];
|
||||
const filterBoxToFilterComponentMap: FilterBoxToFilterComponentMap = {};
|
||||
|
|
|
@ -61,7 +61,7 @@ describe('Control', () => {
|
|||
it('render null if type is not valid', () => {
|
||||
render(
|
||||
setup({
|
||||
type: 'UnkownControl',
|
||||
type: 'UnknownControl',
|
||||
}),
|
||||
);
|
||||
expect(screen.queryByRole('checkbox')).not.toBeInTheDocument();
|
||||
|
|
|
@ -411,7 +411,7 @@ const ExploreChartPanel = ({
|
|||
);
|
||||
|
||||
if (standalone) {
|
||||
// dom manipulation hack to get rid of the boostrap theme's body background
|
||||
// dom manipulation hack to get rid of the bootstrap theme's body background
|
||||
const standaloneClass = 'background-transparent';
|
||||
const bodyClasses = document.body.className.split(' ');
|
||||
if (!bodyClasses.includes(standaloneClass)) {
|
||||
|
|
|
@ -59,7 +59,7 @@ const styles = {
|
|||
...swatchCommon,
|
||||
borderRadius: '2px',
|
||||
},
|
||||
checkboard: {
|
||||
checkerboard: {
|
||||
...swatchCommon,
|
||||
background:
|
||||
'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==") left center',
|
||||
|
@ -105,7 +105,7 @@ export default class ColorPickerControl extends React.Component {
|
|||
content={this.renderPopover()}
|
||||
>
|
||||
<StyledSwatch>
|
||||
<div style={styles.checkboard} />
|
||||
<div style={styles.checkerboard} />
|
||||
<div style={colStyle} />
|
||||
</StyledSwatch>
|
||||
</Popover>
|
||||
|
|
|
@ -48,7 +48,7 @@ const StyledAlert = styled(Icons.AlertSolid)`
|
|||
`;
|
||||
|
||||
const CUSTOM_LABEL_ALERT = t(
|
||||
`This color scheme is being overriden by custom label colors.
|
||||
`This color scheme is being overridden by custom label colors.
|
||||
Check the JSON metadata in the Advanced settings`,
|
||||
);
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ export type FrameType =
|
|||
|
||||
export type DateTimeGrainType =
|
||||
| 'second'
|
||||
| 'minite'
|
||||
| 'minute'
|
||||
| 'hour'
|
||||
| 'day'
|
||||
| 'week'
|
||||
|
|
|
@ -127,7 +127,7 @@ export default class AdhocMetric {
|
|||
...this,
|
||||
// all duplicate metrics are not considered new by default
|
||||
isNew: false,
|
||||
// but still overriddable by nextFields
|
||||
// but still overridable by nextFields
|
||||
...nextFields,
|
||||
});
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ jest.mock('src/utils/hostNamesConfig', () => ({
|
|||
],
|
||||
}));
|
||||
|
||||
test('Should get next diferent domain on a loop, never the first on the list', () => {
|
||||
test('Should get next different domain on a loop, never the first on the list', () => {
|
||||
for (let loop = 3; loop > 0; loop -= 1) {
|
||||
expect(getHostName(true)).toBe('domain-b');
|
||||
expect(getHostName(true)).toBe('domain-c');
|
||||
|
|
|
@ -22,7 +22,7 @@ import { getAllControlsState, getFormDataFromControls } from './controlUtils';
|
|||
import { controls } from './controls';
|
||||
|
||||
function handleDeprecatedControls(formData) {
|
||||
// Reacffectation / handling of deprecated controls
|
||||
// Reaffectation / handling of deprecated controls
|
||||
/* eslint-disable no-param-reassign */
|
||||
|
||||
// y_axis_zero was a boolean forcing 0 to be part of the Y Axis
|
||||
|
|
|
@ -25,7 +25,7 @@ import { merge } from 'lodash';
|
|||
import setupClient from './setup/setupClient';
|
||||
import setupColors from './setup/setupColors';
|
||||
import setupFormatters from './setup/setupFormatters';
|
||||
import setupDashboardComponents from './setup/setupDasboardComponents';
|
||||
import setupDashboardComponents from './setup/setupDashboardComponents';
|
||||
import { User } from './types/bootstrapTypes';
|
||||
import { initFeatureFlags } from './featureFlags';
|
||||
import getBootstrapData from './utils/getBootstrapData';
|
||||
|
|
|
@ -56,7 +56,7 @@ export function parseErrorJson(responseObject: JsonObject): ClientErrorObject {
|
|||
error.error = error.description = error.errors[0].message;
|
||||
error.link = error.errors[0]?.extra?.link;
|
||||
}
|
||||
// Marshmallow field validation returns the error mssage in the format
|
||||
// Marshmallow field validation returns the error message in the format
|
||||
// of { message: { field1: [msg1, msg2], field2: [msg], } }
|
||||
if (!error.error && error.message) {
|
||||
if (typeof error.message === 'object') {
|
||||
|
|
|
@ -274,7 +274,7 @@ function AnnotationList({
|
|||
annotation={currentAnnotation}
|
||||
show={annotationModalOpen}
|
||||
onAnnotationAdd={() => refreshData()}
|
||||
annnotationLayerId={annotationLayerId}
|
||||
annotationLayerId={annotationLayerId}
|
||||
onHide={() => setAnnotationModalOpen(false)}
|
||||
/>
|
||||
{annotationCurrentlyDeleting && (
|
||||
|
|
|
@ -80,12 +80,12 @@ describe('AnnotationModal', () => {
|
|||
it('renders add header when no annotation prop is included', async () => {
|
||||
const addWrapper = await mountAndWait({});
|
||||
expect(
|
||||
addWrapper.find('[data-test="annotaion-modal-title"]').text(),
|
||||
addWrapper.find('[data-test="annotation-modal-title"]').text(),
|
||||
).toEqual('Add annotation');
|
||||
});
|
||||
|
||||
it('renders edit header when annotation prop is included', () => {
|
||||
expect(wrapper.find('[data-test="annotaion-modal-title"]').text()).toEqual(
|
||||
expect(wrapper.find('[data-test="annotation-modal-title"]').text()).toEqual(
|
||||
'Edit annotation',
|
||||
);
|
||||
});
|
||||
|
|
|
@ -32,7 +32,7 @@ import { AnnotationObject } from './types';
|
|||
interface AnnotationModalProps {
|
||||
addDangerToast: (msg: string) => void;
|
||||
addSuccessToast: (msg: string) => void;
|
||||
annnotationLayerId: number;
|
||||
annotationLayerId: number;
|
||||
annotation?: AnnotationObject | null;
|
||||
onAnnotationAdd?: (annotation?: AnnotationObject) => void;
|
||||
onHide: () => void;
|
||||
|
@ -84,7 +84,7 @@ const AnnotationContainer = styled.div`
|
|||
const AnnotationModal: FunctionComponent<AnnotationModalProps> = ({
|
||||
addDangerToast,
|
||||
addSuccessToast,
|
||||
annnotationLayerId,
|
||||
annotationLayerId,
|
||||
annotation = null,
|
||||
onAnnotationAdd,
|
||||
onHide,
|
||||
|
@ -102,7 +102,7 @@ const AnnotationModal: FunctionComponent<AnnotationModalProps> = ({
|
|||
createResource,
|
||||
updateResource,
|
||||
} = useSingleViewResource<AnnotationObject>(
|
||||
`annotation_layer/${annnotationLayerId}/annotation`,
|
||||
`annotation_layer/${annotationLayerId}/annotation`,
|
||||
t('annotation'),
|
||||
addDangerToast,
|
||||
);
|
||||
|
@ -273,7 +273,7 @@ const AnnotationModal: FunctionComponent<AnnotationModalProps> = ({
|
|||
show={show}
|
||||
width="55%"
|
||||
title={
|
||||
<h4 data-test="annotaion-modal-title">
|
||||
<h4 data-test="annotation-modal-title">
|
||||
{isEditMode ? (
|
||||
<Icons.EditAlt css={StyledIcon} />
|
||||
) : (
|
||||
|
|
|
@ -37,7 +37,7 @@ import Icons from 'src/components/Icons';
|
|||
import { isUserAdmin } from 'src/dashboard/util/permissionUtils';
|
||||
import ListView, { FilterOperator, Filters } from 'src/components/ListView';
|
||||
import handleResourceExport from 'src/utils/export';
|
||||
import { ExtentionConfigs } from 'src/views/components/types';
|
||||
import { ExtensionConfigs } from 'src/views/components/types';
|
||||
import { UserWithPermissionsAndRoles } from 'src/types/bootstrapTypes';
|
||||
import type { MenuObjectProps } from 'src/types/bootstrapTypes';
|
||||
import DatabaseModal from './DatabaseModal';
|
||||
|
@ -120,7 +120,7 @@ function DatabaseList({ addDangerToast, addSuccessToast }: DatabaseListProps) {
|
|||
COLUMNAR_EXTENSIONS,
|
||||
EXCEL_EXTENSIONS,
|
||||
ALLOWED_EXTENSIONS,
|
||||
} = useSelector<any, ExtentionConfigs>(state => state.common.conf);
|
||||
} = useSelector<any, ExtensionConfigs>(state => state.common.conf);
|
||||
|
||||
useEffect(() => {
|
||||
if (query?.databaseAdded) {
|
||||
|
|
|
@ -23,7 +23,7 @@ import InfoTooltip from 'src/components/InfoTooltip';
|
|||
import FormLabel from 'src/components/Form/FormLabel';
|
||||
import Icons from 'src/components/Icons';
|
||||
import { FieldPropTypes } from '.';
|
||||
import { infoTooltip, labelMarginBotton, CredentialInfoForm } from '../styles';
|
||||
import { infoTooltip, labelMarginBottom, CredentialInfoForm } from '../styles';
|
||||
|
||||
enum CredentialInfoOptions {
|
||||
jsonUpload,
|
||||
|
@ -66,7 +66,7 @@ export const EncryptedField = ({
|
|||
{db?.engine === 'gsheets' && (
|
||||
<div className="catalog-type-select">
|
||||
<FormLabel
|
||||
css={(theme: SupersetTheme) => labelMarginBotton(theme)}
|
||||
css={(theme: SupersetTheme) => labelMarginBottom(theme)}
|
||||
required
|
||||
>
|
||||
{t('Type of Google Sheets allowed')}
|
||||
|
|
|
@ -753,7 +753,7 @@ const DatabaseModal: FunctionComponent<DatabaseModalProps> = ({
|
|||
}
|
||||
|
||||
if (dbToUpdate?.parameters?.catalog) {
|
||||
// need to stringify gsheets catalog to allow it to be seralized
|
||||
// need to stringify gsheets catalog to allow it to be serialized
|
||||
dbToUpdate.extra = JSON.stringify({
|
||||
...JSON.parse(dbToUpdate.extra || '{}'),
|
||||
engine_params: {
|
||||
|
|
|
@ -32,7 +32,7 @@ export const no_margin_bottom = css`
|
|||
margin-bottom: 0;
|
||||
`;
|
||||
|
||||
export const labelMarginBotton = (theme: SupersetTheme) => css`
|
||||
export const labelMarginBottom = (theme: SupersetTheme) => css`
|
||||
margin-bottom: ${theme.gridUnit * 2}px;
|
||||
`;
|
||||
|
||||
|
|
|
@ -117,7 +117,7 @@ export enum QueryObjectColumns {
|
|||
database_name = 'database.database_name',
|
||||
schema = 'schema',
|
||||
sql = 'sql',
|
||||
executed_sql = 'exceuted_sql',
|
||||
executed_sql = 'executed_sql',
|
||||
sql_tables = 'sql_tables',
|
||||
status = 'status',
|
||||
tab_name = 'tab_name',
|
||||
|
|
|
@ -178,7 +178,7 @@ export const getUserOwnedObjects = (
|
|||
endpoint: `/api/v1/${resource}/?q=${getParams(filters)}`,
|
||||
}).then(res => res.json?.result);
|
||||
|
||||
export const getRecentAcitivtyObjs = (
|
||||
export const getRecentActivityObjs = (
|
||||
userId: string | number,
|
||||
recent: string,
|
||||
addDangerToast: (arg1: string, arg2: any) => any,
|
||||
|
|
|
@ -58,7 +58,7 @@ interface RecentDashboard extends RecentActivity {
|
|||
}
|
||||
|
||||
/**
|
||||
* Recent activity objects fetched by `getRecentAcitivtyObjs`.
|
||||
* Recent activity objects fetched by `getRecentActivityObjs`.
|
||||
*/
|
||||
type ActivityObject =
|
||||
| RecentSlice
|
||||
|
|
|
@ -38,7 +38,7 @@ import ListViewCard from 'src/components/ListViewCard';
|
|||
import withToasts from 'src/components/MessageToasts/withToasts';
|
||||
import {
|
||||
createErrorHandler,
|
||||
getRecentAcitivtyObjs,
|
||||
getRecentActivityObjs,
|
||||
mq,
|
||||
CardContainer,
|
||||
getUserOwnedObjects,
|
||||
|
@ -228,7 +228,7 @@ function Welcome({ user, addDangerToast }: WelcomeProps) {
|
|||
}
|
||||
const activeTab = getItem(LocalStorageKeys.homepage_activity_filter, null);
|
||||
setActiveState(collapseState.length > 0 ? collapseState : DEFAULT_TAB_ARR);
|
||||
getRecentAcitivtyObjs(user.userId!, recent, addDangerToast, otherTabFilters)
|
||||
getRecentActivityObjs(user.userId!, recent, addDangerToast, otherTabFilters)
|
||||
.then(res => {
|
||||
const data: ActivityData | null = {};
|
||||
data[TableTab.Other] = res.other;
|
||||
|
|
|
@ -48,7 +48,7 @@ import LanguagePicker from './LanguagePicker';
|
|||
import DatabaseModal from '../CRUD/data/database/DatabaseModal';
|
||||
import { uploadUserPerms } from '../CRUD/utils';
|
||||
import {
|
||||
ExtentionConfigs,
|
||||
ExtensionConfigs,
|
||||
GlobalMenuDataOptions,
|
||||
RightMenuProps,
|
||||
} from './types';
|
||||
|
@ -141,7 +141,7 @@ const RightMenu = ({
|
|||
EXCEL_EXTENSIONS,
|
||||
ALLOWED_EXTENSIONS,
|
||||
HAS_GSHEETS_INSTALLED,
|
||||
} = useSelector<any, ExtentionConfigs>(state => state.common.conf);
|
||||
} = useSelector<any, ExtensionConfigs>(state => state.common.conf);
|
||||
const [showDatabaseModal, setShowDatabaseModal] = useState<boolean>(false);
|
||||
const [engine, setEngine] = useState<string>('');
|
||||
const canSql = findPermission('can_sqllab', 'Superset', roles);
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
import { NavBarProps, MenuObjectProps } from 'src/types/bootstrapTypes';
|
||||
|
||||
export interface ExtentionConfigs {
|
||||
export interface ExtensionConfigs {
|
||||
ALLOWED_EXTENSIONS: Array<any>;
|
||||
CSV_EXTENSIONS: Array<any>;
|
||||
COLUMNAR_EXTENSIONS: Array<any>;
|
||||
|
|
|
@ -108,7 +108,7 @@ const plugins = [
|
|||
entrypoints: entryFiles,
|
||||
};
|
||||
},
|
||||
// Also write maniafest.json to disk when running `npm run dev`.
|
||||
// Also write manifest.json to disk when running `npm run dev`.
|
||||
// This is required for Flask to work.
|
||||
writeToFileEmit: isDevMode && !isDevServer,
|
||||
}),
|
||||
|
@ -325,7 +325,7 @@ const config = {
|
|||
transpileOnly: true,
|
||||
// must override compiler options here, even though we have set
|
||||
// the same options in `tsconfig.json`, because they may still
|
||||
// be overriden by `tsconfig.json` in node_modules subdirectories.
|
||||
// be overridden by `tsconfig.json` in node_modules subdirectories.
|
||||
compilerOptions: {
|
||||
esModuleInterop: false,
|
||||
importHelpers: false,
|
||||
|
|
|
@ -435,7 +435,7 @@ class ChartDataRollingOptionsSchema(ChartDataPostProcessingOperationOptionsSchem
|
|||
example=7,
|
||||
)
|
||||
rolling_type_options = fields.Dict(
|
||||
desctiption="Optional options to pass to rolling method. Needed for "
|
||||
description="Optional options to pass to rolling method. Needed for "
|
||||
"e.g. quantile operation.",
|
||||
example={},
|
||||
)
|
||||
|
@ -551,7 +551,7 @@ class ChartDataProphetOptionsSchema(ChartDataPostProcessingOperationOptionsSchem
|
|||
required=True,
|
||||
)
|
||||
periods = fields.Integer(
|
||||
descrption="Time periods (in units of `time_grain`) to predict into the future",
|
||||
description="Time periods (in units of `time_grain`) to predict into the future",
|
||||
min=0,
|
||||
example=7,
|
||||
required=True,
|
||||
|
@ -910,7 +910,7 @@ class AnnotationLayerSchema(Schema):
|
|||
)
|
||||
overrides = fields.Dict(
|
||||
keys=fields.String(
|
||||
desciption="Name of property to be overridden",
|
||||
description="Name of property to be overridden",
|
||||
validate=validate.OneOf(
|
||||
choices=("granularity", "time_grain_sqla", "time_range", "time_shift"),
|
||||
),
|
||||
|
@ -1298,7 +1298,7 @@ class ChartDataResponseResult(Schema):
|
|||
allow_none=False,
|
||||
)
|
||||
stacktrace = fields.String(
|
||||
desciption="Stacktrace if there was an error",
|
||||
description="Stacktrace if there was an error",
|
||||
allow_none=True,
|
||||
)
|
||||
rowcount = fields.Integer(
|
||||
|
@ -1317,10 +1317,10 @@ class ChartDataResponseResult(Schema):
|
|||
fields.Dict(), description="A list with rejected filters"
|
||||
)
|
||||
from_dttm = fields.Integer(
|
||||
desciption="Start timestamp of time range", required=False, allow_none=True
|
||||
description="Start timestamp of time range", required=False, allow_none=True
|
||||
)
|
||||
to_dttm = fields.Integer(
|
||||
desciption="End timestamp of time range", required=False, allow_none=True
|
||||
description="End timestamp of time range", required=False, allow_none=True
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ if feature_flags.get("VERSIONED_EXPORT"):
|
|||
@click.option(
|
||||
"--dashboard-file",
|
||||
"-f",
|
||||
help="Specify the the file to export to",
|
||||
help="Specify the file to export to",
|
||||
)
|
||||
def export_dashboards(dashboard_file: Optional[str] = None) -> None:
|
||||
"""Export dashboards to ZIP file"""
|
||||
|
@ -101,7 +101,7 @@ if feature_flags.get("VERSIONED_EXPORT"):
|
|||
@click.option(
|
||||
"--datasource-file",
|
||||
"-f",
|
||||
help="Specify the the file to export to",
|
||||
help="Specify the file to export to",
|
||||
)
|
||||
def export_datasources(datasource_file: Optional[str] = None) -> None:
|
||||
"""Export datasources to ZIP file"""
|
||||
|
@ -206,7 +206,7 @@ else:
|
|||
"--dashboard-file",
|
||||
"-f",
|
||||
default=None,
|
||||
help="Specify the the file to export to",
|
||||
help="Specify the file to export to",
|
||||
)
|
||||
@click.option(
|
||||
"--print_stdout",
|
||||
|
@ -236,7 +236,7 @@ else:
|
|||
"--datasource-file",
|
||||
"-f",
|
||||
default=None,
|
||||
help="Specify the the file to export to",
|
||||
help="Specify the file to export to",
|
||||
)
|
||||
@click.option(
|
||||
"--print_stdout",
|
||||
|
|
|
@ -139,7 +139,7 @@ def import_datasource( # pylint: disable=too-many-arguments
|
|||
) -> int:
|
||||
"""Imports the datasource from the object to the database.
|
||||
|
||||
Metrics and columns and datasource will be overrided if exists.
|
||||
Metrics and columns and datasource will be overridden if exists.
|
||||
This function can be used to import/export datasources between multiple
|
||||
superset instances. Audit metadata isn't copies over.
|
||||
"""
|
||||
|
|
|
@ -90,7 +90,7 @@ position:
|
|||
chartId: 3962
|
||||
height: 82
|
||||
sliceName: Vaccine Candidates per Approach & Stage
|
||||
sliceNameOverride: Heatmap of Aproaches & Clinical Stages
|
||||
sliceNameOverride: Heatmap of Approaches & Clinical Stages
|
||||
uuid: 0c953c84-0c9a-418d-be9f-2894d2a2cee0
|
||||
width: 4
|
||||
parents:
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
"""rewriting url from shortner with new format
|
||||
"""rewriting url from shortener with new format
|
||||
|
||||
Revision ID: a99f2f7c195a
|
||||
Revises: 53fc3de270ae
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
"""cleanup_time_grainularity
|
||||
"""cleanup_time_granularity
|
||||
|
||||
Revision ID: f9a30386bd74
|
||||
Revises: b5998378c225
|
||||
|
@ -47,7 +47,7 @@ class Slice(Base):
|
|||
|
||||
def upgrade():
|
||||
"""
|
||||
Remove any erroneous time grainularity fields from slices foor those visualization
|
||||
Remove any erroneous time granularity fields from slices foor those visualization
|
||||
types which do not support time granularity.
|
||||
|
||||
:see: https://github.com/apache/superset/pull/8674
|
||||
|
@ -59,7 +59,7 @@ def upgrade():
|
|||
bind = op.get_bind()
|
||||
session = db.Session(bind=bind)
|
||||
|
||||
# Visualization types which support time grainularity (hence negate).
|
||||
# Visualization types which support time granularity (hence negate).
|
||||
viz_types = [
|
||||
"area",
|
||||
"bar",
|
||||
|
@ -73,9 +73,9 @@ def upgrade():
|
|||
"time_table",
|
||||
]
|
||||
|
||||
# Erroneous time grainularity fields for either Druid NoSQL or SQL slices which do
|
||||
# not support time grainularity.
|
||||
erroneous = ["grainularity", "time_grain_sqla"]
|
||||
# Erroneous time granularity fields for either Druid NoSQL or SQL slices which do
|
||||
# not support time granularity.
|
||||
erroneous = ["granularity", "time_grain_sqla"]
|
||||
|
||||
for slc in session.query(Slice).filter(Slice.viz_type.notin_(viz_types)).all():
|
||||
try:
|
||||
|
|
|
@ -101,7 +101,7 @@ def update_position_json(dashboard, session, uuid_map):
|
|||
|
||||
def update_dashboards(session, uuid_map):
|
||||
message = (
|
||||
"Updating dasboard position json with slice uuid.."
|
||||
"Updating dashboard position json with slice uuid.."
|
||||
if uuid_map
|
||||
else "Cleaning up slice uuid from dashboard position json.."
|
||||
)
|
||||
|
|
|
@ -91,7 +91,7 @@ def downgrade():
|
|||
|
||||
for dashboard in session.query(Dashboard).all():
|
||||
logger.info(
|
||||
"[RemoveTypeToNativeFilter] Updating Dashobard<pk:%s>",
|
||||
"[RemoveTypeToNativeFilter] Updating Dashboard<pk:%s>",
|
||||
dashboard.id,
|
||||
)
|
||||
if not dashboard.json_metadata:
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
"""add_embedded_dahshoard_table
|
||||
"""add_embedded_dashboard_table
|
||||
|
||||
Revision ID: 5afbb1a5849b
|
||||
Revises: 5fd49410a97a
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#}
|
||||
|
||||
{#
|
||||
This file may be overriden in your custom deployment.
|
||||
This file may be overridden in your custom deployment.
|
||||
It will be included in every view in superset and is a
|
||||
good place to include your custom frontend code, such as
|
||||
scripts to initialize google analytics, intercom, segment, etc.
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue