let to const

This commit is contained in:
ppisljar 2016-09-08 16:54:41 +02:00
parent 161ba75d46
commit 9cb6b60fe0
80 changed files with 1054 additions and 1092 deletions

View file

@ -16,14 +16,14 @@ describe('Vislib Color Module Test Suite', function () {
describe('Color (main)', function () {
let previousConfig;
let getColors;
let arr = ['good', 'better', 'best', 'never', 'let', 'it', 'rest'];
let arrayOfNumbers = [1, 2, 3, 4, 5];
let arrayOfUndefinedValues = [undefined, undefined, undefined];
let arrayOfObjects = [{}, {}, {}];
let arrayOfBooleans = [true, false, true];
let arrayOfNullValues = [null, null, null];
let emptyObject = {};
let nullValue = null;
const arr = ['good', 'better', 'best', 'never', 'let', 'it', 'rest'];
const arrayOfNumbers = [1, 2, 3, 4, 5];
const arrayOfUndefinedValues = [undefined, undefined, undefined];
const arrayOfObjects = [{}, {}, {}];
const arrayOfBooleans = [true, false, true];
const arrayOfNullValues = [null, null, null];
const emptyObject = {};
const nullValue = null;
let notAValue;
let color;
@ -243,14 +243,14 @@ describe('Vislib Color Module Test Suite', function () {
});
describe('Color Palette', function () {
let num1 = 45;
let num2 = 72;
let num3 = 90;
let string = 'Welcome';
let bool = true;
let nullValue = null;
let emptyArr = [];
let emptyObject = {};
const num1 = 45;
const num2 = 72;
const num3 = 90;
const string = 'Welcome';
const bool = true;
const nullValue = null;
const emptyArr = [];
const emptyObject = {};
let notAValue;
let createColorPalette;
let colorPalette;

View file

@ -15,7 +15,7 @@ let rowsArr;
let uniqLabels;
let error;
let seriesData = {
const seriesData = {
'label': '',
'series': [
{
@ -25,7 +25,7 @@ let seriesData = {
]
};
let rowsData = {
const rowsData = {
'rows': [
{
'label': 'a',
@ -66,7 +66,7 @@ let rowsData = {
]
};
let columnsData = {
const columnsData = {
'columns': [
{
'label': 'a',
@ -152,23 +152,23 @@ describe('Vislib Labels Module Test Suite', function () {
});
describe('Data array', function () {
let childrenObject = {
const childrenObject = {
children: []
};
let seriesObject = {
const seriesObject = {
series: []
};
let rowsObject = {
const rowsObject = {
rows: []
};
let columnsObject = {
const columnsObject = {
columns: []
};
let string = 'string';
let number = 23;
let boolean = false;
let emptyArray = [];
let nullValue = null;
const string = 'string';
const number = 23;
const boolean = false;
const emptyArray = [];
const nullValue = null;
let notAValue;
let dataArray;
let testSeries;
@ -267,7 +267,7 @@ describe('Vislib Labels Module Test Suite', function () {
describe('Unique labels', function () {
let uniqLabels;
let arrObj = [
const arrObj = [
{'label': 'a'},
{'label': 'b'},
{'label': 'b'},
@ -276,12 +276,12 @@ describe('Vislib Labels Module Test Suite', function () {
{'label': 'd'},
{'label': 'f'}
];
let string = 'string';
let number = 24;
let boolean = false;
let nullValue = null;
let emptyObject = {};
let emptyArray = [];
const string = 'string';
const number = 24;
const boolean = false;
const nullValue = null;
const emptyObject = {};
const emptyArray = [];
let notAValue;
let uniq;
let testArr;
@ -340,18 +340,18 @@ describe('Vislib Labels Module Test Suite', function () {
});
describe('Get series', function () {
let string = 'string';
let number = 24;
let boolean = false;
let nullValue = null;
let rowsObject = {
const string = 'string';
const number = 24;
const boolean = false;
const nullValue = null;
const rowsObject = {
rows: []
};
let columnsObject = {
const columnsObject = {
columns: []
};
let emptyObject = {};
let emptyArray = [];
const emptyObject = {};
const emptyArray = [];
let notAValue;
let getSeries;
let columnsLabels;

View file

@ -11,7 +11,7 @@ import VislibComponentsZeroInjectionZeroFilledArrayProvider from 'ui/vislib/comp
import VislibComponentsZeroInjectionZeroFillDataArrayProvider from 'ui/vislib/components/zero_injection/zero_fill_data_array';
describe('Vislib Zero Injection Module Test Suite', function () {
let dateHistogramRows = {
const dateHistogramRows = {
'rows': [
{
'label': 'Top 5 @tags: success',
@ -161,7 +161,7 @@ describe('Vislib Zero Injection Module Test Suite', function () {
]
};
let seriesData = {
const seriesData = {
series: [
{
label: '200',
@ -176,7 +176,7 @@ describe('Vislib Zero Injection Module Test Suite', function () {
]
};
let multiSeriesData = {
const multiSeriesData = {
series: [
{
label: '200',
@ -205,7 +205,7 @@ describe('Vislib Zero Injection Module Test Suite', function () {
]
};
let multiSeriesNumberedData = {
const multiSeriesNumberedData = {
series: [
{
label: '200',
@ -234,24 +234,24 @@ describe('Vislib Zero Injection Module Test Suite', function () {
]
};
let childrenObject = {
const childrenObject = {
children: []
};
let seriesObject = {
const seriesObject = {
series: []
};
let rowsObject = {
const rowsObject = {
rows: []
};
let columnsObject = {
const columnsObject = {
columns: []
};
let emptyObject = {};
let str = 'string';
let number = 24;
let boolean = false;
let nullValue = null;
let emptyArray = [];
const emptyObject = {};
const str = 'string';
const number = 24;
const boolean = false;
const nullValue = null;
const emptyArray = [];
let notAValue;
describe('Zero Injection (main)', function () {
@ -497,8 +497,8 @@ describe('Vislib Zero Injection Module Test Suite', function () {
describe('Zero Filled Array', function () {
let createZeroArray;
let arr1 = [1, 2, 3, 4, 5];
let arr2 = ['1', '2', '3', '4', '5'];
const arr1 = [1, 2, 3, 4, 5];
const arr2 = ['1', '2', '3', '4', '5'];
let results1;
let results2;
@ -578,10 +578,10 @@ describe('Vislib Zero Injection Module Test Suite', function () {
describe('Zero Filled Data Array', function () {
let zeroFillArray;
let xValueArr = [1, 2, 3, 4, 5];
const xValueArr = [1, 2, 3, 4, 5];
let createZeroArray;
let arr1;
let arr2 = [ {x: 3, y: 834} ];
const arr2 = [ {x: 3, y: 834} ];
let results;
beforeEach(ngMock.module('kibana'));
@ -659,7 +659,7 @@ describe('Vislib Zero Injection Module Test Suite', function () {
});
it('should return ordered x values', function () {
let values = results.rows[0].series[0].values;
const values = results.rows[0].series[0].values;
expect(values[0].x).to.be.lessThan(values[1].x);
expect(values[1].x).to.be.lessThan(values[2].x);
expect(values[2].x).to.be.lessThan(values[3].x);

View file

@ -17,7 +17,7 @@ describe('Vislib AxisTitle Class Test Suite', function () {
let dataObj;
let xTitle;
let yTitle;
let data = {
const data = {
hits: 621,
label: '',
ordered: {

View file

@ -15,7 +15,7 @@ describe('Vislib ChartTitle Class Test Suite', function () {
let chartTitle;
let el;
let dataObj;
let data = {
const data = {
hits: 621,
label: '',
ordered: {

View file

@ -9,7 +9,7 @@ import dataStacked from 'fixtures/vislib/mock_data/stacked/_stacked';
import VislibLibDataProvider from 'ui/vislib/lib/data';
import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_state';
let seriesData = {
const seriesData = {
'label': '',
'series': [
{
@ -19,7 +19,7 @@ let seriesData = {
]
};
let rowsData = {
const rowsData = {
'rows': [
{
'label': 'a',
@ -60,7 +60,7 @@ let rowsData = {
]
};
let colsData = {
const colsData = {
'columns': [
{
'label': 'a',
@ -117,12 +117,12 @@ describe('Vislib Data Class Test Suite', function () {
});
it('should return an object', function () {
let rowIn = new Data(rowsData, {}, persistedState);
const rowIn = new Data(rowsData, {}, persistedState);
expect(_.isObject(rowIn)).to.be(true);
});
it('should update label in series data', function () {
let seriesDataWithoutLabelInSeries = {
const seriesDataWithoutLabelInSeries = {
'label': '',
'series': [
{
@ -132,12 +132,12 @@ describe('Vislib Data Class Test Suite', function () {
],
'yAxisLabel': 'customLabel'
};
let modifiedData = new Data(seriesDataWithoutLabelInSeries, {}, persistedState);
const modifiedData = new Data(seriesDataWithoutLabelInSeries, {}, persistedState);
expect(modifiedData.data.series[0].label).to.be('customLabel');
});
it('should update label in row data', function () {
let seriesDataWithoutLabelInRow = {
const seriesDataWithoutLabelInRow = {
'rows': [
{
'label': '',
@ -162,13 +162,13 @@ describe('Vislib Data Class Test Suite', function () {
],
};
let modifiedData = new Data(seriesDataWithoutLabelInRow, {}, persistedState);
const modifiedData = new Data(seriesDataWithoutLabelInRow, {}, persistedState);
expect(modifiedData.data.rows[0].series[0].label).to.be('customLabel');
expect(modifiedData.data.rows[1].series[0].label).to.be('customLabel');
});
it('should update label in column data', function () {
let seriesDataWithoutLabelInRow = {
const seriesDataWithoutLabelInRow = {
'columns': [
{
'label': '',
@ -194,7 +194,7 @@ describe('Vislib Data Class Test Suite', function () {
'yAxisLabel': 'customLabel'
};
let modifiedData = new Data(seriesDataWithoutLabelInRow, {}, persistedState);
const modifiedData = new Data(seriesDataWithoutLabelInRow, {}, persistedState);
expect(modifiedData.data.columns[0].series[0].label).to.be('customLabel');
expect(modifiedData.data.columns[1].series[0].label).to.be('customLabel');
});
@ -203,7 +203,7 @@ describe('Vislib Data Class Test Suite', function () {
describe('_removeZeroSlices', function () {
let data;
let pieData = {
const pieData = {
slices: {
children: [
{size: 30},
@ -218,7 +218,7 @@ describe('Vislib Data Class Test Suite', function () {
});
it('should remove zero values', function () {
let slices = data._removeZeroSlices(data.data.slices);
const slices = data._removeZeroSlices(data.data.slices);
expect(slices.children.length).to.be(2);
});
});
@ -250,8 +250,8 @@ describe('Vislib Data Class Test Suite', function () {
function testLength(inputData) {
return function () {
let data = new Data(inputData, {}, persistedState);
let len = _.reduce(data.chartData(), function (sum, chart) {
const data = new Data(inputData, {}, persistedState);
const len = _.reduce(data.chartData(), function (sum, chart) {
return sum + chart.series.reduce(function (sum, series) {
return sum + series.values.length;
}, 0);
@ -266,9 +266,9 @@ describe('Vislib Data Class Test Suite', function () {
let visData;
let visDataNeg;
let visDataStacked;
let minValue = 4;
let minValueNeg = -41;
let minValueStacked = 15;
const minValue = 4;
const minValueNeg = -41;
const minValueStacked = 15;
beforeEach(function () {
visData = new Data(dataSeries, {}, persistedState);
@ -286,15 +286,15 @@ describe('Vislib Data Class Test Suite', function () {
});
it('should have a minimum date value that is greater than the max value within the date range', function () {
let series = _.pluck(visData.chartData(), 'series');
let stackedSeries = _.pluck(visDataStacked.chartData(), 'series');
const series = _.pluck(visData.chartData(), 'series');
const stackedSeries = _.pluck(visDataStacked.chartData(), 'series');
expect(_.min(series.values, function (d) { return d.x; })).to.be.greaterThan(minValue);
expect(_.min(stackedSeries.values, function (d) { return d.x; })).to.be.greaterThan(minValueStacked);
});
it('allows passing a value getter for manipulating the values considered', function () {
let realMin = visData.getYMin();
let multiplier = 13.2;
const realMin = visData.getYMin();
const multiplier = 13.2;
expect(visData.getYMin(function (d) { return d.y * multiplier; })).to.be(realMin * multiplier);
});
});
@ -303,9 +303,9 @@ describe('Vislib Data Class Test Suite', function () {
let visData;
let visDataNeg;
let visDataStacked;
let maxValue = 41;
let maxValueNeg = -4;
let maxValueStacked = 115;
const maxValue = 41;
const maxValueNeg = -4;
const maxValueStacked = 115;
beforeEach(function () {
visData = new Data(dataSeries, {}, persistedState);
@ -323,22 +323,22 @@ describe('Vislib Data Class Test Suite', function () {
});
it('should have a minimum date value that is greater than the max value within the date range', function () {
let series = _.pluck(visData.chartData(), 'series');
let stackedSeries = _.pluck(visDataStacked.chartData(), 'series');
const series = _.pluck(visData.chartData(), 'series');
const stackedSeries = _.pluck(visDataStacked.chartData(), 'series');
expect(_.min(series, function (d) { return d.x; })).to.be.greaterThan(maxValue);
expect(_.min(stackedSeries, function (d) { return d.x; })).to.be.greaterThan(maxValueStacked);
});
it('allows passing a value getter for manipulating the values considered', function () {
let realMax = visData.getYMax();
let multiplier = 13.2;
const realMax = visData.getYMax();
const multiplier = 13.2;
expect(visData.getYMax(function (d) { return d.y * multiplier; })).to.be(realMax * multiplier);
});
});
describe('geohashGrid methods', function () {
let data;
let geohashGridData = {
const geohashGridData = {
hits: 3954,
rows: [{
title: 'Top 5 _type: apache',
@ -381,14 +381,14 @@ describe('Vislib Data Class Test Suite', function () {
describe('getVisData', function () {
it('should return the rows property', function () {
let visData = data.getVisData();
const visData = data.getVisData();
expect(visData).to.eql(geohashGridData.rows);
});
});
describe('getGeoExtents', function () {
it('should return the min and max geoJson properties', function () {
let minMax = data.getGeoExtents();
const minMax = data.getGeoExtents();
expect(minMax.min).to.be(1);
expect(minMax.max).to.be(331);
});
@ -397,12 +397,12 @@ describe('Vislib Data Class Test Suite', function () {
describe('null value check', function () {
it('should return false', function () {
let data = new Data(rowsData, {}, persistedState);
const data = new Data(rowsData, {}, persistedState);
expect(data.hasNullValues()).to.be(false);
});
it('should return true', function () {
let nullRowData = { rows: rowsData.rows.slice(0) };
const nullRowData = { rows: rowsData.rows.slice(0) };
nullRowData.rows.push({
'label': 'e',
'series': [
@ -413,7 +413,7 @@ describe('Vislib Data Class Test Suite', function () {
]
});
let data = new Data(nullRowData, {}, persistedState);
const data = new Data(nullRowData, {}, persistedState);
expect(data.hasNullValues()).to.be(true);
});
});

View file

@ -39,7 +39,7 @@ describe('Vislib Dispatch Class Test Suite', function () {
});
it('extends the SimpleEmitter class', function () {
let events = _.pluck(vis.handler.charts, 'events');
const events = _.pluck(vis.handler.charts, 'events');
expect(events.length).to.be.above(0);
events.forEach(function (dispatch) {
expect(dispatch).to.be.a(SimpleEmitter);
@ -65,11 +65,11 @@ describe('Vislib Dispatch Class Test Suite', function () {
describe('addEvent method', function () {
it('returns a function that binds the passed event to a selection', function () {
let chart = _.first(vis.handler.charts);
let apply = chart.events.addEvent('event', _.noop);
const chart = _.first(vis.handler.charts);
const apply = chart.events.addEvent('event', _.noop);
expect(apply).to.be.a('function');
let els = getEls(vis.el, 3, 'div');
const els = getEls(vis.el, 3, 'div');
apply(els);
els.each(function () {
expect(d3.select(this).on('event')).to.be(_.noop);
@ -88,11 +88,11 @@ describe('Vislib Dispatch Class Test Suite', function () {
});
it('returns a function that binds ' + event + ' events to a selection', function () {
let chart = _.first(vis.handler.charts);
let apply = chart.events[name](d3.select(document.createElement('svg')));
const chart = _.first(vis.handler.charts);
const apply = chart.events[name](d3.select(document.createElement('svg')));
expect(apply).to.be.a('function');
let els = getEls(vis.el, 3, 'div');
const els = getEls(vis.el, 3, 'div');
apply(els);
els.each(function () {
expect(d3.select(this).on(event)).to.be.a('function');
@ -109,7 +109,7 @@ describe('Vislib Dispatch Class Test Suite', function () {
describe('addMousePointer method', function () {
it('should be a function', function () {
vis.handler.charts.forEach(function (chart) {
let pointer = chart.events.addMousePointer;
const pointer = chart.events.addMousePointer;
expect(_.isFunction(pointer)).to.be(true);
});

View file

@ -12,13 +12,13 @@ import $ from 'jquery';
import VislibLibHandlerHandlerProvider from 'ui/vislib/lib/handler/handler';
import FixturesVislibVisFixtureProvider from 'fixtures/vislib/_vis_fixture';
import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_state';
let dateHistogramArray = [
const dateHistogramArray = [
series,
columns,
rows,
stackedSeries
];
let names = [
const names = [
'series',
'columns',
'rows',
@ -30,7 +30,7 @@ dateHistogramArray.forEach(function (data, i) {
let Handler;
let vis;
let persistedState;
let events = [
const events = [
'click',
'brush'
];

View file

@ -12,13 +12,13 @@ import $ from 'jquery';
import VislibLibLayoutLayoutProvider from 'ui/vislib/lib/layout/layout';
import FixturesVislibVisFixtureProvider from 'fixtures/vislib/_vis_fixture';
import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_state';
let dateHistogramArray = [
const dateHistogramArray = [
series,
columns,
rows,
stackedSeries
];
let names = [
const names = [
'series',
'columns',
'rows',

View file

@ -15,7 +15,7 @@ describe('Vislib Split Function Test Suite', function () {
let xAxisSplit;
let yAxisSplit;
let el;
let data = {
const data = {
rows: [
{
hits : 621,

View file

@ -9,7 +9,7 @@ describe('Vislib Column Layout Test Suite', function () {
let layoutType;
let columnLayout;
let el;
let data = {
const data = {
hits: 621,
label: '',
ordered: {

View file

@ -16,7 +16,7 @@ describe('Vislib Resize Checker', function () {
let EventEmitter;
let checker;
let reflowWatcher;
let reflowSpies = {};
const reflowSpies = {};
beforeEach(ngMock.module('kibana'));
@ -27,7 +27,7 @@ describe('Vislib Resize Checker', function () {
reflowSpies.on = sinon.spy(reflowWatcher, 'on');
reflowSpies.off = sinon.spy(reflowWatcher, 'off');
let $el = $(document.createElement('div'))
const $el = $(document.createElement('div'))
.appendTo('body')
.css('visibility', 'hidden')
.get(0);
@ -47,7 +47,7 @@ describe('Vislib Resize Checker', function () {
it('listens for the "reflow" event of the reflowWatchers', function () {
expect(reflowSpies.on).to.have.property('callCount', 1);
let call = reflowSpies.on.getCall(0);
const call = reflowSpies.on.getCall(0);
expect(call.args[0]).to.be('reflow');
});
@ -63,8 +63,8 @@ describe('Vislib Resize Checker', function () {
describe('#read', function () {
it('gets the proper dimensions for the element', function () {
let dimensions = checker.read();
let windowWidth = document.documentElement.clientWidth;
const dimensions = checker.read();
const windowWidth = document.documentElement.clientWidth;
expect(dimensions.w).to.equal(windowWidth);
expect(dimensions.h).to.equal(0);
@ -73,7 +73,7 @@ describe('Vislib Resize Checker', function () {
describe('#saveSize', function () {
it('calls #read() when no arg is passed', function () {
let stub = sinon.stub(checker, 'read').returns({});
const stub = sinon.stub(checker, 'read').returns({});
checker.saveSize();
@ -81,7 +81,7 @@ describe('Vislib Resize Checker', function () {
});
it('saves the size of the element', function () {
let football = {};
const football = {};
checker.saveSize(football);
expect(checker).to.have.property('_savedSize', football);
});
@ -123,12 +123,12 @@ describe('Vislib Resize Checker', function () {
});
it('emits "resize" based on MS_MAX_RESIZE_DELAY, even if el\'s constantly changing size', function () {
let steps = _.random(5, 10);
const steps = _.random(5, 10);
this.slow(steps * 10);
// we are going to fake the delay using the fake clock
let msStep = Math.floor(ResizeChecker.MS_MAX_RESIZE_DELAY / (steps - 1));
let clock = sinon.useFakeTimers();
const msStep = Math.floor(ResizeChecker.MS_MAX_RESIZE_DELAY / (steps - 1));
const clock = sinon.useFakeTimers();
_.times(steps, function step(i) {
checker.$el.css('height', 100 + i);
@ -145,8 +145,8 @@ describe('Vislib Resize Checker', function () {
describe('#destroy()', function () {
it('removes the "reflow" event from the reflowWatcher', function () {
let onCall = reflowSpies.on.getCall(0);
let handler = onCall.args[1];
const onCall = reflowSpies.on.getCall(0);
const handler = onCall.args[1];
checker.destroy();
expect(reflowSpies.off).to.have.property('callCount', 1);
@ -154,7 +154,7 @@ describe('Vislib Resize Checker', function () {
});
it('clears the timeout', function () {
let spy = sinon.spy(window, 'clearTimeout');
const spy = sinon.spy(window, 'clearTimeout');
checker.destroy();
expect(spy).to.have.property('callCount', 1);
});
@ -193,9 +193,9 @@ describe('Vislib Resize Checker', function () {
timerId = checker.continueSchedule();
}
let last = _.last(schedule);
const last = _.last(schedule);
_.times(5, function () {
let timer = clock.timers[checker.continueSchedule()];
const timer = clock.timers[checker.continueSchedule()];
expect(timer).to.have.property('callAt', last);
});
});

View file

@ -16,7 +16,7 @@ describe('Vislib xAxis Class Test Suite', function () {
let el;
let fixture;
let dataObj;
let data = {
const data = {
hits: 621,
label: '',
ordered: {

View file

@ -15,7 +15,7 @@ let buildYAxis;
let yAxis;
let yAxisDiv;
let timeSeries = [
const timeSeries = [
1408734060000,
1408734090000,
1408734120000,
@ -28,7 +28,7 @@ let timeSeries = [
1408734330000
];
let defaultGraphData = [
const defaultGraphData = [
[ 8, 23, 30, 28, 36, 30, 26, 22, 29, 24 ],
[ 2, 13, 20, 18, 26, 20, 16, 12, 19, 14 ]
];
@ -43,7 +43,7 @@ function makeSeriesData(data) {
}
function createData(seriesData) {
let data = {
const data = {
hits: 621,
label: 'test',
ordered: {
@ -59,7 +59,7 @@ function createData(seriesData) {
yAxisLabel: 'Count'
};
let node = $('<div>').css({
const node = $('<div>').css({
height: 40,
width: 40
})
@ -72,7 +72,7 @@ function createData(seriesData) {
yAxisDiv = el.append('div')
.attr('class', 'y-axis-div');
let dataObj = new Data(data, {
const dataObj = new Data(data, {
defaultYMin: true
}, persistedState);
@ -133,10 +133,10 @@ describe('Vislib yAxis Class Test Suite', function () {
let yScale;
let graphData;
let domain;
let height = 50;
const height = 50;
function checkDomain(min, max) {
let domain = yScale.domain();
const domain = yScale.domain();
expect(domain[0]).to.be.lessThan(min + 1);
expect(domain[1]).to.be.greaterThan(max - 1);
return domain;
@ -181,9 +181,9 @@ describe('Vislib yAxis Class Test Suite', function () {
it('should have domain between 0 and max value', function () {
let min = 0;
let max = _.max(_.flattenDeep(graphData));
let domain = checkDomain(min, max);
const min = 0;
const max = _.max(_.flattenDeep(graphData));
const domain = checkDomain(min, max);
expect(domain[1]).to.be.greaterThan(0);
checkRange();
});
@ -200,9 +200,9 @@ describe('Vislib yAxis Class Test Suite', function () {
});
it('should have domain between min value and 0', function () {
let min = _.min(_.flattenDeep(graphData));
let max = 0;
let domain = checkDomain(min, max);
const min = _.min(_.flattenDeep(graphData));
const max = 0;
const domain = checkDomain(min, max);
expect(domain[0]).to.be.lessThan(0);
checkRange();
});
@ -219,9 +219,9 @@ describe('Vislib yAxis Class Test Suite', function () {
});
it('should have domain between min and max values', function () {
let min = _.min(_.flattenDeep(graphData));
let max = _.max(_.flattenDeep(graphData));
let domain = checkDomain(min, max);
const min = _.min(_.flattenDeep(graphData));
const max = _.max(_.flattenDeep(graphData));
const domain = checkDomain(min, max);
expect(domain[0]).to.be.lessThan(0);
expect(domain[1]).to.be.greaterThan(0);
checkRange();
@ -236,8 +236,8 @@ describe('Vislib yAxis Class Test Suite', function () {
});
it('should throw a NaN error', function () {
let min = 'Not a number';
let max = 12;
const min = 'Not a number';
const max = 12;
expect(function () {
yAxis._validateUserExtents(min, max);
@ -250,7 +250,7 @@ describe('Vislib yAxis Class Test Suite', function () {
domain = [];
domain[0] = yAxis._attr.yAxis.min = 20;
domain[1] = yAxis._attr.yAxis.max = 80;
let newDomain = yAxis._validateUserExtents(domain);
const newDomain = yAxis._validateUserExtents(domain);
expect(newDomain[0]).to.be(domain[0] / 100);
expect(newDomain[1]).to.be(domain[1] / 100);
@ -258,7 +258,7 @@ describe('Vislib yAxis Class Test Suite', function () {
it('should return the user defined value', function () {
domain = [20, 50];
let newDomain = yAxis._validateUserExtents(domain);
const newDomain = yAxis._validateUserExtents(domain);
expect(newDomain[0]).to.be(domain[0]);
expect(newDomain[1]).to.be(domain[1]);
@ -267,8 +267,8 @@ describe('Vislib yAxis Class Test Suite', function () {
describe('should throw an error when', function () {
it('min === max', function () {
let min = 12;
let max = 12;
const min = 12;
const max = 12;
expect(function () {
yAxis._validateAxisExtents(min, max);
@ -276,8 +276,8 @@ describe('Vislib yAxis Class Test Suite', function () {
});
it('min > max', function () {
let min = 30;
let max = 10;
const min = 30;
const max = 10;
expect(function () {
yAxis._validateAxisExtents(min, max);
@ -287,7 +287,7 @@ describe('Vislib yAxis Class Test Suite', function () {
});
describe('getScaleType method', function () {
let fnNames = ['linear', 'log', 'square root'];
const fnNames = ['linear', 'log', 'square root'];
it('should return a function', function () {
fnNames.forEach(function (fnName) {
@ -319,7 +319,7 @@ describe('Vislib yAxis Class Test Suite', function () {
});
it('should return a yMin value of 1', function () {
let yMin = yAxis._logDomain(0, 200)[0];
const yMin = yAxis._logDomain(0, 200)[0];
expect(yMin).to.be(1);
});
});
@ -343,13 +343,13 @@ describe('Vislib yAxis Class Test Suite', function () {
it('should use percentage format for percentages', function () {
yAxis._attr.mode = 'percentage';
let tickFormat = yAxis.getYAxis().tickFormat();
const tickFormat = yAxis.getYAxis().tickFormat();
expect(tickFormat(1)).to.be('100%');
});
it('should use decimal format for small values', function () {
yAxis.yMax = 1;
let tickFormat = yAxis.getYAxis().tickFormat();
const tickFormat = yAxis.getYAxis().tickFormat();
expect(tickFormat(0.8)).to.be('0.8');
});
@ -384,23 +384,23 @@ describe('Vislib yAxis Class Test Suite', function () {
});
describe('#tickFormat()', function () {
let formatter = function () {};
const formatter = function () {};
it('returns a basic number formatter by default', function () {
let yAxis = buildYAxis();
const yAxis = buildYAxis();
expect(yAxis.tickFormat()).to.not.be(formatter);
expect(yAxis.tickFormat()(1)).to.be('1');
});
it('returns the yAxisFormatter when passed', function () {
let yAxis = buildYAxis({
const yAxis = buildYAxis({
yAxisFormatter: formatter
});
expect(yAxis.tickFormat()).to.be(formatter);
});
it('returns a percentage formatter when the vis is in percentage mode', function () {
let yAxis = buildYAxis({
const yAxis = buildYAxis({
yAxisFormatter: formatter,
_attr: {
mode: 'percentage'

View file

@ -11,14 +11,14 @@ import $ from 'jquery';
import FixturesVislibVisFixtureProvider from 'fixtures/vislib/_vis_fixture';
import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_state';
let dataArray = [
const dataArray = [
series,
columns,
rows,
stackedSeries
];
let names = [
const names = [
'series',
'columns',
'rows',
@ -28,8 +28,8 @@ let names = [
dataArray.forEach(function (data, i) {
describe('Vislib Vis Test Suite for ' + names[i] + ' Data', function () {
let beforeEvent = 'click';
let afterEvent = 'brush';
const beforeEvent = 'click';
const afterEvent = 'brush';
let vis;
let persistedState;
let secondVis;
@ -129,7 +129,7 @@ dataArray.forEach(function (data, i) {
});
describe('on Method', function () {
let events = [
const events = [
beforeEvent,
afterEvent
];
@ -173,7 +173,7 @@ dataArray.forEach(function (data, i) {
});
it('should cause a listener for each event to be attached to each chart', function () {
let charts = vis.handler.charts;
const charts = vis.handler.charts;
charts.forEach(function (chart, i) {
expect(chart.events.listenerCount(beforeEvent)).to.be.above(0);
@ -220,7 +220,7 @@ dataArray.forEach(function (data, i) {
});
it('should remove a listener', function () {
let charts = vis.handler.charts;
const charts = vis.handler.charts;
expect(vis.listeners(beforeEvent)).to.not.contain(listener1);
expect(vis.listeners(beforeEvent)).to.contain(listener2);
@ -236,7 +236,7 @@ dataArray.forEach(function (data, i) {
});
it('should remove the event and all listeners when only event passed an argument', function () {
let charts = vis.handler.charts;
const charts = vis.handler.charts;
vis.off(afterEvent);
// should remove 'brush' event
@ -251,7 +251,7 @@ dataArray.forEach(function (data, i) {
});
it('should remove the event from the chart when the last listener is removed', function () {
let charts = vis.handler.charts;
const charts = vis.handler.charts;
vis.off(afterEvent, listener2);
expect(vis.listenerCount(afterEvent)).to.be(0);

View file

@ -9,7 +9,7 @@ import notQuiteEnoughVariables from 'fixtures/vislib/mock_data/not_enough_data/_
import $ from 'jquery';
import FixturesVislibVisFixtureProvider from 'fixtures/vislib/_vis_fixture';
import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_state';
let someOtherVariables = {
const someOtherVariables = {
'series pos': require('fixtures/vislib/mock_data/date_histogram/_series'),
'series pos neg': require('fixtures/vislib/mock_data/date_histogram/_series_pos_neg'),
'series neg': require('fixtures/vislib/mock_data/date_histogram/_series_neg'),
@ -18,7 +18,7 @@ let someOtherVariables = {
'stackedSeries': require('fixtures/vislib/mock_data/date_histogram/_stacked_series')
};
let visLibParams = {
const visLibParams = {
type: 'area',
addLegend: true,
addTooltip: true
@ -158,12 +158,12 @@ _.forOwn(someOtherVariables, function (variablesAreCool, imaVariable) {
it('should not draw circles where d.y === 0', function () {
vis.handler.charts.forEach(function (chart) {
let series = chart.chartData.series;
let isZero = series.some(function (d) {
const series = chart.chartData.series;
const isZero = series.some(function (d) {
return d.y === 0;
});
let circles = $.makeArray($(chart.chartEl).find('circle'));
let isNotDrawn = circles.some(function (d) {
const circles = $.makeArray($(chart.chartEl).find('circle'));
const isNotDrawn = circles.some(function (d) {
return d.__data__.y === 0;
});
@ -183,7 +183,7 @@ _.forOwn(someOtherVariables, function (variablesAreCool, imaVariable) {
it('should return a yMin and yMax', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
const yAxis = chart.handler.yAxis;
expect(yAxis.domain[0]).to.not.be(undefined);
expect(yAxis.domain[1]).to.not.be(undefined);
@ -192,7 +192,7 @@ _.forOwn(someOtherVariables, function (variablesAreCool, imaVariable) {
it('should render a zero axis line', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
const yAxis = chart.handler.yAxis;
if (yAxis.yMin < 0 && yAxis.yMax > 0) {
expect($(chart.chartEl).find('line.zero-line').length).to.be(1);
@ -224,8 +224,8 @@ _.forOwn(someOtherVariables, function (variablesAreCool, imaVariable) {
it('should return yAxis extents equal to data extents', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
let yVals = [vis.handler.data.getYMin(), vis.handler.data.getYMax()];
const yAxis = chart.handler.yAxis;
const yVals = [vis.handler.data.getYMin(), vis.handler.data.getYMax()];
expect(yAxis.domain[0]).to.equal(yVals[0]);
expect(yAxis.domain[1]).to.equal(yVals[1]);

View file

@ -13,12 +13,12 @@ describe('Vislib _chart Test Suite', function () {
let Data;
let persistedState;
let Vis;
let chartData = {};
const chartData = {};
let vis;
let el;
let myChart;
let config;
let data = {
const data = {
hits : 621,
label : '',
ordered : {

View file

@ -10,14 +10,14 @@ import series from 'fixtures/vislib/mock_data/date_histogram/_series';
import seriesPosNeg from 'fixtures/vislib/mock_data/date_histogram/_series_pos_neg';
import seriesNeg from 'fixtures/vislib/mock_data/date_histogram/_series_neg';
import termsColumns from 'fixtures/vislib/mock_data/terms/_columns';
//let histogramRows = require('fixtures/vislib/mock_data/histogram/_rows');
//const histogramRows = require('fixtures/vislib/mock_data/histogram/_rows');
import stackedSeries from 'fixtures/vislib/mock_data/date_histogram/_stacked_series';
import $ from 'jquery';
import FixturesVislibVisFixtureProvider from 'fixtures/vislib/_vis_fixture';
import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_state';
// tuple, with the format [description, mode, data]
let dataTypesArray = [
const dataTypesArray = [
['series', 'stacked', series],
['series with positive and negative values', 'stacked', seriesPosNeg],
['series with negative values', 'stacked', seriesNeg],
@ -27,14 +27,14 @@ let dataTypesArray = [
];
dataTypesArray.forEach(function (dataType, i) {
let name = dataType[0];
let mode = dataType[1];
let data = dataType[2];
const name = dataType[0];
const mode = dataType[1];
const data = dataType[2];
describe('Vislib Column Chart Test Suite for ' + name + ' Data', function () {
let vis;
let persistedState;
let visLibParams = {
const visLibParams = {
type: 'histogram',
hasTimeField: true,
addLegend: true,
@ -104,7 +104,7 @@ dataTypesArray.forEach(function (dataType, i) {
describe('addBarEvents method', function () {
function checkChart(chart) {
let rect = $(chart.chartEl).find('.series rect').get(0);
const rect = $(chart.chartEl).find('.series rect').get(0);
// check for existance of stuff and things
return {
@ -121,23 +121,23 @@ dataTypesArray.forEach(function (dataType, i) {
it('should attach the brush if data is a set of ordered dates', function () {
vis.handler.charts.forEach(function (chart) {
let has = checkChart(chart);
let ordered = vis.handler.data.get('ordered');
let date = Boolean(ordered && ordered.date);
const has = checkChart(chart);
const ordered = vis.handler.data.get('ordered');
const date = Boolean(ordered && ordered.date);
expect(has.brush).to.be(date);
});
});
it('should attach a click event', function () {
vis.handler.charts.forEach(function (chart) {
let has = checkChart(chart);
const has = checkChart(chart);
expect(has.click).to.be(true);
});
});
it('should attach a hover event', function () {
vis.handler.charts.forEach(function (chart) {
let has = checkChart(chart);
const has = checkChart(chart);
expect(has.mouseOver).to.be(true);
});
});
@ -152,7 +152,7 @@ dataTypesArray.forEach(function (dataType, i) {
it('should return a yMin and yMax', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
const yAxis = chart.handler.yAxis;
expect(yAxis.domain[0]).to.not.be(undefined);
expect(yAxis.domain[1]).to.not.be(undefined);
@ -161,7 +161,7 @@ dataTypesArray.forEach(function (dataType, i) {
it('should render a zero axis line', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
const yAxis = chart.handler.yAxis;
if (yAxis.yMin < 0 && yAxis.yMax > 0) {
expect($(chart.chartEl).find('line.zero-line').length).to.be(1);
@ -193,9 +193,9 @@ dataTypesArray.forEach(function (dataType, i) {
it('should return yAxis extents equal to data extents', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
let min = vis.handler.data.getYMin();
let max = vis.handler.data.getYMax();
const yAxis = chart.handler.yAxis;
const min = vis.handler.data.getYMin();
const max = vis.handler.data.getYMax();
expect(yAxis.domain[0]).to.equal(min);
expect(yAxis.domain[1]).to.equal(max);

View file

@ -15,7 +15,7 @@ import $ from 'jquery';
import FixturesVislibVisFixtureProvider from 'fixtures/vislib/_vis_fixture';
import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_state';
let dataTypes = [
const dataTypes = [
['series pos', seriesPos],
['series pos neg', seriesPosNeg],
['series neg', seriesNeg],
@ -26,8 +26,8 @@ let dataTypes = [
describe('Vislib Line Chart', function () {
dataTypes.forEach(function (type, i) {
let name = type[0];
let data = type[1];
const name = type[0];
const data = type[1];
describe(name + ' Data', function () {
let vis;
@ -35,7 +35,7 @@ describe('Vislib Line Chart', function () {
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {
let visLibParams = {
const visLibParams = {
type: 'line',
addLegend: true,
addTooltip: true,
@ -133,7 +133,7 @@ describe('Vislib Line Chart', function () {
it('should return a yMin and yMax', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
const yAxis = chart.handler.yAxis;
expect(yAxis.domain[0]).to.not.be(undefined);
expect(yAxis.domain[1]).to.not.be(undefined);
@ -142,7 +142,7 @@ describe('Vislib Line Chart', function () {
it('should render a zero axis line', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
const yAxis = chart.handler.yAxis;
if (yAxis.yMin < 0 && yAxis.yMax > 0) {
expect($(chart.chartEl).find('line.zero-line').length).to.be(1);
@ -174,8 +174,8 @@ describe('Vislib Line Chart', function () {
it('should return yAxis extents equal to data extents', function () {
vis.handler.charts.forEach(function (chart) {
let yAxis = chart.handler.yAxis;
let yVals = [vis.handler.data.getYMin(), vis.handler.data.getYMax()];
const yAxis = chart.handler.yAxis;
const yVals = [vis.handler.data.getYMin(), vis.handler.data.getYMax()];
expect(yAxis.domain[0]).to.equal(yVals[0]);
expect(yAxis.domain[1]).to.equal(yVals[1]);

View file

@ -11,39 +11,39 @@ import PersistedStatePersistedStateProvider from 'ui/persisted_state/persisted_s
import FixturesStubbedLogstashIndexPatternProvider from 'fixtures/stubbed_logstash_index_pattern';
import AggResponseHierarchicalBuildHierarchicalDataProvider from 'ui/agg_response/hierarchical/build_hierarchical_data';
let rowAgg = [
const rowAgg = [
{ type: 'avg', schema: 'metric', params: { field: 'bytes' } },
{ type: 'terms', schema: 'split', params: { field: 'extension', rows: true }},
{ type: 'terms', schema: 'segment', params: { field: 'machine.os' }},
{ type: 'terms', schema: 'segment', params: { field: 'geo.src' }}
];
let colAgg = [
const colAgg = [
{ type: 'avg', schema: 'metric', params: { field: 'bytes' } },
{ type: 'terms', schema: 'split', params: { field: 'extension', row: false }},
{ type: 'terms', schema: 'segment', params: { field: 'machine.os' }},
{ type: 'terms', schema: 'segment', params: { field: 'geo.src' }}
];
let sliceAgg = [
const sliceAgg = [
{ type: 'avg', schema: 'metric', params: { field: 'bytes' } },
{ type: 'terms', schema: 'segment', params: { field: 'machine.os' }},
{ type: 'terms', schema: 'segment', params: { field: 'geo.src' }}
];
let aggArray = [
const aggArray = [
rowAgg,
colAgg,
sliceAgg
];
let names = [
const names = [
'rows',
'columns',
'slices'
];
let sizes = [
const sizes = [
0,
5,
15,
@ -53,13 +53,13 @@ let sizes = [
];
describe('No global chart settings', function () {
let visLibParams1 = {
const visLibParams1 = {
el: '<div class=chart1></div>',
type: 'pie',
addLegend: true,
addTooltip: true
};
let visLibParams2 = {
const visLibParams2 = {
el: '<div class=chart2></div>',
type: 'pie',
addLegend: true,
@ -85,11 +85,11 @@ describe('No global chart settings', function () {
let id1 = 1;
let id2 = 1;
let stubVis1 = new Vis(indexPattern, {
const stubVis1 = new Vis(indexPattern, {
type: 'pie',
aggs: rowAgg
});
let stubVis2 = new Vis(indexPattern, {
const stubVis2 = new Vis(indexPattern, {
type: 'pie',
aggs: colAgg
});
@ -120,19 +120,19 @@ describe('No global chart settings', function () {
});
describe('_validatePieData method', function () {
let allZeros = [
const allZeros = [
{ slices: { children: [] } },
{ slices: { children: [] } },
{ slices: { children: [] } }
];
let someZeros = [
const someZeros = [
{ slices: { children: [{}] } },
{ slices: { children: [{}] } },
{ slices: { children: [] } }
];
let noZeros = [
const noZeros = [
{ slices: { children: [{}] } },
{ slices: { children: [{}] } },
{ slices: { children: [{}] } }
@ -157,7 +157,7 @@ describe('No global chart settings', function () {
aggArray.forEach(function (dataAgg, i) {
describe('Vislib PieChart Class Test Suite for ' + names[i] + ' data', function () {
let visLibParams = {
const visLibParams = {
type: 'pie',
addLegend: true,
addTooltip: true
@ -178,7 +178,7 @@ aggArray.forEach(function (dataAgg, i) {
buildHierarchicalData = Private(AggResponseHierarchicalBuildHierarchicalDataProvider);
let id = 1;
let stubVis = new Vis(indexPattern, {
const stubVis = new Vis(indexPattern, {
type: 'pie',
aggs: dataAgg
});

View file

@ -10,14 +10,14 @@ import $ from 'jquery';
import VislibVisualizationsMapProvider from 'ui/vislib/visualizations/_map';
// // Data
// let dataArray = [
// const dataArray = [
// ['geojson', require('fixtures/vislib/mock_data/geohash/_geo_json')],
// ['columns', require('fixtures/vislib/mock_data/geohash/_columns')],
// ['rows', require('fixtures/vislib/mock_data/geohash/_rows')],
// ];
// // TODO: Test the specific behavior of each these
// let mapTypes = [
// const mapTypes = [
// 'Scaled Circle Markers',
// 'Shaded Circle Markers',
// 'Shaded Geohash Grid',
@ -25,10 +25,10 @@ import VislibVisualizationsMapProvider from 'ui/vislib/visualizations/_map';
// ];
describe('TileMap Map Tests', function () {
let $mockMapEl = $('<div>');
const $mockMapEl = $('<div>');
let TileMapMap;
let leafletStubs = {};
let leafletMocks = {};
const leafletStubs = {};
const leafletMocks = {};
beforeEach(ngMock.module('kibana'));
beforeEach(ngMock.inject(function (Private) {
@ -57,7 +57,7 @@ describe('TileMap Map Tests', function () {
});
it('should add zoom controls', function () {
let mapOptions = createStub.firstCall.args[0];
const mapOptions = createStub.firstCall.args[0];
expect(mapOptions).to.be.an('object');
if (mapOptions.zoomControl) expect(mapOptions.zoomControl).to.be.ok();
@ -82,8 +82,8 @@ describe('TileMap Map Tests', function () {
expect(leafletStubs.tileLayer.callCount).to.equal(1);
expect(leafletStubs.map.callCount).to.equal(1);
let callArgs = leafletStubs.map.firstCall.args;
let mapOptions = callArgs[1];
const callArgs = leafletStubs.map.firstCall.args;
const mapOptions = callArgs[1];
expect(callArgs[0]).to.be($mockMapEl.get(0));
expect(mapOptions).to.have.property('zoom');
expect(mapOptions).to.have.property('center');
@ -122,21 +122,21 @@ describe('TileMap Map Tests', function () {
});
it('should attach interaction events', function () {
let expectedTileEvents = ['tileload'];
let expectedMapEvents = ['draw:created', 'moveend', 'zoomend', 'unload'];
let matchedEvents = {
const expectedTileEvents = ['tileload'];
const expectedMapEvents = ['draw:created', 'moveend', 'zoomend', 'unload'];
const matchedEvents = {
tiles: 0,
maps: 0,
};
_.times(leafletMocks.tileLayer.on.callCount, function (index) {
let ev = leafletMocks.tileLayer.on.getCall(index).args[0];
const ev = leafletMocks.tileLayer.on.getCall(index).args[0];
if (_.includes(expectedTileEvents, ev)) matchedEvents.tiles++;
});
expect(matchedEvents.tiles).to.equal(expectedTileEvents.length);
_.times(leafletMocks.map.on.callCount, function (index) {
let ev = leafletMocks.map.on.getCall(index).args[0];
const ev = leafletMocks.map.on.getCall(index).args[0];
if (_.includes(expectedMapEvents, ev)) matchedEvents.maps++;
});
expect(matchedEvents.maps).to.equal(expectedMapEvents.length);
@ -157,14 +157,14 @@ describe('TileMap Map Tests', function () {
it('should pass the map options to the marker', function () {
map._addMarkers();
let args = createStub.firstCall.args[0];
const args = createStub.firstCall.args[0];
expect(args).to.have.property('tooltipFormatter');
expect(args).to.have.property('valueFormatter');
expect(args).to.have.property('attr');
});
it('should destroy existing markers', function () {
let destroyStub = sinon.stub();
const destroyStub = sinon.stub();
map._markers = { destroy: destroyStub };
map._addMarkers();
@ -182,20 +182,20 @@ describe('TileMap Map Tests', function () {
it('should return an empty array if no data', function () {
map = new TileMapMap($mockMapEl, {}, {});
let rects = map._getDataRectangles();
const rects = map._getDataRectangles();
expect(rects).to.have.length(0);
});
it('should return an array of arrays of rectangles', function () {
let rects = map._getDataRectangles();
const rects = map._getDataRectangles();
_.times(5, function () {
let index = _.random(rects.length - 1);
let rect = rects[index];
let featureRect = geoJsonData.geoJson.features[index].properties.rectangle;
const index = _.random(rects.length - 1);
const rect = rects[index];
const featureRect = geoJsonData.geoJson.features[index].properties.rectangle;
expect(rect.length).to.equal(featureRect.length);
// should swap the array
let checkIndex = _.random(rect.length - 1);
const checkIndex = _.random(rect.length - 1);
expect(rect[checkIndex]).to.eql(featureRect[checkIndex]);
});
});

View file

@ -12,9 +12,9 @@ import VislibVisualizationsMarkerTypesShadedCirclesProvider from 'ui/vislib/visu
import VislibVisualizationsMarkerTypesScaledCirclesProvider from 'ui/vislib/visualizations/marker_types/scaled_circles';
import VislibVisualizationsMarkerTypesHeatmapProvider from 'ui/vislib/visualizations/marker_types/heatmap';
// defaults to roughly the lower 48 US states
let defaultSWCoords = [13.496, -143.789];
let defaultNECoords = [55.526, -57.919];
let bounds = {};
const defaultSWCoords = [13.496, -143.789];
const defaultNECoords = [55.526, -57.919];
const bounds = {};
let MarkerType;
let map;
@ -29,7 +29,7 @@ function getBounds() {
return L.latLngBounds(bounds.southWest, bounds.northEast);
}
let mockMap = {
const mockMap = {
addLayer: _.noop,
closePopup: _.noop,
getBounds: getBounds,
@ -76,8 +76,8 @@ describe('Marker Tests', function () {
it('should not filter any features', function () {
// set bounds to the entire world
setBounds([-87.252, -343.828], [87.252, 343.125]);
let boundFilter = markerLayer._filterToMapBounds();
let mapFeature = mapData.features.filter(boundFilter);
const boundFilter = markerLayer._filterToMapBounds();
const mapFeature = mapData.features.filter(boundFilter);
expect(mapFeature.length).to.equal(mapData.features.length);
});
@ -85,8 +85,8 @@ describe('Marker Tests', function () {
it('should filter out data points that are outside of the map bounds', function () {
// set bounds to roughly US southwest
setBounds([31.690, -124.387], [42.324, -102.919]);
let boundFilter = markerLayer._filterToMapBounds();
let mapFeature = mapData.features.filter(boundFilter);
const boundFilter = markerLayer._filterToMapBounds();
const mapFeature = mapData.features.filter(boundFilter);
expect(mapFeature.length).to.be.lessThan(mapData.features.length);
});
@ -94,8 +94,8 @@ describe('Marker Tests', function () {
describe('legendQuantizer', function () {
it('should return a range of hex colors', function () {
let minColor = markerLayer._legendQuantizer(mapData.properties.allmin);
let maxColor = markerLayer._legendQuantizer(mapData.properties.allmax);
const minColor = markerLayer._legendQuantizer(mapData.properties.allmin);
const maxColor = markerLayer._legendQuantizer(mapData.properties.allmax);
expect(minColor.substring(0, 1)).to.equal('#');
expect(minColor).to.have.length(7);
@ -105,18 +105,18 @@ describe('Marker Tests', function () {
});
it('should return a color with 1 color', function () {
let geoJson = { properties: { min: 1, max: 1 } };
const geoJson = { properties: { min: 1, max: 1 } };
markerLayer = createMarker(MarkerClass, geoJson);
// ensure the quantizer domain is correct
let color = markerLayer._legendQuantizer(1);
const color = markerLayer._legendQuantizer(1);
expect(color).to.not.be(undefined);
expect(color.substring(0, 1)).to.equal('#');
// should always get the same color back
_.times(5, function () {
let num = _.random(0, 100);
let randColor = markerLayer._legendQuantizer(0);
const num = _.random(0, 100);
const randColor = markerLayer._legendQuantizer(0);
expect(randColor).to.equal(color);
});
});
@ -124,19 +124,19 @@ describe('Marker Tests', function () {
describe('applyShadingStyle', function () {
it('should return a style object', function () {
let style = markerLayer.applyShadingStyle(100);
const style = markerLayer.applyShadingStyle(100);
expect(style).to.be.an('object');
let keys = _.keys(style);
let expected = ['fillColor', 'color'];
const keys = _.keys(style);
const expected = ['fillColor', 'color'];
_.each(expected, function (key) {
expect(keys).to.contain(key);
});
});
it('should use the legendQuantizer', function () {
let spy = sinon.spy(markerLayer, '_legendQuantizer');
let style = markerLayer.applyShadingStyle(100);
const spy = sinon.spy(markerLayer, '_legendQuantizer');
const style = markerLayer.applyShadingStyle(100);
expect(spy.callCount).to.equal(1);
});
});
@ -144,9 +144,9 @@ describe('Marker Tests', function () {
describe('showTooltip', function () {
it('should use the tooltip formatter', function () {
let content;
let sample = _.sample(mapData.features);
const sample = _.sample(mapData.features);
let stub = sinon.stub(markerLayer, '_tooltipFormatter', function (val) {
const stub = sinon.stub(markerLayer, '_tooltipFormatter', function (val) {
return;
});
@ -186,12 +186,12 @@ describe('Marker Tests', function () {
});
it('should use the value formatter', function () {
let formatterSpy = sinon.spy(markerLayer, '_valueFormatter');
const formatterSpy = sinon.spy(markerLayer, '_valueFormatter');
// called twice for every legend color defined
let expectedCallCount = markerLayer._legendColors.length * 2;
const expectedCallCount = markerLayer._legendColors.length * 2;
markerLayer.addLegend();
let legend = markerLayer._legend.onAdd();
const legend = markerLayer._legend.onAdd();
expect(formatterSpy.callCount).to.equal(expectedCallCount);
expect(legend).to.be.a(HTMLDivElement);
@ -202,14 +202,14 @@ describe('Marker Tests', function () {
describe('Shaded Circles', function () {
beforeEach(ngMock.module('MarkerFactory'));
beforeEach(ngMock.inject(function (Private) {
let MarkerClass = Private(VislibVisualizationsMarkerTypesShadedCirclesProvider);
const MarkerClass = Private(VislibVisualizationsMarkerTypesShadedCirclesProvider);
markerLayer = createMarker(MarkerClass);
}));
describe('geohashMinDistance method', function () {
it('should return a finite number', function () {
let sample = _.sample(mapData.features);
let distance = markerLayer._geohashMinDistance(sample);
const sample = _.sample(mapData.features);
const distance = markerLayer._geohashMinDistance(sample);
expect(distance).to.be.a('number');
expect(_.isFinite(distance)).to.be(true);
@ -224,34 +224,34 @@ describe('Marker Tests', function () {
beforeEach(ngMock.inject(function (Private) {
zoom = _.random(1, 18);
sinon.stub(mockMap, 'getZoom', _.constant(zoom));
let MarkerClass = Private(VislibVisualizationsMarkerTypesScaledCirclesProvider);
const MarkerClass = Private(VislibVisualizationsMarkerTypesScaledCirclesProvider);
markerLayer = createMarker(MarkerClass);
}));
describe('radiusScale method', function () {
let valueArray = [10, 20, 30, 40, 50, 60];
let max = _.max(valueArray);
let prev = -1;
const valueArray = [10, 20, 30, 40, 50, 60];
const max = _.max(valueArray);
const prev = -1;
it('should return 0 for value of 0', function () {
expect(markerLayer._radiusScale(0)).to.equal(0);
});
it('should return a scaled value for negative and positive numbers', function () {
let upperBound = markerLayer._radiusScale(max);
let results = [];
const upperBound = markerLayer._radiusScale(max);
const results = [];
function roundValue(value) {
// round number to 6 decimal places
let r = Math.pow(10, 6);
const r = Math.pow(10, 6);
return Math.round(value * r) / r;
}
_.each(valueArray, function (value, i) {
let ratio = Math.pow(value / max, 0.5);
let comparison = ratio * upperBound;
let radius = markerLayer._radiusScale(value);
let negRadius = markerLayer._radiusScale(value * -1);
const ratio = Math.pow(value / max, 0.5);
const comparison = ratio * upperBound;
const radius = markerLayer._radiusScale(value);
const negRadius = markerLayer._radiusScale(value * -1);
results.push(radius);
expect(negRadius).to.equal(radius);
@ -269,7 +269,7 @@ describe('Marker Tests', function () {
describe('Heatmaps', function () {
beforeEach(ngMock.module('MarkerFactory'));
beforeEach(ngMock.inject(function (Private) {
let MarkerClass = Private(VislibVisualizationsMarkerTypesHeatmapProvider);
const MarkerClass = Private(VislibVisualizationsMarkerTypesHeatmapProvider);
markerLayer = createMarker(MarkerClass);
}));
@ -281,7 +281,7 @@ describe('Marker Tests', function () {
});
it('should return an array or values for each feature', function () {
let arr = markerLayer._dataToHeatArray(max);
const arr = markerLayer._dataToHeatArray(max);
expect(arr).to.be.an('array');
expect(arr).to.have.length(mapData.features.length);
@ -289,11 +289,11 @@ describe('Marker Tests', function () {
it('should return an array item with lat, lng, metric for each feature', function () {
_.times(3, function () {
let arr = markerLayer._dataToHeatArray(max);
let index = _.random(mapData.features.length - 1);
let feature = mapData.features[index];
let featureValue = feature.properties.value;
let featureArr = feature.geometry.coordinates.slice(0).concat(featureValue);
const arr = markerLayer._dataToHeatArray(max);
const index = _.random(mapData.features.length - 1);
const feature = mapData.features[index];
const featureValue = feature.properties.value;
const featureArr = feature.geometry.coordinates.slice(0).concat(featureValue);
expect(arr[index]).to.eql(featureArr);
});
});
@ -302,11 +302,11 @@ describe('Marker Tests', function () {
_.times(5, function () {
markerLayer._attr.heatNormalizeData = true;
let arr = markerLayer._dataToHeatArray(max);
let index = _.random(mapData.features.length - 1);
let feature = mapData.features[index];
let featureValue = feature.properties.value / max;
let featureArr = feature.geometry.coordinates.slice(0).concat(featureValue);
const arr = markerLayer._dataToHeatArray(max);
const index = _.random(mapData.features.length - 1);
const feature = mapData.features[index];
const featureValue = feature.properties.value / max;
const featureArr = feature.geometry.coordinates.slice(0).concat(featureValue);
expect(arr[index]).to.eql(featureArr);
});
});
@ -315,18 +315,18 @@ describe('Marker Tests', function () {
describe('tooltipProximity', function () {
it('should return true if feature is close enough to event latlng', function () {
_.times(5, function () {
let feature = _.sample(mapData.features);
let point = markerLayer._getLatLng(feature);
let arr = markerLayer._tooltipProximity(point, feature);
const feature = _.sample(mapData.features);
const point = markerLayer._getLatLng(feature);
const arr = markerLayer._tooltipProximity(point, feature);
expect(arr).to.be(true);
});
});
it('should return false if feature is not close enough to event latlng', function () {
_.times(5, function () {
let feature = _.sample(mapData.features);
let point = L.latLng(90, -180);
let arr = markerLayer._tooltipProximity(point, feature);
const feature = _.sample(mapData.features);
const point = L.latLng(90, -180);
const arr = markerLayer._tooltipProximity(point, feature);
expect(arr).to.be(false);
});
});
@ -335,9 +335,9 @@ describe('Marker Tests', function () {
describe('nearestFeature', function () {
it('should return nearest geoJson feature object', function () {
_.times(5, function () {
let feature = _.sample(mapData.features);
let point = markerLayer._getLatLng(feature);
let nearestPoint = markerLayer._nearestFeature(point);
const feature = _.sample(mapData.features);
const point = markerLayer._getLatLng(feature);
const nearestPoint = markerLayer._nearestFeature(point);
expect(nearestPoint).to.equal(feature);
});
});
@ -345,15 +345,15 @@ describe('Marker Tests', function () {
describe('getLatLng', function () {
it('should return a leaflet latLng object', function () {
let feature = _.sample(mapData.features);
let latLng = markerLayer._getLatLng(feature);
let compare = L.latLng(feature.geometry.coordinates.slice(0).reverse());
const feature = _.sample(mapData.features);
const latLng = markerLayer._getLatLng(feature);
const compare = L.latLng(feature.geometry.coordinates.slice(0).reverse());
expect(latLng).to.eql(compare);
});
it('should memoize the result', function () {
let spy = sinon.spy(L, 'latLng');
let feature = _.sample(mapData.features);
const spy = sinon.spy(L, 'latLng');
const feature = _.sample(mapData.features);
markerLayer._getLatLng(feature);
expect(spy.callCount).to.be(1);

View file

@ -8,7 +8,7 @@ import geoJsonData from 'fixtures/vislib/mock_data/geohash/_geo_json';
import MockMap from 'fixtures/tilemap_map';
import $ from 'jquery';
import VislibVisualizationsTileMapProvider from 'ui/vislib/visualizations/tile_map';
let mockChartEl = $('<div>');
const mockChartEl = $('<div>');
let TileMap;
let extentsStub;
@ -18,7 +18,7 @@ function createTileMap(handler, chartEl, chartData) {
chartEl = chartEl || mockChartEl;
chartData = chartData || geoJsonData;
let tilemap = new TileMap(handler, chartEl, chartData);
const tilemap = new TileMap(handler, chartEl, chartData);
return tilemap;
}
@ -52,7 +52,7 @@ describe('TileMap Tests', function () {
});
it('should call destroy for clean state', function () {
let destroySpy = sinon.spy(tilemap, 'destroy');
const destroySpy = sinon.spy(tilemap, 'destroy');
tilemap.draw();
expect(destroySpy.callCount).to.equal(1);
});
@ -73,14 +73,14 @@ describe('TileMap Tests', function () {
it('should append maps and required controls', function () {
expect(tilemap.maps).to.have.length(1);
let map = tilemap.maps[0];
const map = tilemap.maps[0];
expect(map.addTitle.callCount).to.equal(0);
expect(map.addFitControl.callCount).to.equal(1);
expect(map.addBoundingControl.callCount).to.equal(1);
});
it('should only add controls if data exists', function () {
let noData = {
const noData = {
geohashGridAgg: { vis: { params: {} } },
geoJson: {
features: [],
@ -93,17 +93,17 @@ describe('TileMap Tests', function () {
tilemap._appendMap($selection);
expect(tilemap.maps).to.have.length(1);
let map = tilemap.maps[0];
const map = tilemap.maps[0];
expect(map.addTitle.callCount).to.equal(0);
expect(map.addFitControl.callCount).to.equal(0);
expect(map.addBoundingControl.callCount).to.equal(0);
});
it('should append title if set in the data object', function () {
let mapTitle = 'Test Title';
const mapTitle = 'Test Title';
tilemap = createTileMap(null, null, _.assign({ title: mapTitle }, geoJsonData));
tilemap._appendMap($selection);
let map = tilemap.maps[0];
const map = tilemap.maps[0];
expect(map.addTitle.callCount).to.equal(1);
expect(map.addTitle.firstCall.calledWith(mapTitle)).to.equal(true);
@ -111,8 +111,8 @@ describe('TileMap Tests', function () {
});
describe('destroy', function () {
let maps = [];
let mapCount = 5;
const maps = [];
const mapCount = 5;
beforeEach(function () {
_.times(mapCount, function () {

View file

@ -10,13 +10,13 @@ import $ from 'jquery';
import VislibVisualizationsTimeMarkerProvider from 'ui/vislib/visualizations/time_marker';
describe('Vislib Time Marker Test Suite', function () {
let height = 50;
let color = '#ff0000';
let opacity = 0.5;
let width = 3;
let customClass = 'custom-time-marker';
let dateMathTimes = ['now-1m', 'now-5m', 'now-15m'];
let myTimes = dateMathTimes.map(function (dateMathString) {
const height = 50;
const color = '#ff0000';
const opacity = 0.5;
const width = 3;
const customClass = 'custom-time-marker';
const dateMathTimes = ['now-1m', 'now-5m', 'now-15m'];
const myTimes = dateMathTimes.map(function (dateMathString) {
return {
time: dateMathString,
class: customClass,
@ -25,14 +25,14 @@ describe('Vislib Time Marker Test Suite', function () {
width: width
};
});
let getExtent = function (dataArray, func) {
const getExtent = function (dataArray, func) {
return func(dataArray, function (obj) {
return func(obj.values, function (d) {
return d.x;
});
});
};
let times = [];
const times = [];
let TimeMarker;
let defaultMarker;
let customMarker;

View file

@ -1,7 +1,7 @@
import _ from 'lodash';
import VislibComponentsColorMappedColorsProvider from 'ui/vislib/components/color/mapped_colors';
export default function ColorUtilService(Private) {
let mappedColors = Private(VislibComponentsColorMappedColorsProvider);
const mappedColors = Private(VislibComponentsColorMappedColorsProvider);
/*
* Accepts an array of strings or numbers that are used to create a

View file

@ -3,7 +3,7 @@ import _ from 'lodash';
import VislibComponentsColorSeedColorsProvider from 'ui/vislib/components/color/seed_colors';
export default function ColorPaletteUtilService(Private) {
let seedColors = Private(VislibComponentsColorSeedColorsProvider);
const seedColors = Private(VislibComponentsColorSeedColorsProvider);
/*
@ -12,10 +12,10 @@ export default function ColorPaletteUtilService(Private) {
* new colors are generated up to the value of the input number.
*/
let offset = 300; // Hue offset to start at
const offset = 300; // Hue offset to start at
let fraction = function (goal) {
let walkTree = function (numerator, denominator, bytes) {
const fraction = function (goal) {
const walkTree = function (numerator, denominator, bytes) {
if (bytes.length) {
return walkTree(
(numerator * 2) + (bytes.pop() ? 1 : -1),
@ -28,7 +28,7 @@ export default function ColorPaletteUtilService(Private) {
}
};
let b = (goal + 2)
const b = (goal + 2)
.toString(2)
.split('')
.map(function (num) {
@ -45,9 +45,9 @@ export default function ColorPaletteUtilService(Private) {
throw new TypeError('ColorPaletteUtilService expects a number');
}
let colors = seedColors;
const colors = seedColors;
let seedLength = seedColors.length;
const seedLength = seedColors.length;
_.times(num - seedLength, function (i) {
colors.push(d3.hsl((fraction(i + seedLength + 1) * 360 + offset) % 360, 0.5, 0.5).toString());

View file

@ -70,4 +70,4 @@ define((require) => (Private, config, $rootScope) => {
}
return new MappedColors();
});
});

View file

@ -1,7 +1,7 @@
import _ from 'lodash';
import VislibComponentsLabelsFlattenSeriesProvider from 'ui/vislib/components/labels/flatten_series';
export default function GetArrayUtilService(Private) {
let flattenSeries = Private(VislibComponentsLabelsFlattenSeriesProvider);
const flattenSeries = Private(VislibComponentsLabelsFlattenSeriesProvider);
/*
* Accepts a Kibana data object and returns an array of values objects.

View file

@ -4,9 +4,9 @@ import VislibComponentsLabelsUniqLabelsProvider from 'ui/vislib/components/label
import VislibComponentsLabelsPiePieLabelsProvider from 'ui/vislib/components/labels/pie/pie_labels';
export default function LabelUtilService(Private) {
let createArr = Private(VislibComponentsLabelsDataArrayProvider);
let getArrOfUniqLabels = Private(VislibComponentsLabelsUniqLabelsProvider);
let getPieLabels = Private(VislibComponentsLabelsPiePieLabelsProvider);
const createArr = Private(VislibComponentsLabelsDataArrayProvider);
const getArrOfUniqLabels = Private(VislibComponentsLabelsUniqLabelsProvider);
const getPieLabels = Private(VislibComponentsLabelsPiePieLabelsProvider);
/*
* Accepts a Kibana data object and returns an array of unique labels (strings).

View file

@ -2,10 +2,10 @@ import _ from 'lodash';
import VislibComponentsLabelsPieReturnPieNamesProvider from 'ui/vislib/components/labels/pie/return_pie_names';
export default function GetPieNames(Private) {
let returnNames = Private(VislibComponentsLabelsPieReturnPieNamesProvider);
const returnNames = Private(VislibComponentsLabelsPieReturnPieNamesProvider);
return function (data, columns) {
let slices = data.slices;
const slices = data.slices;
if (slices.children) {
return _(returnNames(slices.children, 0, columns))

View file

@ -3,17 +3,17 @@ import VislibComponentsLabelsPieRemoveZeroSlicesProvider from 'ui/vislib/compone
import VislibComponentsLabelsPieGetPieNamesProvider from 'ui/vislib/components/labels/pie/get_pie_names';
export default function PieLabels(Private) {
let removeZeroSlices = Private(VislibComponentsLabelsPieRemoveZeroSlicesProvider);
let getNames = Private(VislibComponentsLabelsPieGetPieNamesProvider);
const removeZeroSlices = Private(VislibComponentsLabelsPieRemoveZeroSlicesProvider);
const getNames = Private(VislibComponentsLabelsPieGetPieNamesProvider);
return function (obj) {
if (!_.isObject(obj)) { throw new TypeError('PieLabel expects an object'); }
let data = obj.columns || obj.rows || [obj];
let names = [];
const data = obj.columns || obj.rows || [obj];
const names = [];
data.forEach(function (obj) {
let columns = obj.raw ? obj.raw.columns : undefined;
const columns = obj.raw ? obj.raw.columns : undefined;
obj.slices = removeZeroSlices(obj.slices);
getNames(obj, columns).forEach(function (name) {

View file

@ -1,7 +1,7 @@
define(function () {
return function ReturnPieNames() {
return function returnNames(array, index, columns) {
let names = [];
const names = [];
array.forEach(function (obj) {
names.push({ key: obj.name, index: index });

View file

@ -6,17 +6,17 @@ import posTT from '../position_tooltip';
describe('Tooltip Positioning', function () {
let positions = ['north', 'south', 'east', 'west'];
let bounds = ['top', 'left', 'bottom', 'right'];
const positions = ['north', 'south', 'east', 'west'];
const bounds = ['top', 'left', 'bottom', 'right'];
let $window;
let $chart;
let $tooltip;
let $sizer;
function testEl(width, height, $children) {
let $el = $('<div>');
const $el = $('<div>');
let size = {
const size = {
width: _.random(width[0], width[1]),
height: _.random(height[0], height[1])
};
@ -57,7 +57,7 @@ describe('Tooltip Positioning', function () {
xPercent = xPercent || 0.5;
yPercent = yPercent || 0.5;
let base = $chart.offset();
const base = $chart.offset();
return {
clientX: base.left + ($chart.testSize.width * xPercent),
@ -67,14 +67,14 @@ describe('Tooltip Positioning', function () {
describe('getTtSize()', function () {
it('should measure the outer-size of the tooltip using an un-obstructed clone', function () {
let w = sinon.spy($.fn, 'outerWidth');
let h = sinon.spy($.fn, 'outerHeight');
const w = sinon.spy($.fn, 'outerWidth');
const h = sinon.spy($.fn, 'outerHeight');
posTT.getTtSize($tooltip.html(), $sizer);
[w, h].forEach(function (spy) {
expect(spy).to.have.property('callCount', 1);
let matchHtml = w.thisValues.filter(function ($t) {
const matchHtml = w.thisValues.filter(function ($t) {
return !$t.is($tooltip) && $t.html() === $tooltip.html();
});
expect(matchHtml).to.have.length(1);
@ -84,8 +84,8 @@ describe('Tooltip Positioning', function () {
describe('getBasePosition()', function () {
it('calculates the offset values for the four positions', function () {
let size = posTT.getTtSize($tooltip.html(), $sizer);
let pos = posTT.getBasePosition(size, makeEvent());
const size = posTT.getTtSize($tooltip.html(), $sizer);
const pos = posTT.getBasePosition(size, makeEvent());
positions.forEach(function (p) {
expect(pos).to.have.property(p);
@ -98,7 +98,7 @@ describe('Tooltip Positioning', function () {
describe('getBounds()', function () {
it('returns the offsets for the tlrb of the element', function () {
let cbounds = posTT.getBounds($chart);
const cbounds = posTT.getBounds($chart);
bounds.forEach(function (b) {
expect(cbounds).to.have.property(b);
@ -114,14 +114,14 @@ describe('Tooltip Positioning', function () {
// size the tooltip very small so it won't collide with the edges
$tooltip.css({ width: 15, height: 15 });
$sizer.css({ width: 15, height: 15 });
let size = posTT.getTtSize($tooltip.html(), $sizer);
const size = posTT.getTtSize($tooltip.html(), $sizer);
expect(size).to.have.property('width', 15);
expect(size).to.have.property('height', 15);
// position the element based on a mouse that is in the middle of the chart
let pos = posTT.getBasePosition(size, makeEvent(0.5, 0.5));
const pos = posTT.getBasePosition(size, makeEvent(0.5, 0.5));
let overflow = posTT.getOverflow(size, pos, [$chart, $window]);
const overflow = posTT.getOverflow(size, pos, [$chart, $window]);
positions.forEach(function (p) {
expect(overflow).to.have.property(p);
@ -131,11 +131,11 @@ describe('Tooltip Positioning', function () {
});
it('identifies an overflow with a positive value in that direction', function () {
let size = posTT.getTtSize($tooltip.html(), $sizer);
const size = posTT.getTtSize($tooltip.html(), $sizer);
// position the element based on a mouse that is in the bottom right hand courner of the chart
let pos = posTT.getBasePosition(size, makeEvent(0.99, 0.99));
let overflow = posTT.getOverflow(size, pos, [$chart, $window]);
const pos = posTT.getBasePosition(size, makeEvent(0.99, 0.99));
const overflow = posTT.getOverflow(size, pos, [$chart, $window]);
positions.forEach(function (p) {
expect(overflow).to.have.property(p);
@ -157,9 +157,9 @@ describe('Tooltip Positioning', function () {
});
function check(xPercent, yPercent/*, prev, directions... */) {
let directions = _.drop(arguments, 2);
let event = makeEvent(xPercent, yPercent);
let placement = posTT({
const directions = _.drop(arguments, 2);
const event = makeEvent(xPercent, yPercent);
const placement = posTT({
$window: $window,
$chart: $chart,
$sizer: $sizer,
@ -214,12 +214,12 @@ describe('Tooltip Positioning', function () {
describe('maintain the direction of the tooltip on reposition', function () {
it('mouse moves from the top right to the middle', function () {
let pos = check(0.99, 0.10, 'bottom', 'left');
const pos = check(0.99, 0.10, 'bottom', 'left');
check(0.50, 0.50, pos, 'bottom', 'left');
});
it('mouse moves from the bottom left to the middle', function () {
let pos = check(0.10, 0.99, 'top', 'right');
const pos = check(0.10, 0.99, 'top', 'right');
check(0.50, 0.50, pos, 'top', 'right');
});
});

View file

@ -1,31 +1,31 @@
import _ from 'lodash';
import $ from 'jquery';
let OFFSET = 10;
const OFFSET = 10;
let $clone;
// translate css properties into their basic direction
let propDirs = {
const propDirs = {
top: 'north',
left: 'west'
};
function positionTooltip(opts, html) {
if (!opts) return;
let $chart = $(opts.$chart);
let $el = $(opts.$el);
let $window = $(opts.$window || window);
let $sizer = $(opts.$sizer);
let prev = $chart.data('previousPlacement') || {};
let event = opts.event;
const $chart = $(opts.$chart);
const $el = $(opts.$el);
const $window = $(opts.$window || window);
const $sizer = $(opts.$sizer);
const prev = $chart.data('previousPlacement') || {};
const event = opts.event;
if (!$chart.size() || !$el.size()) return;
let size = getTtSize(html || $el.html(), $sizer);
let pos = getBasePosition(size, event);
let overflow = getOverflow(size, pos, [$chart, $window]);
const size = getTtSize(html || $el.html(), $sizer);
const pos = getBasePosition(size, event);
const overflow = getOverflow(size, pos, [$chart, $window]);
let placement = placeToAvoidOverflow(pos, prev, overflow);
const placement = placeToAvoidOverflow(pos, prev, overflow);
$chart.data('previousPlacement', placement);
return placement;
}
@ -35,7 +35,7 @@ function getTtSize(ttHtml, $sizer) {
$sizer.html(ttHtml);
}
let size = {
const size = {
width: $sizer.outerWidth(),
height: $sizer.outerHeight()
};
@ -55,7 +55,7 @@ function getBasePosition(size, event) {
function getBounds($el) {
// in testing, $window is not actually a window, so we need to add
// the offsets to make it work right.
let bounds = $el.offset() || { top: 0, left: 0 };
const bounds = $el.offset() || { top: 0, left: 0 };
bounds.top += $el.scrollTop();
bounds.left += $el.scrollLeft();
bounds.bottom = bounds.top + $el.outerHeight();
@ -64,7 +64,7 @@ function getBounds($el) {
}
function getOverflow(size, pos, containers) {
let overflow = {};
const overflow = {};
containers.map(getBounds).forEach(function (bounds) {
// number of pixels that the toolip would overflow it's far
@ -90,10 +90,10 @@ function mergeOverflows(dest, src) {
}
function pickPlacement(prop, pos, overflow, prev, pref, fallback, placement) {
let stash = '_' + prop;
const stash = '_' + prop;
// list of directions in order of preference
let dirs = _.unique([prev[stash], pref, fallback].filter(Boolean));
const dirs = _.unique([prev[stash], pref, fallback].filter(Boolean));
let dir;
let value;
@ -126,7 +126,7 @@ function pickPlacement(prop, pos, overflow, prev, pref, fallback, placement) {
}
function placeToAvoidOverflow(pos, prev, overflow) {
let placement = {};
const placement = {};
pickPlacement('top', pos, overflow, prev, 'south', 'north', placement);
pickPlacement('left', pos, overflow, prev, 'east', 'west', placement);
return placement;

View file

@ -59,13 +59,13 @@ Tooltip.prototype.$getSizer = _.once(function () {
* Show the tooltip, positioning it based on the content and chart container
*/
Tooltip.prototype.show = function () {
let $tooltip = this.$get();
let $chart = this.$getChart();
let html = $tooltip.html();
const $tooltip = this.$get();
const $chart = this.$getChart();
const html = $tooltip.html();
if (!$chart) return;
let placement = positionTooltip({
const placement = positionTooltip({
$window: $(window),
$chart: $chart,
$el: $tooltip,
@ -84,7 +84,7 @@ Tooltip.prototype.show = function () {
* Hide the tooltip, clearing its contents
*/
Tooltip.prototype.hide = function () {
let $tooltip = this.$get();
const $tooltip = this.$get();
allContents = [];
$tooltip.css({
visibility: 'hidden',
@ -100,7 +100,7 @@ Tooltip.prototype.hide = function () {
* @return {Object} jQuery node for the chart
*/
Tooltip.prototype.$getChart = function () {
let chart = $(this.container && this.container.node());
const chart = $(this.container && this.container.node());
return chart.size() ? chart : false;
};
@ -111,7 +111,7 @@ Tooltip.prototype.$getChart = function () {
* @return {Function} Renders tooltip on a D3 selection
*/
Tooltip.prototype.render = function () {
let self = this;
const self = this;
/**
* Calculates values for the tooltip placement
@ -119,17 +119,17 @@ Tooltip.prototype.render = function () {
* @param {Object} selection D3 selection object
*/
return function (selection) {
let $tooltip = self.$get();
let id = self.id;
let order = self.order;
const $tooltip = self.$get();
const id = self.id;
const order = self.order;
let tooltipSelection = d3.select($tooltip.get(0));
const tooltipSelection = d3.select($tooltip.get(0));
if (self.container === undefined || self.container !== d3.select(self.el).select('.' + self.containerClass)) {
self.container = d3.select(self.el).select('.' + self.containerClass);
}
let $chart = self.$getChart();
const $chart = self.$getChart();
if ($chart) {
self.binder.jqOn($chart, 'mouseleave', function (event) {
// only clear when we leave the chart, so that
@ -139,7 +139,7 @@ Tooltip.prototype.render = function () {
}
selection.each(function (d, i) {
let element = d3.select(this);
const element = d3.select(this);
function render(html) {
allContents = _.filter(allContents, function (content) {
@ -148,7 +148,7 @@ Tooltip.prototype.render = function () {
if (html) allContents.push({ id: id, html: html, order: order });
let allHtml = _(allContents)
const allHtml = _(allContents)
.sortBy('order')
.pluck('html')
.compact()
@ -167,7 +167,7 @@ Tooltip.prototype.render = function () {
return render();
}
let events = self.events ? self.events.eventResponse(d, i) : d;
const events = self.events ? self.events.eventResponse(d, i) : d;
return render(self.formatter(events));
});

View file

@ -4,9 +4,9 @@ import VislibComponentsZeroInjectionZeroFilledArrayProvider from 'ui/vislib/comp
import VislibComponentsZeroInjectionZeroFillDataArrayProvider from 'ui/vislib/components/zero_injection/zero_fill_data_array';
export default function ZeroInjectionUtilService(Private) {
let orderXValues = Private(VislibComponentsZeroInjectionOrderedXKeysProvider);
let createZeroFilledArray = Private(VislibComponentsZeroInjectionZeroFilledArrayProvider);
let zeroFillDataArray = Private(VislibComponentsZeroInjectionZeroFillDataArrayProvider);
const orderXValues = Private(VislibComponentsZeroInjectionOrderedXKeysProvider);
const createZeroFilledArray = Private(VislibComponentsZeroInjectionZeroFilledArrayProvider);
const zeroFillDataArray = Private(VislibComponentsZeroInjectionZeroFillDataArrayProvider);
/*
* A Kibana data object may have multiple series with different array lengths.
@ -34,12 +34,12 @@ export default function ZeroInjectionUtilService(Private) {
throw new TypeError('ZeroInjectionUtilService expects an object with a series, rows, or columns key');
}
let keys = orderXValues(obj);
let arr = getDataArray(obj);
const keys = orderXValues(obj);
const arr = getDataArray(obj);
arr.forEach(function (object) {
object.series.forEach(function (series) {
let zeroArray = createZeroFilledArray(keys);
const zeroArray = createZeroFilledArray(keys);
series.values = zeroFillDataArray(zeroArray, series.values);
});

View file

@ -2,7 +2,7 @@ import _ from 'lodash';
import moment from 'moment';
import VislibComponentsZeroInjectionUniqKeysProvider from 'ui/vislib/components/zero_injection/uniq_keys';
export default function OrderedXKeysUtilService(Private) {
let getUniqKeys = Private(VislibComponentsZeroInjectionUniqKeysProvider);
const getUniqKeys = Private(VislibComponentsZeroInjectionUniqKeysProvider);
/*
* Accepts a Kibana data object and returns
@ -16,11 +16,11 @@ export default function OrderedXKeysUtilService(Private) {
throw new Error('OrderedXKeysUtilService expects an object');
}
let uniqKeys = getUniqKeys(obj);
let uniqKeysPairs = [...uniqKeys.entries()];
const uniqKeys = getUniqKeys(obj);
const uniqKeysPairs = [...uniqKeys.entries()];
let interval = _.get(obj, 'ordered.interval');
let dateInterval = moment.isDuration(interval) ? interval : false;
const interval = _.get(obj, 'ordered.interval');
const dateInterval = moment.isDuration(interval) ? interval : false;
return _(uniqKeysPairs)
.sortBy(function (d) {
@ -32,13 +32,13 @@ export default function OrderedXKeysUtilService(Private) {
.map(function (d, i, list) {
if (!d[1].isNumber) return d[0];
let val = +d[0];
const val = +d[0];
if (interval == null) return val;
let gapEdge = parseFloat(_.get(list, [i + 1, 0]));
const gapEdge = parseFloat(_.get(list, [i + 1, 0]));
if (isNaN(gapEdge)) return val;
let vals = [];
const vals = [];
let next = val;
if (dateInterval) {

View file

@ -2,7 +2,7 @@ import _ from 'lodash';
import VislibComponentsZeroInjectionFlattenDataProvider from 'ui/vislib/components/zero_injection/flatten_data';
export default function UniqueXValuesUtilService(Private) {
let flattenDataArray = Private(VislibComponentsZeroInjectionFlattenDataProvider);
const flattenDataArray = Private(VislibComponentsZeroInjectionFlattenDataProvider);
/*
* Accepts a Kibana data object.
@ -16,8 +16,8 @@ export default function UniqueXValuesUtilService(Private) {
throw new TypeError('UniqueXValuesUtilService expects an object');
}
let flattenedData = flattenDataArray(obj);
let uniqueXValues = new Map();
const flattenedData = flattenDataArray(obj);
const uniqueXValues = new Map();
let charts;
if (!obj.series) {
@ -26,17 +26,17 @@ export default function UniqueXValuesUtilService(Private) {
charts = [obj];
}
let isDate = charts.every(function (chart) {
const isDate = charts.every(function (chart) {
return chart.ordered && chart.ordered.date;
});
let isOrdered = charts.every(function (chart) {
const isOrdered = charts.every(function (chart) {
return chart.ordered;
});
flattenedData.forEach(function (d, i) {
let key = d.x;
let prev = uniqueXValues.get(key);
const key = d.x;
const prev = uniqueXValues.get(key);
if (d.xi != null) {
i = d.xi;

View file

@ -15,9 +15,9 @@ export default function ZeroFillDataArrayUtilService(Private) {
let i;
let val;
let index;
let max = arr2.length;
const max = arr2.length;
let getX = function (d) {
const getX = function (d) {
return d.x === val.x;
};

View file

@ -12,7 +12,7 @@ define(function () {
throw new Error('ZeroFilledArrayUtilService expects an array of strings or numbers');
}
let zeroFilledArray = [];
const zeroFilledArray = [];
arr.forEach(function (val) {
zeroFilledArray.push({

View file

@ -24,8 +24,8 @@ export default function ErrorHandlerFactory() {
* @returns {HTMLElement} HTML div with an error message
*/
validateWidthandHeight(width, height) {
let badWidth = _.isNaN(width) || width <= 0;
let badHeight = _.isNaN(height) || height <= 0;
const badWidth = _.isNaN(width) || width <= 0;
const badHeight = _.isNaN(height) || height <= 0;
if (badWidth || badHeight) {
throw new errors.ContainerTooSmall();

View file

@ -18,7 +18,7 @@ export default function AlertsFactory(Private) {
this.alertDefs = alertDefs || [];
this.binder.jqOn(vis.el, 'mouseenter', '.vis-alerts-tray', function () {
let $tray = $(this);
const $tray = $(this);
hide();
$(vis.el).on('mousemove', checkForExit);
@ -38,13 +38,13 @@ export default function AlertsFactory(Private) {
}
function checkForExit(event) {
let pos = $tray.offset();
const pos = $tray.offset();
if (pos.top > event.clientY || pos.left > event.clientX) return show();
let bottom = pos.top + $tray.height();
const bottom = pos.top + $tray.height();
if (event.clientY > bottom) return show();
let right = pos.left + $tray.width();
const right = pos.left + $tray.width();
if (event.clientX > right) return show();
}
});
@ -57,21 +57,21 @@ export default function AlertsFactory(Private) {
* @returns {D3.Selection|D3.Transition.Transition} DOM element with chart titles
*/
render() {
let vis = this.vis;
let data = this.data;
const vis = this.vis;
const data = this.data;
let alerts = _(this.alertDefs)
const alerts = _(this.alertDefs)
.map(function (alertDef) {
if (!alertDef) return;
if (alertDef.test && !alertDef.test(vis, data)) return;
let type = alertDef.type || 'info';
let icon = alertDef.icon || type;
let msg = alertDef.msg;
const type = alertDef.type || 'info';
const icon = alertDef.icon || type;
const msg = alertDef.msg;
// alert container
let $icon = $('<i>').addClass('vis-alerts-icon fa fa-' + icon);
let $text = $('<p>').addClass('vis-alerts-text').text(msg);
const $icon = $('<i>').addClass('vis-alerts-icon fa fa-' + icon);
const $text = $('<p>').addClass('vis-alerts-text').text(msg);
return $('<div>').addClass('vis-alert vis-alert-' + type).append([$icon, $text]);
})

View file

@ -4,7 +4,7 @@ import _ from 'lodash';
import VislibLibErrorHandlerProvider from 'ui/vislib/lib/_error_handler';
export default function AxisTitleFactory(Private) {
let ErrorHandler = Private(VislibLibErrorHandlerProvider);
const ErrorHandler = Private(VislibLibErrorHandlerProvider);
/**
* Appends axis title(s) to the visualization
@ -42,14 +42,14 @@ export default function AxisTitleFactory(Private) {
* @returns {Function} Appends axis title to a D3 selection
*/
draw(title) {
let self = this;
const self = this;
return function (selection) {
selection.each(function () {
let el = this;
let div = d3.select(el);
let width = $(el).width();
let height = $(el).height();
const el = this;
const div = d3.select(el);
const width = $(el).width();
const height = $(el).height();
self.validateWidthandHeight(width, height);

View file

@ -5,8 +5,8 @@ import VislibLibErrorHandlerProvider from 'ui/vislib/lib/_error_handler';
import VislibComponentsTooltipProvider from 'ui/vislib/components/tooltip';
export default function ChartTitleFactory(Private) {
let ErrorHandler = Private(VislibLibErrorHandlerProvider);
let Tooltip = Private(VislibComponentsTooltipProvider);
const ErrorHandler = Private(VislibLibErrorHandlerProvider);
const Tooltip = Private(VislibComponentsTooltipProvider);
/**
* Appends chart titles to the visualization
@ -31,9 +31,9 @@ export default function ChartTitleFactory(Private) {
* @returns {D3.Selection|D3.Transition.Transition} DOM element with chart titles
*/
render() {
let el = d3.select(this.el).select('.chart-title').node();
let width = el ? el.clientWidth : 0;
let height = el ? el.clientHeight : 0;
const el = d3.select(this.el).select('.chart-title').node();
const width = el ? el.clientWidth : 0;
const height = el ? el.clientHeight : 0;
return d3.select(this.el).selectAll('.chart-title').call(this.draw(width, height));
};
@ -46,14 +46,14 @@ export default function ChartTitleFactory(Private) {
* @returns {Function} Truncates text
*/
truncate(size) {
let self = this;
const self = this;
return function (selection) {
selection.each(function () {
let text = d3.select(this);
let n = text[0].length;
let maxWidth = size / n * 0.9;
let length = this.getComputedTextLength();
const text = d3.select(this);
const n = text[0].length;
const maxWidth = size / n * 0.9;
const length = this.getComputedTextLength();
let str;
let avg;
let end;
@ -93,14 +93,14 @@ export default function ChartTitleFactory(Private) {
* @returns {Function} Appends chart titles to a D3 selection
*/
draw(width, height) {
let self = this;
const self = this;
return function (selection) {
selection.each(function () {
let div = d3.select(this);
let dataType = this.parentNode.__data__.rows ? 'rows' : 'columns';
let size = dataType === 'rows' ? height : width;
let txtHtOffset = 11;
const div = d3.select(this);
const dataType = this.parentNode.__data__.rows ? 'rows' : 'columns';
const size = dataType === 'rows' ? height : width;
const txtHtOffset = 11;
self.validateWidthandHeight(width, height);

View file

@ -7,10 +7,10 @@ import VislibComponentsLabelsLabelsProvider from 'ui/vislib/components/labels/la
import VislibComponentsColorColorProvider from 'ui/vislib/components/color/color';
export default function DataFactory(Private) {
let injectZeros = Private(VislibComponentsZeroInjectionInjectZerosProvider);
let orderKeys = Private(VislibComponentsZeroInjectionOrderedXKeysProvider);
let getLabels = Private(VislibComponentsLabelsLabelsProvider);
let color = Private(VislibComponentsColorColorProvider);
const injectZeros = Private(VislibComponentsZeroInjectionInjectZerosProvider);
const orderKeys = Private(VislibComponentsZeroInjectionOrderedXKeysProvider);
const getLabels = Private(VislibComponentsLabelsLabelsProvider);
const color = Private(VislibComponentsColorColorProvider);
/**
* Provides an API for pulling values off the data
@ -25,7 +25,7 @@ export default function DataFactory(Private) {
constructor(data, attr, uiState) {
this.uiState = uiState;
let self = this;
const self = this;
let offset;
if (attr.mode === 'stacked') {
@ -84,7 +84,7 @@ export default function DataFactory(Private) {
_getLabels(data) {
if (this.type === 'series') {
let noLabel = getLabels(data).length === 1 && getLabels(data)[0] === '';
const noLabel = getLabels(data).length === 1 && getLabels(data)[0] === '';
if (noLabel) {
this._updateData();
return [(this.get('yAxisLabel'))];
@ -119,7 +119,7 @@ export default function DataFactory(Private) {
* Returns the results of the addition of numbers in a filtered array.
*/
_sumYs(arr, callback) {
let filteredArray = arr.filter(callback);
const filteredArray = arr.filter(callback);
return (filteredArray.length) ? filteredArray.reduce(this._addVals) : 0;
};
@ -136,8 +136,8 @@ export default function DataFactory(Private) {
*
*/
_getCounts(i, j) {
let data = this.chartData();
let dataLengths = {};
const data = this.chartData();
const dataLengths = {};
dataLengths.charts = data.length;
dataLengths.stacks = dataLengths.charts ? data[i].series.length : 0;
@ -150,7 +150,7 @@ export default function DataFactory(Private) {
*
*/
_createCache() {
let cache = {
const cache = {
index: {
chart: 0,
stack: 0,
@ -171,7 +171,7 @@ export default function DataFactory(Private) {
* mixed datasets containing both positive and negative values.
*/
_stackNegAndPosVals(d, y0, y) {
let data = this.chartData();
const data = this.chartData();
// Storing counters and data characteristics needed to stack values properly
if (!this._cache) {
@ -183,7 +183,7 @@ export default function DataFactory(Private) {
// last stack, or last value, reset the stack count and y value array
let lastStack = (this._cache.index.stack >= this._cache.count.stacks);
const lastStack = (this._cache.index.stack >= this._cache.count.stacks);
if (lastStack) {
this._cache.index.stack = 0;
++this._cache.index.value;
@ -194,7 +194,7 @@ export default function DataFactory(Private) {
}
// last value, prepare for the next chart, if one exists
let lastValue = (this._cache.index.value >= this._cache.count.values);
const lastValue = (this._cache.index.value >= this._cache.count.values);
if (lastValue) {
this._cache.index.value = 0;
++this._cache.index.chart;
@ -206,14 +206,14 @@ export default function DataFactory(Private) {
}
// get stack and value count for next chart
let chartSeries = data[this._cache.index.chart].series;
const chartSeries = data[this._cache.index.chart].series;
this._cache.count.stacks = chartSeries.length;
this._cache.count.values = chartSeries.length ? chartSeries[this._cache.index.stack].values.length : 0;
}
};
getDataType() {
let data = this.getVisData();
const data = this.getVisData();
let type;
data.forEach(function (obj) {
@ -238,7 +238,7 @@ export default function DataFactory(Private) {
*/
chartData() {
if (!this.data.series) {
let arr = this.data.rows ? this.data.rows : this.data.columns;
const arr = this.data.rows ? this.data.rows : this.data.columns;
return _.toArray(arr);
}
return [this.data];
@ -271,7 +271,7 @@ export default function DataFactory(Private) {
* @return {Object}
*/
getGeoExtents() {
let visData = this.getVisData();
const visData = this.getVisData();
return _.reduce(_.pluck(visData, 'geoJson.properties'), function (minMax, props) {
return {
@ -305,7 +305,7 @@ export default function DataFactory(Private) {
* @returns {*} Data object value
*/
get(thing, def) {
let source = (this.data.rows || this.data.columns || [this.data])[0];
const source = (this.data.rows || this.data.columns || [this.data])[0];
return _.get(source, thing, def);
};
@ -314,7 +314,7 @@ export default function DataFactory(Private) {
* @returns {*}
*/
hasNullValues() {
let chartData = this.chartData();
const chartData = this.chartData();
return chartData.some(function (chart) {
return chart.series.some(function (obj) {
@ -350,13 +350,13 @@ export default function DataFactory(Private) {
* @returns {boolean}
*/
shouldBeStacked() {
let isHistogram = (this._attr.type === 'histogram');
let isArea = (this._attr.type === 'area');
let isOverlapping = (this._attr.mode === 'overlap');
let grouped = (this._attr.mode === 'grouped');
const isHistogram = (this._attr.type === 'histogram');
const isArea = (this._attr.type === 'area');
const isOverlapping = (this._attr.mode === 'overlap');
const grouped = (this._attr.mode === 'grouped');
let stackedHisto = isHistogram && !grouped;
let stackedArea = isArea && !isOverlapping;
const stackedHisto = isHistogram && !grouped;
const stackedArea = isArea && !isOverlapping;
return stackedHisto || stackedArea;
};
@ -386,15 +386,15 @@ export default function DataFactory(Private) {
* @returns {Number} Min y axis value
*/
getYMin(getValue) {
let self = this;
let arr = [];
const self = this;
const arr = [];
if (this._attr.mode === 'percentage' || this._attr.mode === 'wiggle' ||
this._attr.mode === 'silhouette') {
return 0;
}
let flat = this.flatten();
const flat = this.flatten();
// if there is only one data point and its less than zero,
// return 0 as the yMax value.
if (!flat.length || flat.length === 1 && flat[0].y > 0) {
@ -406,7 +406,7 @@ export default function DataFactory(Private) {
// for each object in the dataArray,
// push the calculated y value to the initialized array (arr)
_.each(this.chartData(), function (chart) {
let calculatedMin = self._getYExtent(chart, 'min', getValue);
const calculatedMin = self._getYExtent(chart, 'min', getValue);
if (!_.isUndefined(calculatedMin)) {
min = Math.min(min, calculatedMin);
}
@ -426,14 +426,14 @@ export default function DataFactory(Private) {
* @returns {Number} Max y axis value
*/
getYMax(getValue) {
let self = this;
let arr = [];
const self = this;
const arr = [];
if (self._attr.mode === 'percentage') {
return 1;
}
let flat = this.flatten();
const flat = this.flatten();
// if there is only one data point and its less than zero,
// return 0 as the yMax value.
if (!flat.length || flat.length === 1 && flat[0].y < 0) {
@ -445,7 +445,7 @@ export default function DataFactory(Private) {
// for each object in the dataArray,
// push the calculated y value to the initialized array (arr)
_.each(this.chartData(), function (chart) {
let calculatedMax = self._getYExtent(chart, 'max', getValue);
const calculatedMax = self._getYExtent(chart, 'max', getValue);
if (!_.isUndefined(calculatedMax)) {
max = Math.max(max, calculatedMax);
}
@ -483,7 +483,7 @@ export default function DataFactory(Private) {
getValue = getValue || this._getY;
}
let points = chart.series
const points = chart.series
.reduce(function (points, series) {
return points.concat(series.values);
}, [])
@ -518,8 +518,8 @@ export default function DataFactory(Private) {
* @returns {Array} Array of labels (strings)
*/
returnNames(array, index, columns) {
let names = [];
let self = this;
const names = [];
const self = this;
_.forEach(array, function (obj, i) {
names.push({
@ -529,7 +529,7 @@ export default function DataFactory(Private) {
});
if (obj.children) {
let plusIndex = index + 1;
const plusIndex = index + 1;
_.forEach(self.returnNames(obj.children, plusIndex, columns), function (namedObj) {
names.push(namedObj);
@ -551,10 +551,10 @@ export default function DataFactory(Private) {
* @returns {Array} Array of names (strings)
*/
getNames(data, columns) {
let slices = data.slices;
const slices = data.slices;
if (slices.children) {
let namedObj = this.returnNames(slices.children, 0, columns);
const namedObj = this.returnNames(slices.children, 0, columns);
return _(namedObj)
.sortBy(function (obj) {
@ -573,7 +573,7 @@ export default function DataFactory(Private) {
* @returns {*}
*/
_removeZeroSlices(slices) {
let self = this;
const self = this;
if (!slices.children) return slices;
@ -596,11 +596,11 @@ export default function DataFactory(Private) {
* @returns {Array} Array of unique names (strings)
*/
pieNames(data) {
let self = this;
let names = [];
const self = this;
const names = [];
_.forEach(data, function (obj) {
let columns = obj.raw ? obj.raw.columns : undefined;
const columns = obj.raw ? obj.raw.columns : undefined;
obj.slices = self._removeZeroSlices(obj.slices);
_.forEach(self.getNames(obj, columns), function (name) {
@ -672,17 +672,17 @@ export default function DataFactory(Private) {
* @return {undefined}
*/
_normalizeOrdered() {
let data = this.getVisData();
let self = this;
const data = this.getVisData();
const self = this;
data.forEach(function (d) {
if (!d.ordered || !d.ordered.date) return;
let missingMin = d.ordered.min == null;
let missingMax = d.ordered.max == null;
const missingMin = d.ordered.min == null;
const missingMax = d.ordered.max == null;
if (missingMax || missingMin) {
let extent = d3.extent(self.xValues());
const extent = d3.extent(self.xValues());
if (missingMin) d.ordered.min = extent[0];
if (missingMax) d.ordered.max = extent[1];
}
@ -704,7 +704,7 @@ export default function DataFactory(Private) {
values = _.map(series.rows, function (row) {
return row[row.length - 1];
});
let extents = [_.min(values), _.max(values)];
const extents = [_.min(values), _.max(values)];
return extents;
};

View file

@ -4,7 +4,7 @@ import $ from 'jquery';
import SimpleEmitter from 'ui/utils/simple_emitter';
import VislibComponentsTooltipProvider from 'ui/vislib/components/tooltip';
export default function DispatchClass(Private) {
let Tooltip = Private(VislibComponentsTooltipProvider);
const Tooltip = Private(VislibComponentsTooltipProvider);
/**
* Handles event responses
@ -31,19 +31,19 @@ export default function DispatchClass(Private) {
* e: (d3.event|*), handler: (Object|*)}} Event response object
*/
eventResponse(d, i) {
let datum = d._input || d;
let data = d3.event.target.nearestViewportElement ?
const datum = d._input || d;
const data = d3.event.target.nearestViewportElement ?
d3.event.target.nearestViewportElement.__data__ : d3.event.target.__data__;
let label = d.label ? d.label : d.name;
let isSeries = !!(data && data.series);
let isSlices = !!(data && data.slices);
let series = isSeries ? data.series : undefined;
let slices = isSlices ? data.slices : undefined;
let handler = this.handler;
let color = _.get(handler, 'data.color');
let isPercentage = (handler && handler._attr.mode === 'percentage');
const label = d.label ? d.label : d.name;
const isSeries = !!(data && data.series);
const isSlices = !!(data && data.slices);
const series = isSeries ? data.series : undefined;
const slices = isSlices ? data.slices : undefined;
const handler = this.handler;
const color = _.get(handler, 'data.color');
const isPercentage = (handler && handler._attr.mode === 'percentage');
let eventData = {
const eventData = {
value: d.y,
point: datum,
datum: datum,
@ -60,7 +60,7 @@ export default function DispatchClass(Private) {
if (isSeries) {
// Find object with the actual d value and add it to the point object
let object = _.find(series, {'label': d.label});
const object = _.find(series, {'label': d.label});
eventData.value = +object.values[i].y;
if (isPercentage) {
@ -83,7 +83,7 @@ export default function DispatchClass(Private) {
addEvent(event, callback) {
return function (selection) {
selection.each(function () {
let element = d3.select(this);
const element = d3.select(this);
if (typeof callback === 'function') {
return element.on(event, callback);
@ -98,10 +98,10 @@ export default function DispatchClass(Private) {
* @returns {Function}
*/
addHoverEvent() {
let self = this;
let isClickable = this.listenerCount('click') > 0;
let addEvent = this.addEvent;
let $el = this.handler.el;
const self = this;
const isClickable = this.listenerCount('click') > 0;
const addEvent = this.addEvent;
const $el = this.handler.el;
if (!this.handler.highlight) {
this.handler.highlight = self.highlight;
}
@ -125,9 +125,9 @@ export default function DispatchClass(Private) {
* @returns {Function}
*/
addMouseoutEvent() {
let self = this;
let addEvent = this.addEvent;
let $el = this.handler.el;
const self = this;
const addEvent = this.addEvent;
const $el = this.handler.el;
if (!this.handler.unHighlight) {
this.handler.unHighlight = self.unHighlight;
}
@ -145,8 +145,8 @@ export default function DispatchClass(Private) {
* @returns {Function}
*/
addClickEvent() {
let self = this;
let addEvent = this.addEvent;
const self = this;
const addEvent = this.addEvent;
function click(d, i) {
self.emit('click', self.eventResponse(d, i));
@ -162,9 +162,9 @@ export default function DispatchClass(Private) {
* @returns {Boolean}
*/
allowBrushing() {
let xAxis = this.handler.xAxis;
const xAxis = this.handler.xAxis;
// Don't allow brushing for time based charts from non-time-based indices
let hasTimeField = this.handler.vis._attr.hasTimeField;
const hasTimeField = this.handler.vis._attr.hasTimeField;
return Boolean(hasTimeField && xAxis.ordered && xAxis.xScale && _.isFunction(xAxis.xScale.invert));
};
@ -187,16 +187,16 @@ export default function DispatchClass(Private) {
addBrushEvent(svg) {
if (!this.isBrushable()) return;
let xScale = this.handler.xAxis.xScale;
let yScale = this.handler.xAxis.yScale;
let brush = this.createBrush(xScale, svg);
const xScale = this.handler.xAxis.xScale;
const yScale = this.handler.xAxis.yScale;
const brush = this.createBrush(xScale, svg);
function brushEnd() {
if (!validBrushClick(d3.event)) return;
let bar = d3.select(this);
let startX = d3.mouse(svg.node());
let startXInv = xScale.invert(startX[0]);
const bar = d3.select(this);
const startX = d3.mouse(svg.node());
const startXInv = xScale.invert(startX[0]);
// Reset the brush value
brush.extent([startXInv, startXInv]);
@ -230,7 +230,7 @@ export default function DispatchClass(Private) {
* @method highlight
*/
highlight(element) {
let label = this.getAttribute('data-label');
const label = this.getAttribute('data-label');
if (!label) return;
//Opacity 1 is needed to avoid the css application
$('[data-label]', element.parentNode).css('opacity', 1).not(
@ -258,26 +258,26 @@ export default function DispatchClass(Private) {
* @returns {*} Returns a D3 brush function and a SVG with a brush group attached
*/
createBrush(xScale, svg) {
let self = this;
let attr = self.handler._attr;
let height = attr.height;
let margin = attr.margin;
const self = this;
const attr = self.handler._attr;
const height = attr.height;
const margin = attr.margin;
// Brush scale
let brush = d3.svg.brush()
const brush = d3.svg.brush()
.x(xScale)
.on('brushend', function brushEnd() {
// Assumes data is selected at the chart level
// In this case, the number of data objects should always be 1
let data = d3.select(this).data()[0];
let isTimeSeries = (data.ordered && data.ordered.date);
const data = d3.select(this).data()[0];
const isTimeSeries = (data.ordered && data.ordered.date);
// Allows for brushing on d3.scale.ordinal()
let selected = xScale.domain().filter(function (d) {
const selected = xScale.domain().filter(function (d) {
return (brush.extent()[0] <= xScale(d)) && (xScale(d) <= brush.extent()[1]);
});
let range = isTimeSeries ? brush.extent() : selected;
const range = isTimeSeries ? brush.extent() : selected;
return self.emit('brush', {
range: range,
@ -294,7 +294,7 @@ export default function DispatchClass(Private) {
.call(brush)
.call(function (brushG) {
// hijack the brush start event to filter out right/middle clicks
let brushHandler = brushG.on('mousedown.brush');
const brushHandler = brushG.on('mousedown.brush');
if (!brushHandler) return; // touch events in use
brushG.on('mousedown.brush', function () {
if (validBrushClick(d3.event)) brushHandler.apply(this, arguments);

View file

@ -6,8 +6,8 @@ import VislibLibDataProvider from 'ui/vislib/lib/data';
import VislibLibLayoutLayoutProvider from 'ui/vislib/lib/layout/layout';
export default function HandlerBaseClass(Private) {
let Data = Private(VislibLibDataProvider);
let Layout = Private(VislibLibLayoutLayoutProvider);
const Data = Private(VislibLibDataProvider);
const Layout = Private(VislibLibLayoutLayoutProvider);
/**
* Handles building all the components of the visualization
@ -51,7 +51,7 @@ export default function HandlerBaseClass(Private) {
// memoize so that the same function is returned every time,
// allowing us to remove/re-add the same function
this.getProxyHandler = _.memoize(function (event) {
let self = this;
const self = this;
return function (e) {
self.vis.emit(event, e);
};
@ -87,7 +87,7 @@ export default function HandlerBaseClass(Private) {
* @private
*/
_validateData() {
let dataType = this.data.type;
const dataType = this.data.type;
if (!dataType) {
throw new errors.NoResults();
@ -102,9 +102,9 @@ export default function HandlerBaseClass(Private) {
* @returns {HTMLElement} With the visualization child element
*/
render() {
let self = this;
let charts = this.charts = [];
let selection = d3.select(this.el);
const self = this;
const charts = this.charts = [];
const selection = d3.select(this.el);
selection.selectAll('*').remove();
@ -118,7 +118,7 @@ export default function HandlerBaseClass(Private) {
// render the chart(s)
selection.selectAll('.chart')
.each(function (chartData) {
let chart = new self.ChartClass(self, this, chartData);
const chart = new self.ChartClass(self, this, chartData);
self.vis.activeEvents().forEach(function (event) {
self.enable(event, chart);
@ -131,7 +131,7 @@ export default function HandlerBaseClass(Private) {
chartEventProxyToggle(method) {
return function (event, chart) {
let proxyHandler = this.getProxyHandler(event);
const proxyHandler = this.getProxyHandler(event);
_.each(chart ? [chart] : this.charts, function (chart) {
chart.events[method](event, proxyHandler);
@ -162,7 +162,7 @@ export default function HandlerBaseClass(Private) {
error(message) {
this.removeAll(this.el);
let div = d3.select(this.el)
const div = d3.select(this.el)
.append('div')
// class name needs `chart` in it for the polling checkSize function
// to continuously call render on resize

View file

@ -3,7 +3,7 @@ import VislibLibHandlerTypesPieProvider from 'ui/vislib/lib/handler/types/pie';
import VislibLibHandlerTypesTileMapProvider from 'ui/vislib/lib/handler/types/tile_map';
export default function HandlerTypeFactory(Private) {
let pointSeries = Private(VislibLibHandlerTypesPointSeriesProvider);
const pointSeries = Private(VislibLibHandlerTypesPointSeriesProvider);
/**
* Handles the building of each visualization

View file

@ -3,9 +3,9 @@ import VislibLibDataProvider from 'ui/vislib/lib/data';
import VislibLibChartTitleProvider from 'ui/vislib/lib/chart_title';
export default function PieHandler(Private) {
let Handler = Private(VislibLibHandlerHandlerProvider);
let Data = Private(VislibLibDataProvider);
let ChartTitle = Private(VislibLibChartTitleProvider);
const Handler = Private(VislibLibHandlerHandlerProvider);
const Data = Private(VislibLibDataProvider);
const ChartTitle = Private(VislibLibChartTitleProvider);
/*
* Handler for Pie visualizations.

View file

@ -8,14 +8,14 @@ import VislibLibChartTitleProvider from 'ui/vislib/lib/chart_title';
import VislibLibAlertsProvider from 'ui/vislib/lib/alerts';
export default function ColumnHandler(Private) {
let injectZeros = Private(VislibComponentsZeroInjectionInjectZerosProvider);
let Handler = Private(VislibLibHandlerHandlerProvider);
let Data = Private(VislibLibDataProvider);
let XAxis = Private(VislibLibXAxisProvider);
let YAxis = Private(VislibLibYAxisProvider);
let AxisTitle = Private(VislibLibAxisTitleProvider);
let ChartTitle = Private(VislibLibChartTitleProvider);
let Alerts = Private(VislibLibAlertsProvider);
const injectZeros = Private(VislibComponentsZeroInjectionInjectZerosProvider);
const Handler = Private(VislibLibHandlerHandlerProvider);
const Data = Private(VislibLibDataProvider);
const XAxis = Private(VislibLibXAxisProvider);
const YAxis = Private(VislibLibYAxisProvider);
const AxisTitle = Private(VislibLibAxisTitleProvider);
const ChartTitle = Private(VislibLibChartTitleProvider);
const Alerts = Private(VislibLibAlertsProvider);
/*
* Create handlers for Area, Column, and Line charts which
@ -25,7 +25,7 @@ export default function ColumnHandler(Private) {
opts = opts || {};
return function (vis) {
let isUserDefinedYAxis = vis._attr.setYExtents;
const isUserDefinedYAxis = vis._attr.setYExtents;
let data;
if (opts.zeroFill) {
@ -78,8 +78,8 @@ export default function ColumnHandler(Private) {
test: function (vis, data) {
if (!data.shouldBeStacked() || data.maxNumberOfSeries() < 2) return;
let hasPos = data.getYMax(data._getY) > 0;
let hasNeg = data.getYMin(data._getY) < 0;
const hasPos = data.getYMax(data._getY) > 0;
const hasNeg = data.getYMin(data._getY) < 0;
return (hasPos && hasNeg);
}
},

View file

@ -3,13 +3,13 @@ import VislibLibHandlerHandlerProvider from 'ui/vislib/lib/handler/handler';
import VislibLibDataProvider from 'ui/vislib/lib/data';
export default function MapHandlerProvider(Private) {
let Handler = Private(VislibLibHandlerHandlerProvider);
let Data = Private(VislibLibDataProvider);
const Handler = Private(VislibLibHandlerHandlerProvider);
const Data = Private(VislibLibDataProvider);
return function (vis) {
let data = new Data(vis.data, vis._attr, vis.uiState);
const data = new Data(vis.data, vis._attr, vis.uiState);
let MapHandler = new Handler(vis, {
const MapHandler = new Handler(vis, {
data: data
});

View file

@ -3,7 +3,7 @@ import _ from 'lodash';
import VislibLibLayoutLayoutTypesProvider from 'ui/vislib/lib/layout/layout_types';
export default function LayoutFactory(Private) {
let layoutType = Private(VislibLibLayoutLayoutTypesProvider);
const layoutType = Private(VislibLibLayoutLayoutTypesProvider);
/**
* Builds the visualization DOM layout
@ -50,7 +50,7 @@ export default function LayoutFactory(Private) {
* @returns {*} Creates the visualization layout
*/
createLayout(arr) {
let self = this;
const self = this;
return _.each(arr, function (obj) {
self.layout(obj);
@ -83,7 +83,7 @@ export default function LayoutFactory(Private) {
obj.parent = '.' + obj.parent;
}
let childEl = this.appendElem(obj.parent, obj.type, obj.class);
const childEl = this.appendElem(obj.parent, obj.type, obj.class);
if (obj.datum) {
childEl.datum(obj.datum);
@ -94,7 +94,7 @@ export default function LayoutFactory(Private) {
}
if (obj.children) {
let newParent = childEl[0][0];
const newParent = childEl[0][0];
_.forEach(obj.children, function (obj) {
if (!obj.parent) {

View file

@ -9,7 +9,7 @@ define(function () {
*/
return function split(selection) {
selection.each(function (data) {
let div = d3.select(this)
const div = d3.select(this)
.attr('class', function () {
if (data.rows) {
return 'chart-wrapper-row';
@ -21,7 +21,7 @@ define(function () {
});
let divClass;
let charts = div.selectAll('charts')
const charts = div.selectAll('charts')
.append('div')
.data(function (d) {
if (d.rows) {

View file

@ -13,11 +13,11 @@ define(function () {
*/
return function (selection) {
selection.each(function (data) {
let div = d3.select(this);
let parent = $(this).parents('.vis-wrapper');
const div = d3.select(this);
const parent = $(this).parents('.vis-wrapper');
if (!data.series) {
let splits = div.selectAll('.chart-title')
const splits = div.selectAll('.chart-title')
.data(function (d) {
return d.rows ? d.rows : d.columns;
})

View file

@ -10,7 +10,7 @@ define(function () {
return function (selection) {
selection.each(function () {
let div = d3.select(this);
const div = d3.select(this);
div.selectAll('.x-axis-div')
.append('div')

View file

@ -10,10 +10,10 @@ define(function () {
// render and get bounding box width
return function (selection, parent, opts) {
let yAxis = opts && opts.yAxis;
const yAxis = opts && opts.yAxis;
selection.each(function () {
let div = d3.select(this);
const div = d3.select(this);
div.call(setWidth, yAxis);
@ -31,14 +31,14 @@ define(function () {
function setWidth(el, yAxis) {
if (!yAxis) return;
let padding = 5;
let height = parseInt(el.node().clientHeight, 10);
const padding = 5;
const height = parseInt(el.node().clientHeight, 10);
// render svg and get the width of the bounding box
let svg = d3.select('body')
const svg = d3.select('body')
.append('svg')
.attr('style', 'position:absolute; top:-10000; left:-10000');
let width = svg.append('g')
const width = svg.append('g')
.call(yAxis.getYAxis(height)).node().getBBox().width + padding;
svg.remove();

View file

@ -10,7 +10,7 @@ define(function () {
return function split(selection) {
selection.each(function (data) {
let div = d3.select(this)
const div = d3.select(this)
.attr('class', function () {
if (data.rows) {
return 'chart-wrapper-row';
@ -22,7 +22,7 @@ define(function () {
});
let divClass;
let charts = div.selectAll('charts')
const charts = div.selectAll('charts')
.append('div')
.data(function (d) {
if (d.rows) {

View file

@ -12,7 +12,7 @@ define(function () {
return function (selection, parent) {
selection.each(function (data) {
let div = d3.select(this);
const div = d3.select(this);
if (!data.slices) {
div.selectAll('.chart-title')

View file

@ -9,7 +9,7 @@ define(function () {
*/
return function split(selection) {
selection.each(function (data) {
let div = d3.select(this)
const div = d3.select(this)
.attr('class', function () {
// Determine the parent class
if (data.rows) {
@ -22,7 +22,7 @@ define(function () {
});
let divClass;
let charts = div.selectAll('charts')
const charts = div.selectAll('charts')
.append('div')
.data(function (d) {
// Determine the child class

View file

@ -5,10 +5,10 @@ import VislibLibLayoutSplitsColumnChartXAxisSplitProvider from 'ui/vislib/lib/la
import VislibLibLayoutSplitsColumnChartChartTitleSplitProvider from 'ui/vislib/lib/layout/splits/column_chart/chart_title_split';
export default function ColumnLayoutFactory(Private) {
let chartSplit = Private(VislibLibLayoutSplitsColumnChartChartSplitProvider);
let yAxisSplit = Private(VislibLibLayoutSplitsColumnChartYAxisSplitProvider);
let xAxisSplit = Private(VislibLibLayoutSplitsColumnChartXAxisSplitProvider);
let chartTitleSplit = Private(VislibLibLayoutSplitsColumnChartChartTitleSplitProvider);
const chartSplit = Private(VislibLibLayoutSplitsColumnChartChartSplitProvider);
const yAxisSplit = Private(VislibLibLayoutSplitsColumnChartYAxisSplitProvider);
const xAxisSplit = Private(VislibLibLayoutSplitsColumnChartXAxisSplitProvider);
const chartTitleSplit = Private(VislibLibLayoutSplitsColumnChartChartTitleSplitProvider);
/**
* Specifies the visualization layout for column charts.

View file

@ -1,7 +1,7 @@
import d3 from 'd3';
import VislibLibLayoutSplitsTileMapMapSplitProvider from 'ui/vislib/lib/layout/splits/tile_map/map_split';
export default function ColumnLayoutFactory(Private) {
let mapSplit = Private(VislibLibLayoutSplitsTileMapMapSplitProvider);
const mapSplit = Private(VislibLibLayoutSplitsTileMapMapSplitProvider);
/*
* Specifies the visualization layout for tile maps.

View file

@ -2,8 +2,8 @@ import d3 from 'd3';
import VislibLibLayoutSplitsPieChartChartSplitProvider from 'ui/vislib/lib/layout/splits/pie_chart/chart_split';
import VislibLibLayoutSplitsPieChartChartTitleSplitProvider from 'ui/vislib/lib/layout/splits/pie_chart/chart_title_split';
export default function ColumnLayoutFactory(Private) {
let chartSplit = Private(VislibLibLayoutSplitsPieChartChartSplitProvider);
let chartTitleSplit = Private(VislibLibLayoutSplitsPieChartChartTitleSplitProvider);
const chartSplit = Private(VislibLibLayoutSplitsPieChartChartSplitProvider);
const chartTitleSplit = Private(VislibLibLayoutSplitsPieChartChartTitleSplitProvider);
/**
* Specifies the visualization layout for column charts.

View file

@ -5,10 +5,10 @@ import EventsProvider from 'ui/events';
import ReflowWatcherProvider from 'ui/reflow_watcher';
export default function ResizeCheckerFactory(Private, Notifier, $rootScope) {
let EventEmitter = Private(EventsProvider);
let reflowWatcher = Private(ReflowWatcherProvider);
const EventEmitter = Private(EventsProvider);
const reflowWatcher = Private(ReflowWatcherProvider);
let SCHEDULE = ResizeChecker.SCHEDULE = sequencer.createEaseIn(
const SCHEDULE = ResizeChecker.SCHEDULE = sequencer.createEaseIn(
100, // shortest delay
10000, // longest delay
50 // tick count
@ -16,7 +16,7 @@ export default function ResizeCheckerFactory(Private, Notifier, $rootScope) {
// maximum ms that we can delay emitting 'resize'. This is only used
// to debounce resizes when the size of the element is constantly changing
let MS_MAX_RESIZE_DELAY = ResizeChecker.MS_MAX_RESIZE_DELAY = 500;
const MS_MAX_RESIZE_DELAY = ResizeChecker.MS_MAX_RESIZE_DELAY = 500;
/**
* Checks the size of an element on a regular basis. Provides
@ -88,7 +88,7 @@ export default function ResizeCheckerFactory(Private, Notifier, $rootScope) {
* @return {boolean} - true if the passed in value matches the saved size
*/
ResizeChecker.prototype._equalsSavedSize = function (a) {
let b = this._savedSize || {};
const b = this._savedSize || {};
return a.w === b.w && a.h === b.h;
};
@ -129,12 +129,12 @@ export default function ResizeCheckerFactory(Private, Notifier, $rootScope) {
* @return {void}
*/
ResizeChecker.prototype.check = function () {
let newSize = this.read();
let dirty = this.saveSize(newSize);
let dirtyChanged = this.saveDirty(dirty);
const newSize = this.read();
const dirty = this.saveSize(newSize);
const dirtyChanged = this.saveDirty(dirty);
let doneDirty = !dirty && dirtyChanged;
let muchDirty = dirty && (this.lastDirtyChange() - Date.now() > MS_MAX_RESIZE_DELAY);
const doneDirty = !dirty && dirtyChanged;
const muchDirty = dirty && (this.lastDirtyChange() - Date.now() > MS_MAX_RESIZE_DELAY);
if (doneDirty || muchDirty) {
this.emit('resize', newSize);
}
@ -175,10 +175,10 @@ export default function ResizeCheckerFactory(Private, Notifier, $rootScope) {
this._tick += 1;
}
let check = this.check; // already bound
let tick = this._tick;
let notify = this.notify;
let ms = this._currentSchedule[this._tick];
const check = this.check; // already bound
const tick = this._tick;
const notify = this.notify;
const ms = this._currentSchedule[this._tick];
return (this._timerId = setTimeout(function () {
check();
}, ms));

View file

@ -5,7 +5,7 @@ import moment from 'moment';
import VislibLibErrorHandlerProvider from 'ui/vislib/lib/_error_handler';
export default function XAxisFactory(Private) {
let ErrorHandler = Private(VislibLibErrorHandlerProvider);
const ErrorHandler = Private(VislibLibErrorHandlerProvider);
/**
* Adds an x axis to the visualization
@ -44,7 +44,7 @@ export default function XAxisFactory(Private) {
* @returns {*} D3 scale function
*/
getScale() {
let ordered = this.ordered;
const ordered = this.ordered;
if (ordered && ordered.date) {
return d3.time.scale.utc();
@ -62,7 +62,7 @@ export default function XAxisFactory(Private) {
* @returns {*} D3 scale function
*/
getDomain(scale) {
let ordered = this.ordered;
const ordered = this.ordered;
if (ordered && ordered.date) {
return this.getTimeDomain(scale, this.xValues);
@ -96,8 +96,8 @@ export default function XAxisFactory(Private) {
* @param extent
*/
_calculateExtent(data, extent) {
let ordered = this.ordered;
let opts = [ordered[extent]];
const ordered = this.ordered;
const opts = [ordered[extent]];
let point = d3[extent](data);
if (this.expandLastBucket && extent === 'max') {
@ -143,17 +143,17 @@ export default function XAxisFactory(Private) {
* @returns {number} - x + n intervals
*/
modByInterval(x, n) {
let ordered = this.ordered;
const ordered = this.ordered;
if (!ordered) return x;
let interval = ordered.interval;
const interval = ordered.interval;
if (!interval) return x;
if (!ordered.date) {
return x += (ordered.interval * n);
}
let y = moment(x);
let method = n > 0 ? 'add' : 'subtract';
const y = moment(x);
const method = n > 0 ? 'add' : 'subtract';
_.times(Math.abs(n), function () {
y[method](interval);
@ -184,7 +184,7 @@ export default function XAxisFactory(Private) {
* @returns {*} D3 scale function
*/
getRange(domain, width) {
let ordered = this.ordered;
const ordered = this.ordered;
if (ordered && ordered.date) {
return domain.range([0, width]);
@ -200,7 +200,7 @@ export default function XAxisFactory(Private) {
* @returns {*} D3 x scale function
*/
getXScale(width) {
let domain = this.getDomain(this.getScale());
const domain = this.getDomain(this.getScale());
return this.getRange(domain, width);
};
@ -232,32 +232,26 @@ export default function XAxisFactory(Private) {
* @returns {Function} Renders the x axis to a D3 selection
*/
draw() {
let self = this;
let div;
let width;
let height;
let svg;
let parentWidth;
let n;
const self = this;
this._attr.isRotated = false;
return function (selection) {
n = selection[0].length;
parentWidth = $(self.el)
const n = selection[0].length;
const parentWidth = $(self.el)
.find('.x-axis-div-wrapper')
.width();
selection.each(function () {
div = d3.select(this);
width = parentWidth / n;
height = $(this.parentElement).height();
const div = d3.select(this);
const width = parentWidth / n;
const height = $(this.parentElement).height();
self.validateWidthandHeight(width, height);
self.getXAxis(width);
svg = div.append('svg')
const svg = div.append('svg')
.attr('width', width)
.attr('height', height);
@ -280,15 +274,13 @@ export default function XAxisFactory(Private) {
* @returns {Function} Filters or rotates x axis tick labels
*/
filterOrRotate() {
let self = this;
let ordered = self.ordered;
let axis;
let labels;
const self = this;
const ordered = self.ordered;
return function (selection) {
selection.each(function () {
axis = d3.select(this);
labels = axis.selectAll('.tick text');
const axis = d3.select(this);
const labels = axis.selectAll('.tick text');
if (ordered && ordered.date) {
axis.call(self.filterAxisLabels());
} else {
@ -309,23 +301,20 @@ export default function XAxisFactory(Private) {
* @returns {Function} Rotates x axis tick labels of a D3 selection
*/
rotateAxisLabels() {
let self = this;
let text;
let barWidth = self.xScale.rangeBand();
let maxRotatedLength = 120;
let xAxisPadding = 15;
let svg;
let lengths = [];
let length;
const self = this;
const barWidth = self.xScale.rangeBand();
const maxRotatedLength = 120;
const xAxisPadding = 15;
const lengths = [];
self._attr.isRotated = false;
return function (selection) {
text = selection.selectAll('.tick text');
const text = selection.selectAll('.tick text');
text.each(function textWidths() {
lengths.push(d3.select(this).node().getBBox().width);
});
length = _.max(lengths);
const length = _.max(lengths);
self._attr.xAxisLabelHt = length + xAxisPadding;
// if longer than bar width, rotate
@ -366,13 +355,13 @@ export default function XAxisFactory(Private) {
* @returns {*|jQuery}
*/
truncateLabel(text, size) {
let node = d3.select(text).node();
const node = d3.select(text).node();
let str = $(node).text();
let width = node.getBBox().width;
let chars = str.length;
let pxPerChar = width / chars;
const width = node.getBBox().width;
const chars = str.length;
const pxPerChar = width / chars;
let endChar = 0;
let ellipsesPad = 4;
const ellipsesPad = 4;
if (width > size) {
endChar = Math.floor((size / pxPerChar) - ellipsesPad);
@ -395,14 +384,14 @@ export default function XAxisFactory(Private) {
* @returns {Function}
*/
filterAxisLabels() {
let self = this;
const self = this;
let startX = 0;
let maxW;
let par;
let myX;
let myWidth;
let halfWidth;
let padding = 1.1;
const padding = 1.1;
return function (selection) {
selection.selectAll('.tick text')
@ -434,7 +423,7 @@ export default function XAxisFactory(Private) {
* @returns {Function}
*/
fitTitles() {
let visEls = $('.vis-wrapper');
const visEls = $('.vis-wrapper');
let xAxisChartTitle;
let yAxisChartTitle;
let text;
@ -443,10 +432,10 @@ export default function XAxisFactory(Private) {
return function () {
visEls.each(function () {
let visEl = d3.select(this);
let $visEl = $(this);
let xAxisTitle = $visEl.find('.x-axis-title');
let yAxisTitle = $visEl.find('.y-axis-title');
const visEl = d3.select(this);
const $visEl = $(this);
const xAxisTitle = $visEl.find('.x-axis-title');
const yAxisTitle = $visEl.find('.y-axis-title');
let titleWidth = xAxisTitle.width();
let titleHeight = yAxisTitle.height();
@ -502,17 +491,17 @@ export default function XAxisFactory(Private) {
* @method updateXaxisHeight
*/
updateXaxisHeight() {
let selection = d3.select(this.el).selectAll('.vis-wrapper');
const selection = d3.select(this.el).selectAll('.vis-wrapper');
selection.each(function () {
let visEl = d3.select(this);
const visEl = d3.select(this);
if (visEl.select('.inner-spacer-block').node() === null) {
visEl.select('.y-axis-spacer-block')
.append('div')
.attr('class', 'inner-spacer-block');
}
let xAxisHt = visEl.select('.x-axis-wrapper').style('height');
const xAxisHt = visEl.select('.x-axis-wrapper').style('height');
visEl.select('.inner-spacer-block').style('height', xAxisHt);
});

View file

@ -5,7 +5,7 @@ import errors from 'ui/errors';
import VislibLibErrorHandlerProvider from 'ui/vislib/lib/_error_handler';
export default function YAxisFactory(Private) {
let ErrorHandler = Private(VislibLibErrorHandlerProvider);
const ErrorHandler = Private(VislibLibErrorHandlerProvider);
/**
* Appends y axis to the visualization
@ -47,7 +47,7 @@ export default function YAxisFactory(Private) {
};
_validateUserExtents(domain) {
let self = this;
const self = this;
return domain.map(function (val) {
val = parseInt(val, 10);
@ -59,8 +59,8 @@ export default function YAxisFactory(Private) {
};
_getExtents(domain) {
let min = domain[0];
let max = domain[1];
const min = domain[0];
const max = domain[1];
if (this._isUserDefined()) return this._validateUserExtents(domain);
if (this._isYExtents()) return domain;
@ -113,8 +113,8 @@ export default function YAxisFactory(Private) {
* @returns {D3.Scale.QuantitiveScale|*} D3 yScale function
*/
getYScale(height) {
let scale = this._getScaleType(this._attr.scale);
let domain = this._getExtents(this.domain);
const scale = this._getScaleType(this._attr.scale);
const domain = this._getExtents(this.domain);
this.yScale = scale
.domain(domain)
@ -131,7 +131,7 @@ export default function YAxisFactory(Private) {
};
tickFormat() {
let isPercentage = this._attr.mode === 'percentage';
const isPercentage = this._attr.mode === 'percentage';
if (isPercentage) return d3.format('%');
if (this.yAxisFormatter) return this.yAxisFormatter;
return d3.format('n');
@ -149,7 +149,7 @@ export default function YAxisFactory(Private) {
* @returns {D3.Svg.Axis|*} D3 yAxis function
*/
getYAxis(height) {
let yScale = this.getYScale(height);
const yScale = this.getYScale(height);
this._validateYScale(yScale);
// Create the d3 yAxis function
@ -173,7 +173,7 @@ export default function YAxisFactory(Private) {
* @returns {number} Number of y axis ticks
*/
tickScale(height) {
let yTickScale = d3.scale.linear()
const yTickScale = d3.scale.linear()
.clamp(true)
.domain([20, 40, 1000])
.range([0, 3, 11]);
@ -188,29 +188,29 @@ export default function YAxisFactory(Private) {
* @returns {Function} Renders y axis to visualization
*/
draw() {
let self = this;
let margin = this._attr.margin;
let mode = this._attr.mode;
let isWiggleOrSilhouette = (mode === 'wiggle' || mode === 'silhouette');
const self = this;
const margin = this._attr.margin;
const mode = this._attr.mode;
const isWiggleOrSilhouette = (mode === 'wiggle' || mode === 'silhouette');
return function (selection) {
selection.each(function () {
let el = this;
const el = this;
let div = d3.select(el);
let width = $(el).parent().width();
let height = $(el).height();
let adjustedHeight = height - margin.top - margin.bottom;
const div = d3.select(el);
const width = $(el).parent().width();
const height = $(el).height();
const adjustedHeight = height - margin.top - margin.bottom;
// Validate whether width and height are not 0 or `NaN`
self.validateWidthandHeight(width, adjustedHeight);
let yAxis = self.getYAxis(adjustedHeight);
const yAxis = self.getYAxis(adjustedHeight);
// The yAxis should not appear if mode is set to 'wiggle' or 'silhouette'
if (!isWiggleOrSilhouette) {
// Append svg and y axis
let svg = div.append('svg')
const svg = div.append('svg')
.attr('width', width)
.attr('height', height);
@ -219,9 +219,9 @@ export default function YAxisFactory(Private) {
.attr('transform', 'translate(' + (width - 2) + ',' + margin.top + ')')
.call(yAxis);
let container = svg.select('g.y.axis').node();
const container = svg.select('g.y.axis').node();
if (container) {
let cWidth = Math.max(width, container.getBBox().width);
const cWidth = Math.max(width, container.getBBox().width);
svg.attr('width', cWidth);
svg.select('g')
.attr('transform', 'translate(' + (cWidth - 2) + ',' + margin.top + ')');

View file

@ -10,10 +10,10 @@ import VislibVisualizationsVisTypesProvider from 'ui/vislib/visualizations/vis_t
export default function VisFactory(Private) {
let ResizeChecker = Private(VislibLibResizeCheckerProvider);
let Events = Private(EventsProvider);
let handlerTypes = Private(VislibLibHandlerHandlerTypesProvider);
let chartTypes = Private(VislibVisualizationsVisTypesProvider);
const ResizeChecker = Private(VislibLibResizeCheckerProvider);
const Events = Private(EventsProvider);
const handlerTypes = Private(VislibLibHandlerHandlerTypesProvider);
const chartTypes = Private(VislibVisualizationsVisTypesProvider);
/**
* Creates the visualizations.
@ -46,7 +46,7 @@ export default function VisFactory(Private) {
* @param data {Object} Elasticsearch query results
*/
render(data, uiState) {
let chartType = this._attr.type;
const chartType = this._attr.type;
if (!data) {
throw new Error('No valid data!');
@ -109,7 +109,7 @@ export default function VisFactory(Private) {
* @method destroy
*/
destroy() {
let selection = d3.select(this.el).select('.vis-wrapper');
const selection = d3.select(this.el).select('.vis-wrapper');
this.binder.destroy();
this.resizeChecker.destroy();
@ -117,7 +117,6 @@ export default function VisFactory(Private) {
if (this.handler) this._runOnHandler('destroy');
selection.remove();
selection = null;
};
/**
@ -151,9 +150,9 @@ export default function VisFactory(Private) {
* @returns {*}
*/
on(event, listener) {
let first = this.listenerCount(event) === 0;
let ret = Events.prototype.on.call(this, event, listener);
let added = this.listenerCount(event) > 0;
const first = this.listenerCount(event) === 0;
const ret = Events.prototype.on.call(this, event, listener);
const added = this.listenerCount(event) > 0;
// if this is the first listener added for the event
// enable the event in the handler
@ -170,9 +169,9 @@ export default function VisFactory(Private) {
* @returns {*}
*/
off(event, listener) {
let last = this.listenerCount(event) === 1;
let ret = Events.prototype.off.call(this, event, listener);
let removed = this.listenerCount(event) === 0;
const last = this.listenerCount(event) === 1;
const ret = Events.prototype.off.call(this, event, listener);
const removed = this.listenerCount(event) === 0;
// Once all listeners are removed, disable the events in the handler
if (last && removed && this.handler) this.handler.disable(event);

View file

@ -6,8 +6,8 @@ import VislibLibDispatchProvider from 'ui/vislib/lib/dispatch';
import VislibComponentsTooltipProvider from 'ui/vislib/components/tooltip';
export default function ChartBaseClass(Private) {
let Dispatch = Private(VislibLibDispatchProvider);
let Tooltip = Private(VislibComponentsTooltipProvider);
const Dispatch = Private(VislibLibDispatchProvider);
const Tooltip = Private(VislibComponentsTooltipProvider);
/**
* The Base Class for all visualizations.
@ -25,11 +25,11 @@ export default function ChartBaseClass(Private) {
this.chartData = chartData;
this.tooltips = [];
let events = this.events = new Dispatch(handler);
const events = this.events = new Dispatch(handler);
if (_.get(this.handler, '_attr.addTooltip')) {
let $el = this.handler.el;
let formatter = this.handler.data.get('tooltipFormatter');
const $el = this.handler.el;
const formatter = this.handler.data.get('tooltipFormatter');
// Add tooltip
this.tooltip = new Tooltip('chart', $el, formatter, events);
@ -47,7 +47,7 @@ export default function ChartBaseClass(Private) {
* @returns {HTMLElement} Contains the D3 chart
*/
render() {
let selection = d3.select(this.chartEl);
const selection = d3.select(this.chartEl);
selection.selectAll('*').remove();
selection.call(this.draw());
@ -61,7 +61,7 @@ export default function ChartBaseClass(Private) {
*/
_addIdentifier(selection, labelProp) {
labelProp = labelProp || 'label';
let labels = this.handler.data.labels;
const labels = this.handler.data.labels;
function resolveLabel(datum) {
if (labels.length === 1) return labels[0];
@ -70,7 +70,7 @@ export default function ChartBaseClass(Private) {
}
selection.each(function (datum) {
let label = resolveLabel(datum);
const label = resolveLabel(datum);
if (label != null) dataLabel(this, label);
});
};
@ -81,13 +81,12 @@ export default function ChartBaseClass(Private) {
* @method destroy
*/
destroy() {
let selection = d3.select(this.chartEl);
const selection = d3.select(this.chartEl);
this.events.removeAllListeners();
this.tooltips.forEach(function (tooltip) {
tooltip.destroy();
});
selection.remove();
selection = null;
};
}

View file

@ -13,19 +13,19 @@ import VislibVisualizationsMarkerTypesGeohashGridProvider from 'ui/vislib/visual
import VislibVisualizationsMarkerTypesHeatmapProvider from 'ui/vislib/visualizations/marker_types/heatmap';
export default function MapFactory(Private, tilemap, $sanitize) {
let defaultMapZoom = 2;
let defaultMapCenter = [15, 5];
let defaultMarkerType = 'Scaled Circle Markers';
const defaultMapZoom = 2;
const defaultMapCenter = [15, 5];
const defaultMarkerType = 'Scaled Circle Markers';
let tilemapOptions = tilemap.options;
let attribution = $sanitize(marked(tilemapOptions.attribution));
const tilemapOptions = tilemap.options;
const attribution = $sanitize(marked(tilemapOptions.attribution));
let mapTiles = {
const mapTiles = {
url: tilemap.url,
options: _.assign({}, tilemapOptions, { attribution })
};
let markerTypes = {
const markerTypes = {
'Scaled Circle Markers': Private(VislibVisualizationsMarkerTypesScaledCirclesProvider),
'Shaded Circle Markers': Private(VislibVisualizationsMarkerTypesShadedCirclesProvider),
'Shaded Geohash Grid': Private(VislibVisualizationsMarkerTypesGeohashGridProvider),
@ -56,7 +56,7 @@ export default function MapFactory(Private, tilemap, $sanitize) {
this._mapCenter = params.center || defaultMapCenter;
this._attr = params.attr || {};
let mapOptions = {
const mapOptions = {
minZoom: tilemapOptions.minZoom,
maxZoom: tilemapOptions.maxZoom,
noWrap: true,
@ -71,8 +71,8 @@ export default function MapFactory(Private, tilemap, $sanitize) {
addBoundingControl() {
if (this._boundingControl) return;
let self = this;
let drawOptions = {draw: {}};
const self = this;
const drawOptions = {draw: {}};
_.each(['polyline', 'polygon', 'circle', 'marker', 'rectangle'], function (drawShape) {
if (self._events && !self._events.listenerCount(drawShape)) {
@ -94,11 +94,11 @@ export default function MapFactory(Private, tilemap, $sanitize) {
addFitControl() {
if (this._fitControl) return;
let self = this;
let fitContainer = L.DomUtil.create('div', 'leaflet-control leaflet-bar leaflet-control-fit');
const self = this;
const fitContainer = L.DomUtil.create('div', 'leaflet-control leaflet-bar leaflet-control-fit');
// Add button to fit container to points
let FitControl = L.Control.extend({
const FitControl = L.Control.extend({
options: {
position: 'topleft'
},
@ -130,7 +130,7 @@ export default function MapFactory(Private, tilemap, $sanitize) {
addTitle(mapLabel) {
if (this._label) return;
let label = this._label = L.control();
const label = this._label = L.control();
label.onAdd = function () {
this._div = L.DomUtil.create('div', 'tilemap-info tilemap-label');
@ -201,13 +201,13 @@ export default function MapFactory(Private, tilemap, $sanitize) {
* @return {Object} marker layer
*/
_createMarkers(options) {
let MarkerType = markerTypes[this._markerType];
const MarkerType = markerTypes[this._markerType];
return new MarkerType(this.map, this._geoJson, options);
};
_attachEvents() {
let self = this;
let saturateTiles = self.saturateTiles.bind(self);
const self = this;
const saturateTiles = self.saturateTiles.bind(self);
this._tileLayer.on('tileload', saturateTiles);
@ -234,11 +234,11 @@ export default function MapFactory(Private, tilemap, $sanitize) {
});
this.map.on('draw:created', function (e) {
let drawType = e.layerType;
const drawType = e.layerType;
if (!self._events || !self._events.listenerCount(drawType)) return;
// TODO: Different drawTypes need differ info. Need a switch on the object creation
let bounds = e.layer.getBounds();
const bounds = e.layer.getBounds();
let SElng = bounds.getSouthEast().lng;
if (SElng > 180) {

View file

@ -6,9 +6,9 @@ import errors from 'ui/errors';
export default function PointSeriesChartProvider(Private) {
let Chart = Private(VislibVisualizationsChartProvider);
let Tooltip = Private(VislibComponentsTooltipProvider);
let touchdownTmpl = _.template(require('ui/vislib/partials/touchdown.tmpl.html'));
const Chart = Private(VislibVisualizationsChartProvider);
const Tooltip = Private(VislibComponentsTooltipProvider);
const touchdownTmpl = _.template(require('ui/vislib/partials/touchdown.tmpl.html'));
class PointSeriesChart extends Chart {
constructor(handler, chartEl, chartData) {
@ -20,8 +20,8 @@ export default function PointSeriesChartProvider(Private) {
let currentStackIndex = 0;
return function (d, y0, y) {
let firstStack = currentStackIndex % stackCount === 0;
let lastStack = ++currentStackIndex === stackCount;
const firstStack = currentStackIndex % stackCount === 0;
const lastStack = ++currentStackIndex === stackCount;
if (firstStack) {
currentStackOffsets = [0, 0];
@ -47,14 +47,14 @@ export default function PointSeriesChartProvider(Private) {
* @returns {Array} Stacked data objects with x, y, and y0 values
*/
stackData(data) {
let self = this;
let isHistogram = (this._attr.type === 'histogram' && this._attr.mode === 'stacked');
let stack = this._attr.stack;
const self = this;
const isHistogram = (this._attr.type === 'histogram' && this._attr.mode === 'stacked');
const stack = this._attr.stack;
if (isHistogram) stack.out(self._stackMixedValues(data.series.length));
return stack(data.series.map(function (d) {
let label = d.label;
const label = d.label;
return d.values.map(function (e, i) {
return {
_input: e,
@ -87,37 +87,37 @@ export default function PointSeriesChartProvider(Private) {
* @returns {D3.Selection}
*/
createEndZones(svg) {
let self = this;
let xAxis = this.handler.xAxis;
let xScale = xAxis.xScale;
let ordered = xAxis.ordered;
let missingMinMax = !ordered || _.isUndefined(ordered.min) || _.isUndefined(ordered.max);
const self = this;
const xAxis = this.handler.xAxis;
const xScale = xAxis.xScale;
const ordered = xAxis.ordered;
const missingMinMax = !ordered || _.isUndefined(ordered.min) || _.isUndefined(ordered.max);
if (missingMinMax || ordered.endzones === false) return;
let attr = this.handler._attr;
let height = attr.height;
let width = attr.width;
let margin = attr.margin;
let color = '#004c99';
const attr = this.handler._attr;
const height = attr.height;
const width = attr.width;
const margin = attr.margin;
const color = '#004c99';
// we don't want to draw endzones over our min and max values, they
// are still a part of the dataset. We want to start the endzones just
// outside of them so we will use these values rather than ordered.min/max
let oneUnit = (ordered.units || _.identity)(1);
let beyondMin = ordered.min - oneUnit;
let beyondMax = ordered.max + oneUnit;
const oneUnit = (ordered.units || _.identity)(1);
const beyondMin = ordered.min - oneUnit;
const beyondMax = ordered.max + oneUnit;
// points on this axis represent the amount of time they cover,
// so draw the endzones at the actual time bounds
let leftEndzone = {
const leftEndzone = {
x: 0,
w: Math.max(xScale(ordered.min), 0)
};
let rightLastVal = xAxis.expandLastBucket ? ordered.max : Math.min(ordered.max, _.last(xAxis.xValues));
let rightStart = rightLastVal + oneUnit;
let rightEndzone = {
const rightLastVal = xAxis.expandLastBucket ? ordered.max : Math.min(ordered.max, _.last(xAxis.xValues));
const rightStart = rightLastVal + oneUnit;
const rightEndzone = {
x: xScale(rightStart),
w: Math.max(width - xScale(rightStart), 0)
};
@ -139,13 +139,13 @@ export default function PointSeriesChartProvider(Private) {
});
function callPlay(event) {
let boundData = event.target.__data__;
let mouseChartXCoord = event.clientX - self.chartEl.getBoundingClientRect().left;
let wholeBucket = boundData && boundData.x != null;
const boundData = event.target.__data__;
const mouseChartXCoord = event.clientX - self.chartEl.getBoundingClientRect().left;
const wholeBucket = boundData && boundData.x != null;
// the min and max that the endzones start in
let min = leftEndzone.w;
let max = rightEndzone.x;
const min = leftEndzone.w;
const max = rightEndzone.x;
// bounds of the cursor to consider
let xLeft = mouseChartXCoord;
@ -155,7 +155,6 @@ export default function PointSeriesChartProvider(Private) {
xRight = xScale(xAxis.addInterval(boundData.x));
}
return {
wholeBucket: wholeBucket,
touchdown: min > xLeft || max < xRight
@ -166,7 +165,7 @@ export default function PointSeriesChartProvider(Private) {
return touchdownTmpl(callPlay(d3.event));
}
let endzoneTT = new Tooltip('endzones', this.handler.el, textFormatter, null);
const endzoneTT = new Tooltip('endzones', this.handler.el, textFormatter, null);
this.tooltips.push(endzoneTT);
endzoneTT.order = 0;
endzoneTT.showCondition = function inEndzone() {

View file

@ -6,8 +6,8 @@ import VislibVisualizationsPointSeriesChartProvider from 'ui/vislib/visualizatio
import VislibVisualizationsTimeMarkerProvider from 'ui/vislib/visualizations/time_marker';
export default function AreaChartFactory(Private) {
let PointSeriesChart = Private(VislibVisualizationsPointSeriesChartProvider);
let TimeMarker = Private(VislibVisualizationsTimeMarkerProvider);
const PointSeriesChart = Private(VislibVisualizationsPointSeriesChartProvider);
const TimeMarker = Private(VislibVisualizationsTimeMarkerProvider);
/**
* Area chart visualization
@ -29,14 +29,14 @@ export default function AreaChartFactory(Private) {
if (this.isOverlapping) {
// Default opacity should return to 0.6 on mouseout
let defaultOpacity = 0.6;
const defaultOpacity = 0.6;
handler._attr.defaultOpacity = defaultOpacity;
handler.highlight = function (element) {
let label = this.getAttribute('data-label');
const label = this.getAttribute('data-label');
if (!label) return;
let highlightOpacity = 0.8;
let highlightElements = $('[data-label]', element.parentNode).filter(
const highlightOpacity = 0.8;
const highlightElements = $('[data-label]', element.parentNode).filter(
function (els, el) {
return `${$(el).data('label')}` === label;
});
@ -72,15 +72,15 @@ export default function AreaChartFactory(Private) {
* @returns {D3.UpdateSelection} SVG with path added
*/
addPath(svg, layers) {
let self = this;
let ordered = this.handler.data.get('ordered');
let isTimeSeries = (ordered && ordered.date);
let isOverlapping = this.isOverlapping;
let color = this.handler.data.getColorFunc();
let xScale = this.handler.xAxis.xScale;
let yScale = this.handler.yAxis.yScale;
let interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;
let area = d3.svg.area()
const self = this;
const ordered = this.handler.data.get('ordered');
const isTimeSeries = (ordered && ordered.date);
const isOverlapping = this.isOverlapping;
const color = this.handler.data.getColorFunc();
const xScale = this.handler.xAxis.xScale;
const yScale = this.handler.yAxis.yScale;
const interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;
const area = d3.svg.area()
.x(function (d) {
if (isTimeSeries) {
return xScale(d.x);
@ -107,7 +107,7 @@ export default function AreaChartFactory(Private) {
.interpolate(interpolate);
// Data layers
let layer = svg.selectAll('.layer')
const layer = svg.selectAll('.layer')
.data(layers)
.enter()
.append('g')
@ -116,7 +116,7 @@ export default function AreaChartFactory(Private) {
});
// Append path
let path = layer.append('path')
const path = layer.append('path')
.call(this._addIdentifier)
.style('fill', function (d) {
return color(d[0].label);
@ -141,13 +141,13 @@ export default function AreaChartFactory(Private) {
* @returns {D3.Selection} circles with event listeners attached
*/
addCircleEvents(element, svg) {
let events = this.events;
let isBrushable = events.isBrushable();
let brush = isBrushable ? events.addBrushEvent(svg) : undefined;
let hover = events.addHoverEvent();
let mouseout = events.addMouseoutEvent();
let click = events.addClickEvent();
let attachedEvents = element.call(hover).call(mouseout).call(click);
const events = this.events;
const isBrushable = events.isBrushable();
const brush = isBrushable ? events.addBrushEvent(svg) : undefined;
const hover = events.addHoverEvent();
const mouseout = events.addMouseoutEvent();
const click = events.addClickEvent();
const attachedEvents = element.call(hover).call(mouseout).call(click);
if (isBrushable) {
attachedEvents.call(brush);
@ -165,27 +165,25 @@ export default function AreaChartFactory(Private) {
* @returns {D3.UpdateSelection} SVG with circles added
*/
addCircles(svg, data) {
let self = this;
let color = this.handler.data.getColorFunc();
let xScale = this.handler.xAxis.xScale;
let yScale = this.handler.yAxis.yScale;
let ordered = this.handler.data.get('ordered');
let circleRadius = 12;
let circleStrokeWidth = 0;
let tooltip = this.tooltip;
let isTooltip = this._attr.addTooltip;
let isOverlapping = this.isOverlapping;
let layer;
let circles;
const self = this;
const color = this.handler.data.getColorFunc();
const xScale = this.handler.xAxis.xScale;
const yScale = this.handler.yAxis.yScale;
const ordered = this.handler.data.get('ordered');
const circleRadius = 12;
const circleStrokeWidth = 0;
const tooltip = this.tooltip;
const isTooltip = this._attr.addTooltip;
const isOverlapping = this.isOverlapping;
layer = svg.selectAll('.points')
const layer = svg.selectAll('.points')
.data(data)
.enter()
.append('g')
.attr('class', 'points area');
// append the circles
circles = layer
const circles = layer
.selectAll('circles')
.data(function appendData(data) {
return data.filter(function isZeroOrNull(d) {
@ -242,9 +240,9 @@ export default function AreaChartFactory(Private) {
*/
addClipPath(svg, width, height) {
// Prevents circles from being clipped at the top of the chart
let startX = 0;
let startY = 0;
let id = 'chart-area' + _.uniqueId();
const startX = 0;
const startY = 0;
const id = 'chart-area' + _.uniqueId();
// Creating clipPath
return svg
@ -259,11 +257,11 @@ export default function AreaChartFactory(Private) {
};
checkIfEnoughData() {
let series = this.chartData.series;
let message = 'Area charts require more than one data point. Try adding ' +
const series = this.chartData.series;
const message = 'Area charts require more than one data point. Try adding ' +
'an X-Axis Aggregation';
let notEnoughData = series.some(function (obj) {
const notEnoughData = series.some(function (obj) {
return obj.values.length < 2;
});
@ -273,8 +271,8 @@ export default function AreaChartFactory(Private) {
};
validateWiggleSelection() {
let isWiggle = this._attr.mode === 'wiggle';
let ordered = this.handler.data.get('ordered');
const isWiggle = this._attr.mode === 'wiggle';
const ordered = this.handler.data.get('ordered');
if (isWiggle && !ordered) throw new errors.InvalidWiggleSelection();
};
@ -287,35 +285,28 @@ export default function AreaChartFactory(Private) {
*/
draw() {
// Attributes
let self = this;
let xScale = this.handler.xAxis.xScale;
let $elem = $(this.chartEl);
let margin = this._attr.margin;
let elWidth = this._attr.width = $elem.width();
let elHeight = this._attr.height = $elem.height();
let yMin = this.handler.yAxis.yMin;
let yScale = this.handler.yAxis.yScale;
let minWidth = 20;
let minHeight = 20;
let addTimeMarker = this._attr.addTimeMarker;
let times = this._attr.times || [];
const self = this;
const xScale = this.handler.xAxis.xScale;
const $elem = $(this.chartEl);
const margin = this._attr.margin;
const elWidth = this._attr.width = $elem.width();
const elHeight = this._attr.height = $elem.height();
const yMin = this.handler.yAxis.yMin;
const yScale = this.handler.yAxis.yScale;
const minWidth = 20;
const minHeight = 20;
const addTimeMarker = this._attr.addTimeMarker;
const times = this._attr.times || [];
let timeMarker;
let div;
let svg;
let width;
let height;
let layers;
let circles;
let path;
return function (selection) {
selection.each(function (data) {
// Stack data
layers = self.stackData(data);
const layers = self.stackData(data);
// Get the width and height
width = elWidth;
height = elHeight - margin.top - margin.bottom;
const width = elWidth;
const height = elHeight - margin.top - margin.bottom;
if (addTimeMarker) {
timeMarker = new TimeMarker(times, xScale, height);
@ -327,10 +318,10 @@ export default function AreaChartFactory(Private) {
self.validateWiggleSelection();
// Select the current DOM element
div = d3.select(this);
const div = d3.select(this);
// Create the canvas for the visualization
svg = div.append('svg')
const svg = div.append('svg')
.attr('width', width)
.attr('height', height + margin.top + margin.bottom)
.append('g')
@ -341,7 +332,7 @@ export default function AreaChartFactory(Private) {
self.createEndZones(svg);
// add path
path = self.addPath(svg, layers);
self.addPath(svg, layers);
if (yMin < 0 && self._attr.mode !== 'wiggle' && self._attr.mode !== 'silhouette') {
@ -357,13 +348,13 @@ export default function AreaChartFactory(Private) {
}
// add circles
circles = self.addCircles(svg, layers);
const circles = self.addCircles(svg, layers);
// add click and hover events to circles
self.addCircleEvents(circles, svg);
// chart base line
let line = svg.append('line')
svg.append('line')
.attr('class', 'base-line')
.attr('x1', 0)
.attr('y1', yScale(0))

View file

@ -7,8 +7,8 @@ import VislibVisualizationsPointSeriesChartProvider from 'ui/vislib/visualizatio
import VislibVisualizationsTimeMarkerProvider from 'ui/vislib/visualizations/time_marker';
export default function ColumnChartFactory(Private) {
let PointSeriesChart = Private(VislibVisualizationsPointSeriesChartProvider);
let TimeMarker = Private(VislibVisualizationsTimeMarkerProvider);
const PointSeriesChart = Private(VislibVisualizationsPointSeriesChartProvider);
const TimeMarker = Private(VislibVisualizationsTimeMarkerProvider);
/**
* Vertical Bar Chart Visualization: renders vertical and/or stacked bars
@ -44,21 +44,19 @@ export default function ColumnChartFactory(Private) {
* @returns {D3.UpdateSelection} SVG with rect added
*/
addBars(svg, layers) {
let self = this;
let color = this.handler.data.getColorFunc();
let tooltip = this.tooltip;
let isTooltip = this._attr.addTooltip;
let layer;
let bars;
const self = this;
const color = this.handler.data.getColorFunc();
const tooltip = this.tooltip;
const isTooltip = this._attr.addTooltip;
layer = svg.selectAll('.layer')
const layer = svg.selectAll('.layer')
.data(layers)
.enter().append('g')
.attr('class', function (d, i) {
return 'series ' + i;
});
bars = layer.selectAll('rect')
const bars = layer.selectAll('rect')
.data(function (d) {
return d;
});
@ -94,7 +92,7 @@ export default function ColumnChartFactory(Private) {
* @returns {D3.UpdateSelection}
*/
updateBars(bars) {
let offset = this._attr.mode;
const offset = this._attr.mode;
if (offset === 'grouped') {
return this.addGroupedBars(bars);
@ -110,16 +108,16 @@ export default function ColumnChartFactory(Private) {
* @returns {D3.UpdateSelection}
*/
addStackedBars(bars) {
let data = this.chartData;
let xScale = this.handler.xAxis.xScale;
let yScale = this.handler.yAxis.yScale;
let height = yScale.range()[0];
let yMin = this.handler.yAxis.yScale.domain()[0];
const data = this.chartData;
const xScale = this.handler.xAxis.xScale;
const yScale = this.handler.yAxis.yScale;
const height = yScale.range()[0];
const yMin = this.handler.yAxis.yScale.domain()[0];
let barWidth;
if (data.ordered && data.ordered.date) {
let start = data.ordered.min;
let end = moment(data.ordered.min).add(data.ordered.interval).valueOf();
const start = data.ordered.min;
const end = moment(data.ordered.min).add(data.ordered.interval).valueOf();
barWidth = xScale(end) - xScale(start);
barWidth = barWidth - Math.min(barWidth * 0.25, 15);
@ -172,23 +170,23 @@ export default function ColumnChartFactory(Private) {
* @returns {D3.UpdateSelection}
*/
addGroupedBars(bars) {
let xScale = this.handler.xAxis.xScale;
let yScale = this.handler.yAxis.yScale;
let data = this.chartData;
let n = data.series.length;
let height = yScale.range()[0];
let groupSpacingPercentage = 0.15;
let isTimeScale = (data.ordered && data.ordered.date);
let minWidth = 1;
const xScale = this.handler.xAxis.xScale;
const yScale = this.handler.yAxis.yScale;
const data = this.chartData;
const n = data.series.length;
const height = yScale.range()[0];
const groupSpacingPercentage = 0.15;
const isTimeScale = (data.ordered && data.ordered.date);
const minWidth = 1;
let barWidth;
// update
bars
.attr('x', function (d, i, j) {
if (isTimeScale) {
let groupWidth = xScale(data.ordered.min + data.ordered.interval) -
const groupWidth = xScale(data.ordered.min + data.ordered.interval) -
xScale(data.ordered.min);
let groupSpacing = groupWidth * groupSpacingPercentage;
const groupSpacing = groupWidth * groupSpacingPercentage;
barWidth = (groupWidth - groupSpacing) / n;
@ -231,13 +229,13 @@ export default function ColumnChartFactory(Private) {
* @returns {D3.Selection} rect with event listeners attached
*/
addBarEvents(element, svg) {
let events = this.events;
let isBrushable = events.isBrushable();
let brush = isBrushable ? events.addBrushEvent(svg) : undefined;
let hover = events.addHoverEvent();
let mouseout = events.addMouseoutEvent();
let click = events.addClickEvent();
let attachedEvents = element.call(hover).call(mouseout).call(click);
const events = this.events;
const isBrushable = events.isBrushable();
const brush = isBrushable ? events.addBrushEvent(svg) : undefined;
const hover = events.addHoverEvent();
const mouseout = events.addMouseoutEvent();
const click = events.addClickEvent();
const attachedEvents = element.call(hover).call(mouseout).call(click);
if (isBrushable) {
attachedEvents.call(brush);
@ -253,31 +251,25 @@ export default function ColumnChartFactory(Private) {
* @returns {Function} Creates the vertical bar chart
*/
draw() {
let self = this;
let $elem = $(this.chartEl);
let margin = this._attr.margin;
let elWidth = this._attr.width = $elem.width();
let elHeight = this._attr.height = $elem.height();
let yScale = this.handler.yAxis.yScale;
let xScale = this.handler.xAxis.xScale;
let minWidth = 20;
let minHeight = 20;
let addTimeMarker = this._attr.addTimeMarker;
let times = this._attr.times || [];
const self = this;
const $elem = $(this.chartEl);
const margin = this._attr.margin;
const elWidth = this._attr.width = $elem.width();
const elHeight = this._attr.height = $elem.height();
const yScale = this.handler.yAxis.yScale;
const xScale = this.handler.xAxis.xScale;
const minWidth = 20;
const minHeight = 20;
const addTimeMarker = this._attr.addTimeMarker;
const times = this._attr.times || [];
let timeMarker;
let div;
let svg;
let width;
let height;
let layers;
let bars;
return function (selection) {
selection.each(function (data) {
layers = self.stackData(data);
const layers = self.stackData(data);
width = elWidth;
height = elHeight - margin.top - margin.bottom;
const width = elWidth;
const height = elHeight - margin.top - margin.bottom;
if (width < minWidth || height < minHeight) {
throw new errors.ContainerTooSmall();
}
@ -296,21 +288,21 @@ export default function ColumnChartFactory(Private) {
with a ${self._attr.scale} scaling method. Try 'linear' scaling instead.`);
}
div = d3.select(this);
const div = d3.select(this);
svg = div.append('svg')
const svg = div.append('svg')
.attr('width', width)
.attr('height', height + margin.top + margin.bottom)
.append('g')
.attr('transform', 'translate(0,' + margin.top + ')');
bars = self.addBars(svg, layers);
const bars = self.addBars(svg, layers);
self.createEndZones(svg);
// Adds event listeners
self.addBarEvents(bars, svg);
let line = svg.append('line')
svg.append('line')
.attr('class', 'base-line')
.attr('x1', 0)
.attr('y1', yScale(0))

View file

@ -6,8 +6,8 @@ import VislibVisualizationsPointSeriesChartProvider from 'ui/vislib/visualizatio
import VislibVisualizationsTimeMarkerProvider from 'ui/vislib/visualizations/time_marker';
export default function LineChartFactory(Private) {
let PointSeriesChart = Private(VislibVisualizationsPointSeriesChartProvider);
let TimeMarker = Private(VislibVisualizationsTimeMarkerProvider);
const PointSeriesChart = Private(VislibVisualizationsPointSeriesChartProvider);
const TimeMarker = Private(VislibVisualizationsTimeMarkerProvider);
/**
* Line Chart Visualization
@ -43,13 +43,13 @@ export default function LineChartFactory(Private) {
* @returns {D3.Selection} SVG circles with event listeners attached
*/
addCircleEvents(element, svg) {
let events = this.events;
let isBrushable = events.isBrushable();
let brush = isBrushable ? events.addBrushEvent(svg) : undefined;
let hover = events.addHoverEvent();
let mouseout = events.addMouseoutEvent();
let click = events.addClickEvent();
let attachedEvents = element.call(hover).call(mouseout).call(click);
const events = this.events;
const isBrushable = events.isBrushable();
const brush = isBrushable ? events.addBrushEvent(svg) : undefined;
const hover = events.addHoverEvent();
const mouseout = events.addMouseoutEvent();
const click = events.addClickEvent();
const attachedEvents = element.call(hover).call(mouseout).call(click);
if (isBrushable) {
attachedEvents.call(brush);
@ -67,16 +67,16 @@ export default function LineChartFactory(Private) {
* @returns {D3.UpdateSelection} SVG with circles added
*/
addCircles(svg, data) {
let self = this;
let showCircles = this._attr.showCircles;
let color = this.handler.data.getColorFunc();
let xScale = this.handler.xAxis.xScale;
let yScale = this.handler.yAxis.yScale;
let ordered = this.handler.data.get('ordered');
let tooltip = this.tooltip;
let isTooltip = this._attr.addTooltip;
const self = this;
const showCircles = this._attr.showCircles;
const color = this.handler.data.getColorFunc();
const xScale = this.handler.xAxis.xScale;
const yScale = this.handler.yAxis.yScale;
const ordered = this.handler.data.get('ordered');
const tooltip = this.tooltip;
const isTooltip = this._attr.addTooltip;
let radii = _(data)
const radii = _(data)
.map(function (series) {
return _.pluck(series, '_input.z');
})
@ -90,15 +90,15 @@ export default function LineChartFactory(Private) {
max: -Infinity
});
let radiusStep = ((radii.max - radii.min) || (radii.max * 100)) / Math.pow(this._attr.radiusRatio, 2);
const radiusStep = ((radii.max - radii.min) || (radii.max * 100)) / Math.pow(this._attr.radiusRatio, 2);
let layer = svg.selectAll('.points')
const layer = svg.selectAll('.points')
.data(data)
.enter()
.append('g')
.attr('class', 'points line');
let circles = layer
const circles = layer
.selectAll('circle')
.data(function appendData(data) {
return data.filter(function (d) {
@ -126,9 +126,9 @@ export default function LineChartFactory(Private) {
}
function colorCircle(d) {
let parent = d3.select(this).node().parentNode;
let lengthOfParent = d3.select(parent).data()[0].length;
let isVisible = (lengthOfParent === 1);
const parent = d3.select(this).node().parentNode;
const lengthOfParent = d3.select(parent).data()[0].length;
const isVisible = (lengthOfParent === 1);
// If only 1 point exists, show circle
if (!showCircles && !isVisible) return 'none';
@ -137,10 +137,10 @@ export default function LineChartFactory(Private) {
function getCircleRadiusFn(modifier) {
return function getCircleRadius(d) {
let margin = self._attr.margin;
let width = self._attr.width - margin.left - margin.right;
let height = self._attr.height - margin.top - margin.bottom;
let circleRadius = (d._input.z - radii.min) / radiusStep;
const margin = self._attr.margin;
const width = self._attr.width - margin.left - margin.right;
const height = self._attr.height - margin.top - margin.bottom;
const circleRadius = (d._input.z - radii.min) / radiusStep;
return _.min([Math.sqrt((circleRadius || 2) + 2), width, height]) + (modifier || 0);
};
@ -186,14 +186,14 @@ export default function LineChartFactory(Private) {
* @returns {D3.UpdateSelection} SVG with paths added
*/
addLines(svg, data) {
let self = this;
let xScale = this.handler.xAxis.xScale;
let yScale = this.handler.yAxis.yScale;
let xAxisFormatter = this.handler.data.get('xAxisFormatter');
let color = this.handler.data.getColorFunc();
let ordered = this.handler.data.get('ordered');
let interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;
let line = d3.svg.line()
const self = this;
const xScale = this.handler.xAxis.xScale;
const yScale = this.handler.yAxis.yScale;
const xAxisFormatter = this.handler.data.get('xAxisFormatter');
const color = this.handler.data.getColorFunc();
const ordered = this.handler.data.get('ordered');
const interpolate = (this._attr.smoothLines) ? 'cardinal' : this._attr.interpolate;
const line = d3.svg.line()
.defined(function (d) {
return !_.isNull(d.y);
})
@ -240,10 +240,10 @@ export default function LineChartFactory(Private) {
* @returns {D3.UpdateSelection} SVG with clipPath added
*/
addClipPath(svg, width, height) {
let clipPathBuffer = 5;
let startX = 0;
let startY = 0 - clipPathBuffer;
let id = 'chart-area' + _.uniqueId();
const clipPathBuffer = 5;
const startX = 0;
const startY = 0 - clipPathBuffer;
const id = 'chart-area' + _.uniqueId();
return svg
.attr('clip-path', 'url(#' + id + ')')
@ -265,35 +265,29 @@ export default function LineChartFactory(Private) {
* @returns {Function} Creates the line chart
*/
draw() {
let self = this;
let $elem = $(this.chartEl);
let margin = this._attr.margin;
let elWidth = this._attr.width = $elem.width();
let elHeight = this._attr.height = $elem.height();
let scaleType = this.handler.yAxis.getScaleType();
let yMin = this.handler.yAxis.yMin;
let yScale = this.handler.yAxis.yScale;
let xScale = this.handler.xAxis.xScale;
let minWidth = 20;
let minHeight = 20;
let startLineX = 0;
let lineStrokeWidth = 1;
let addTimeMarker = this._attr.addTimeMarker;
let times = this._attr.times || [];
const self = this;
const $elem = $(this.chartEl);
const margin = this._attr.margin;
const elWidth = this._attr.width = $elem.width();
const elHeight = this._attr.height = $elem.height();
const scaleType = this.handler.yAxis.getScaleType();
const yMin = this.handler.yAxis.yMin;
const yScale = this.handler.yAxis.yScale;
const xScale = this.handler.xAxis.xScale;
const minWidth = 20;
const minHeight = 20;
const startLineX = 0;
const lineStrokeWidth = 1;
const addTimeMarker = this._attr.addTimeMarker;
const times = this._attr.times || [];
let timeMarker;
let div;
let svg;
let width;
let height;
let lines;
let circles;
return function (selection) {
selection.each(function (data) {
let el = this;
const el = this;
let layers = data.series.map(function mapSeries(d) {
let label = d.label;
const layers = data.series.map(function mapSeries(d) {
const label = d.label;
return d.values.map(function mapValues(e, i) {
return {
_input: e,
@ -304,8 +298,8 @@ export default function LineChartFactory(Private) {
});
});
width = elWidth - margin.left - margin.right;
height = elHeight - margin.top - margin.bottom;
const width = elWidth - margin.left - margin.right;
const height = elHeight - margin.top - margin.bottom;
if (width < minWidth || height < minHeight) {
throw new errors.ContainerTooSmall();
}
@ -316,9 +310,9 @@ export default function LineChartFactory(Private) {
}
div = d3.select(el);
const div = d3.select(el);
svg = div.append('svg')
const svg = div.append('svg')
.attr('width', width + margin.left + margin.right)
.attr('height', height + margin.top + margin.bottom)
.append('g')
@ -326,13 +320,13 @@ export default function LineChartFactory(Private) {
self.addClipPath(svg, width, height);
if (self._attr.drawLinesBetweenPoints) {
lines = self.addLines(svg, data.series);
self.addLines(svg, data.series);
}
circles = self.addCircles(svg, layers);
const circles = self.addCircles(svg, layers);
self.addCircleEvents(circles, svg);
self.createEndZones(svg);
let scale = (scaleType === 'log') ? yScale(1) : yScale(0);
const scale = (scaleType === 'log') ? yScale(1) : yScale(0);
if (scale) {
svg.append('line')
.attr('class', 'base-line')

View file

@ -36,7 +36,7 @@ export default function MarkerFactory() {
// ensure we only ever create 1 legend
if (this._legend) return;
let self = this;
const self = this;
// create the legend control, keep a reference
self._legend = L.control({position: 'bottomright'});
@ -44,17 +44,17 @@ export default function MarkerFactory() {
self._legend.onAdd = function () {
// creates all the neccessary DOM elements for the control, adds listeners
// on relevant map events, and returns the element containing the control
let $div = $('<div>').addClass('tilemap-legend');
const $div = $('<div>').addClass('tilemap-legend');
_.each(self._legendColors, function (color, i) {
let labelText = self._legendQuantizer
const labelText = self._legendQuantizer
.invertExtent(color)
.map(self._valueFormatter)
.join('  ');
let label = $('<div>').text(labelText);
const label = $('<div>').text(labelText);
let icon = $('<i>').css({
const icon = $('<i>').css({
background: color,
'border-color': self.darkerColor(color)
});
@ -77,7 +77,7 @@ export default function MarkerFactory() {
* @return {Object}
*/
applyShadingStyle(value) {
let color = this._legendQuantizer(value);
const color = this._legendQuantizer(value);
return {
fillColor: color,
@ -97,11 +97,11 @@ export default function MarkerFactory() {
* return {undefined}
*/
bindPopup(feature, layer) {
let self = this;
const self = this;
let popup = layer.on({
const popup = layer.on({
mouseover: function (e) {
let layer = e.target;
const layer = e.target;
// bring layer to front if not older browser
if (!L.Browser.ie && !L.Browser.opera) {
layer.bringToFront();
@ -131,7 +131,7 @@ export default function MarkerFactory() {
};
destroy() {
let self = this;
const self = this;
// remove popups
self.popups = self.popups.filter(function (popup) {
@ -161,13 +161,13 @@ export default function MarkerFactory() {
* @param options {Object} Options to pass to L.geoJson
*/
_createMarkerGroup(options) {
let self = this;
let defaultOptions = {
const self = this;
const defaultOptions = {
onEachFeature: function (feature, layer) {
self.bindPopup(feature, layer);
},
style: function (feature) {
let value = _.get(feature, 'properties.value');
const value = _.get(feature, 'properties.value');
return self.applyShadingStyle(value);
},
filter: self._filterToMapBounds()
@ -185,10 +185,10 @@ export default function MarkerFactory() {
* @return {boolean}
*/
_filterToMapBounds() {
let self = this;
const self = this;
return function (feature) {
let mapBounds = self.map.getBounds();
let bucketRectBounds = _.get(feature, 'properties.rectangle');
const mapBounds = self.map.getBounds();
const bucketRectBounds = _.get(feature, 'properties.rectangle');
return mapBounds.intersects(bucketRectBounds);
};
};
@ -204,11 +204,11 @@ export default function MarkerFactory() {
*/
_showTooltip(feature, latLng) {
if (!this.map) return;
let lat = _.get(feature, 'geometry.coordinates.1');
let lng = _.get(feature, 'geometry.coordinates.0');
const lat = _.get(feature, 'geometry.coordinates.1');
const lng = _.get(feature, 'geometry.coordinates.0');
latLng = latLng || L.latLng(lat, lng);
let content = this._tooltipFormatter(feature);
const content = this._tooltipFormatter(feature);
if (!content) return;
this._createTooltip(content, latLng);
@ -240,15 +240,15 @@ export default function MarkerFactory() {
* return {undefined}
*/
quantizeLegendColors() {
let min = _.get(this.geoJson, 'properties.allmin', 0);
let max = _.get(this.geoJson, 'properties.allmax', 1);
let quantizeDomain = (min !== max) ? [min, max] : d3.scale.quantize().domain();
const min = _.get(this.geoJson, 'properties.allmin', 0);
const max = _.get(this.geoJson, 'properties.allmax', 1);
const quantizeDomain = (min !== max) ? [min, max] : d3.scale.quantize().domain();
let reds1 = ['#ff6128'];
let reds3 = ['#fecc5c', '#fd8d3c', '#e31a1c'];
let reds5 = ['#fed976', '#feb24c', '#fd8d3c', '#f03b20', '#bd0026'];
let bottomCutoff = 2;
let middleCutoff = 24;
const reds1 = ['#ff6128'];
const reds3 = ['#fecc5c', '#fd8d3c', '#e31a1c'];
const reds5 = ['#fed976', '#feb24c', '#fd8d3c', '#f03b20', '#bd0026'];
const bottomCutoff = 2;
const middleCutoff = 24;
if (max - min <= bottomCutoff) {
this._legendColors = reds1;

View file

@ -3,7 +3,7 @@ import L from 'leaflet';
import VislibVisualizationsMarkerTypesBaseMarkerProvider from 'ui/vislib/visualizations/marker_types/base_marker';
export default function GeohashGridMarkerFactory(Private) {
let BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
const BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
/**
* Map overlay: rectangles that show the geohash grid bounds
@ -17,15 +17,15 @@ export default function GeohashGridMarkerFactory(Private) {
super(map, geoJson, params);
// super min and max from all chart data
let min = this.geoJson.properties.allmin;
let max = this.geoJson.properties.allmax;
const min = this.geoJson.properties.allmin;
const max = this.geoJson.properties.allmax;
this._createMarkerGroup({
pointToLayer: function (feature, latlng) {
let geohashRect = feature.properties.rectangle;
const geohashRect = feature.properties.rectangle;
// get bounds from northEast[3] and southWest[1]
// corners in geohash rectangle
let corners = [
const corners = [
[geohashRect[3][0], geohashRect[3][1]],
[geohashRect[1][0], geohashRect[1][1]]
];

View file

@ -4,7 +4,7 @@ import L from 'leaflet';
import VislibVisualizationsMarkerTypesBaseMarkerProvider from 'ui/vislib/visualizations/marker_types/base_marker';
export default function HeatmapMarkerFactory(Private) {
let BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
const BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
/**
* Map overlay: canvas layer with leaflet.heat plugin
@ -39,8 +39,8 @@ export default function HeatmapMarkerFactory(Private) {
}
_createMarkerGroup(options) {
let max = _.get(this.geoJson, 'properties.allmax');
let points = this._dataToHeatArray(max);
const max = _.get(this.geoJson, 'properties.allmax');
const points = this._dataToHeatArray(max);
this._markerGroup = L.heatLayer(points, options);
this._fixTooltips();
@ -48,8 +48,8 @@ export default function HeatmapMarkerFactory(Private) {
};
_fixTooltips() {
let self = this;
let debouncedMouseMoveLocation = _.debounce(mouseMoveLocation.bind(this), 15, {
const self = this;
const debouncedMouseMoveLocation = _.debounce(mouseMoveLocation.bind(this), 15, {
'leading': true,
'trailing': false
});
@ -69,7 +69,7 @@ export default function HeatmapMarkerFactory(Private) {
}
function mouseMoveLocation(e) {
let latlng = e.latlng;
const latlng = e.latlng;
this.map.closePopup();
@ -81,7 +81,7 @@ export default function HeatmapMarkerFactory(Private) {
}
// find nearest feature to event latlng
let feature = this._nearestFeature(latlng);
const feature = this._nearestFeature(latlng);
// show tooltip if close enough to event latlng
if (this._tooltipProximity(latlng, feature)) {
@ -98,7 +98,7 @@ export default function HeatmapMarkerFactory(Private) {
* @return nearestPoint {Leaflet latLng}
*/
_nearestFeature(latLng) {
let self = this;
const self = this;
let nearest;
if (latLng.lng < -180 || latLng.lng > 180) {
@ -106,8 +106,8 @@ export default function HeatmapMarkerFactory(Private) {
}
_.reduce(this.geoJson.features, function (distance, feature) {
let featureLatLng = self._getLatLng(feature);
let dist = latLng.distanceTo(featureLatLng);
const featureLatLng = self._getLatLng(feature);
const dist = latLng.distanceTo(featureLatLng);
if (dist < distance) {
nearest = feature;
@ -132,30 +132,30 @@ export default function HeatmapMarkerFactory(Private) {
if (!feature) return;
let showTip = false;
let featureLatLng = this._getLatLng(feature);
const featureLatLng = this._getLatLng(feature);
// zoomScale takes map zoom and returns proximity value for tooltip display
// domain (input values) is map zoom (min 1 and max 18)
// range (output values) is distance in meters
// used to compare proximity of event latlng to feature latlng
let zoomScale = d3.scale.linear()
const zoomScale = d3.scale.linear()
.domain([1, 4, 7, 10, 13, 16, 18])
.range([1000000, 300000, 100000, 15000, 2000, 150, 50]);
let proximity = zoomScale(this.map.getZoom());
let distance = latlng.distanceTo(featureLatLng);
const proximity = zoomScale(this.map.getZoom());
const distance = latlng.distanceTo(featureLatLng);
// maxLngDif is max difference in longitudes
// to prevent feature tooltip from appearing 360°
// away from event latlng
let maxLngDif = 40;
let lngDif = Math.abs(latlng.lng - featureLatLng.lng);
const maxLngDif = 40;
const lngDif = Math.abs(latlng.lng - featureLatLng.lng);
if (distance < proximity && lngDif < maxLngDif) {
showTip = true;
}
let testScale = d3.scale.pow().exponent(0.2)
const testScale = d3.scale.pow().exponent(0.2)
.domain([1, 18])
.range([1500000, 50]);
return showTip;
@ -172,12 +172,12 @@ export default function HeatmapMarkerFactory(Private) {
* @return {Array}
*/
_dataToHeatArray(max) {
let self = this;
let mapData = this.geoJson;
const self = this;
const mapData = this.geoJson;
return this.geoJson.features.map(function (feature) {
let lat = feature.properties.center[0];
let lng = feature.properties.center[1];
const lat = feature.properties.center[0];
const lng = feature.properties.center[1];
let heatIntensity;
if (!self._attr.heatNormalizeData) {

View file

@ -3,7 +3,7 @@ import L from 'leaflet';
import VislibVisualizationsMarkerTypesBaseMarkerProvider from 'ui/vislib/visualizations/marker_types/base_marker';
export default function ScaledCircleMarkerFactory(Private) {
let BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
const BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
/**
* Map overlay: circle markers that are scaled to illustrate values
@ -17,12 +17,12 @@ export default function ScaledCircleMarkerFactory(Private) {
super(map, geoJson, params);
// multiplier to reduce size of all circles
let scaleFactor = 0.6;
const scaleFactor = 0.6;
this._createMarkerGroup({
pointToLayer: (feature, latlng) => {
let value = feature.properties.value;
let scaledRadius = this._radiusScale(value) * scaleFactor;
const value = feature.properties.value;
const scaledRadius = this._radiusScale(value) * scaleFactor;
return L.circleMarker(latlng).setRadius(scaledRadius);
}
});
@ -37,17 +37,17 @@ export default function ScaledCircleMarkerFactory(Private) {
* @return {Number}
*/
_radiusScale(value) {
let precisionBiasBase = 5;
let precisionBiasNumerator = 200;
let zoom = this.map.getZoom();
let maxValue = this.geoJson.properties.allmax;
let precision = _.max(this.geoJson.features.map(function (feature) {
const precisionBiasBase = 5;
const precisionBiasNumerator = 200;
const zoom = this.map.getZoom();
const maxValue = this.geoJson.properties.allmax;
const precision = _.max(this.geoJson.features.map(function (feature) {
return String(feature.properties.geohash).length;
}));
let pct = Math.abs(value) / Math.abs(maxValue);
let zoomRadius = 0.5 * Math.pow(2, zoom);
let precisionScale = precisionBiasNumerator / Math.pow(precisionBiasBase, precision);
const pct = Math.abs(value) / Math.abs(maxValue);
const zoomRadius = 0.5 * Math.pow(2, zoom);
const precisionScale = precisionBiasNumerator / Math.pow(precisionBiasBase, precision);
// square root value percentage
return Math.pow(pct, 0.5) * zoomRadius * precisionScale;

View file

@ -3,7 +3,7 @@ import L from 'leaflet';
import VislibVisualizationsMarkerTypesBaseMarkerProvider from 'ui/vislib/visualizations/marker_types/base_marker';
export default function ShadedCircleMarkerFactory(Private) {
let BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
const BaseMarker = Private(VislibVisualizationsMarkerTypesBaseMarkerProvider);
/**
* Map overlay: circle markers that are shaded to illustrate values
@ -17,15 +17,15 @@ export default function ShadedCircleMarkerFactory(Private) {
super(map, geoJson, params);
// super min and max from all chart data
let min = this.geoJson.properties.allmin;
let max = this.geoJson.properties.allmax;
const min = this.geoJson.properties.allmin;
const max = this.geoJson.properties.allmax;
// multiplier to reduce size of all circles
let scaleFactor = 0.8;
const scaleFactor = 0.8;
this._createMarkerGroup({
pointToLayer: (feature, latlng) => {
let radius = this._geohashMinDistance(feature) * scaleFactor;
const radius = this._geohashMinDistance(feature) * scaleFactor;
return L.circle(latlng, radius);
}
});
@ -41,8 +41,8 @@ export default function ShadedCircleMarkerFactory(Private) {
* @return {Number}
*/
_geohashMinDistance(feature) {
let centerPoint = _.get(feature, 'properties.center');
let geohashRect = _.get(feature, 'properties.rectangle');
const centerPoint = _.get(feature, 'properties.center');
const geohashRect = _.get(feature, 'properties.rectangle');
// centerPoint is an array of [lat, lng]
// geohashRect is the 4 corners of the geoHash rectangle
@ -50,16 +50,16 @@ export default function ShadedCircleMarkerFactory(Private) {
// clockwise, each value being an array of [lat, lng]
// center lat and southeast lng
let east = L.latLng([centerPoint[0], geohashRect[2][1]]);
const east = L.latLng([centerPoint[0], geohashRect[2][1]]);
// southwest lat and center lng
let north = L.latLng([geohashRect[3][0], centerPoint[1]]);
const north = L.latLng([geohashRect[3][0], centerPoint[1]]);
// get latLng of geohash center point
let center = L.latLng([centerPoint[0], centerPoint[1]]);
const center = L.latLng([centerPoint[0], centerPoint[1]]);
// get smallest radius at center of geohash grid rectangle
let eastRadius = Math.floor(center.distanceTo(east));
let northRadius = Math.floor(center.distanceTo(north));
const eastRadius = Math.floor(center.distanceTo(east));
const northRadius = Math.floor(center.distanceTo(north));
return _.min([eastRadius, northRadius]);
};
}

View file

@ -5,7 +5,7 @@ import errors from 'ui/errors';
import VislibVisualizationsChartProvider from 'ui/vislib/visualizations/_chart';
export default function PieChartFactory(Private) {
let Chart = Private(VislibVisualizationsChartProvider);
const Chart = Private(VislibVisualizationsChartProvider);
/**
* Pie Chart Visualization
@ -21,7 +21,7 @@ export default function PieChartFactory(Private) {
constructor(handler, chartEl, chartData) {
super(handler, chartEl, chartData);
let charts = this.handler.data.getVisData();
const charts = this.handler.data.getVisData();
this._validatePieData(charts);
this._attr = _.defaults(handler._attr || {}, {
@ -34,7 +34,7 @@ export default function PieChartFactory(Private) {
* If so, an error is thrown.
*/
_validatePieData(charts) {
let isAllZeros = charts.every(function (chart) {
const isAllZeros = charts.every(function (chart) {
return chart.slices.children.length === 0;
});
@ -51,7 +51,7 @@ export default function PieChartFactory(Private) {
* @returns {D3.Selection} SVG path with event listeners attached
*/
addPathEvents(element) {
let events = this.events;
const events = this.events;
return element
.call(events.addHoverEvent())
@ -63,11 +63,11 @@ export default function PieChartFactory(Private) {
(function assignPercentages(slices) {
if (slices.sumOfChildren != null) return;
let parent = slices;
let children = parent.children;
let parentPercent = parent.percentOfParent;
const parent = slices;
const children = parent.children;
const parentPercent = parent.percentOfParent;
let sum = parent.sumOfChildren = Math.abs(children.reduce(function (sum, child) {
const sum = parent.sumOfChildren = Math.abs(children.reduce(function (sum, child) {
return sum + Math.abs(child.size);
}, 0));
@ -97,24 +97,24 @@ export default function PieChartFactory(Private) {
* @returns {D3.Selection} SVG with paths attached
*/
addPath(width, height, svg, slices) {
let self = this;
let marginFactor = 0.95;
let isDonut = self._attr.isDonut;
let radius = (Math.min(width, height) / 2) * marginFactor;
let color = self.handler.data.getPieColorFunc();
let tooltip = self.tooltip;
let isTooltip = self._attr.addTooltip;
const self = this;
const marginFactor = 0.95;
const isDonut = self._attr.isDonut;
const radius = (Math.min(width, height) / 2) * marginFactor;
const color = self.handler.data.getPieColorFunc();
const tooltip = self.tooltip;
const isTooltip = self._attr.addTooltip;
let partition = d3.layout.partition()
const partition = d3.layout.partition()
.sort(null)
.value(function (d) {
return d.percentOfParent * 100;
});
let x = d3.scale.linear()
const x = d3.scale.linear()
.range([0, 2 * Math.PI]);
let y = d3.scale.sqrt()
const y = d3.scale.sqrt()
.range([0, radius]);
let arc = d3.svg.arc()
const arc = d3.svg.arc()
.startAngle(function (d) {
return Math.max(0, Math.min(2 * Math.PI, x(d.x)));
})
@ -134,7 +134,7 @@ export default function PieChartFactory(Private) {
return Math.max(0, y(d.y + d.dy));
});
let path = svg
const path = svg
.datum(slices)
.selectAll('path')
.data(partition.nodes)
@ -164,8 +164,8 @@ export default function PieChartFactory(Private) {
};
_validateContainerSize(width, height) {
let minWidth = 20;
let minHeight = 20;
const minWidth = 20;
const minHeight = 20;
if (width <= minWidth || height <= minHeight) {
throw new errors.ContainerTooSmall();
@ -179,28 +179,27 @@ export default function PieChartFactory(Private) {
* @returns {Function} Creates the pie chart
*/
draw() {
let self = this;
const self = this;
return function (selection) {
selection.each(function (data) {
let slices = data.slices;
let div = d3.select(this);
let width = $(this).width();
let height = $(this).height();
let path;
const slices = data.slices;
const div = d3.select(this);
const width = $(this).width();
const height = $(this).height();
if (!slices.children.length) return;
self.convertToPercentage(slices);
self._validateContainerSize(width, height);
let svg = div.append('svg')
const svg = div.append('svg')
.attr('width', width)
.attr('height', height)
.append('g')
.attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');
path = self.addPath(width, height, svg, slices);
const path = self.addPath(width, height, svg, slices);
self.addPathEvents(path);
return svg;

View file

@ -5,8 +5,8 @@ import VislibVisualizationsChartProvider from 'ui/vislib/visualizations/_chart';
import VislibVisualizationsMapProvider from 'ui/vislib/visualizations/_map';
export default function TileMapFactory(Private) {
let Chart = Private(VislibVisualizationsChartProvider);
let TileMapMap = Private(VislibVisualizationsMapProvider);
const Chart = Private(VislibVisualizationsChartProvider);
const TileMapMap = Private(VislibVisualizationsMapProvider);
/**
* Tile Map Visualization: renders maps
@ -37,7 +37,7 @@ export default function TileMapFactory(Private) {
* @return {Function} - function to add a map to a selection
*/
draw() {
let self = this;
const self = this;
// clean up old maps
self.destroy();
@ -82,7 +82,7 @@ export default function TileMapFactory(Private) {
*/
_appendGeoExtents() {
// add allmin and allmax to geoJson
let geoMinMax = this.handler.data.getGeoExtents();
const geoMinMax = this.handler.data.getGeoExtents();
this.geoJson.properties.allmin = geoMinMax.min;
this.geoJson.properties.allmax = geoMinMax.max;
};

View file

@ -4,7 +4,7 @@ export default function TimeMarkerFactory() {
class TimeMarker {
constructor(times, xScale, height) {
let currentTimeArr = [{
const currentTimeArr = [{
'time': new Date().getTime(),
'class': 'time-marker',
'color': '#c80000',
@ -26,14 +26,14 @@ export default function TimeMarkerFactory() {
}
_isTimeBasedChart(selection) {
let data = selection.data();
const data = selection.data();
return data.every(function (datum) {
return (datum.ordered && datum.ordered.date);
});
};
render(selection) {
let self = this;
const self = this;
// return if not time based chart
if (!self._isTimeBasedChart(selection)) return;