@thoughtspot/visual-embed-sdk
Version:
ThoughtSpot Embed SDK
49 lines • 2.08 kB
JavaScript
import { EmbedErrorCodes, EmbedEvent, ErrorDetailsTypes } from '../../types';
import { ERROR_MESSAGE } from '../../errors';
import { embedEventStatus } from '../../utils';
export function isValidUpdateFiltersPayload(payload) {
if (!payload)
return false;
const isValidFilter = (f) => {
const hasColumn = typeof f.column === 'string' || typeof f.columnName === 'string';
const hasOperator = typeof f.oper === 'string' || typeof f.operator === 'string';
const hasValues = Array.isArray(f.values);
const validType = !f.type || typeof f.type === 'string';
return hasColumn && hasOperator && hasValues && validType;
};
const hasValidFilter = payload.filter && isValidFilter(payload.filter);
const hasValidFilters = Array.isArray(payload.filters) && payload.filters.length > 0 && payload.filters.every(isValidFilter);
return !!(hasValidFilter || hasValidFilters);
}
export function isValidDrillDownPayload(payload) {
if (!payload)
return false;
const points = payload.points;
if (!points || typeof points !== 'object')
return false;
const hasClickedPoint = 'clickedPoint' in points && points.clickedPoint != null;
const hasSelectedPoints = Array.isArray(points.selectedPoints) && points.selectedPoints.length > 0;
return hasClickedPoint || hasSelectedPoints;
}
export function createValidationError(message) {
const err = new Error(message);
err.isValidationError = true;
err.embedErrorDetails = {
type: EmbedEvent.Error,
data: {
errorType: ErrorDetailsTypes.VALIDATION_ERROR,
message,
code: EmbedErrorCodes.HOST_EVENT_VALIDATION,
error: message
},
status: embedEventStatus.END
};
throw err;
}
export function throwUpdateFiltersValidationError() {
createValidationError(ERROR_MESSAGE.UPDATEFILTERS_INVALID_PAYLOAD);
}
export function throwDrillDownValidationError() {
createValidationError(ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);
}
//# sourceMappingURL=utils.js.map