From aa60c0846df2cf98a225206053b54d8eb27ef643 Mon Sep 17 00:00:00 2001 From: Eric Mc Sween Date: Tue, 14 Jun 2022 10:28:03 -0400 Subject: [PATCH] Merge pull request #8405 from overleaf/em-halt-on-error-beta-survey Stop on first error beta badges GitOrigin-RevId: 1f5609518a81d12eb81fd4d1ca51ef432e039548 --- .../components/pdf-preview-error.js | 27 ++++- .../components/stop-on-first-error-prompt.js | 25 +++- .../preview-logs-pane-max-entries.js | 111 +++++++++++------- 3 files changed, 116 insertions(+), 47 deletions(-) diff --git a/services/web/frontend/js/features/pdf-preview/components/pdf-preview-error.js b/services/web/frontend/js/features/pdf-preview/components/pdf-preview-error.js index 9e3daa8a27..9e4def56cd 100644 --- a/services/web/frontend/js/features/pdf-preview/components/pdf-preview-error.js +++ b/services/web/frontend/js/features/pdf-preview/components/pdf-preview-error.js @@ -1,10 +1,11 @@ import PropTypes from 'prop-types' import { useTranslation, Trans } from 'react-i18next' -import { memo, useCallback } from 'react' +import { memo, useCallback, useMemo } from 'react' import { Button } from 'react-bootstrap' import PdfLogEntry from './pdf-log-entry' import { useDetachCompileContext as useCompileContext } from '../../../shared/context/detach-compile-context' import { useStopOnFirstError } from '../../../shared/hooks/use-stop-on-first-error' +import BetaBadge from '../../../shared/components/beta-badge' import getMeta from '../../../utils/meta' function PdfPreviewError({ error }) { @@ -146,12 +147,13 @@ PdfPreviewError.propTypes = { export default memo(PdfPreviewError) -function ErrorLogEntry({ title, children }) { +function ErrorLogEntry({ title, headerIcon, children }) { const { t } = useTranslation() return ( ({ + id: 'stop-on-first-error-tooltip', + placement: 'bottom', + className: 'tooltip-wide', + text: ( + <> + We are beta testing the “Stop on first error” compilation mode. +
+ Click to give feedback + + ), + }), + [] + ) + if (showStopOnFirstError) { return ( @@ -213,6 +232,10 @@ function TimedOutLogEntry() { onClick={handleEnableStopOnFirstErrorClick} />, ]} + />{' '} + )} diff --git a/services/web/frontend/js/features/pdf-preview/components/stop-on-first-error-prompt.js b/services/web/frontend/js/features/pdf-preview/components/stop-on-first-error-prompt.js index f29d16f97e..4c2db80106 100644 --- a/services/web/frontend/js/features/pdf-preview/components/stop-on-first-error-prompt.js +++ b/services/web/frontend/js/features/pdf-preview/components/stop-on-first-error-prompt.js @@ -1,9 +1,10 @@ -import { useCallback } from 'react' +import { useCallback, useMemo } from 'react' import { useTranslation, Trans } from 'react-i18next' import { Button } from 'react-bootstrap' import PdfLogEntry from './pdf-log-entry' import { useDetachCompileContext as useCompileContext } from '../../../shared/context/detach-compile-context' import { useStopOnFirstError } from '../../../shared/hooks/use-stop-on-first-error' +import BetaBadge from '../../../shared/components/beta-badge' export default function StopOnFirstErrorPrompt() { const { t } = useTranslation() @@ -18,9 +19,31 @@ export default function StopOnFirstErrorPrompt() { setAnimateCompileDropdownArrow(true) }, [disableStopOnFirstError, startCompile, setAnimateCompileDropdownArrow]) + const betaBadgeTooltip = useMemo( + () => ({ + id: 'stop-on-first-error-tooltip', + placement: 'right', + className: 'tooltip-wide', + text: ( + <> + We are beta testing the “Stop on first error” compilation mode. +
+ Click to give feedback + + ), + }), + [] + ) + return ( + } formattedContent={ <> ({ + id: 'stop-on-first-error-tooltip', + placement: 'bottom', + className: 'tooltip-wide', + text: ( + <> + We are beta testing the “Stop on first error” compilation mode. +
+ Click to give feedback + + ), + }), + [] + ) + return (
- {showStopOnFirstError ? ( - hasErrors && !stoppedOnFirstError ? ( - <> +
+ {showStopOnFirstError ? ( + hasErrors && !stoppedOnFirstError ? ( + <> +

+ +   + {t('tip')}: + + ), + 'learn-more-link': ( + // eslint-disable-next-line jsx-a11y/anchor-has-content + + ), + }} + />{' '} + +

+

{t('log_entry_maximum_entries_see_full_logs')}

+ + ) : (

  {t('tip')}: - - ), - 'learn-more-link': ( - // eslint-disable-next-line jsx-a11y/anchor-has-content - - ), - }} - /> + {t('log_entry_maximum_entries_see_full_logs')}

-

{t('log_entry_maximum_entries_see_full_logs')}

- + ) ) : ( -

+ <>   - {t('tip')}: - {t('log_entry_maximum_entries_see_full_logs')} -

- ) - ) : ( - <> - -   - {hasErrors ? ( - ,

]} // eslint-disable-line react/jsx-key - /> - ) : ( - ]} // eslint-disable-line react/jsx-key - /> - )} - - )} + {hasErrors ? ( + ,

]} // eslint-disable-line react/jsx-key + /> + ) : ( + ]} // eslint-disable-line react/jsx-key + /> + )} + + )} +

)