1.1.6-alpha.0 • Published 4 years ago

@viiksetjs/utils v1.1.6-alpha.0

Weekly downloads
-
License
MIT
Repository
-
Last release
4 years ago

@viiksetjs/utils

This library contains useful functions for manipulating data for data visualizations. It does not necessarily have to be used in conjunction with @viiksetjs/web Some of these functions are used in building the default assumptions for @viiksetjs/web charts, and may or may not be useful own their own.

Exported Functions

Function NameSignatureDesc
parseIfDate(data: any): Date \| undefinedtakes any piece of data and tries to convert it into instance of Date. Returns undefined if the conversion fails
parseObject<T>(obj: Object, arg: string, applicator: (obj) => any): T[]takes and object, a typeof argument, and an applicator function. It will map through the object's values with the applicator, then filter the results according to the typeof argument
getX(data: GenericData[], xKey?: string): any[]takes an array of data objects and optionally an xKey and returns the xKey points for each object in the data array, or tries to parse a date from each object. Example: getX([{messages: 123, users: 133}, {messages: 100, users: 33}, 'messages']) would return: [123, 100, ...]
getY(data: GenericData[], yKey?: string): any[]same as getX except it tries to fall back to a number instead of trying to parse a Date. Example: getY([{messages: 123, date: '11-10-2018'},{messages: 100, date: '08-10-2018'}, ...]) would result in [123, 100,...]
extractX(datum: Object, xKey?: string, type: string): any[]similar to getX, but instead of taking an array of data objects, it takes a single data object and extracts all x values from that object
extractY(datum: Object, xKey?: string): any[]same as extractX, but with y values
extractLabels(datum: Object): string[]takes a data object and extracts the y labels by parsing which values contain numbers
createLinearScales(data: GenericData[], dataKeys: string[], height: number, margin: Margin ): ScalarObjectcreates a vertical linear scale for each of the data keys found in the array of data objects. Example: createLinearScales([{messages: 123, users: 333}, ...], ['messages', 'users'], 400, {top: 10, bottom: 10, left: 10, right: 10}) would result in: {messages: scaleFunctionForMessages, users: scaleFunctionForUsers}
formatTime(d: string): stringdefault time formatter for viiksetjs, returns dates in the following format: Mon Jan 19 (ddd mmm DD)
tooltipTime(d: string): stringdefault time format for tooltips, returns time in this format: Sun Jan 21st 20:29 (ddd mmm DD HH:MM)
formatTicks(d: string \| number): stringdefault tick formatter, if it the argument is a number, it will return ${arg}k if the argument is over 1000, else it just returns the argument
formatXTicks(d: string \| Date \| number): string \| numberreturns the default date format if the argument passed is a valid date, otherwise, just returns what it was given
determineXScale(type: 'ordinal'\|'linear', xPoints: number[]\|Date[]\|string[], orientation?: 'horizontal', margin: Margin, width: number): ScaleFunctionreturns a horizontal scale based on the type of chart, width, and margin
determineYScale(type: 'ordinal'\|'linear', orientation?: 'horizontal', yPoints: number[]\|string[], height: number, margin: Margin ): ScaleFunctionreturns a vertical scale based on the type of chart, height, and margin
findTooltipX(calculatedX: any, xScale: ScaleFunction): numbertakes a calculated x value and returns its position in the chart based on the given xScale
prepChartData(size: Size, xKey?: string, yKey?: string, type: 'ordinal'\|'linear', margin: Margin, data: GenericData[], orientation?: 'horizontal'): Promise<State>prepares x and y scales, calculates chart height and width, xPoints, yPoints, and datakeys
interpolateColors(a: string, b: string, amount: number): stringinterpolates between the given 2 numbers to get, for example, the color in between the two. Amount is a range from 0.0 - 1.1

Exported Types and Interfaces

Interface NameSignatureDesc
ScaleProps{ type: string; xPoints: number[] \| string[] \| Date[]; yPoints: number[] \| string[]; width: number; invertedRange: boolean; height: number; orientation: string;margin: Margin; }props passed to scale functions as Partial<ScaleProps>
ScaleFunctionScaleBand<R> \| ScaleContinuousNumeric<R, O> \| ScaleLinear<R, O> \| ScaleTime<R, O> \| ScaleOrdinal<R, O>represents the different scale functions in viiksetjs
Margin{ left: number; right: number; top: number; bottom: number; }margin for chart areas
Size{ width: number; height: number; }represents the size of the div containing the chart area
ScalarObject<R, O> { [key: string]: ScaleFunction<R, O>; }contains a scale function for each object key
Axis{ x: Partial<AxisProps>; y: Partial<AxisProps>; }represents the axis configuration object
AxisProps{ format(d: any, i: number): string; tickLabelProps( d: any, i: number): { fontWeight: number; strokeWidth: number \| string; textAnchor: string; fontSize: number \| string; }; tickFormat(d: any, i?: number): string \| number; tickStroke: number \| string; labelProps: Object; tickFormat(d: string \| number, i?: number): string \| number; label: string; numTicks: number; stroke: string; }represents the configuration for an x or y axis
MouseMove`{ event: React.SyntheticEvent; xPoints: number[] | string[]; xScale: ScaleFunction<any, any>; yScale: ScaleFunction<any, any>; yScales: false | { key: string: ScaleFunction<any, any> }; dataKeys: string[]; datum?: Object; } | represents the mouseMove event driving tooltip behavior
InheritedChartProps{ noTool: boolean; axes: Axis; xPoints: string[] \| number[]; declareBar(): void; type: string; orientation?: 'horizontal'; mouseMove(args: any): void; mouseLeave(): void; xKey?: string; yKey?: string; height: number; width: number; margin: Margin; size: Size; yPoints: string[] \| number[]; data: GenericData[]; xScale: ScaleFunction<any, any>; inheritedScale: ScaleFunction<any, any>; children: any; }props cloned into children by the ChartArea component using recursiveCloneChildren
State{ width: number; height: number; xScale?: ScaleFunction<Range, Output>; yScale?: ScaleFunction<Range, Output>; yScales?: { [key: string]: ScaleFunction<any, any> } \| false; biaxialChildren?: boolean; dataKeys?: string[]; yPoints: number[] \| string[]; xPoints: number[] \| string[]; }contains the state of the processed data returned in Promise from prepChartData
1.1.6-alpha.0

4 years ago

1.1.5

4 years ago

1.1.5-alpha2

4 years ago

1.1.5-alpha

4 years ago

0.1.4

4 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0-alpha

5 years ago

0.1.0

5 years ago