@thoughtspot/visual-embed-sdk
Version:
ThoughtSpot Embed SDK
57 lines • 2.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.throwDrillDownValidationError = exports.throwUpdateFiltersValidationError = exports.createValidationError = exports.isValidDrillDownPayload = exports.isValidUpdateFiltersPayload = void 0;
const types_1 = require("../../types");
const errors_1 = require("../../errors");
const utils_1 = require("../../utils");
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);
}
exports.isValidUpdateFiltersPayload = isValidUpdateFiltersPayload;
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;
}
exports.isValidDrillDownPayload = isValidDrillDownPayload;
function createValidationError(message) {
const err = new Error(message);
err.isValidationError = true;
err.embedErrorDetails = {
type: types_1.EmbedEvent.Error,
data: {
errorType: types_1.ErrorDetailsTypes.VALIDATION_ERROR,
message,
code: types_1.EmbedErrorCodes.HOST_EVENT_VALIDATION,
error: message
},
status: utils_1.embedEventStatus.END
};
throw err;
}
exports.createValidationError = createValidationError;
function throwUpdateFiltersValidationError() {
createValidationError(errors_1.ERROR_MESSAGE.UPDATEFILTERS_INVALID_PAYLOAD);
}
exports.throwUpdateFiltersValidationError = throwUpdateFiltersValidationError;
function throwDrillDownValidationError() {
createValidationError(errors_1.ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);
}
exports.throwDrillDownValidationError = throwDrillDownValidationError;
//# sourceMappingURL=utils.js.map