mirror of
https://github.com/apache/superset.git
synced 2026-07-03 21:35:32 +00:00
Compare commits
2 Commits
chore/ci/s
...
no_unused_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9771ad601a | ||
|
|
6e5360b7ab |
@@ -163,7 +163,7 @@ module.exports = {
|
|||||||
'@typescript-eslint/no-non-null-assertion': 0, // disabled temporarily
|
'@typescript-eslint/no-non-null-assertion': 0, // disabled temporarily
|
||||||
'@typescript-eslint/explicit-function-return-type': 0,
|
'@typescript-eslint/explicit-function-return-type': 0,
|
||||||
'@typescript-eslint/explicit-module-boundary-types': 0, // re-enable up for discussion
|
'@typescript-eslint/explicit-module-boundary-types': 0, // re-enable up for discussion
|
||||||
'@typescript-eslint/no-unused-vars': 'warn', // downgrade to Warning severity for Jest v30 upgrade
|
'@typescript-eslint/no-unused-vars': 'error',
|
||||||
camelcase: 0,
|
camelcase: 0,
|
||||||
'class-methods-use-this': 0,
|
'class-methods-use-this': 0,
|
||||||
'func-names': 0,
|
'func-names': 0,
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ export function Label(props: LabelProps) {
|
|||||||
onClick,
|
onClick,
|
||||||
children,
|
children,
|
||||||
icon,
|
icon,
|
||||||
id,
|
|
||||||
...rest
|
...rest
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ const DEFAULT_TIMEZONE = {
|
|||||||
value: 'Africa/Abidjan', // timezones are deduped by the first alphabetical value
|
value: 'Africa/Abidjan', // timezones are deduped by the first alphabetical value
|
||||||
};
|
};
|
||||||
|
|
||||||
const MIN_SELECT_WIDTH = '400px';
|
|
||||||
|
|
||||||
const offsetsToName = {
|
const offsetsToName = {
|
||||||
'-300-240': ['Eastern Standard Time', 'Eastern Daylight Time'],
|
'-300-240': ['Eastern Standard Time', 'Eastern Daylight Time'],
|
||||||
'-360-300': ['Central Standard Time', 'Central Daylight Time'],
|
'-360-300': ['Central Standard Time', 'Central Daylight Time'],
|
||||||
@@ -48,13 +46,11 @@ const offsetsToName = {
|
|||||||
export type TimezoneSelectorProps = {
|
export type TimezoneSelectorProps = {
|
||||||
onTimezoneChange: (value: string) => void;
|
onTimezoneChange: (value: string) => void;
|
||||||
timezone?: string | null;
|
timezone?: string | null;
|
||||||
minWidth?: string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function TimezoneSelector({
|
export default function TimezoneSelector({
|
||||||
onTimezoneChange,
|
onTimezoneChange,
|
||||||
timezone,
|
timezone,
|
||||||
minWidth = MIN_SELECT_WIDTH, // smallest size for current values
|
|
||||||
...rest
|
...rest
|
||||||
}: TimezoneSelectorProps) {
|
}: TimezoneSelectorProps) {
|
||||||
const { TIMEZONE_OPTIONS, TIMEZONE_OPTIONS_SORT_COMPARATOR, validTimezone } =
|
const { TIMEZONE_OPTIONS, TIMEZONE_OPTIONS_SORT_COMPARATOR, validTimezone } =
|
||||||
@@ -156,6 +152,7 @@ export default function TimezoneSelector({
|
|||||||
value={validTimezone}
|
value={validTimezone}
|
||||||
options={TIMEZONE_OPTIONS}
|
options={TIMEZONE_OPTIONS}
|
||||||
sortComparator={TIMEZONE_OPTIONS_SORT_COMPARATOR}
|
sortComparator={TIMEZONE_OPTIONS_SORT_COMPARATOR}
|
||||||
|
style={{ minWidth }}
|
||||||
{...rest}
|
{...rest}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -265,11 +265,7 @@ const DeckMulti = (props: DeckMultiProps) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const loadLayers = useCallback(
|
const loadLayers = useCallback(
|
||||||
(
|
(formData: QueryFormData, payload: JsonObject): void => {
|
||||||
formData: QueryFormData,
|
|
||||||
payload: JsonObject,
|
|
||||||
viewport?: Viewport,
|
|
||||||
): void => {
|
|
||||||
setViewport(getAdjustedViewport());
|
setViewport(getAdjustedViewport());
|
||||||
setSubSlicesLayers({});
|
setSubSlicesLayers({});
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,6 @@ export default function TableChart<D extends DataRecord = DataRecord>(
|
|||||||
defaultAlignPN: alignPositiveNegative,
|
defaultAlignPN: alignPositiveNegative,
|
||||||
showCellBars,
|
showCellBars,
|
||||||
colorPositiveNegative,
|
colorPositiveNegative,
|
||||||
totals,
|
|
||||||
columnColorFormatters,
|
columnColorFormatters,
|
||||||
allowRearrangeColumns,
|
allowRearrangeColumns,
|
||||||
basicColorFormatters,
|
basicColorFormatters,
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
import { ColDef } from 'ag-grid-community';
|
import { ColDef } from 'ag-grid-community';
|
||||||
import { useCallback, useMemo } from 'react';
|
import { useCallback, useMemo } from 'react';
|
||||||
import { DataRecord, GenericDataType } from '@superset-ui/core';
|
import { GenericDataType } from '@superset-ui/core';
|
||||||
import { ColorFormatters } from '@superset-ui/chart-controls';
|
import { ColorFormatters } from '@superset-ui/chart-controls';
|
||||||
import { extent as d3Extent, max as d3Max } from 'd3-array';
|
import { extent as d3Extent, max as d3Max } from 'd3-array';
|
||||||
import {
|
import {
|
||||||
@@ -49,7 +49,6 @@ type UseColDefsProps = {
|
|||||||
defaultAlignPN: boolean;
|
defaultAlignPN: boolean;
|
||||||
showCellBars: boolean;
|
showCellBars: boolean;
|
||||||
colorPositiveNegative: boolean;
|
colorPositiveNegative: boolean;
|
||||||
totals: DataRecord | undefined;
|
|
||||||
columnColorFormatters: ColorFormatters;
|
columnColorFormatters: ColorFormatters;
|
||||||
allowRearrangeColumns?: boolean;
|
allowRearrangeColumns?: boolean;
|
||||||
basicColorFormatters?: { [Key: string]: BasicColorFormatterType }[];
|
basicColorFormatters?: { [Key: string]: BasicColorFormatterType }[];
|
||||||
@@ -136,7 +135,6 @@ export const useColDefs = ({
|
|||||||
defaultAlignPN,
|
defaultAlignPN,
|
||||||
showCellBars,
|
showCellBars,
|
||||||
colorPositiveNegative,
|
colorPositiveNegative,
|
||||||
totals,
|
|
||||||
columnColorFormatters,
|
columnColorFormatters,
|
||||||
allowRearrangeColumns,
|
allowRearrangeColumns,
|
||||||
basicColorFormatters,
|
basicColorFormatters,
|
||||||
|
|||||||
@@ -336,13 +336,8 @@ const config: ControlPanelConfig = {
|
|||||||
description: t(
|
description: t(
|
||||||
'Stack in groups, where each group corresponds to a dimension',
|
'Stack in groups, where each group corresponds to a dimension',
|
||||||
),
|
),
|
||||||
shouldMapStateToProps: (
|
shouldMapStateToProps: () => true,
|
||||||
prevState,
|
mapStateToProps: state => {
|
||||||
state,
|
|
||||||
controlState,
|
|
||||||
chartState,
|
|
||||||
) => true,
|
|
||||||
mapStateToProps: (state, controlState, chartState) => {
|
|
||||||
const value: JsonArray = state.controls.groupby
|
const value: JsonArray = state.controls.groupby
|
||||||
.value as JsonArray;
|
.value as JsonArray;
|
||||||
const valueAsStringArr: string[][] = value.map(v => {
|
const valueAsStringArr: string[][] = value.map(v => {
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ import {
|
|||||||
LocalStorageKeys,
|
LocalStorageKeys,
|
||||||
setItem,
|
setItem,
|
||||||
} from 'src/utils/localStorageHelpers';
|
} from 'src/utils/localStorageHelpers';
|
||||||
import { noop } from 'lodash';
|
|
||||||
import TableElement from '../TableElement';
|
import TableElement from '../TableElement';
|
||||||
|
|
||||||
export interface SqlEditorLeftBarProps {
|
export interface SqlEditorLeftBarProps {
|
||||||
@@ -86,7 +85,7 @@ const SqlEditorLeftBar = ({
|
|||||||
'schema',
|
'schema',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const [_emptyResultsWithSearch, setEmptyResultsWithSearch] = useState(false);
|
const [, setEmptyResultsWithSearch] = useState(false);
|
||||||
const [userSelectedDb, setUserSelected] = useState<DatabaseObject | null>(
|
const [userSelectedDb, setUserSelected] = useState<DatabaseObject | null>(
|
||||||
null,
|
null,
|
||||||
);
|
);
|
||||||
@@ -99,8 +98,6 @@ const SqlEditorLeftBar = ({
|
|||||||
[allSelectedTables, dbId, schema],
|
[allSelectedTables, dbId, schema],
|
||||||
);
|
);
|
||||||
|
|
||||||
noop(_emptyResultsWithSearch); // This is to avoid unused variable warning, can be removed if not needed
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const bool = new URLSearchParams(window.location.search).get('db');
|
const bool = new URLSearchParams(window.location.search).get('db');
|
||||||
const userSelected = getItem(
|
const userSelected = getItem(
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import { ErrorAlert } from './ErrorAlert';
|
|||||||
|
|
||||||
export function FrontendNetworkErrorMessage({
|
export function FrontendNetworkErrorMessage({
|
||||||
error,
|
error,
|
||||||
subtitle,
|
|
||||||
compact,
|
compact,
|
||||||
}: ErrorMessageComponentProps) {
|
}: ErrorMessageComponentProps) {
|
||||||
const { level, message } = error;
|
const { level, message } = error;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ interface TitleContainerProps {
|
|||||||
const FILTER_TYPE = 'FILTER';
|
const FILTER_TYPE = 'FILTER';
|
||||||
|
|
||||||
const Container = styled.div<TitleContainerProps>`
|
const Container = styled.div<TitleContainerProps>`
|
||||||
${({ isDragging, theme }) => `
|
${({ isDragging }) => `
|
||||||
opacity: ${isDragging ? 0.3 : 1};
|
opacity: ${isDragging ? 0.3 : 1};
|
||||||
cursor: ${isDragging ? 'grabbing' : 'pointer'};
|
cursor: ${isDragging ? 'grabbing' : 'pointer'};
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -138,12 +138,16 @@ export default function DataSourcePanel({
|
|||||||
width,
|
width,
|
||||||
}: Props) {
|
}: Props) {
|
||||||
const [dropzones] = useContext(DropzoneContext);
|
const [dropzones] = useContext(DropzoneContext);
|
||||||
const { columns: _columns, metrics, folders: _folders } = datasource;
|
const {
|
||||||
|
columns: datasourceColumns,
|
||||||
|
metrics,
|
||||||
|
folders: datasourceFolders,
|
||||||
|
} = datasource;
|
||||||
|
|
||||||
const allowedColumns = useMemo(() => {
|
const allowedColumns = useMemo(() => {
|
||||||
const validators = Object.values(dropzones);
|
const validators = Object.values(dropzones);
|
||||||
if (!Array.isArray(_columns)) return [];
|
if (!Array.isArray(datasourceColumns)) return [];
|
||||||
return _columns.filter(column =>
|
return datasourceColumns.filter(column =>
|
||||||
validators.some(validator =>
|
validators.some(validator =>
|
||||||
validator({
|
validator({
|
||||||
value: column as DndItemValue,
|
value: column as DndItemValue,
|
||||||
@@ -151,7 +155,7 @@ export default function DataSourcePanel({
|
|||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}, [dropzones, _columns]);
|
}, [dropzones, datasourceColumns]);
|
||||||
|
|
||||||
const allowedMetrics = useMemo(() => {
|
const allowedMetrics = useMemo(() => {
|
||||||
const validators = Object.values(dropzones);
|
const validators = Object.values(dropzones);
|
||||||
@@ -234,11 +238,11 @@ export default function DataSourcePanel({
|
|||||||
transformDatasourceWithFolders(
|
transformDatasourceWithFolders(
|
||||||
filteredMetrics,
|
filteredMetrics,
|
||||||
sortedColumns,
|
sortedColumns,
|
||||||
_folders,
|
datasourceFolders,
|
||||||
allowedMetrics,
|
allowedMetrics,
|
||||||
allowedColumns,
|
allowedColumns,
|
||||||
),
|
),
|
||||||
[_folders, filteredMetrics, sortedColumns],
|
[datasourceFolders, filteredMetrics, sortedColumns],
|
||||||
);
|
);
|
||||||
|
|
||||||
const showInfoboxCheck = () => {
|
const showInfoboxCheck = () => {
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ export const ExploreAlert = forwardRef(
|
|||||||
ref: RefObject<HTMLDivElement>,
|
ref: RefObject<HTMLDivElement>,
|
||||||
) => (
|
) => (
|
||||||
<ErrorAlert
|
<ErrorAlert
|
||||||
|
ref={ref}
|
||||||
errorType={title}
|
errorType={title}
|
||||||
message={bodyText}
|
message={bodyText}
|
||||||
type={type}
|
type={type}
|
||||||
|
|||||||
@@ -65,18 +65,19 @@ export default function ColumnConfigControl<T extends ColumnConfig>({
|
|||||||
height,
|
height,
|
||||||
...props
|
...props
|
||||||
}: ColumnConfigControlProps<T>) {
|
}: ColumnConfigControlProps<T>) {
|
||||||
const { colnames: _colnames, coltypes: _coltypes } = columnsPropsObject || {};
|
const { colnames: sourceColnames, coltypes: sourceColtypes } =
|
||||||
|
columnsPropsObject || {};
|
||||||
let colnames: string[] = [];
|
let colnames: string[] = [];
|
||||||
let coltypes: GenericDataType[] = [];
|
let coltypes: GenericDataType[] = [];
|
||||||
if (appliedColumnNames.length === 0) {
|
if (appliedColumnNames.length === 0) {
|
||||||
colnames = _colnames || [];
|
colnames = sourceColnames || [];
|
||||||
coltypes = _coltypes || [];
|
coltypes = sourceColtypes || [];
|
||||||
} else {
|
} else {
|
||||||
const appliedCol = new Set(appliedColumnNames);
|
const appliedCol = new Set(appliedColumnNames);
|
||||||
_colnames?.forEach((col, idx) => {
|
sourceColnames?.forEach((col, idx) => {
|
||||||
if (appliedCol.has(col)) {
|
if (appliedCol.has(col)) {
|
||||||
colnames.push(col);
|
colnames.push(col);
|
||||||
coltypes.push(_coltypes?.[idx] as GenericDataType);
|
coltypes.push(sourceColtypes?.[idx] as GenericDataType);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ export const NotificationMethod: FunctionComponent<NotificationMethodProps> = ({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(e => {
|
.catch(() => {
|
||||||
// Fallback to slack v1 if slack v2 is not compatible
|
// Fallback to slack v1 if slack v2 is not compatible
|
||||||
setUseSlackV1(true);
|
setUseSlackV1(true);
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ interface AllEntitiesTableProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function AllEntitiesTable({
|
export default function AllEntitiesTable({
|
||||||
search = '',
|
|
||||||
setShowTagModal,
|
setShowTagModal,
|
||||||
objects,
|
objects,
|
||||||
canEditTag,
|
canEditTag,
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ const AnnotationModal: FunctionComponent<AnnotationModalProps> = ({
|
|||||||
setCurrentAnnotation(data);
|
setCurrentAnnotation(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onDateChange = (dates: any, dateString: Array<string>) => {
|
const onDateChange = (dates: any) => {
|
||||||
if (!dates?.[0] || !dates?.[1]) {
|
if (!dates?.[0] || !dates?.[1]) {
|
||||||
const data = {
|
const data = {
|
||||||
...currentAnnotation,
|
...currentAnnotation,
|
||||||
|
|||||||
@@ -329,7 +329,9 @@ const UploadDataModal: FunctionComponent<UploadDataModalProps> = ({
|
|||||||
|
|
||||||
const loadDatabaseOptions = useMemo(
|
const loadDatabaseOptions = useMemo(
|
||||||
() =>
|
() =>
|
||||||
(input = '', page: number, pageSize: number) => {
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
(input: string, page: number, pageSize: number) => {
|
||||||
|
// TODO: Implement search functionality using input parameter
|
||||||
const query = rison.encode_uri({
|
const query = rison.encode_uri({
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
@@ -357,21 +359,20 @@ const UploadDataModal: FunctionComponent<UploadDataModalProps> = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const loadSchemaOptions = useMemo(
|
const loadSchemaOptions = useMemo(
|
||||||
() =>
|
() => () => {
|
||||||
(input = '', page: number, pageSize: number) => {
|
if (!currentDatabaseId) {
|
||||||
if (!currentDatabaseId) {
|
return Promise.resolve({ data: [], totalCount: 0 });
|
||||||
return Promise.resolve({ data: [], totalCount: 0 });
|
}
|
||||||
}
|
return SupersetClient.get({
|
||||||
return SupersetClient.get({
|
endpoint: `/api/v1/database/${currentDatabaseId}/schemas/?q=(upload_allowed:!t)`,
|
||||||
endpoint: `/api/v1/database/${currentDatabaseId}/schemas/?q=(upload_allowed:!t)`,
|
}).then(response => {
|
||||||
}).then(response => {
|
const list = response.json.result.map((item: string) => ({
|
||||||
const list = response.json.result.map((item: string) => ({
|
value: item,
|
||||||
value: item,
|
label: item,
|
||||||
label: item,
|
}));
|
||||||
}));
|
return { data: list, totalCount: response.json.count };
|
||||||
return { data: list, totalCount: response.json.count };
|
});
|
||||||
});
|
},
|
||||||
},
|
|
||||||
[currentDatabaseId],
|
[currentDatabaseId],
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -546,7 +547,7 @@ const UploadDataModal: FunctionComponent<UploadDataModalProps> = ({
|
|||||||
}
|
}
|
||||||
}, [show]);
|
}, [show]);
|
||||||
|
|
||||||
const validateUpload = (_: any, value: string) => {
|
const validateUpload = () => {
|
||||||
if (fileList.length === 0) {
|
if (fileList.length === 0) {
|
||||||
return Promise.reject(t('Uploading a file is required'));
|
return Promise.reject(t('Uploading a file is required'));
|
||||||
}
|
}
|
||||||
@@ -561,7 +562,7 @@ const UploadDataModal: FunctionComponent<UploadDataModalProps> = ({
|
|||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
};
|
};
|
||||||
|
|
||||||
const validateDatabase = (_: any, value: string) => {
|
const validateDatabase = () => {
|
||||||
if (!currentDatabaseId) {
|
if (!currentDatabaseId) {
|
||||||
return Promise.reject(t('Selecting a database is required'));
|
return Promise.reject(t('Selecting a database is required'));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ const BulkTagModal: FC<BulkTagModalProps> = ({
|
|||||||
}
|
}
|
||||||
addSuccessToast(t('Tagged %s %ss', tagged.length, resourceName));
|
addSuccessToast(t('Tagged %s %ss', tagged.length, resourceName));
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(() => {
|
||||||
addDangerToast(t('Failed to tag items'));
|
addDangerToast(t('Failed to tag items'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ const TagModal: FC<TagModalProps> = ({
|
|||||||
setChartsToTag(resourceMap[TaggableResources.Chart]);
|
setChartsToTag(resourceMap[TaggableResources.Chart]);
|
||||||
setSavedQueriesToTag(resourceMap[TaggableResources.SavedQuery]);
|
setSavedQueriesToTag(resourceMap[TaggableResources.SavedQuery]);
|
||||||
},
|
},
|
||||||
(error: Response) => {
|
() => {
|
||||||
addDangerToast('Error Fetching Tagged Objects');
|
addDangerToast('Error Fetching Tagged Objects');
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ function UserInfoModal({
|
|||||||
const handleFormSubmit = async (values: FormValues) => {
|
const handleFormSubmit = async (values: FormValues) => {
|
||||||
try {
|
try {
|
||||||
const { confirm_password, ...payload } = values;
|
const { confirm_password, ...payload } = values;
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-expressions
|
||||||
|
confirm_password; // Destructured to exclude from payload
|
||||||
await SupersetClient.put({
|
await SupersetClient.put({
|
||||||
endpoint: `/api/v1/me/`,
|
endpoint: `/api/v1/me/`,
|
||||||
jsonPayload: { ...payload },
|
jsonPayload: { ...payload },
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ import { FormValues } from './types';
|
|||||||
|
|
||||||
export const createUser = async (values: FormValues) => {
|
export const createUser = async (values: FormValues) => {
|
||||||
const { confirmPassword, ...payload } = values;
|
const { confirmPassword, ...payload } = values;
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-expressions
|
||||||
|
confirmPassword; // Destructured to exclude from payload
|
||||||
if (payload.active == null) {
|
if (payload.active == null) {
|
||||||
payload.active = false;
|
payload.active = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ function AllEntities() {
|
|||||||
setObjects(objects);
|
setObjects(objects);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
},
|
},
|
||||||
(error: Response) => {
|
() => {
|
||||||
addDangerToast('Error Fetching Tagged Objects');
|
addDangerToast('Error Fetching Tagged Objects');
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
},
|
},
|
||||||
@@ -168,7 +168,7 @@ function AllEntities() {
|
|||||||
setTag(tag);
|
setTag(tag);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
},
|
},
|
||||||
(error: Response) => {
|
() => {
|
||||||
addDangerToast(t('Error Fetching Tagged Objects'));
|
addDangerToast(t('Error Fetching Tagged Objects'));
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -190,23 +190,21 @@ export default function ExplorePage() {
|
|||||||
})()
|
})()
|
||||||
: Promise.reject()
|
: Promise.reject()
|
||||||
)
|
)
|
||||||
.then(
|
.then(({ result: { id, url, owners, ...data } }) => {
|
||||||
({ result: { id, url, owners, form_data: _, ...data } }) => {
|
const slice = {
|
||||||
const slice = {
|
...data,
|
||||||
...data,
|
datasource: err.extra?.datasource_name,
|
||||||
datasource: err.extra?.datasource_name,
|
slice_id: id,
|
||||||
slice_id: id,
|
slice_url: url,
|
||||||
slice_url: url,
|
owners: owners?.map(({ id }) => id),
|
||||||
owners: owners?.map(({ id }) => id),
|
};
|
||||||
};
|
dispatch(
|
||||||
dispatch(
|
hydrateExplore({
|
||||||
hydrateExplore({
|
...exploreData,
|
||||||
...exploreData,
|
slice,
|
||||||
slice,
|
}),
|
||||||
}),
|
);
|
||||||
);
|
})
|
||||||
},
|
|
||||||
)
|
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
dispatch(hydrateExplore(exploreData));
|
dispatch(hydrateExplore(exploreData));
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -285,11 +285,7 @@ const DatasetList: FunctionComponent<DatasetListProps> = ({
|
|||||||
const columns = useMemo(
|
const columns = useMemo(
|
||||||
() => [
|
() => [
|
||||||
{
|
{
|
||||||
Cell: ({
|
Cell: () => null,
|
||||||
row: {
|
|
||||||
original: { kind },
|
|
||||||
},
|
|
||||||
}: any) => null,
|
|
||||||
accessor: 'kind_icon',
|
accessor: 'kind_icon',
|
||||||
disableSortBy: true,
|
disableSortBy: true,
|
||||||
size: 'xs',
|
size: 'xs',
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ function GroupsList({ user }: GroupsListProps) {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
deletedGroupsNames.push(group.name);
|
deletedGroupsNames.push(group.name);
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(() => {
|
||||||
addDangerToast(t('Error deleting %s', group.name));
|
addDangerToast(t('Error deleting %s', group.name));
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ function UsersList({ user }: UsersListProps) {
|
|||||||
.then(() => {
|
.then(() => {
|
||||||
deletedUserNames.push(user.username);
|
deletedUserNames.push(user.username);
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(() => {
|
||||||
addDangerToast(t('Error deleting %s', user.username));
|
addDangerToast(t('Error deleting %s', user.username));
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user