plugin-generator
Version:
core_plugin generator
102 lines (89 loc) • 3.47 kB
JavaScript
require('../utils');
module.exports = controller = (name) => {
return `import _, { forEach } from 'lodash';
import AggResponseTabifyTabifyProvider from 'ui/agg_response/tabify/tabify';
import AggCofigResult from 'ui/vis/agg_config_result';
import uiModules from 'ui/modules';
const module = uiModules.get('kibana/${allLowerCase(name)}', ['kibana']);
module.controller('${upperCamelCase(name)}Controller', function ($scope, $element, Private, getAppState, config) {
const tabifyAggResponse = Private(AggResponseTabifyTabifyProvider);
const containerNode = $element[0];
$scope.watchMulti(['esResponse', 'vis.params'], function ([resp]) {
if (resp) {
$scope.tableResponse = tabifyAggResponse($scope.vis, resp, {
asAggCofigResults: true
})
}
});
$scope.$watch(getContainerSize, _.debounce(() => {
//resize (rerender) logic
}, 500, {
trailing: true
}), true);
function getContainerSize() {
let parentDiv = $($element[0]).parent()[0];
return {
height: parentDiv.clientHeight,
width: parentDiv.clientWidth
};
}
})`;
}
module.exports = params_html = (name) => {
return `<div> Hello World </div>`
}
module.exports = params_js = (name) => {
return `import uiModules from 'ui/modules';
uiModules.get('kibana/${snakeCase(name)}')
.controller('${camelCase(name)}', ['$scope', function ($scope) {
}]);`
}
module.exports = main_html = (name) => {
return `<div> Hello World </div>`
}
module.exports = main_js = (name) => {
return `import TemplateVisTypeTemplateVisTypeProvider from 'ui/template_vis_type/template_vis_type';
import VisSchemaProvider from 'ui/vis/schemas';
import _ from 'lodash';
import 'plugins/${snakeCase(name)}/styles/${snakeCase(name)}.css';
import 'plugins/${snakeCase(name)}/${snakeCase(name)}_controller';
import ${camelCase(name)}VisTemplate from 'plugins/${snakeCase(name)}/${snakeCase(name)}.html';
import ${camelCase(name)}VisParamsTemplate from 'plugins/${snakeCase(name)}/${snakeCase(name)}_params.html';
import ${camelCase(name)}SidebarTemplate from 'plugins/${snakeCase(name)}/${snakeCase(name)}_sidebar.html';
import commonParamSetProvider from 'plugins/mcube_utils/common_param_set';
require('ui/registry/vis_types').register(${upperCamelCase(name)}VisProvider);
function ${upperCamelCase(name)}VisProvider(Private) {
const TemplateVisType = Private(TemplateVisTypeTemplateVisTypeProvider);
const Schemas = Private(VisSchemaProvider);
const commonParamSet = Private(commonParamSetProvider);
const defaults = {
};
return new TemplateVisType({
name: '${snakeCase(name)}',
title: '${name}',
icon: 'fa-code',
description: '${name}',
template: ${camelCase(name)}VisTemplate,
params: {
defaults: _.merge({}, commonParamSet(), defaults),
editor: ${camelCase(name)}VisParamsTemplate,
sidebarEditor: ${camelCase(name)}SidebarTemplate
},
schemas: new Schemas([{
group: 'metrics',
name: 'metric',
title: 'Y-Axis',
min: 1,
max: 15,
defaults: [{
schema: 'metric',
type: 'count'
}]
}])
})
}
export default ${upperCamelCase(name)}VisProvider;`
}
module.exports = sidebar_html = (name) => {
return `<div> Hello World </div>`
}