-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
Initial visualizations plugin. #35625
Changes from all commits
b9e2169
3a1919d
34a50ca
fdd1486
3ffed8e
761ca4f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
* 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 { resolve } from 'path'; | ||
import { Legacy } from '../../../../kibana'; | ||
|
||
// eslint-disable-next-line import/no-default-export | ||
export default function VisualizationsPlugin(kibana: any) { | ||
const config: Legacy.PluginSpecOptions = { | ||
id: 'visualizations', | ||
require: ['data'], | ||
publicDir: resolve(__dirname, 'public'), | ||
config: (Joi: any) => { | ||
return Joi.object({ | ||
enabled: Joi.boolean().default(true), | ||
}).default(); | ||
}, | ||
init: (server: Legacy.Server) => ({}), | ||
}; | ||
|
||
return new kibana.Plugin(config); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"name": "visualizations", | ||
"version": "kibana" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* 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. | ||
*/ | ||
|
||
// @ts-ignore | ||
import { VisFiltersProvider, createFilter } from 'ui/vis/vis_filters'; | ||
|
||
/** | ||
* Vis Filters Service | ||
* | ||
* @internal | ||
*/ | ||
export class FiltersService { | ||
public setup() { | ||
return { | ||
VisFiltersProvider, | ||
createFilter, | ||
}; | ||
} | ||
|
||
public stop() { | ||
// nothing to do here yet | ||
} | ||
} | ||
|
||
/** @public */ | ||
export type FiltersSetup = ReturnType<FiltersService['setup']>; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* | ||
* 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. | ||
*/ | ||
|
||
export { FiltersService, FiltersSetup } from './filters_service'; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/* | ||
* 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 { FiltersService, FiltersSetup } from './filters'; | ||
import { TypesService, TypesSetup } from './types'; | ||
|
||
class VisualizationsPlugin { | ||
private readonly filters: FiltersService; | ||
private readonly types: TypesService; | ||
|
||
constructor() { | ||
this.filters = new FiltersService(); | ||
this.types = new TypesService(); | ||
} | ||
|
||
public setup() { | ||
return { | ||
filters: this.filters.setup(), | ||
types: this.types.setup(), | ||
}; | ||
} | ||
|
||
public stop() { | ||
this.filters.stop(); | ||
this.types.stop(); | ||
} | ||
} | ||
|
||
/** | ||
* We export visualizations here so that users importing from 'plugins/visualizations' | ||
* will automatically receive the response value of the `setup` contract, mimicking | ||
* the data that will eventually be injected by the new platform. | ||
*/ | ||
export const visualizations = new VisualizationsPlugin().setup(); | ||
|
||
/** @public */ | ||
export interface VisualizationsSetup { | ||
filters: FiltersSetup; | ||
types: TypesSetup; | ||
} | ||
|
||
/** @public types */ | ||
export { | ||
Vis, | ||
VisParams, | ||
VisProvider, | ||
VisState, | ||
VisualizationController, | ||
VisType, | ||
VisTypesRegistry, | ||
Status, | ||
} from './types'; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/* | ||
* 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. | ||
*/ | ||
|
||
export { | ||
TypesService, | ||
// types | ||
TypesSetup, | ||
Vis, | ||
VisParams, | ||
VisProvider, | ||
VisState, | ||
VisualizationController, | ||
VisType, | ||
VisTypesRegistry, | ||
Status, | ||
} from './types_service'; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/* | ||
* 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. | ||
*/ | ||
|
||
// @ts-ignore | ||
import { defaultFeedbackMessage } from 'ui/vis/default_feedback_message'; | ||
// @ts-ignore | ||
import { VisProvider as Vis } from 'ui/vis/index.js'; | ||
// @ts-ignore | ||
import { VisFactoryProvider as VisFactory } from 'ui/vis/vis_factory'; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @ppisljar Based on your comments I renamed If you think it will be confusing to temporarily have something exposed as |
||
import { VisTypesRegistryProvider } from 'ui/registry/vis_types'; | ||
|
||
/** | ||
* Vis Types Service | ||
* | ||
* @internal | ||
*/ | ||
export class TypesService { | ||
public setup() { | ||
return { | ||
Vis, | ||
VisFactory, | ||
VisTypesRegistryProvider, | ||
lukeelmers marked this conversation as resolved.
Show resolved
Hide resolved
|
||
defaultFeedbackMessage, // make default in base vis type, or move? | ||
}; | ||
} | ||
|
||
public stop() { | ||
// nothing to do here yet | ||
} | ||
} | ||
|
||
/** @public */ | ||
export type TypesSetup = ReturnType<TypesService['setup']>; | ||
|
||
/** @public types */ | ||
import * as types from 'ui/vis/vis'; | ||
export type Vis = types.Vis; | ||
export type VisParams = types.VisParams; | ||
export type VisProvider = types.VisProvider; | ||
export type VisState = types.VisState; | ||
export { VisualizationController, VisType } from 'ui/vis/vis_types/vis_type'; | ||
export { VisTypesRegistry } from 'ui/registry/vis_types'; | ||
export { Status } from 'ui/vis/update_status'; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* | ||
* 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. | ||
*/ | ||
|
||
export { VisFiltersProvider, createFilter } from './vis_filters'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the naming got me very confused :)
we have a VisTypesService under vis_types but here we are just re-exporting types from vis_types :) and the import on top is just importing the service and setup type
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah we are exporting all of the types for all services at the top level here. So for simplicity I'm just directly exporting them. However, for the setup type, we need to compose that into the
VisualizationsSetup
interface, and it doesn't really need to be exported by itself.