mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[ui/public/utils] Delete unused base_object & find_by_param (#52500)
Closes #51854
This commit is contained in:
parent
1013271c85
commit
6a8b2a25c8
7 changed files with 194 additions and 321 deletions
|
@ -316,6 +316,27 @@ export function StateProvider(Private, $rootScope, $location, stateManagementCon
|
|||
return this._urlParam;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an object with each property name and value corresponding to the entries in this collection
|
||||
* excluding fields started from '$', '_' and all methods
|
||||
*
|
||||
* @return {object}
|
||||
*/
|
||||
State.prototype.toObject = function () {
|
||||
return _.omit(this, (value, key) => {
|
||||
return key.charAt(0) === '$' || key.charAt(0) === '_' || _.isFunction(value);
|
||||
});
|
||||
};
|
||||
|
||||
/** Alias for method 'toObject'
|
||||
*
|
||||
* @obsolete Please use 'toObject' method instead
|
||||
* @return {object}
|
||||
*/
|
||||
State.prototype.toJSON = function () {
|
||||
return this.toObject();
|
||||
};
|
||||
|
||||
return State;
|
||||
|
||||
}
|
||||
|
|
|
@ -1,57 +0,0 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import expect from '@kbn/expect';
|
||||
import ngMock from 'ng_mock';
|
||||
import '../../private';
|
||||
|
||||
import { BaseObject } from '../base_object';
|
||||
|
||||
describe('Base Object', function () {
|
||||
beforeEach(ngMock.module('kibana'));
|
||||
|
||||
it('should take an inital set of values', function () {
|
||||
const baseObject = new BaseObject({ message: 'test' });
|
||||
expect(baseObject).to.have.property('message', 'test');
|
||||
});
|
||||
|
||||
it('should serialize attributes to RISON', function () {
|
||||
const baseObject = new BaseObject();
|
||||
baseObject.message = 'Testing... 1234';
|
||||
const rison = baseObject.toRISON();
|
||||
expect(rison).to.equal('(message:\'Testing... 1234\')');
|
||||
});
|
||||
|
||||
it('should not serialize $$attributes to RISON', function () {
|
||||
const baseObject = new BaseObject();
|
||||
baseObject.$$attributes = { foo: 'bar' };
|
||||
baseObject.message = 'Testing... 1234';
|
||||
const rison = baseObject.toRISON();
|
||||
expect(rison).to.equal('(message:\'Testing... 1234\')');
|
||||
});
|
||||
|
||||
it('should serialize attributes for JSON', function () {
|
||||
const baseObject = new BaseObject();
|
||||
baseObject.message = 'Testing... 1234';
|
||||
baseObject._private = 'foo';
|
||||
baseObject.$private = 'stuff';
|
||||
const json = JSON.stringify(baseObject);
|
||||
expect(json).to.equal('{"message":"Testing... 1234"}');
|
||||
});
|
||||
});
|
|
@ -1,175 +0,0 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import { SimpleEmitter } from '../simple_emitter';
|
||||
import expect from '@kbn/expect';
|
||||
import sinon from 'sinon';
|
||||
|
||||
describe('SimpleEmitter class', function () {
|
||||
let emitter;
|
||||
|
||||
beforeEach(function () {
|
||||
emitter = new SimpleEmitter();
|
||||
});
|
||||
|
||||
it('constructs an event emitter', function () {
|
||||
expect(emitter).to.have.property('on');
|
||||
expect(emitter).to.have.property('off');
|
||||
expect(emitter).to.have.property('emit');
|
||||
expect(emitter).to.have.property('listenerCount');
|
||||
expect(emitter).to.have.property('removeAllListeners');
|
||||
});
|
||||
|
||||
describe('#listenerCount', function () {
|
||||
it('counts all event listeners without any arg', function () {
|
||||
expect(emitter.listenerCount()).to.be(0);
|
||||
emitter.on('a', function () {});
|
||||
expect(emitter.listenerCount()).to.be(1);
|
||||
emitter.on('b', function () {});
|
||||
expect(emitter.listenerCount()).to.be(2);
|
||||
});
|
||||
|
||||
it('limits to the event that is passed in', function () {
|
||||
expect(emitter.listenerCount()).to.be(0);
|
||||
emitter.on('a', function () {});
|
||||
expect(emitter.listenerCount('a')).to.be(1);
|
||||
emitter.on('a', function () {});
|
||||
expect(emitter.listenerCount('a')).to.be(2);
|
||||
emitter.on('b', function () {});
|
||||
expect(emitter.listenerCount('a')).to.be(2);
|
||||
expect(emitter.listenerCount('b')).to.be(1);
|
||||
expect(emitter.listenerCount()).to.be(3);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#on', function () {
|
||||
it('registers a handler', function () {
|
||||
const handler = sinon.stub();
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount('a')).to.be(1);
|
||||
|
||||
expect(handler.callCount).to.be(0);
|
||||
emitter.emit('a');
|
||||
expect(handler.callCount).to.be(1);
|
||||
});
|
||||
|
||||
it('allows multiple event handlers for the same event', function () {
|
||||
emitter.on('a', function () {});
|
||||
emitter.on('a', function () {});
|
||||
expect(emitter.listenerCount('a')).to.be(2);
|
||||
});
|
||||
|
||||
it('allows the same function to be registered multiple times', function () {
|
||||
const handler = function () {};
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount()).to.be(1);
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount()).to.be(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#off', function () {
|
||||
it('removes a listener if it was registered', function () {
|
||||
const handler = sinon.stub();
|
||||
expect(emitter.listenerCount()).to.be(0);
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount('a')).to.be(1);
|
||||
emitter.off('a', handler);
|
||||
expect(emitter.listenerCount('a')).to.be(0);
|
||||
});
|
||||
|
||||
it('clears all listeners if no handler is passed', function () {
|
||||
emitter.on('a', function () {});
|
||||
emitter.on('a', function () {});
|
||||
expect(emitter.listenerCount()).to.be(2);
|
||||
emitter.off('a');
|
||||
expect(emitter.listenerCount()).to.be(0);
|
||||
});
|
||||
|
||||
it('does not mind if the listener is not registered', function () {
|
||||
emitter.off('a', function () {});
|
||||
});
|
||||
|
||||
it('does not mind if the event has no listeners', function () {
|
||||
emitter.off('a');
|
||||
});
|
||||
});
|
||||
|
||||
describe('#emit', function () {
|
||||
it('calls the handlers in the order they were defined', function () {
|
||||
let i = 0;
|
||||
const incr = function () { return ++i; };
|
||||
const one = sinon.spy(incr);
|
||||
const two = sinon.spy(incr);
|
||||
const three = sinon.spy(incr);
|
||||
const four = sinon.spy(incr);
|
||||
|
||||
emitter
|
||||
.on('a', one)
|
||||
.on('a', two)
|
||||
.on('a', three)
|
||||
.on('a', four)
|
||||
.emit('a');
|
||||
|
||||
expect(one).to.have.property('callCount', 1);
|
||||
expect(one.returned(1)).to.be.ok();
|
||||
|
||||
expect(two).to.have.property('callCount', 1);
|
||||
expect(two.returned(2)).to.be.ok();
|
||||
|
||||
expect(three).to.have.property('callCount', 1);
|
||||
expect(three.returned(3)).to.be.ok();
|
||||
|
||||
expect(four).to.have.property('callCount', 1);
|
||||
expect(four.returned(4)).to.be.ok();
|
||||
});
|
||||
|
||||
it('always emits the handlers that were initially registered', function () {
|
||||
|
||||
const destructive = sinon.spy(function () {
|
||||
emitter.removeAllListeners();
|
||||
expect(emitter.listenerCount()).to.be(0);
|
||||
});
|
||||
const stub = sinon.stub();
|
||||
|
||||
emitter.on('run', destructive).on('run', stub).emit('run');
|
||||
|
||||
expect(destructive).to.have.property('callCount', 1);
|
||||
expect(stub).to.have.property('callCount', 1);
|
||||
});
|
||||
|
||||
it('applies all arguments except the first', function () {
|
||||
emitter
|
||||
.on('a', function (a, b, c) {
|
||||
expect(a).to.be('foo');
|
||||
expect(b).to.be('bar');
|
||||
expect(c).to.be('baz');
|
||||
})
|
||||
.emit('a', 'foo', 'bar', 'baz');
|
||||
});
|
||||
|
||||
it('uses the SimpleEmitter as the this context', function () {
|
||||
emitter
|
||||
.on('a', function () {
|
||||
expect(this).to.be(emitter);
|
||||
})
|
||||
.emit('a');
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,47 +0,0 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import angular from 'angular';
|
||||
import _ from 'lodash';
|
||||
// @ts-ignore -- awaiting https://github.com/w33ble/rison-node/issues/1
|
||||
import rison from 'rison-node';
|
||||
|
||||
export class BaseObject {
|
||||
// Set the attributes or default to an empty object
|
||||
constructor(attributes: Record<string, any> = {}) {
|
||||
// Set the attributes or default to an empty object
|
||||
_.assign(this, attributes);
|
||||
}
|
||||
|
||||
public toObject() {
|
||||
// return just the data.
|
||||
return _.omit(this, (value: any, key: string) => {
|
||||
return key.charAt(0) === '$' || key.charAt(0) === '_' || _.isFunction(value);
|
||||
});
|
||||
}
|
||||
|
||||
public toRISON() {
|
||||
// Use Angular to remove the private vars, and JSON.stringify to serialize
|
||||
return rison.encode(JSON.parse(angular.toJson(this)));
|
||||
}
|
||||
|
||||
public toJSON() {
|
||||
return this.toObject();
|
||||
}
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import _ from 'lodash';
|
||||
|
||||
interface AnyObject {
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
// given an object or array of objects, return the value of the passed param
|
||||
// if the param is missing, return undefined
|
||||
export function findByParam(values: AnyObject | AnyObject[], param: string) {
|
||||
if (Array.isArray(values)) {
|
||||
// point series chart
|
||||
const index = _.findIndex(values, param);
|
||||
if (index === -1) {
|
||||
return;
|
||||
}
|
||||
return values[index][param];
|
||||
}
|
||||
return values[param]; // pie chart
|
||||
}
|
|
@ -18,8 +18,6 @@
|
|||
*/
|
||||
|
||||
import _ from 'lodash';
|
||||
import { BaseObject } from './base_object';
|
||||
import { createLegacyClass } from './legacy_class';
|
||||
|
||||
/**
|
||||
* Simple event emitter class used in the vislib. Calls
|
||||
|
@ -27,7 +25,6 @@ import { createLegacyClass } from './legacy_class';
|
|||
*
|
||||
* @class
|
||||
*/
|
||||
createLegacyClass(SimpleEmitter).inherits(BaseObject);
|
||||
export function SimpleEmitter() {
|
||||
this._listeners = {};
|
||||
}
|
||||
|
@ -134,4 +131,3 @@ SimpleEmitter.prototype.listenerCount = function (name) {
|
|||
return count + _.size(handlers);
|
||||
}, 0);
|
||||
};
|
||||
|
||||
|
|
173
src/legacy/ui/public/utils/simple_emitter.test.js
Normal file
173
src/legacy/ui/public/utils/simple_emitter.test.js
Normal file
|
@ -0,0 +1,173 @@
|
|||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch B.V. licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import { SimpleEmitter } from './simple_emitter';
|
||||
import sinon from 'sinon';
|
||||
|
||||
describe('SimpleEmitter class', () => {
|
||||
let emitter;
|
||||
|
||||
beforeEach(() => {
|
||||
emitter = new SimpleEmitter();
|
||||
});
|
||||
|
||||
it('constructs an event emitter', () => {
|
||||
expect(emitter).toHaveProperty('on');
|
||||
expect(emitter).toHaveProperty('off');
|
||||
expect(emitter).toHaveProperty('emit');
|
||||
expect(emitter).toHaveProperty('listenerCount');
|
||||
expect(emitter).toHaveProperty('removeAllListeners');
|
||||
});
|
||||
|
||||
describe('#listenerCount', () => {
|
||||
it('counts all event listeners without any arg', () => {
|
||||
expect(emitter.listenerCount()).toBe(0);
|
||||
emitter.on('a', () => {});
|
||||
expect(emitter.listenerCount()).toBe(1);
|
||||
emitter.on('b', () => {});
|
||||
expect(emitter.listenerCount()).toBe(2);
|
||||
});
|
||||
|
||||
it('limits to the event that is passed in', () => {
|
||||
expect(emitter.listenerCount()).toBe(0);
|
||||
emitter.on('a', () => {});
|
||||
expect(emitter.listenerCount('a')).toBe(1);
|
||||
emitter.on('a', () => {});
|
||||
expect(emitter.listenerCount('a')).toBe(2);
|
||||
emitter.on('b', () => {});
|
||||
expect(emitter.listenerCount('a')).toBe(2);
|
||||
expect(emitter.listenerCount('b')).toBe(1);
|
||||
expect(emitter.listenerCount()).toBe(3);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#on', () => {
|
||||
it('registers a handler', () => {
|
||||
const handler = sinon.stub();
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount('a')).toBe(1);
|
||||
|
||||
expect(handler.callCount).toBe(0);
|
||||
emitter.emit('a');
|
||||
expect(handler.callCount).toBe(1);
|
||||
});
|
||||
|
||||
it('allows multiple event handlers for the same event', () => {
|
||||
emitter.on('a', () => {});
|
||||
emitter.on('a', () => {});
|
||||
expect(emitter.listenerCount('a')).toBe(2);
|
||||
});
|
||||
|
||||
it('allows the same function to be registered multiple times', () => {
|
||||
const handler = () => {};
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount()).toBe(1);
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount()).toBe(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#off', () => {
|
||||
it('removes a listener if it was registered', () => {
|
||||
const handler = sinon.stub();
|
||||
expect(emitter.listenerCount()).toBe(0);
|
||||
emitter.on('a', handler);
|
||||
expect(emitter.listenerCount('a')).toBe(1);
|
||||
emitter.off('a', handler);
|
||||
expect(emitter.listenerCount('a')).toBe(0);
|
||||
});
|
||||
|
||||
it('clears all listeners if no handler is passed', () => {
|
||||
emitter.on('a', () => {});
|
||||
emitter.on('a', () => {});
|
||||
expect(emitter.listenerCount()).toBe(2);
|
||||
emitter.off('a');
|
||||
expect(emitter.listenerCount()).toBe(0);
|
||||
});
|
||||
|
||||
it('does not mind if the listener is not registered', () => {
|
||||
emitter.off('a', () => {});
|
||||
});
|
||||
|
||||
it('does not mind if the event has no listeners', () => {
|
||||
emitter.off('a');
|
||||
});
|
||||
});
|
||||
|
||||
describe('#emit', () => {
|
||||
it('calls the handlers in the order they were defined', () => {
|
||||
let i = 0;
|
||||
const incr = () => ++i;
|
||||
const one = sinon.spy(incr);
|
||||
const two = sinon.spy(incr);
|
||||
const three = sinon.spy(incr);
|
||||
const four = sinon.spy(incr);
|
||||
|
||||
emitter
|
||||
.on('a', one)
|
||||
.on('a', two)
|
||||
.on('a', three)
|
||||
.on('a', four)
|
||||
.emit('a');
|
||||
|
||||
expect(one).toHaveProperty('callCount', 1);
|
||||
expect(one.returned(1)).toBeDefined();
|
||||
|
||||
expect(two).toHaveProperty('callCount', 1);
|
||||
expect(two.returned(2)).toBeDefined();
|
||||
|
||||
expect(three).toHaveProperty('callCount', 1);
|
||||
expect(three.returned(3)).toBeDefined();
|
||||
|
||||
expect(four).toHaveProperty('callCount', 1);
|
||||
expect(four.returned(4)).toBeDefined();
|
||||
});
|
||||
|
||||
it('always emits the handlers that were initially registered', () => {
|
||||
const destructive = sinon.spy(() => {
|
||||
emitter.removeAllListeners();
|
||||
expect(emitter.listenerCount()).toBe(0);
|
||||
});
|
||||
const stub = sinon.stub();
|
||||
|
||||
emitter.on('run', destructive).on('run', stub).emit('run');
|
||||
|
||||
expect(destructive).toHaveProperty('callCount', 1);
|
||||
expect(stub).toHaveProperty('callCount', 1);
|
||||
});
|
||||
|
||||
it('applies all arguments except the first', () => {
|
||||
emitter
|
||||
.on('a', (a, b, c) => {
|
||||
expect(a).toBe('foo');
|
||||
expect(b).toBe('bar');
|
||||
expect(c).toBe('baz');
|
||||
})
|
||||
.emit('a', 'foo', 'bar', 'baz');
|
||||
});
|
||||
|
||||
it('uses the SimpleEmitter as the this context', () => {
|
||||
emitter
|
||||
.on('a', function () {
|
||||
expect(this).toBe(emitter);
|
||||
})
|
||||
.emit('a');
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue