Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[7.x] [Vis] Move Timelion Vis to vis_type_timelion (#52069) #55174

Merged
merged 1 commit into from
Jan 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ src/legacy/core_plugins/vis_type_vislib/public/vislib/__tests__/lib/fixtures/moc
/src/legacy/core_plugins/console/public/webpackShims
/src/legacy/core_plugins/console/public/tests/webpackShims
/src/legacy/ui/public/utils/decode_geo_hash.js
/src/legacy/core_plugins/timelion/public/webpackShims/jquery.flot.*
/src/legacy/core_plugins/vis_type_timelion/public/webpackShims/jquery.flot.*
/src/core/lib/kbn_internal_native_observable
/packages/*/target
/packages/eslint-config-kibana
Expand Down
2 changes: 1 addition & 1 deletion .i18nrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
"statusPage": "src/legacy/core_plugins/status_page",
"telemetry": "src/legacy/core_plugins/telemetry",
"tileMap": "src/legacy/core_plugins/tile_map",
"timelion": "src/legacy/core_plugins/timelion",
"timelion": ["src/legacy/core_plugins/timelion", "src/legacy/core_plugins/vis_type_timelion"],
"uiActions": "src/plugins/ui_actions",
"visTypeMarkdown": "src/legacy/core_plugins/vis_type_markdown",
"visTypeMetric": "src/legacy/core_plugins/vis_type_metric",
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@
"@kbn/test-subj-selector": "0.2.1",
"@kbn/ui-framework": "1.0.0",
"@kbn/ui-shared-deps": "1.0.0",
"@types/flot": "^0.0.31",
"@types/json-stable-stringify": "^1.0.32",
"@types/lodash.clonedeep": "^4.5.4",
"@types/node-forge": "^0.9.0",
Expand Down
8 changes: 8 additions & 0 deletions renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,14 @@
'@types/fetch-mock',
],
},
{
groupSlug: 'flot',
groupName: 'flot related packages',
packageNames: [
'flot',
'@types/flot',
],
},
{
groupSlug: 'getopts',
groupName: 'getopts related packages',
Expand Down
2 changes: 0 additions & 2 deletions src/legacy/core_plugins/timelion/public/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ document.title = 'Timelion - Kibana';

const app = require('ui/modules').get('apps/timelion', []);

require('./vis');

require('ui/routes').enable();

require('ui/routes').when('/:id?', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@

import expect from '@kbn/expect';
import PEG from 'pegjs';
import grammar from 'raw-loader!../../chain.peg';
import grammar from 'raw-loader!../../../../vis_type_timelion/public/chain.peg';
import { SUGGESTION_TYPE, suggest } from '../timelion_expression_input_helpers';
import { getArgValueSuggestions } from '../../services/arg_value_suggestions';
import { setIndexPatterns, setSavedObjectsClient } from '../../services/plugin_services';
import { getArgValueSuggestions } from '../../../../vis_type_timelion/public/helpers/arg_value_suggestions';
import {
setIndexPatterns,
setSavedObjectsClient,
} from '../../../../vis_type_timelion/public/helpers/plugin_services';

describe('Timelion expression suggestions', () => {
setIndexPatterns({});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
@import './timelion_expression_input';
@import './cells/index';
@import './chart/index';
@import './timelion_expression_suggestions/index';
@import './timelion_help/index';
@import './timelion_interval/index';

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
import _ from 'lodash';
import $ from 'jquery';
import PEG from 'pegjs';
import grammar from 'raw-loader!../chain.peg';
import grammar from 'raw-loader!../../../vis_type_timelion/public/chain.peg';
import timelionExpressionInputTemplate from './timelion_expression_input.html';
import {
SUGGESTION_TYPE,
Expand All @@ -52,7 +52,7 @@ import {
insertAtLocation,
} from './timelion_expression_input_helpers';
import { comboBoxKeyCodes } from '@elastic/eui';
import { getArgValueSuggestions } from '../services/arg_value_suggestions';
import { getArgValueSuggestions } from '../../../vis_type_timelion/public/helpers/arg_value_suggestions';

const Parser = PEG.generate(grammar);

Expand Down
2 changes: 0 additions & 2 deletions src/legacy/core_plugins/timelion/public/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,4 @@
// timChart__legend-isLoading

@import './app';
@import './components/index';
@import './directives/index';
@import './vis/index';
7 changes: 1 addition & 6 deletions src/legacy/core_plugins/timelion/public/legacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,10 @@
import { PluginInitializerContext } from 'kibana/public';
import { npSetup, npStart } from 'ui/new_platform';
import { plugin } from '.';
import { setup as visualizations } from '../../visualizations/public/np_ready/public/legacy';
import { TimelionPluginSetupDependencies } from './plugin';
import { LegacyDependenciesPlugin } from './shim';

const setupPlugins: Readonly<TimelionPluginSetupDependencies> = {
visualizations,
data: npSetup.plugins.data,
expressions: npSetup.plugins.expressions,

// Temporary solution
// It will be removed when all dependent services are migrated to the new platform.
__LEGACY: new LegacyDependenciesPlugin(),
Expand All @@ -37,4 +32,4 @@ const setupPlugins: Readonly<TimelionPluginSetupDependencies> = {
const pluginInstance = plugin({} as PluginInitializerContext);

export const setup = pluginInstance.setup(npSetup.core, setupPlugins);
export const start = pluginInstance.start(npStart.core, npStart.plugins);
export const start = pluginInstance.start(npStart.core);
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,18 @@
* under the License.
*/

import './flot';
import '../../../../vis_type_timelion/public/flot';
import _ from 'lodash';
import $ from 'jquery';
import moment from 'moment-timezone';
import { timefilter } from 'ui/timefilter';
// @ts-ignore
import observeResize from '../../lib/observe_resize';
// @ts-ignore
import { calculateInterval, DEFAULT_TIME_FORMAT } from '../../../common/lib';
import { calculateInterval, DEFAULT_TIME_FORMAT } from '../../../../vis_type_timelion/common/lib';
import { tickFormatters } from '../../../../vis_type_timelion/public/helpers/tick_formatters';
import { TimelionVisualizationDependencies } from '../../plugin';
import { tickFormatters } from '../../services/tick_formatters';
import { xaxisFormatterProvider } from './xaxis_formatter';
import { generateTicksProvider } from './tick_generator';
import { xaxisFormatterProvider } from '../../../../vis_type_timelion/public/helpers/xaxis_formatter';
import { generateTicksProvider } from '../../../../vis_type_timelion/public/helpers/tick_generator';

const DEBOUNCE_DELAY = 50;

Expand Down
29 changes: 2 additions & 27 deletions src/legacy/core_plugins/timelion/public/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,33 +22,19 @@ import {
Plugin,
PluginInitializerContext,
IUiSettingsClient,
HttpSetup,
} from 'kibana/public';
import { Plugin as ExpressionsPlugin } from 'src/plugins/expressions/public';
import { DataPublicPluginSetup, TimefilterContract } from 'src/plugins/data/public';
import { PluginsStart } from 'ui/new_platform/new_platform';
import { VisualizationsSetup } from '../../visualizations/public/np_ready/public';
import { getTimelionVisualizationConfig } from './timelion_vis_fn';
import { getTimelionVisualization } from './vis';
import { getTimeChart } from './panels/timechart/timechart';
import { Panel } from './panels/panel';
import { LegacyDependenciesPlugin, LegacyDependenciesPluginSetup } from './shim';
import { setIndexPatterns, setSavedObjectsClient } from './services/plugin_services';

/** @internal */
export interface TimelionVisualizationDependencies extends LegacyDependenciesPluginSetup {
uiSettings: IUiSettingsClient;
http: HttpSetup;
timelionPanels: Map<string, Panel>;
timefilter: TimefilterContract;
}

/** @internal */
export interface TimelionPluginSetupDependencies {
expressions: ReturnType<ExpressionsPlugin['setup']>;
visualizations: VisualizationsSetup;
data: DataPublicPluginSetup;

// Temporary solution
__LEGACY: LegacyDependenciesPlugin;
}
Expand All @@ -61,24 +47,16 @@ export class TimelionPlugin implements Plugin<Promise<void>, void> {
this.initializerContext = initializerContext;
}

public async setup(
core: CoreSetup,
{ __LEGACY, expressions, visualizations, data }: TimelionPluginSetupDependencies
) {
public async setup(core: CoreSetup, { __LEGACY }: TimelionPluginSetupDependencies) {
const timelionPanels: Map<string, Panel> = new Map();

const dependencies: TimelionVisualizationDependencies = {
uiSettings: core.uiSettings,
http: core.http,
timelionPanels,
timefilter: data.query.timefilter.timefilter,
...(await __LEGACY.setup(core, timelionPanels)),
};

this.registerPanels(dependencies);

expressions.registerFunction(() => getTimelionVisualizationConfig(dependencies));
visualizations.types.createBaseVisualization(getTimelionVisualization(dependencies));
}

private registerPanels(dependencies: TimelionVisualizationDependencies) {
Expand All @@ -87,15 +65,12 @@ export class TimelionPlugin implements Plugin<Promise<void>, void> {
dependencies.timelionPanels.set(timeChartPanel.name, timeChartPanel);
}

public start(core: CoreStart, plugins: PluginsStart) {
public start(core: CoreStart) {
const timelionUiEnabled = core.injectedMetadata.getInjectedVar('timelionUiEnabled');

if (timelionUiEnabled === false) {
core.chrome.navLinks.update('timelion', { hidden: true });
}

setIndexPatterns(plugins.data.indexPatterns);
setSavedObjectsClient(core.savedObjects.client);
}

public stop(): void {}
Expand Down
2 changes: 0 additions & 2 deletions src/legacy/core_plugins/timelion/public/vis/_index.scss

This file was deleted.

3 changes: 0 additions & 3 deletions src/legacy/core_plugins/timelion/public/vis/timelion_vis.html

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import parseSheet from './lib/parse_sheet.js';
import repositionArguments from './lib/reposition_arguments.js';
import indexArguments from './lib/index_arguments.js';
import validateTime from './lib/validate_time.js';
import { calculateInterval } from '../../common/lib';
import { calculateInterval } from '../../../vis_type_timelion/common/lib';

export default function chainRunner(tlConfig) {
const preprocessChain = require('./lib/preprocess_chain')(tlConfig);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ import { i18n } from '@kbn/i18n';
import fs from 'fs';
import path from 'path';
import _ from 'lodash';
const grammar = fs.readFileSync(path.resolve(__dirname, '../../../public/chain.peg'), 'utf8');
const grammar = fs.readFileSync(
path.resolve(__dirname, '../../../../vis_type_timelion/public/chain.peg'),
'utf8'
);
import PEG from 'pegjs';
const Parser = PEG.generate(grammar);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import { i18n } from '@kbn/i18n';
import moment from 'moment';

import toMS from '../../lib/to_milliseconds.js';
import { toMS } from '../../../../vis_type_timelion/common/lib';

export default function validateTime(time, tlConfig) {
const span = moment.duration(moment(time.to).diff(moment(time.from))).asMilliseconds();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* under the License.
*/

import { TimelionFunctionArgs } from '../../../common/types';
import { TimelionFunctionArgs } from '../../../../vis_type_timelion/common/types';

export interface TimelionFunctionInterface extends TimelionFunctionConfig {
chainable: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import Chainable from '../../lib/classes/chainable';
import ses from './lib/ses';
import des from './lib/des';
import tes from './lib/tes';
import toMilliseconds from '../../lib/to_milliseconds';
import { toMS } from '../../../../vis_type_timelion/common/lib';

export default new Chainable('holt', {
args: [
Expand Down Expand Up @@ -125,9 +125,7 @@ export default new Chainable('holt', {
})
);
}
const season = Math.round(
toMilliseconds(args.byName.season) / toMilliseconds(tlConfig.time.interval)
);
const season = Math.round(toMS(args.byName.season) / toMS(tlConfig.time.interval));
points = tes(points, alpha, beta, gamma, season, sample);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import { i18n } from '@kbn/i18n';
import alter from '../lib/alter.js';
import Chainable from '../lib/classes/chainable';
import { DEFAULT_TIME_FORMAT } from '../../common/lib';
import { DEFAULT_TIME_FORMAT } from '../../../vis_type_timelion/common/lib';

export default new Chainable('legend', {
args: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { i18n } from '@kbn/i18n';
import alter from '../lib/alter.js';
import _ from 'lodash';
import Chainable from '../lib/classes/chainable';
import toMS from '../lib/to_milliseconds.js';
import { toMS } from '../../../vis_type_timelion/common/lib';

const validPositions = ['left', 'right', 'center'];
const defaultPosition = 'center';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import { i18n } from '@kbn/i18n';
import alter from '../lib/alter.js';
import toMS from '../lib/to_milliseconds.js';
import { toMS } from '../../../vis_type_timelion/common/lib';
import _ from 'lodash';
import Chainable from '../lib/classes/chainable';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
* under the License.
*/

import toMS from '../../server/lib/to_milliseconds.js';
import { toMS } from './to_milliseconds';

// Totally cribbed this from Kibana 3.
// I bet there's something similar in the Kibana 4 code. Somewhere. Somehow.
function roundInterval(interval) {
function roundInterval(interval: number) {
switch (true) {
case interval <= 500: // <= 0.5s
return '100ms';
Expand Down Expand Up @@ -58,9 +58,24 @@ function roundInterval(interval) {
}
}

export function calculateInterval(from, to, size, interval, min) {
if (interval !== 'auto') return interval;
const dateMathInterval = roundInterval((to - from) / size);
if (toMS(dateMathInterval) < toMS(min)) return min;
export function calculateInterval(
from: number,
to: number,
size: number,
interval: string,
min: string
) {
if (interval !== 'auto') {
return interval;
}

const dateMathInterval: string = roundInterval((to - from) / size);
const dateMathIntervalMs = toMS(dateMathInterval);
const minMs = toMS(min);

if (dateMathIntervalMs !== undefined && minMs !== undefined && dateMathIntervalMs < minMs) {
return min;
}

return dateMathInterval;
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@
*/

export { calculateInterval } from './calculate_interval';
export { toMS } from './to_milliseconds';

export const DEFAULT_TIME_FORMAT = 'MMMM Do YYYY, HH:mm:ss.SSS';
Loading