"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ImportCompleteView = void 0; var _react = _interopRequireWildcard(require("react")); var _i18n = require("@kbn/i18n"); var _i18nReact = require("@kbn/i18n-react"); var _eui = require("@elastic/eui"); var _public = require("@kbn/kibana-react-plugin/public"); var _kibana_services = require("../kibana_services"); var _utils = require("./utils"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ const services = { uiSettings: (0, _kibana_services.getUiSettings)(), settings: (0, _kibana_services.getSettings)(), theme: (0, _kibana_services.getTheme)() }; const STATUS_CALLOUT_DATA_TEST_SUBJ = 'fileUploadStatusCallout'; class ImportCompleteView extends _react.Component { _renderCodeEditor(json, title, copyButtonDataTestSubj) { if (!json) { return null; } const jsonAsString = JSON.stringify(json, null, 2); return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_eui.EuiFlexGroup, { justifyContent: "spaceBetween", alignItems: "flexEnd" }, /*#__PURE__*/_react.default.createElement(_eui.EuiFlexItem, { grow: false }, /*#__PURE__*/_react.default.createElement(_eui.EuiTitle, { size: "xxs" }, /*#__PURE__*/_react.default.createElement("h4", null, title))), /*#__PURE__*/_react.default.createElement(_eui.EuiFlexItem, { grow: false }, /*#__PURE__*/_react.default.createElement(_eui.EuiCopy, { textToCopy: jsonAsString }, copy => /*#__PURE__*/_react.default.createElement(_eui.EuiButtonIcon, { size: "s", onClick: copy, iconType: "copy", color: "text", "data-test-subj": copyButtonDataTestSubj, "aria-label": _i18n.i18n.translate('xpack.fileUpload.importComplete.copyButtonAriaLabel', { defaultMessage: 'Copy to clipboard' }) })))), /*#__PURE__*/_react.default.createElement("div", { style: { height: '200px' } }, /*#__PURE__*/_react.default.createElement(_public.CodeEditor, { languageId: "json", value: jsonAsString, options: { readOnly: true, lineNumbers: 'off', fontSize: 12, minimap: { enabled: false }, scrollBeyondLastLine: false, wordWrap: 'on', wrappingIndent: 'indent', automaticLayout: true } })), /*#__PURE__*/_react.default.createElement(_eui.EuiSpacer, { size: "m" })); } _getStatusMsg() { var _this$props$importRes7; if (this.props.failedPermissionCheck) { return /*#__PURE__*/_react.default.createElement(_eui.EuiCallOut, { title: _i18n.i18n.translate('xpack.fileUpload.importComplete.uploadFailureTitle', { defaultMessage: 'Unable to upload file' }), color: "danger", iconType: "warning", "data-test-subj": STATUS_CALLOUT_DATA_TEST_SUBJ }, /*#__PURE__*/_react.default.createElement("p", null, _i18n.i18n.translate('xpack.fileUpload.importComplete.permissionFailureMsg', { defaultMessage: 'You do not have permission to create or import data into index "{indexName}".', values: { indexName: this.props.indexName } })), /*#__PURE__*/_react.default.createElement(_eui.EuiLink, { href: (0, _kibana_services.getDocLinks)().links.maps.importGeospatialPrivileges, target: "_blank", external: true }, _i18n.i18n.translate('xpack.fileUpload.importComplete.permission.docLink', { defaultMessage: 'View file import permissions' }))); } if (!this.props.importResults || !this.props.importResults.success) { var _this$props$importRes, _this$props$importRes2, _this$props$importRes3, _this$props$importRes4, _this$props$importRes5, _this$props$importRes6; let reason; if ((_this$props$importRes = this.props.importResults) !== null && _this$props$importRes !== void 0 && (_this$props$importRes2 = _this$props$importRes.error) !== null && _this$props$importRes2 !== void 0 && (_this$props$importRes3 = _this$props$importRes2.body) !== null && _this$props$importRes3 !== void 0 && _this$props$importRes3.message) { // Display http request error message reason = this.props.importResults.error.body.message; } else if ((_this$props$importRes4 = this.props.importResults) !== null && _this$props$importRes4 !== void 0 && (_this$props$importRes5 = _this$props$importRes4.error) !== null && _this$props$importRes5 !== void 0 && (_this$props$importRes6 = _this$props$importRes5.error) !== null && _this$props$importRes6 !== void 0 && _this$props$importRes6.reason) { // Display elasticsearch request error message reason = this.props.importResults.error.error.reason; } const errorMsg = reason ? _i18n.i18n.translate('xpack.fileUpload.importComplete.uploadFailureMsgErrorBlock', { defaultMessage: 'Error: {reason}', values: { reason } }) : ''; return /*#__PURE__*/_react.default.createElement(_eui.EuiCallOut, { title: _i18n.i18n.translate('xpack.fileUpload.importComplete.uploadFailureTitle', { defaultMessage: 'Unable to upload file' }), color: "danger", iconType: "warning", "data-test-subj": STATUS_CALLOUT_DATA_TEST_SUBJ }, /*#__PURE__*/_react.default.createElement("p", null, errorMsg)); } if ((_this$props$importRes7 = this.props.importResults.failures) !== null && _this$props$importRes7 !== void 0 && _this$props$importRes7.length) { return /*#__PURE__*/_react.default.createElement(_eui.EuiCallOut, { title: _i18n.i18n.translate('xpack.fileUpload.importComplete.uploadSuccessWithFailuresTitle', { defaultMessage: 'File upload complete with failures' }), color: "warning", iconType: "help", "data-test-subj": STATUS_CALLOUT_DATA_TEST_SUBJ }, /*#__PURE__*/_react.default.createElement("p", null, (0, _utils.getPartialImportMessage)(this.props.importResults.failures.length, this.props.importResults.docCount))); } return /*#__PURE__*/_react.default.createElement(_eui.EuiCallOut, { title: _i18n.i18n.translate('xpack.fileUpload.importComplete.uploadSuccessTitle', { defaultMessage: 'File upload complete' }), "data-test-subj": STATUS_CALLOUT_DATA_TEST_SUBJ }, /*#__PURE__*/_react.default.createElement("p", null, _i18n.i18n.translate('xpack.fileUpload.importComplete.uploadSuccessMsg', { defaultMessage: 'Indexed {numFeatures} features.', values: { numFeatures: this.props.importResults.docCount } }))); } _renderIndexManagementMsg() { return this.props.importResults && this.props.importResults.success ? /*#__PURE__*/_react.default.createElement(_eui.EuiText, null, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.fileUpload.importComplete.indexModsMsg", defaultMessage: "To modify the index, go to " }), /*#__PURE__*/_react.default.createElement("a", { "data-test-subj": "indexManagementNewIndexLink", target: "_blank", href: (0, _kibana_services.getHttp)().basePath.prepend('/app/management/kibana/dataViews') }, /*#__PURE__*/_react.default.createElement(_i18nReact.FormattedMessage, { id: "xpack.fileUpload.importComplete.indexMgmtLink", defaultMessage: "Index Management." })))) : null; } render() { return /*#__PURE__*/_react.default.createElement(_public.KibanaContextProvider, { services: services }, this._getStatusMsg(), this._renderCodeEditor(this.props.importResults, _i18n.i18n.translate('xpack.fileUpload.importComplete.indexingResponse', { defaultMessage: 'Import response' }), 'indexRespCopyButton'), this._renderCodeEditor(this.props.dataViewResp, _i18n.i18n.translate('xpack.fileUpload.importComplete.dataViewResponse', { defaultMessage: 'Data view response' }), 'dataViewRespCopyButton'), this._renderIndexManagementMsg()); } } exports.ImportCompleteView = ImportCompleteView;