public unpackDomainScrub()

in pbi-heat-streams/src/data/DataViewConverter.ts [42:76]


	public unpackDomainScrub(
		dataView: powerbiVisualsApi.DataView,
	): TimeDomain | null {
		const castScrubPoint = (v: any) => {
			if (typeof v === 'string') {
				const isNum = /^\d+$/.test(v)
				if (isNum) {
					return Number.parseFloat(v)
				} else {
					return new Date(v)
				}
			}
			return v
		}

		const customFilter = get(dataView, 'metadata.objects.data.filter')
		const cond = get(customFilter, 'whereItems[0].condition')
		const dateScrubStart = castScrubPoint(
			get(
				cond,
				'left.right.arg.value', // PBI Service
				get(cond, 'left.right.value'), // PBI Desktop
			),
		)
		const dateScrubEnd = castScrubPoint(
			get(
				cond,
				'right.right.arg.value', // PBI Service
				get(cond, 'right.right.value'), // PBI Desktop
			),
		)
		const isValidScrub =
			dateScrubStart && dateScrubEnd && +dateScrubStart !== +dateScrubEnd
		return isValidScrub ? [dateScrubStart, dateScrubEnd] : null
	}