(chart, filters = [], variables = {}, timezone = "")
| 255 | } |
| 256 | |
| 257 | function buildChartRuntimeContext(chart, filters = [], variables = {}, timezone = "") { |
| 258 | const classifiedPayload = classifyRuntimePayload(filters, variables); |
| 259 | const normalizedFilters = classifiedPayload.normalizedPayload.filters; |
| 260 | const normalizedVariables = classifiedPayload.normalizedPayload.variables; |
| 261 | const configuredDateRange = resolveChartConfiguredDateRange(chart, timezone); |
| 262 | const dashboardDateRange = resolveDashboardDateRange(normalizedFilters, timezone); |
| 263 | const effectiveDateRange = intersectDateRanges(configuredDateRange, dashboardDateRange); |
| 264 | |
| 265 | return { |
| 266 | filters: normalizedFilters, |
| 267 | variables: normalizedVariables, |
| 268 | configuredDateRange, |
| 269 | dashboardDateRange, |
| 270 | effectiveDateRange, |
| 271 | hasRuntimeFilters: normalizedFilters.length > 0 || Object.keys(normalizedVariables).length > 0, |
| 272 | needsSourceRefresh: Boolean(dashboardDateRange) || Object.keys(normalizedVariables).length > 0, |
| 273 | classifiedPayload, |
| 274 | sourceAffecting: classifiedPayload.sourceAffecting, |
| 275 | serverParseAffecting: classifiedPayload.serverParseAffecting, |
| 276 | clientOnly: classifiedPayload.clientOnly, |
| 277 | cacheableChartPayload: classifiedPayload.cacheableChartPayload, |
| 278 | sourceVariantHash: createPayloadHash(classifiedPayload.sourceAffecting), |
| 279 | chartVariantHash: createPayloadHash(classifiedPayload.cacheableChartPayload), |
| 280 | }; |
| 281 | } |
| 282 | |
| 283 | function getDatasetRuntimeFilters(runtimeContext, datasetOptions = {}) { |
| 284 | const datasetId = `${datasetOptions.cdc_id || datasetOptions.id || ""}`; |
no test coverage detected