@domoinc/arrow-single-value-indicator
Version:
ArrowSingleValueIndicator - Domo Widget
349 lines (248 loc) • 7.09 kB
Markdown
# ArrowSingleValueIndicator
## Configuration Options
#### abbrNumber
Type: `select`
Default: `{"name":"Abbreviate","value":true}`
Set the format of the number to be fully written out or abbreviated when the value is 1000 or greater (e.g. if abbreviated, 1000 will be 1K)
#### alignment
Type: `select`
Default: `{"name":"Align Text Left","value":"left"}`
The horizontal alignment of the text relative to the widget's chart bounds
#### animationDuration
Type: `number`
Default: `500`
Units: `ms`
Duration of time for the initial animation
#### arrowOffset
Type: `number`
Default: `-6`
Distance of arrow from the text (negative is further away)
#### chartName
Type: `string`
Default: `"ArrowSingleValueIndicator"`
Name of chart for Reporting.
#### decTrendColor
Type: `color`
Default: `"#E4584F"`
Fill color that indicates something is bad
#### fontSize
Type: `number`
Default: `48`
Units: `px`
Font size for the text
#### fontWeight
Type: `select`
Default: `{"name":"300 - Light","value":300}`
Greater values correspond to increased font boldness (some fonts do not support every value)
#### height
Type: `number`
Default: `0`
Units: `px`
#### hoverEvent
Type: `select`
Default: `{"name":"Enable","value":true}`
Enable or disable the animation triggered by moving the mouse over the widget
#### incTrendColor
Type: `color`
Default: `"#80C25D"`
Fill color that indicates something is good
#### indicatorColor
Type: `color`
Default: `"#333333"`
Font color for the text
#### isOnMobile
Type: `boolean`
Default: `false`
If true, it signals to the widget that it is running on a mobile device. Should be called before draw and then NEVER changed.
#### magnitudeFontSize
Type: `number`
Default: `null`
Units: `px`
Font size for the abbreviation symbol for large numbers (e.g. if 1000 abbreviates to '1K', the symbol is 'K')
#### noTrendColor
Type: `color`
Default: `"#E5E5E5"`
Fill color that indicates something is neutral
#### numDecimal
Type: `select`
Default: `{"name":"Default"}`
Set the number of decimal places to be displayed
#### offsetArrowHeadWidth
Type: `number`
Default: `0`
Units: `px`
Width of the arrowhead (0 is default, negative and positive is narrower and wider respectively)
#### offsetArrowLength
Type: `number`
Default: `0`
Units: `px`
Length of the arrow (0 is default, negative and positive is shorter and longer respectively)
#### offsetArrowWidth
Type: `number`
Default: `0`
Units: `px`
Width of the arrow (0 is default, negative and positive is narrower and wider respectively)
#### postfixFontSize
Type: `number`
Default: `null`
Units: `px`
Font size for the suffix (if left empty, the font size will be the same as the font size above)
#### postfixString
Type: `string`
Default: `""`
Text added after the indicator
#### prefixFontSize
Type: `number`
Default: `null`
Units: `px`
Font size for the prefix (if left empty, the font size will be the same as the font size above)
#### prefixString
Type: `string`
Default: `""`
Text added before the indicator
#### shouldValidate
Type: `boolean`
Default: `true`
Flag for turning off data validation
#### showArrow
Type: `select`
Default: `{"name":"Show","value":true}`
Flag that dictates if the trend arrow is drawn
#### textFontFamily
Type: `string`
Default: `"Open Sans"`
Font type for the text
#### updateSizeableConfigs
Type: `boolean`
Default: `true`
Flag for turning off the mimic of illustrator's scale functionality
#### useContrastColors
Type: `boolean`
Default: `false`
Flag that dictates whether or not to use the good and bad color configs
#### width
Type: `number`
Default: `0`
Units: `px`
## Data Definition
#### Label
Type: `string`
Default validate:
```js
function (d) { return true; }
```
Default accessor:
```js
function (line) { return String(line[0]); }
```
#### Value
Type: `number`
Default validate:
```js
function (d) { return !isNaN(this.accessor(d)); }
```
Default accessor:
```js
function (line) { return Number(line[1]); }
```
## Events
#### Dispatch Events
#### External Events
## Example
```js
//Setup some fake data
var data = [
['Sales', 100]
// ['Sales', 1234567.1234567]
];
var aHeight = 500;
var aWidth = 500;
//Initialize the widget
var chart = d3.select('#vis')
.append('svg')
.attr({'height': 500, 'width': 500})
.append('g')
.attr('transform', 'translate(250,250)')
.chart('ArrowSingleValueIndicator')
.c({
width: aWidth,
height: aHeight,
useContrastColors: true,
// postfixString: '%',
// prefixString: '$',
//indicatorColor: 'red',
//arrowOffset: -6,
//fontSize: 48,
//prefixFontSize: 40,
//magnitudeFontSize: 40,
//postfixFontSize: 40,
//useContrastColors: true,
showArrow: {name:'Hide', value: false},
abbrNumber: {name: 'Abbreviate', value: true},
// abbrNumber: {name: 'Full Form', value: false},
numDecimal: {name: 'Default', value: undefined},
// numDecimal: {name: 'None', value: 0},
// numDecimal: {name: '.0', value: 1},
// numDecimal: {name: '.00', value: 2},
// numDecimal: {name: '.000', value: 3},
// numDecimal: {name: '.0000', value: 4},
// numDecimal: {name: '.00000', value: 5},
});
//Render the chart with data
chart._notifier.showMessage(true);
chart.draw(data);
/*----------------------------------------------------------------------------------
// Multi Draw Triggers
----------------------------------------------------------------------------------*/
// setTimeout(function () {
// chart
// .config('showArrow', {name:'Show', value:true})
// // .config('showArrow', {name:'Hide', value:false})
// .draw([['name', 5000000000]])
// }, 1000);
// setTimeout(function () {
// chart
// // .config('showArrow', {name:'Show', value:true})
// .config('showArrow', {name:'Hide', value:false})
// .draw([['name', -1234567]])
// }, 2000);
// setTimeout(function () {
// chart
// .config('showArrow', {name:'Show', value:true})
// // .config('showArrow', {name:'Hide', value:false})
// .draw([['name', -1]])
// }, 3000);
/*----------------------------------------------------------------------------------
// Border and Alignment Lines
----------------------------------------------------------------------------------*/
// var svg = d3.select('svg');
// svg.insert('rect', ':first-child')
// .attr('height', aHeight)
// .attr('width', aWidth)
// .attr('stroke', 'black')
// .style('fill', 'white')
// .style('fill-opacity', 0);
// svg.insert('line', ':first-child')
// .attr({
// x1: aWidth / 2.0,
// y1: 0,
// x2: aWidth / 2.0,
// y2: aHeight
// })
// .style({
// stroke: '#000000',
// 'stroke-width': 1
// });
// var offset = 165;
// svg.insert('line', ':first-child')
// .attr({
// x1: offset,
// y1: aHeight / 2.0,
// x2: aHeight - offset,
// y2: aHeight / 2.0
// })
// .style({
// stroke: '#000000',
// 'stroke-width': 1
// });
```