UNPKG

@thoughtspot/visual-embed-sdk

Version:
49 lines 2.08 kB
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