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

Kibana 6.4.x upgrade #28

Merged
merged 4 commits into from
Oct 30, 2018
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: 0 additions & 2 deletions .eslintrc

This file was deleted.

7 changes: 7 additions & 0 deletions .eslintrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
extends: "@elastic/eslint-config-kibana"

settings:
import/resolver:
'@elastic/eslint-import-resolver-kibana':
rootPackageName: 'datasweet_formula'
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,42 @@ Copy the last installation url for your version of Kibana from the [repository r
```
./bin/kibana-plugin install https://github.com/datasweet-fr/kibana-datasweet-formula/releases/download/version_name/datasweet_formula-X.X.X_kibana-major.minor.patch.zip
```

# Features
Check out what it can do in the [documentation.](http://www.datasweet.fr/datasweet-formula/)

# Development

See the [kibana contributing guide](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md) for instructions setting up your development environment. Once you have completed that, use the following yarn scripts.

- `yarn kbn bootstrap`

Install dependencies and crosslink Kibana and all projects/plugins.

> ***IMPORTANT:*** Use this script instead of `yarn` to install dependencies when switching branches, and re-run it whenever your dependencies change.

- `yarn start`

Start kibana and have it include this plugin. You can pass any arguments that you would normally send to `bin/kibana`

```
yarn start --elasticsearch.url http://localhost:9220
```

- `yarn build`

Build a distributable archive of your plugin.

- `yarn test:browser`

Run the browser tests in a real web browser.

- `yarn test:server`

Run the server tests using mocha.

For more information about any of these commands run `yarn ${task} --help`. For a full list of tasks checkout the `package.json` file, or run `yarn run`.

# Questions ? problems ? suggestions ?
If you find a bug or want to request a feature, please create a [GitHub Issue](https://github.com/datasweet/kibana-datasweet-formula/issues/new).

Expand Down
4 changes: 4 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ if [ -n "$1" ]; then
exit
fi

build 6.4.2
build 6.4.1
build 6.4.0

build 6.3.2
build 6.3.1
build 6.3.0
Expand Down
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export default kibana => new kibana.Plugin({
id: 'datasweet_formula',
name: 'datasweet_formula',
require: ['kibana'],
uiExports: {
hacks: [ 'plugins/datasweet_formula/formula_hack' ]
Expand Down
20 changes: 14 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@
"version": "kibana"
},
"scripts": {
"preinstall": "node ../../kibana/preinstall_check",
"kbn": "node ../../kibana/scripts/kbn",
"lint": "eslint **/*.js",
"start": "plugin-helpers start",
"test:server": "plugin-helpers test:server",
"test:browser": "plugin-helpers test:browser",
"build": "plugin-helpers build",
"postinstall": "plugin-helpers postinstall"
"build": "plugin-helpers build"
},
"repository": {
"type": "git",
Expand All @@ -35,11 +36,18 @@
},
"homepage": "https://github.com/datasweet-fr/kibana-datasweet-formula#readme",
"devDependencies": {
"@elastic/eslint-config-kibana": "0.0.2",
"@elastic/plugin-helpers": "^6.0.0",
"babel-eslint": "4.1.8",
"eslint": "1.10.3",
"@elastic/eslint-config-kibana": "link:../../kibana/packages/eslint-config-kibana",
"@elastic/eslint-import-resolver-kibana": "link:../../kibana/packages/kbn-eslint-import-resolver-kibana",
"@kbn/plugin-helpers": "link:../../kibana/packages/kbn-plugin-helpers",
"babel-eslint": "6.0.0",
"eslint": "^4.16.2",
"eslint-plugin-babel": "^4.1.1",
"eslint-plugin-import": "^2.3.0",
"eslint-plugin-jest": "^21.3.2",
"eslint-plugin-mocha": "1.1.0",
"eslint-plugin-no-unsanitized": "^3.0.2",
"eslint-plugin-prefer-object-spread": "^1.2.1",
"eslint-plugin-react": "^7.0.1",
"expect.js": "^0.3.1"
},
"dependencies": {
Expand Down
8 changes: 4 additions & 4 deletions public/agg_types/formula.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { capitalize, map } from 'lodash';
import { AggTypesMetricsMetricAggTypeProvider } from 'ui/agg_types/metrics/metric_agg_type';
import * as prov from 'ui/registry/field_formats';
import * as magprov from 'ui/agg_types/metrics/metric_agg_type';
import * as ffprov from 'ui/registry/field_formats';
import formulaEditor from './formula.html';
import formatterEditor from './formatter.html';

export function AggTypesMetricsFormulaProvider(Private) {
const MetricAggType = Private(AggTypesMetricsMetricAggTypeProvider);
const fieldFormats = prov.fieldFormats || Private(prov.RegistryFieldFormatsProvider);
const MetricAggType = magprov.MetricAggType || Private(magprov.AggTypesMetricsMetricAggTypeProvider);
const fieldFormats = ffprov.fieldFormats || Private(ffprov.RegistryFieldFormatsProvider);
const defaultValue = null;
const formatters = map(['number', 'percent', 'boolean', 'bytes', 'numeral'], f => {
return { id: f, title: capitalize(f) };
Expand Down
4 changes: 2 additions & 2 deletions public/decorators/agg_types.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { AggTypesIndexProvider } from 'ui/agg_types';
import * as prov from 'ui/agg_types';
import { AggTypesMetricsFormulaProvider } from 'plugins/datasweet_formula/agg_types/formula';

export function decorateAggTypes(Private) {
const AggTypes = Private(AggTypesIndexProvider);
const AggTypes = prov.aggTypes || Private(prov.AggTypesIndexProvider);
const AggFormula = Private(AggTypesMetricsFormulaProvider);
AggFormula.type = 'metrics';
AggTypes.push(AggFormula);
Expand Down
12 changes: 5 additions & 7 deletions public/decorators/lib/apply_column_groups.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@ import { find } from 'lodash';

/**
* Organizes columns in column groups.
* This is used when `vis.isHierarchical()` returns true,
* usually when calculating metrics for every bucket/level.
* This is used when 'Calculate metrics for every bucket/level' option is checked.
* @param {*} columns
* @param {*} isHierarchical
*/

export function applyColumnGroups(columns, isHierarchical) {
if (!isHierarchical) return;
* @param {boolean} metricsForAllBuckets
*/
export function applyColumnGroups(columns, metricsForAllBuckets) {
if (!metricsForAllBuckets) return;

// Do we have datasweet_formula ?
const isUsingFormula = find(columns, 'aggConfig.type.name', 'datasweet_formula') !== undefined;
Expand Down
4 changes: 2 additions & 2 deletions public/decorators/response_writer.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ export function decorateTabbedAggResponseWriterProvider(Private) {
const responseFn = TabbedAggResponseWriter.prototype.response;
TabbedAggResponseWriter.prototype.response = function () {
const resp = responseFn.apply(this, arguments);
const isHierarchical = (!!this.vis ? this.vis.isHierarchical() : this.metricsForAllBuckets);
applyColumnGroups(this.columns, isHierarchical);
const metricsForAllBuckets = (!!this.vis ? this.vis.isHierarchical() : this.metricsForAllBuckets);
applyColumnGroups(this.columns, metricsForAllBuckets);
applyFormulas(this.columns, resp);
applyFormulaTotal(this.columns, resp);
applyHiddenCols(this.columns, resp);
Expand Down
68 changes: 34 additions & 34 deletions public/formula_hack.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,45 +16,45 @@ const appId = chrome.getApp().id;
if (appId === 'kibana' || appId === 'dashboardViewer') {

uiModules
.get('datasweet/formula', ['kibana'])
.run((Private) => {
decorateVisAggConfigProvider(Private);
decorateVisAggConfigsProvider(Private);
decorateAggTypes(Private);
decorateTabbedAggResponseWriterProvider(Private);
});
.get('datasweet/formula', ['kibana'])
.run((Private) => {
decorateVisAggConfigProvider(Private);
decorateVisAggConfigsProvider(Private);
decorateAggTypes(Private);
decorateTabbedAggResponseWriterProvider(Private);
});

uiModules
.get('app/visualize')
.config(($provide) => {
$provide.decorator('visEditorAggDirective', ($delegate) => {
// Original
const linkFn = $delegate[0].link;
const tpl = $delegate[0].template;

// Inject template
$delegate[0].template = tpl
.replace(/<!-- title -->[\s\S]*?<\/span>/m, titleTpl)
.replace('<!-- disable aggregation -->', hiddenTpl);

// Inject new function in scope
$delegate[0].compile = function (tElem, tAttr) {
return function newLinkFn($scope, $el, attrs, kbnForm) {
linkFn.apply($delegate[0], arguments);

$scope.canHide = function (aggregation) {
const metricCount = reduce($scope.group, function (count, agg) {
return (agg.schema.name === aggregation.schema.name && !agg.hidden) ? ++count : count;
}, 0);
return metricCount > 1;
.get('app/visualize')
.config(($provide) => {
$provide.decorator('visEditorAggDirective', ($delegate) => {
// Original
const linkFn = $delegate[0].link;
const tpl = $delegate[0].template;

// Inject template
$delegate[0].template = tpl
.replace(/<!-- title -->[\s\S]*?<\/span>/m, titleTpl)
.replace('<!-- disable aggregation -->', hiddenTpl);

// Inject new function in scope
$delegate[0].compile = function () {
return function newLinkFn($scope) {
linkFn.apply($delegate[0], arguments);

$scope.canHide = function (aggregation) {
const metricCount = reduce($scope.group, function (count, agg) {
return (agg.schema.name === aggregation.schema.name && !agg.hidden) ? ++count : count;
}, 0);
return metricCount > 1;
};
};
};
};

// get rid of the old link function since we return a link function in compile
delete $delegate[0].link;
// get rid of the old link function since we return a link function in compile
delete $delegate[0].link;

return $delegate;
return $delegate;
});
});
});
}
Loading