simplify code by not mapping x property to dateTime property
This commit is contained in:
		
							parent
							
								
									2087a30b6b
								
							
						
					
					
						commit
						3ea747fae4
					
				|  | @ -85,7 +85,8 @@ export const DistributionChart: React.FC<DistributionChartProps> = (props) => { | ||||||
|     ); |     ); | ||||||
|     if (sampleSets.length) { |     if (sampleSets.length) { | ||||||
|       for (const set of sampleSets) { |       for (const set of sampleSets) { | ||||||
|         if (set.distribution.t.tag === "SampleSet") { // this must be duplicated to please typescript, more elegant solution probably exists
 |         if (set.distribution.t.tag === "SampleSet") { | ||||||
|  |           // this must be duplicated to please typescript, more elegant solution probably exists
 | ||||||
|           shapes.value[0].samples.push( |           shapes.value[0].samples.push( | ||||||
|             ...set.distribution.t.value.map((v) => ({ x: v, y: 0 })) |             ...set.distribution.t.value.map((v) => ({ x: v, y: 0 })) | ||||||
|           ); |           ); | ||||||
|  | @ -102,33 +103,10 @@ export const DistributionChart: React.FC<DistributionChartProps> = (props) => { | ||||||
|       ); |       ); | ||||||
|       widthProp = 20; |       widthProp = 20; | ||||||
|     } |     } | ||||||
|     const predomain = shapes.value.flatMap((shape) => |     const domain = shapes.value.flatMap((shape) => | ||||||
|       shape.discrete.concat(shape.continuous) |       shape.discrete.concat(shape.continuous) | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     const domain = |  | ||||||
|       xAxis === "dateTime" |  | ||||||
|         ? predomain.map((p) => ({ dateTime: p.x, y: p.y })) |  | ||||||
|         : predomain; |  | ||||||
| 
 |  | ||||||
|     const data = |  | ||||||
|       xAxis === "dateTime" |  | ||||||
|         ? shapes.value.map((val) => { |  | ||||||
|             return { |  | ||||||
|               ...val, |  | ||||||
|               continuous: val.continuous.map((p) => { |  | ||||||
|                 return { dateTime: p.x, y: p.y }; |  | ||||||
|               }), |  | ||||||
|               discrete: val.discrete.map((p) => { |  | ||||||
|                 return { dateTime: p.x, y: p.y }; |  | ||||||
|               }), |  | ||||||
|               samples: val.samples.map((p) => { |  | ||||||
|                 return { dateTime: p, y: 0 }; |  | ||||||
|               }), |  | ||||||
|             }; |  | ||||||
|           }) |  | ||||||
|         : shapes.value; |  | ||||||
| 
 |  | ||||||
|     return ( |     return ( | ||||||
|       <div style={{ width: widthProp }}> |       <div style={{ width: widthProp }}> | ||||||
|         {logX && shapes.value.some(hasMassBelowZero) ? ( |         {logX && shapes.value.some(hasMassBelowZero) ? ( | ||||||
|  | @ -138,7 +116,7 @@ export const DistributionChart: React.FC<DistributionChartProps> = (props) => { | ||||||
|         ) : ( |         ) : ( | ||||||
|           <Vega |           <Vega | ||||||
|             spec={spec} |             spec={spec} | ||||||
|             data={{ data, domain }} |             data={{ data: shapes.value, domain }} | ||||||
|             width={widthProp - 10} |             width={widthProp - 10} | ||||||
|             height={height} |             height={height} | ||||||
|             actions={actions} |             actions={actions} | ||||||
|  |  | ||||||
|  | @ -20,6 +20,7 @@ export type DistributionChartSpecOptions = { | ||||||
|   xAxis?: "number" | "dateTime"; |   xAxis?: "number" | "dateTime"; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | /** X Scales */  | ||||||
| export const linearXScale: LinearScale = { | export const linearXScale: LinearScale = { | ||||||
|   name: "xscale", |   name: "xscale", | ||||||
|   clamp: true, |   clamp: true, | ||||||
|  | @ -47,9 +48,10 @@ export const timeXScale: TimeScale = { | ||||||
|   type: "time", |   type: "time", | ||||||
|   range: "width", |   range: "width", | ||||||
|   nice: false, |   nice: false, | ||||||
|   domain: { data: "domain", field: "dateTime" }, |   domain: { data: "domain", field: "x" }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | /** Y Scales */  | ||||||
| export const linearYScale: LinearScale = { | export const linearYScale: LinearScale = { | ||||||
|   name: "yscale", |   name: "yscale", | ||||||
|   type: "linear", |   type: "linear", | ||||||
|  | @ -190,7 +192,7 @@ export function buildVegaSpec( | ||||||
|                     interpolate: { value: "linear" }, |                     interpolate: { value: "linear" }, | ||||||
|                     x: { |                     x: { | ||||||
|                       scale: "xscale", |                       scale: "xscale", | ||||||
|                       field: dateTime ? "dateTime" : "x", |                       field: "x", | ||||||
|                     }, |                     }, | ||||||
|                     y: { |                     y: { | ||||||
|                       scale: "yscale", |                       scale: "yscale", | ||||||
|  | @ -237,7 +239,7 @@ export function buildVegaSpec( | ||||||
|                   update: { |                   update: { | ||||||
|                     x: { |                     x: { | ||||||
|                       scale: "xscale", |                       scale: "xscale", | ||||||
|                       field: dateTime ? "dateTime" : "x", |                       field: "x", | ||||||
|                     }, |                     }, | ||||||
|                     y: { |                     y: { | ||||||
|                       scale: "yscale", |                       scale: "yscale", | ||||||
|  | @ -267,14 +269,14 @@ export function buildVegaSpec( | ||||||
|                     size: [{ value: 100 }], |                     size: [{ value: 100 }], | ||||||
|                     tooltip: { |                     tooltip: { | ||||||
|                       signal: dateTime |                       signal: dateTime | ||||||
|                         ? "{ probability: datum.y, value: datetime(datum.dateTime) }" |                         ? "{ probability: datum.y, value: datetime(datum.x) }" | ||||||
|                         : "{ probability: datum.y, value: datum.x }", |                         : "{ probability: datum.y, value: datum.x }",  | ||||||
|                     }, |                     }, | ||||||
|                   }, |                   }, | ||||||
|                   update: { |                   update: { | ||||||
|                     x: { |                     x: { | ||||||
|                       scale: "xscale", |                       scale: "xscale", | ||||||
|                       field: dateTime ? "dateTime" : "x", |                       field:  "x", | ||||||
|                       offset: 0.5, // if this is not included, the circles are slightly left of center.
 |                       offset: 0.5, // if this is not included, the circles are slightly left of center.
 | ||||||
|                     }, |                     }, | ||||||
|                     y: { |                     y: { | ||||||
|  | @ -307,7 +309,7 @@ export function buildVegaSpec( | ||||||
|                 from: { data: "sample_facet" }, |                 from: { data: "sample_facet" }, | ||||||
|                 encode: { |                 encode: { | ||||||
|                   enter: { |                   enter: { | ||||||
|                     x: { scale: "xscale", field: dateTime ? "dateTime" : "x" }, |                     x: { scale: "xscale", field: "x" }, | ||||||
|                     width: { value: 0.1 }, |                     width: { value: 0.1 }, | ||||||
| 
 | 
 | ||||||
|                     y: { value: 25, offset: { signal: "height" } }, |                     y: { value: 25, offset: { signal: "height" } }, | ||||||
|  | @ -369,7 +371,6 @@ export function buildVegaSpec( | ||||||
|               signal: |               signal: | ||||||
|                 "position ? position[0] < 0 ? 0 : position[0] > width ? 0 : 1 : 0", |                 "position ? position[0] < 0 ? 0 : position[0] > width ? 0 : 1 : 0", | ||||||
|             }, |             }, | ||||||
|             // opacity: { signal: "position ? 1 : 0" },
 |  | ||||||
|           }, |           }, | ||||||
|         }, |         }, | ||||||
|       }, |       }, | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user