[Code]: add ui.enabled flag and fix uneccessary usage of enabled flag (#38018) (#38032)

This commit is contained in:
Fuyao Zhao 2019-06-04 14:52:08 -07:00 committed by GitHub
parent 1f4edc5301
commit c4c439ab35
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 63 additions and 36 deletions

View file

@ -4,6 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { Server } from 'hapi';
import JoiNamespace from 'joi';
import moment from 'moment';
import { resolve } from 'path';
@ -24,9 +25,19 @@ export const code = (kibana: any) =>
euiIconType: 'codeApp',
},
styleSheetPaths: resolve(__dirname, 'public/index.scss'),
injectDefaultVars(server: Server) {
const config = server.config();
return {
codeUiEnabled: config.get('xpack.code.ui.enabled'),
};
},
hacks: ['plugins/code/hacks/toggle_app_link_in_nav'],
},
config(Joi: typeof JoiNamespace) {
return Joi.object({
ui: Joi.object({
enabled: Joi.boolean().default(true),
}).default(),
enabled: Joi.boolean().default(true),
queueIndex: Joi.string().default('.code_internal-worker-queue'),
// 1 hour by default.

View file

@ -16,45 +16,47 @@ import { App } from './components/app';
import { HelpMenu } from './components/help_menu';
import { store } from './stores';
const app = uiModules.get('apps/code');
if (chrome.getInjected('codeUiEnabled')) {
const app = uiModules.get('apps/code');
app.config(($locationProvider: any) => {
$locationProvider.html5Mode({
enabled: false,
requireBase: false,
rewriteLinks: false,
app.config(($locationProvider: any) => {
$locationProvider.html5Mode({
enabled: false,
requireBase: false,
rewriteLinks: false,
});
});
});
app.config((stateManagementConfigProvider: any) => stateManagementConfigProvider.disable());
app.config((stateManagementConfigProvider: any) => stateManagementConfigProvider.disable());
function RootController($scope: any, $element: any, $http: any) {
const domNode = $element[0];
function RootController($scope: any, $element: any, $http: any) {
const domNode = $element[0];
// render react to DOM
render(
<Provider store={store}>
<App />
</Provider>,
domNode
);
// render react to DOM
render(
<Provider store={store}>
<App />
</Provider>,
domNode
);
// unmount react on controller destroy
$scope.$on('$destroy', () => {
unmountComponentAtNode(domNode);
// unmount react on controller destroy
$scope.$on('$destroy', () => {
unmountComponentAtNode(domNode);
});
}
chrome.setRootController('code', RootController);
chrome.breadcrumbs.set([
{
text: 'Code (Beta)',
href: '#/',
},
]);
chrome.helpExtension.set(domNode => {
render(<HelpMenu />, domNode);
return () => {
unmountComponentAtNode(domNode);
};
});
}
chrome.setRootController('code', RootController);
chrome.breadcrumbs.set([
{
text: 'Code (Beta)',
href: '#/',
},
]);
chrome.helpExtension.set(domNode => {
render(<HelpMenu />, domNode);
return () => {
unmountComponentAtNode(domNode);
};
});

View file

@ -0,0 +1,14 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { onStart } from 'ui/new_platform';
onStart(({ core }) => {
const codeUiEnabled = core.injectedMetadata.getInjectedVar('codeUiEnabled');
if (codeUiEnabled === false) {
core.chrome.navLinks.update('code', { hidden: true });
}
});

View file

@ -79,7 +79,7 @@ async function getCodeNodeUuid(url: string, log: Logger) {
}
export function init(server: Server, options: any) {
if (!options.enabled) {
if (!options.ui.enabled) {
return;
}