@cccsaurora/howler-ui 2.19.0-dev.842 → 2.19.0-dev.905
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/index.d.ts +0 -4
- package/api/index.js +2 -10
- package/api/search/facet/hit.d.ts +3 -1
- package/api/search/facet/index.d.ts +1 -3
- package/api/search/index.d.ts +1 -2
- package/api/search/index.js +1 -2
- package/commons/components/leftnav/LeftNavDrawer.js +1 -1
- package/components/app/App.js +8 -41
- package/components/app/hooks/useMatchers.d.ts +1 -1
- package/components/app/hooks/useMatchers.js +11 -23
- package/components/app/hooks/useMatchers.test.js +22 -22
- package/components/app/hooks/useTitle.js +5 -5
- package/components/app/providers/FavouritesProvider.js +2 -2
- package/components/app/providers/HitProvider.d.ts +22 -0
- package/components/app/providers/{RecordProvider.js → HitProvider.js} +41 -41
- package/components/app/providers/{RecordSearchProvider.d.ts → HitSearchProvider.d.ts} +6 -6
- package/components/app/providers/{RecordSearchProvider.js → HitSearchProvider.js} +17 -12
- package/components/app/providers/{RecordSearchProvider.test.js → HitSearchProvider.test.js} +71 -52
- package/components/app/providers/ModalProvider.d.ts +0 -1
- package/components/app/providers/ParameterProvider.d.ts +2 -9
- package/components/app/providers/ParameterProvider.js +240 -165
- package/components/app/providers/ParameterProvider.test.js +94 -346
- package/components/app/providers/SocketProvider.d.ts +2 -11
- package/components/app/providers/SocketProvider.js +5 -18
- package/components/app/providers/UserListProvider.js +8 -28
- package/components/elements/PluginTypography.d.ts +1 -2
- package/components/elements/PluginTypography.js +2 -3
- package/components/elements/UserList.d.ts +2 -5
- package/components/elements/UserList.js +8 -18
- package/components/elements/addons/search/phrase/Phrase.js +1 -1
- package/components/elements/display/ChipPopper.d.ts +1 -1
- package/components/elements/display/ChipPopper.js +5 -5
- package/components/elements/display/HowlerCard.js +1 -1
- package/components/elements/display/Modal.js +0 -2
- package/components/elements/display/icons/BundleButton.d.ts +6 -0
- package/components/elements/display/icons/BundleButton.js +32 -0
- package/components/elements/hit/HitActions.js +4 -4
- package/components/elements/hit/HitBanner.d.ts +0 -1
- package/components/elements/hit/HitBanner.js +47 -29
- package/components/elements/hit/HitCard.d.ts +0 -2
- package/components/elements/hit/HitCard.js +7 -7
- package/components/elements/{record/RecordComments.d.ts → hit/HitComments.d.ts} +4 -5
- package/components/elements/{record/RecordComments.js → hit/HitComments.js} +28 -29
- package/components/elements/{ObjectDetails.js → hit/HitDetails.js} +17 -17
- package/components/elements/hit/HitLabels.js +2 -2
- package/components/elements/hit/HitOutline.d.ts +0 -1
- package/components/elements/hit/HitOutline.js +3 -3
- package/components/elements/hit/{HitPreview.d.ts → HitQuickSearch.d.ts} +3 -3
- package/components/elements/hit/{HitPreview.js → HitQuickSearch.js} +4 -10
- package/components/elements/hit/HitRelated.d.ts +6 -0
- package/components/elements/hit/HitRelated.js +7 -0
- package/components/elements/hit/HitSummary.d.ts +1 -2
- package/components/elements/hit/HitSummary.js +5 -6
- package/components/elements/{record/RecordWorklog.d.ts → hit/HitWorklog.d.ts} +3 -4
- package/components/elements/{record/RecordWorklog.js → hit/HitWorklog.js} +13 -15
- package/components/elements/hit/aggregate/HitGraph.js +8 -8
- package/components/elements/hit/elements/Assigned.js +3 -6
- package/components/elements/hit/outlines/DefaultOutline.js +1 -1
- package/components/elements/view/ViewTitle.d.ts +0 -1
- package/components/elements/view/ViewTitle.js +2 -9
- package/components/hooks/useHitActions.d.ts +1 -1
- package/components/hooks/useHitActions.js +4 -4
- package/components/hooks/{useRecordSelection.d.ts → useHitSelection.d.ts} +2 -2
- package/components/hooks/{useRecordSelection.js → useHitSelection.js} +33 -12
- package/components/hooks/useMyPreferences.js +1 -10
- package/components/hooks/useMySearch.js +2 -2
- package/components/hooks/useMySitemap.js +1 -4
- package/components/hooks/useMyTheme.js +2 -9
- package/components/routes/action/edit/ActionEditor.js +2 -2
- package/components/routes/action/view/ActionSearch.js +1 -1
- package/components/routes/advanced/QueryBuilder.js +1 -1
- package/components/routes/advanced/QueryEditor.js +3 -3
- package/components/routes/advanced/historyCompletionProvider.js +3 -3
- package/components/routes/analytics/AnalyticDetails.js +2 -2
- package/components/routes/analytics/AnalyticSearch.js +1 -1
- package/components/routes/dossiers/DossierEditor.js +2 -2
- package/components/routes/dossiers/DossierEditor.test.js +1 -1
- package/components/routes/help/ApiDocumentation.js +1 -1
- package/components/routes/help/BundleDocumentation.d.ts +3 -0
- package/components/routes/help/BundleDocumentation.js +12 -0
- package/components/routes/help/HitBannerDocumentation.js +0 -1
- package/components/routes/help/HitDocumentation.js +3 -1
- package/components/routes/help/markdown/en/bundles.md.js +1 -0
- package/components/routes/help/markdown/fr/bundles.md.js +1 -0
- package/components/routes/hits/search/BundleParentMenu.d.ts +6 -0
- package/components/routes/hits/search/BundleParentMenu.js +32 -0
- package/components/routes/hits/search/BundleScroller.d.ts +2 -0
- package/components/routes/hits/search/BundleScroller.js +6 -0
- package/components/routes/hits/search/{RecordBrowser.js → HitBrowser.js} +9 -9
- package/components/{elements/record/RecordContextMenu.d.ts → routes/hits/search/HitContextMenu.d.ts} +3 -3
- package/components/routes/hits/search/HitContextMenu.js +239 -0
- package/components/{elements/record/RecordContextMenu.test.js → routes/hits/search/HitContextMenu.test.js} +43 -98
- package/components/routes/hits/search/{RecordQuery.d.ts → HitQuery.d.ts} +2 -2
- package/components/routes/hits/search/{RecordQuery.js → HitQuery.js} +6 -6
- package/components/routes/hits/search/InformationPane.d.ts +0 -1
- package/components/routes/hits/search/InformationPane.js +63 -50
- package/components/routes/hits/search/LayoutSettings.js +3 -3
- package/components/routes/hits/search/QuerySettings.js +1 -2
- package/components/routes/hits/search/QuerySettings.test.js +9 -14
- package/components/routes/hits/search/SearchPane.js +49 -26
- package/components/routes/hits/search/ViewLink.js +3 -3
- package/components/routes/hits/search/ViewLink.test.js +8 -8
- package/components/routes/hits/search/grid/AddColumnModal.js +4 -5
- package/components/routes/hits/search/grid/EnhancedCell.d.ts +1 -2
- package/components/routes/hits/search/grid/EnhancedCell.js +2 -2
- package/components/routes/hits/search/grid/HitGrid.js +18 -20
- package/components/routes/hits/search/grid/{RecordRow.d.ts → HitRow.d.ts} +2 -3
- package/components/routes/hits/search/grid/{RecordRow.js → HitRow.js} +8 -10
- package/components/routes/hits/view/HitViewer.js +13 -12
- package/components/routes/home/ViewCard.js +41 -47
- package/components/{elements/MarkdownEditor.js → routes/overviews/OverviewEditor.js} +3 -3
- package/components/routes/overviews/OverviewViewer.js +2 -2
- package/components/routes/views/ViewComposer.js +19 -46
- package/locales/en/translation.json +3 -122
- package/locales/fr/translation.json +3 -120
- package/models/WithMetadata.d.ts +1 -2
- package/models/entities/generated/{ThreatEnrichment.d.ts → Enrichment.d.ts} +1 -1
- package/models/entities/generated/Hit.d.ts +0 -1
- package/models/entities/generated/Howler.d.ts +5 -0
- package/models/entities/generated/Rule.d.ts +9 -6
- package/models/entities/generated/Threat.d.ts +2 -2
- package/models/entities/generated/View.d.ts +0 -1
- package/package.json +121 -141
- package/plugins/clue/components/ClueTypography.js +2 -2
- package/plugins/clue/utils.d.ts +1 -2
- package/tests/mocks.d.ts +1 -11
- package/tests/mocks.js +7 -12
- package/tests/server-handlers.js +1 -6
- package/tests/utils.d.ts +0 -4
- package/tests/utils.js +0 -20
- package/utils/constants.d.ts +3 -4
- package/utils/constants.js +0 -6
- package/utils/hitFunctions.d.ts +1 -2
- package/utils/hitFunctions.js +4 -4
- package/utils/socketUtils.d.ts +0 -14
- package/utils/socketUtils.js +1 -17
- package/utils/viewUtils.js +0 -3
- package/api/search/case.d.ts +0 -4
- package/api/search/case.js +0 -8
- package/api/socket/index.d.ts +0 -3
- package/api/socket/index.js +0 -6
- package/api/socket/viewers.d.ts +0 -2
- package/api/socket/viewers.js +0 -8
- package/api/socket/viewers.test.js +0 -44
- package/api/v2/case/index.d.ts +0 -9
- package/api/v2/case/index.js +0 -21
- package/api/v2/case/items.d.ts +0 -6
- package/api/v2/case/items.js +0 -18
- package/api/v2/case/rules.d.ts +0 -6
- package/api/v2/case/rules.js +0 -18
- package/api/v2/index.d.ts +0 -4
- package/api/v2/index.js +0 -6
- package/api/v2/search/facet.d.ts +0 -3
- package/api/v2/search/facet.js +0 -12
- package/api/v2/search/index.d.ts +0 -5
- package/api/v2/search/index.js +0 -24
- package/components/app/providers/RecordProvider.d.ts +0 -23
- package/components/elements/ContextMenu.d.ts +0 -56
- package/components/elements/ContextMenu.js +0 -109
- package/components/elements/ContextMenu.test.d.ts +0 -1
- package/components/elements/ContextMenu.test.js +0 -215
- package/components/elements/ObjectDetails.d.ts +0 -6
- package/components/elements/case/CaseCard.d.ts +0 -12
- package/components/elements/case/CaseCard.js +0 -42
- package/components/elements/case/CasePreview.d.ts +0 -6
- package/components/elements/case/CasePreview.js +0 -17
- package/components/elements/case/StatusIcon.d.ts +0 -5
- package/components/elements/case/StatusIcon.js +0 -13
- package/components/elements/hit/elements/AnalyticLink.d.ts +0 -9
- package/components/elements/hit/elements/AnalyticLink.js +0 -22
- package/components/elements/hit/elements/Assigned.test.d.ts +0 -1
- package/components/elements/hit/elements/Assigned.test.js +0 -65
- package/components/elements/hit/related/RelatedRecords.js +0 -63
- package/components/elements/observable/ObservableCard.d.ts +0 -6
- package/components/elements/observable/ObservableCard.js +0 -22
- package/components/elements/observable/ObservablePreview.d.ts +0 -6
- package/components/elements/observable/ObservablePreview.js +0 -12
- package/components/elements/record/RecordContextMenu.js +0 -268
- package/components/elements/record/RecordContextMenu.test.d.ts +0 -1
- package/components/elements/record/RecordRelated.d.ts +0 -7
- package/components/elements/record/RecordRelated.js +0 -34
- package/components/hooks/useRelatedRecords.d.ts +0 -13
- package/components/hooks/useRelatedRecords.js +0 -32
- package/components/routes/cases/CaseViewer.d.ts +0 -2
- package/components/routes/cases/CaseViewer.js +0 -44
- package/components/routes/cases/CaseViewer.test.d.ts +0 -1
- package/components/routes/cases/CaseViewer.test.js +0 -133
- package/components/routes/cases/Cases.d.ts +0 -2
- package/components/routes/cases/Cases.js +0 -148
- package/components/routes/cases/constants.d.ts +0 -6
- package/components/routes/cases/constants.js +0 -6
- package/components/routes/cases/detail/AlertPanel.d.ts +0 -6
- package/components/routes/cases/detail/AlertPanel.js +0 -33
- package/components/routes/cases/detail/CaseAssets.d.ts +0 -11
- package/components/routes/cases/detail/CaseAssets.js +0 -104
- package/components/routes/cases/detail/CaseAssets.test.d.ts +0 -1
- package/components/routes/cases/detail/CaseAssets.test.js +0 -167
- package/components/routes/cases/detail/CaseDashboard.d.ts +0 -7
- package/components/routes/cases/detail/CaseDashboard.js +0 -66
- package/components/routes/cases/detail/CaseDetails.d.ts +0 -6
- package/components/routes/cases/detail/CaseDetails.js +0 -70
- package/components/routes/cases/detail/CaseOverview.d.ts +0 -7
- package/components/routes/cases/detail/CaseOverview.js +0 -43
- package/components/routes/cases/detail/CaseRules.d.ts +0 -7
- package/components/routes/cases/detail/CaseRules.js +0 -57
- package/components/routes/cases/detail/CaseRules.test.d.ts +0 -1
- package/components/routes/cases/detail/CaseRules.test.js +0 -221
- package/components/routes/cases/detail/CaseSidebar.d.ts +0 -8
- package/components/routes/cases/detail/CaseSidebar.js +0 -107
- package/components/routes/cases/detail/CaseSidebar.test.d.ts +0 -1
- package/components/routes/cases/detail/CaseSidebar.test.js +0 -266
- package/components/routes/cases/detail/CaseTask.d.ts +0 -11
- package/components/routes/cases/detail/CaseTask.js +0 -66
- package/components/routes/cases/detail/CaseTimeline.d.ts +0 -12
- package/components/routes/cases/detail/CaseTimeline.js +0 -106
- package/components/routes/cases/detail/CaseTimeline.test.d.ts +0 -1
- package/components/routes/cases/detail/CaseTimeline.test.js +0 -320
- package/components/routes/cases/detail/CreateRuleDialog.d.ts +0 -9
- package/components/routes/cases/detail/CreateRuleDialog.js +0 -163
- package/components/routes/cases/detail/CreateRuleDialog.test.d.ts +0 -1
- package/components/routes/cases/detail/CreateRuleDialog.test.js +0 -259
- package/components/routes/cases/detail/ItemPage.d.ts +0 -6
- package/components/routes/cases/detail/ItemPage.js +0 -95
- package/components/routes/cases/detail/RelatedCasePanel.d.ts +0 -6
- package/components/routes/cases/detail/RelatedCasePanel.js +0 -34
- package/components/routes/cases/detail/TaskPanel.d.ts +0 -7
- package/components/routes/cases/detail/TaskPanel.js +0 -52
- package/components/routes/cases/detail/aggregates/CaseAggregate.d.ts +0 -11
- package/components/routes/cases/detail/aggregates/CaseAggregate.js +0 -24
- package/components/routes/cases/detail/aggregates/SourceAggregate.d.ts +0 -6
- package/components/routes/cases/detail/aggregates/SourceAggregate.js +0 -26
- package/components/routes/cases/detail/assets/Asset.d.ts +0 -14
- package/components/routes/cases/detail/assets/Asset.js +0 -12
- package/components/routes/cases/detail/assets/Asset.test.d.ts +0 -1
- package/components/routes/cases/detail/assets/Asset.test.js +0 -72
- package/components/routes/cases/detail/sidebar/CaseFolder.d.ts +0 -20
- package/components/routes/cases/detail/sidebar/CaseFolder.js +0 -83
- package/components/routes/cases/detail/sidebar/CaseFolder.test.d.ts +0 -1
- package/components/routes/cases/detail/sidebar/CaseFolder.test.js +0 -295
- package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.d.ts +0 -34
- package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.js +0 -103
- package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.d.ts +0 -1
- package/components/routes/cases/detail/sidebar/CaseFolderContextMenu.test.js +0 -363
- package/components/routes/cases/detail/sidebar/FolderEntry.d.ts +0 -25
- package/components/routes/cases/detail/sidebar/FolderEntry.js +0 -88
- package/components/routes/cases/detail/sidebar/FolderEntry.test.d.ts +0 -1
- package/components/routes/cases/detail/sidebar/FolderEntry.test.js +0 -206
- package/components/routes/cases/detail/sidebar/RootDropZone.d.ts +0 -5
- package/components/routes/cases/detail/sidebar/RootDropZone.js +0 -33
- package/components/routes/cases/detail/sidebar/types.d.ts +0 -9
- package/components/routes/cases/detail/sidebar/utils.d.ts +0 -3
- package/components/routes/cases/detail/sidebar/utils.js +0 -29
- package/components/routes/cases/detail/sidebar/utils.test.d.ts +0 -1
- package/components/routes/cases/detail/sidebar/utils.test.js +0 -82
- package/components/routes/cases/hooks/useCase.d.ts +0 -13
- package/components/routes/cases/hooks/useCase.js +0 -69
- package/components/routes/cases/hooks/useCase.test.d.ts +0 -1
- package/components/routes/cases/hooks/useCase.test.js +0 -141
- package/components/routes/cases/modals/AddToCaseModal.d.ts +0 -7
- package/components/routes/cases/modals/AddToCaseModal.js +0 -59
- package/components/routes/cases/modals/AddToCaseModal.test.d.ts +0 -1
- package/components/routes/cases/modals/AddToCaseModal.test.js +0 -313
- package/components/routes/cases/modals/CaseRecordRow.d.ts +0 -9
- package/components/routes/cases/modals/CaseRecordRow.js +0 -15
- package/components/routes/cases/modals/CreateCaseModal.d.ts +0 -7
- package/components/routes/cases/modals/CreateCaseModal.js +0 -55
- package/components/routes/cases/modals/CreateCaseModal.test.d.ts +0 -1
- package/components/routes/cases/modals/CreateCaseModal.test.js +0 -358
- package/components/routes/cases/modals/RenameItemModal.d.ts +0 -9
- package/components/routes/cases/modals/RenameItemModal.js +0 -48
- package/components/routes/cases/modals/ResolveModal.d.ts +0 -7
- package/components/routes/cases/modals/ResolveModal.js +0 -115
- package/components/routes/cases/modals/ResolveModal.test.d.ts +0 -1
- package/components/routes/cases/modals/ResolveModal.test.js +0 -394
- package/components/routes/cases/modals/hooks.d.ts +0 -7
- package/components/routes/cases/modals/hooks.js +0 -44
- package/components/routes/cases/modals/types.d.ts +0 -5
- package/components/routes/cases/search/CaseAssigneeFilter.d.ts +0 -6
- package/components/routes/cases/search/CaseAssigneeFilter.js +0 -33
- package/components/routes/cases/search/CaseAssigneeFilter.test.d.ts +0 -1
- package/components/routes/cases/search/CaseAssigneeFilter.test.js +0 -127
- package/components/routes/cases/search/CaseDateFilter.d.ts +0 -13
- package/components/routes/cases/search/CaseDateFilter.js +0 -26
- package/components/routes/cases/search/CaseDateFilter.test.d.ts +0 -1
- package/components/routes/cases/search/CaseDateFilter.test.js +0 -115
- package/components/routes/cases/search/CaseStatusFilter.d.ts +0 -6
- package/components/routes/cases/search/CaseStatusFilter.js +0 -13
- package/components/routes/cases/search/CaseStatusFilter.test.d.ts +0 -1
- package/components/routes/cases/search/CaseStatusFilter.test.js +0 -86
- package/components/routes/hits/search/shared/IndexPicker.d.ts +0 -2
- package/components/routes/hits/search/shared/IndexPicker.js +0 -20
- package/components/routes/observables/ObservableViewer.d.ts +0 -7
- package/components/routes/observables/ObservableViewer.js +0 -27
- package/models/entities/generated/AttachmentsFile.d.ts +0 -12
- package/models/entities/generated/Case.d.ts +0 -28
- package/models/entities/generated/DestinationOriginal.d.ts +0 -19
- package/models/entities/generated/EmailAttachment.d.ts +0 -8
- package/models/entities/generated/EmailParent.d.ts +0 -19
- package/models/entities/generated/Enrichments.d.ts +0 -7
- package/models/entities/generated/EnrichmentsIndicator.d.ts +0 -21
- package/models/entities/generated/HttpResponse.d.ts +0 -11
- package/models/entities/generated/Item.d.ts +0 -9
- package/models/entities/generated/Observable.d.ts +0 -85
- package/models/entities/generated/ObservableCloud.d.ts +0 -20
- package/models/entities/generated/ObservableDestination.d.ts +0 -23
- package/models/entities/generated/ObservableEmail.d.ts +0 -30
- package/models/entities/generated/ObservableFile.d.ts +0 -36
- package/models/entities/generated/ObservableHowler.d.ts +0 -42
- package/models/entities/generated/ObservableHttp.d.ts +0 -11
- package/models/entities/generated/ObservableObserver.d.ts +0 -21
- package/models/entities/generated/ObservableOrganization.d.ts +0 -7
- package/models/entities/generated/ObservableProcess.d.ts +0 -34
- package/models/entities/generated/ObservableSource.d.ts +0 -23
- package/models/entities/generated/ObservableThreat.d.ts +0 -21
- package/models/entities/generated/ObservableTls.d.ts +0 -12
- package/models/entities/generated/ObserverIngress.d.ts +0 -9
- package/models/entities/generated/Task.d.ts +0 -10
- package/models/socket/CaseUpdate.d.ts +0 -5
- package/models/socket/ViewersUpdate.d.ts +0 -4
- package/utils/socketUtils.test.d.ts +0 -1
- package/utils/socketUtils.test.js +0 -59
- package/utils/typeUtils.d.ts +0 -7
- package/utils/typeUtils.js +0 -27
- /package/{api/socket/viewers.test.d.ts → components/app/providers/HitSearchProvider.test.d.ts} +0 -0
- /package/components/elements/hit/{related/RelatedRecords.d.ts → HitDetails.d.ts} +0 -0
- /package/components/routes/hits/search/{RecordBrowser.d.ts → HitBrowser.d.ts} +0 -0
- /package/components/{app/providers/RecordSearchProvider.test.d.ts → routes/hits/search/HitContextMenu.test.d.ts} +0 -0
- /package/components/{elements/MarkdownEditor.d.ts → routes/overviews/OverviewEditor.d.ts} +0 -0
|
@@ -4,11 +4,10 @@ import { useTranslation } from 'react-i18next';
|
|
|
4
4
|
import { HelpOutline, Save } from '@mui/icons-material';
|
|
5
5
|
import { Alert, Checkbox, CircularProgress, LinearProgress, Stack, TextField, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@mui/material';
|
|
6
6
|
import api from '@cccsaurora/howler-ui/api';
|
|
7
|
-
import {} from '@cccsaurora/howler-ui/api/search';
|
|
8
7
|
import AppListEmpty from '@cccsaurora/howler-ui/commons/components/display/AppListEmpty';
|
|
9
8
|
import PageCenter from '@cccsaurora/howler-ui/commons/components/pages/PageCenter';
|
|
9
|
+
import { HitContext } from '@cccsaurora/howler-ui/components/app/providers/HitProvider';
|
|
10
10
|
import { ParameterContext } from '@cccsaurora/howler-ui/components/app/providers/ParameterProvider';
|
|
11
|
-
import { RecordContext } from '@cccsaurora/howler-ui/components/app/providers/RecordProvider';
|
|
12
11
|
import { ViewContext } from '@cccsaurora/howler-ui/components/app/providers/ViewProvider';
|
|
13
12
|
import CustomButton from '@cccsaurora/howler-ui/components/elements/addons/buttons/CustomButton';
|
|
14
13
|
import FlexPort from '@cccsaurora/howler-ui/components/elements/addons/layout/FlexPort';
|
|
@@ -18,7 +17,6 @@ import VSBoxHeader from '@cccsaurora/howler-ui/components/elements/addons/layout
|
|
|
18
17
|
import SearchTotal from '@cccsaurora/howler-ui/components/elements/addons/search/SearchTotal';
|
|
19
18
|
import HitCard from '@cccsaurora/howler-ui/components/elements/hit/HitCard';
|
|
20
19
|
import { HitLayout } from '@cccsaurora/howler-ui/components/elements/hit/HitLayout';
|
|
21
|
-
import ObservableCard from '@cccsaurora/howler-ui/components/elements/observable/ObservableCard';
|
|
22
20
|
import useMyApi from '@cccsaurora/howler-ui/components/hooks/useMyApi';
|
|
23
21
|
import { useMyLocalStorageItem } from '@cccsaurora/howler-ui/components/hooks/useMyLocalStorage';
|
|
24
22
|
import useMySnackbar from '@cccsaurora/howler-ui/components/hooks/useMySnackbar';
|
|
@@ -28,9 +26,8 @@ import { DEFAULT_QUERY, StorageKey } from '@cccsaurora/howler-ui/utils/constants
|
|
|
28
26
|
import { convertDateToLucene } from '@cccsaurora/howler-ui/utils/utils';
|
|
29
27
|
import { buildViewUrl } from '@cccsaurora/howler-ui/utils/viewUtils';
|
|
30
28
|
import ErrorBoundary from '../ErrorBoundary';
|
|
31
|
-
import
|
|
29
|
+
import HitQuery from '../hits/search/HitQuery';
|
|
32
30
|
import HitSort from '../hits/search/shared/HitSort';
|
|
33
|
-
import IndexPicker from '../hits/search/shared/IndexPicker';
|
|
34
31
|
import SearchSpan from '../hits/search/shared/SearchSpan';
|
|
35
32
|
const ViewComposer = () => {
|
|
36
33
|
const { t } = useTranslation();
|
|
@@ -41,10 +38,8 @@ const ViewComposer = () => {
|
|
|
41
38
|
const addView = useContextSelector(ViewContext, ctx => ctx.addView);
|
|
42
39
|
const editView = useContextSelector(ViewContext, ctx => ctx.editView);
|
|
43
40
|
const getCurrentViews = useContextSelector(ViewContext, ctx => ctx.getCurrentViews);
|
|
44
|
-
const indexes = useContextSelector(ParameterContext, ctx => ctx.indexes);
|
|
45
|
-
const setIndexes = useContextSelector(ParameterContext, ctx => ctx.setIndexes);
|
|
46
41
|
const pageCount = useMyLocalStorageItem(StorageKey.PAGE_COUNT, 25)[0];
|
|
47
|
-
const
|
|
42
|
+
const loadHits = useContextSelector(HitContext, ctx => ctx.loadHits);
|
|
48
43
|
// view state
|
|
49
44
|
const [title, setTitle] = useState('');
|
|
50
45
|
const [type, setType] = useState('global');
|
|
@@ -61,17 +56,14 @@ const ViewComposer = () => {
|
|
|
61
56
|
const [searching, setSearching] = useState(false);
|
|
62
57
|
const [error, setError] = useState(null);
|
|
63
58
|
const [response, setResponse] = useState();
|
|
64
|
-
const [isLoadingView, setIsLoadingView] = useState(!!routeParams.id);
|
|
65
59
|
const onSave = useCallback(async () => {
|
|
66
60
|
setLoading(true);
|
|
67
61
|
try {
|
|
68
|
-
const normalizedIndexes = indexes?.length > 0 ? indexes : ['hit'];
|
|
69
62
|
if (!routeParams.id) {
|
|
70
63
|
const newView = await addView({
|
|
71
64
|
title,
|
|
72
65
|
type,
|
|
73
66
|
query,
|
|
74
|
-
indexes: normalizedIndexes,
|
|
75
67
|
sort: sort || null,
|
|
76
68
|
span: span || null,
|
|
77
69
|
settings: {
|
|
@@ -85,7 +77,6 @@ const ViewComposer = () => {
|
|
|
85
77
|
title,
|
|
86
78
|
type,
|
|
87
79
|
query,
|
|
88
|
-
indexes: normalizedIndexes,
|
|
89
80
|
sort,
|
|
90
81
|
span,
|
|
91
82
|
settings: { advance_on_triage: advanceOnTriage }
|
|
@@ -110,24 +101,23 @@ const ViewComposer = () => {
|
|
|
110
101
|
sort,
|
|
111
102
|
span,
|
|
112
103
|
advanceOnTriage,
|
|
113
|
-
indexes,
|
|
114
104
|
navigate,
|
|
115
105
|
editView,
|
|
116
106
|
showErrorMessage
|
|
117
107
|
]);
|
|
118
|
-
const
|
|
108
|
+
const search = useCallback(async (_query) => {
|
|
109
|
+
setQuery(_query);
|
|
119
110
|
setSearching(true);
|
|
120
111
|
setError(null);
|
|
121
112
|
try {
|
|
122
|
-
const
|
|
123
|
-
const _response = await dispatchApi(api.v2.search.post(normalizedIndexes, {
|
|
113
|
+
const _response = await dispatchApi(api.search.hit.post({
|
|
124
114
|
rows: pageCount,
|
|
125
|
-
query:
|
|
126
|
-
sort
|
|
127
|
-
filters:
|
|
115
|
+
query: _query,
|
|
116
|
+
sort,
|
|
117
|
+
filters: span ? [`event.created:${convertDateToLucene(span)}`] : [],
|
|
128
118
|
metadata: ['template', 'analytic']
|
|
129
119
|
}), { showError: false, throwError: true });
|
|
130
|
-
|
|
120
|
+
loadHits(_response.items);
|
|
131
121
|
setResponse(_response);
|
|
132
122
|
}
|
|
133
123
|
catch (e) {
|
|
@@ -136,25 +126,18 @@ const ViewComposer = () => {
|
|
|
136
126
|
finally {
|
|
137
127
|
setSearching(false);
|
|
138
128
|
}
|
|
139
|
-
}, [dispatchApi,
|
|
140
|
-
const search = useCallback(async (_query) => {
|
|
141
|
-
setQuery(_query);
|
|
142
|
-
await performSearch(_query, indexes, sort, span);
|
|
143
|
-
}, [performSearch, indexes, sort, span, setQuery]);
|
|
129
|
+
}, [dispatchApi, loadHits, pageCount, setQuery, sort, span]);
|
|
144
130
|
useEffect(() => {
|
|
145
|
-
|
|
146
|
-
if (!routeParams.id) {
|
|
147
|
-
search(query || DEFAULT_QUERY);
|
|
148
|
-
}
|
|
131
|
+
search(query || DEFAULT_QUERY);
|
|
149
132
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
150
|
-
}, [
|
|
133
|
+
}, []);
|
|
151
134
|
// We only run this when ancillary properties (i.e. filters, sorting) change
|
|
152
135
|
useEffect(() => {
|
|
153
|
-
if (query
|
|
136
|
+
if (query) {
|
|
154
137
|
search(query);
|
|
155
138
|
}
|
|
156
139
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
157
|
-
}, [sort, span
|
|
140
|
+
}, [sort, span]);
|
|
158
141
|
useEffect(() => {
|
|
159
142
|
if (!routeParams.id) {
|
|
160
143
|
return;
|
|
@@ -170,23 +153,13 @@ const ViewComposer = () => {
|
|
|
170
153
|
}
|
|
171
154
|
setTitle(viewToEdit.title);
|
|
172
155
|
setAdvanceOnTriage(viewToEdit.settings?.advance_on_triage ?? false);
|
|
173
|
-
|
|
174
|
-
const loadedIndexes = viewToEdit.indexes || indexes;
|
|
175
|
-
const loadedSort = viewToEdit.sort || sort;
|
|
176
|
-
const loadedSpan = viewToEdit.span || span;
|
|
177
|
-
setQuery(loadedQuery);
|
|
178
|
-
if (viewToEdit.indexes) {
|
|
179
|
-
setIndexes(loadedIndexes);
|
|
180
|
-
}
|
|
156
|
+
setQuery(viewToEdit.query);
|
|
181
157
|
if (viewToEdit.sort) {
|
|
182
|
-
setSort(
|
|
158
|
+
setSort(viewToEdit.sort);
|
|
183
159
|
}
|
|
184
160
|
if (viewToEdit.span) {
|
|
185
|
-
setSpan(
|
|
161
|
+
setSpan(viewToEdit.span);
|
|
186
162
|
}
|
|
187
|
-
// Perform search with the loaded values to avoid using stale state
|
|
188
|
-
await performSearch(loadedQuery, loadedIndexes, loadedSort, loadedSpan);
|
|
189
|
-
setIsLoadingView(false);
|
|
190
163
|
})();
|
|
191
164
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
192
165
|
}, [routeParams.id]);
|
|
@@ -199,6 +172,6 @@ const ViewComposer = () => {
|
|
|
199
172
|
fontSize: '0.9em',
|
|
200
173
|
fontStyle: 'italic',
|
|
201
174
|
mb: 0.5
|
|
202
|
-
}), variant: "body2", children: t('hit.search.prompt') }), _jsx(
|
|
175
|
+
}), variant: "body2", children: t('hit.search.prompt') }), _jsx(HitQuery, { triggerSearch: search, searching: searching, onChange: (_query, isDirty) => setIsSearchDirty(isDirty) }), _jsxs(Stack, { direction: "row", spacing: 1, children: [_jsx(HitSort, {}), _jsx(SearchSpan, { omitCustom: true }), _jsx("div", { style: { flex: 1 } }), _jsxs(Stack, { spacing: 1, direction: "row", alignItems: "center", sx: { flex: '0 !important', minWidth: '300px' }, children: [_jsx(Typography, { component: "span", children: t('view.settings.advance_on_triage') }), _jsx(Tooltip, { title: t('view.settings.advance_on_triage.description'), children: _jsx(HelpOutline, { sx: { fontSize: '16px' } }) }), _jsx(Checkbox, { size: "small", checked: advanceOnTriage, onChange: (_event, checked) => setAdvanceOnTriage(checked) })] })] }), response?.total ? (_jsx(SearchTotal, { total: response.total, pageLength: response.items.length, offset: response.offset, sx: theme => ({ color: theme.palette.text.secondary, fontSize: '0.9em', fontStyle: 'italic' }) })) : null, _jsx(LinearProgress, { sx: [!searching && { opacity: 0 }] })] }) }), _jsx(VSBoxContent, { children: _jsxs(Stack, { spacing: 1, children: [!response?.total && _jsx(AppListEmpty, {}), response?.items.map(hit => (_jsx(HitCard, { id: hit.howler.id, layout: HitLayout.DENSE }, hit.howler.id)))] }) })] }) }) }) }));
|
|
203
176
|
};
|
|
204
177
|
export default ViewComposer;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"*": "All values",
|
|
3
|
-
"Protected B": "Protected B",
|
|
4
|
-
"Unclassified//Official Use Only": "Unclassified//Official Use Only",
|
|
5
3
|
"actions.running": "Action \"{{action}}\" is executing.",
|
|
6
4
|
"actions.succeeded": "Action \"{{action}}\" completed successfully.",
|
|
7
5
|
"actions.skipped": "Action \"{{action}}\" was skipped: {{messages}}",
|
|
@@ -15,7 +13,6 @@
|
|
|
15
13
|
"analytic.notebook.error.minFields": "Name and link are required.",
|
|
16
14
|
"analytic.notebook.link": "Link",
|
|
17
15
|
"analytic.notebook.name": "Name",
|
|
18
|
-
"analytic.open": "Open Analytic",
|
|
19
16
|
"any": "Any",
|
|
20
17
|
"api.user.apikey.removed": "API key removed successfully.",
|
|
21
18
|
"api.user.apikey.updated": "New API key added successfully.",
|
|
@@ -84,8 +81,6 @@
|
|
|
84
81
|
"comments.edit.stop": "Stop Editing",
|
|
85
82
|
"comments.edited": "Edited",
|
|
86
83
|
"comments.quote": "Quote Reply",
|
|
87
|
-
"complete": "Complete",
|
|
88
|
-
"crisis": "Crisis",
|
|
89
84
|
"custom": "Custom",
|
|
90
85
|
"date.range.1.day": "The last day",
|
|
91
86
|
"date.range.1.month": "The last month",
|
|
@@ -111,12 +106,8 @@
|
|
|
111
106
|
"drawer.expand": "Expand Menu",
|
|
112
107
|
"duplicates.omitted": "Some duplicate entries have been omitted.",
|
|
113
108
|
"edit": "Edit",
|
|
114
|
-
"enabled": "Enabled",
|
|
115
|
-
"event.module": "Event Module",
|
|
116
|
-
"event.type": "Event Type",
|
|
117
109
|
"features.warning.description": "This feature is undergoing active development, and is not yet in a finished state. You may encounter bugs or instability.",
|
|
118
110
|
"features.warning.title": "Feature In Active Development",
|
|
119
|
-
"focus": "Main focus",
|
|
120
111
|
"global": "Global",
|
|
121
112
|
"help.actions.introduction": "Introduction to Actions",
|
|
122
113
|
"help.hit.banner.description": "See the below hit banner example for the hit keys necessary to properly populate it. If you have any additional questions, ask in the HOWLER support channel.",
|
|
@@ -173,21 +164,17 @@
|
|
|
173
164
|
"hit.header.assignment": "Assignment: {{user}}",
|
|
174
165
|
"hit.header.assignment.add": "Assign to a user",
|
|
175
166
|
"hit.header.assignment.change": "Change assignment",
|
|
167
|
+
"hit.header.bundlesize": "{{hits}} hits",
|
|
176
168
|
"hit.header.escalation": "Escalation Level: ",
|
|
177
169
|
"hit.header.indicators": "Indicators",
|
|
178
170
|
"hit.header.link": "Open Link",
|
|
179
171
|
"hit.header.rationale": "Rationale",
|
|
180
|
-
"hit.header.related": "{{count}} related records",
|
|
181
172
|
"hit.header.scrutiny": "Scrutiny: ",
|
|
182
173
|
"hit.header.status": "Status: ",
|
|
183
174
|
"hit.header.summary": "Summary",
|
|
184
175
|
"hit.header.target": "Target",
|
|
185
176
|
"hit.header.threat": "Threat",
|
|
186
|
-
"hit.header.view.case": "View case {{id}}",
|
|
187
|
-
"hit.header.view.hit": "View hit {{id}}",
|
|
188
|
-
"hit.header.view.observable": "View observable {{id}}",
|
|
189
177
|
"hit.header.votes": "Votes: ",
|
|
190
|
-
"hit.howler.related": "{{count}} related records",
|
|
191
178
|
"hit.label": "Labels",
|
|
192
179
|
"hit.label.category.assignments": "Category: Assignments - Specifies what analyst or team of analysts is assigned to triaging this hit.",
|
|
193
180
|
"hit.label.category.campaign": "Catergory: Campaign - Identifies ongoing campaigns from specific malware families or phishing initiatives. They should only be considered correct attributions if the hit is promoted to evidence.",
|
|
@@ -203,16 +190,15 @@
|
|
|
203
190
|
"hit.label.edit.add.error.duplicate": "Duplicated label not allowed",
|
|
204
191
|
"hit.label.edit.add.error.empty": "Can't add an empty label",
|
|
205
192
|
"hit.label.edit.add.label": "New label value",
|
|
206
|
-
"hit.label.edit.desc": "Add or remove labels",
|
|
207
193
|
"hit.notebook.confirm.dialog": "A notebook with that name already exists in your environment, do you wish to overwrite it?",
|
|
208
194
|
"hit.notebook.confirm.title": "Overwrite existing notebook?",
|
|
209
195
|
"hit.notebook.error.failToPost": "Failed to send notebook to Jupyterhub, make sure your user environment is running.",
|
|
210
196
|
"hit.notebook.goTo": "Go to Jupyterhub",
|
|
211
197
|
"hit.notebook.select": "Please Select a notebook",
|
|
212
198
|
"hit.notebook.tooltip": "Open in Jupyterhub",
|
|
213
|
-
"hit.open": "Open Hit",
|
|
214
199
|
"hit.overview.missing": "No overview has been created for this hit. In order to create an overview, press the add button to the right.",
|
|
215
200
|
"hit.panel.aggregation.run": "Create Summary",
|
|
201
|
+
"hit.panel.analytic.open": "Open Analytic",
|
|
216
202
|
"hit.panel.bundles.open": "Parent Bundles",
|
|
217
203
|
"hit.panel.bundles.open.prompt": "Open Parent Bundle",
|
|
218
204
|
"hit.panel.close": "Close",
|
|
@@ -225,12 +211,9 @@
|
|
|
225
211
|
"hit.panel.exclude": "Exclude By",
|
|
226
212
|
"hit.panel.hit.noselection": "No hit has been selected",
|
|
227
213
|
"hit.panel.include": "Include By",
|
|
214
|
+
"hit.panel.open": "Open Hit Viewer",
|
|
228
215
|
"hit.panel.view.layout": "Change View Panel",
|
|
229
216
|
"hit.quicksearch": "Search by assignment, analytic, detection or status",
|
|
230
|
-
"hit.related.tab.case": "Cases",
|
|
231
|
-
"hit.related.tab.hit": "Hits",
|
|
232
|
-
"hit.related.tab.links": "Links",
|
|
233
|
-
"hit.related.tab.observable": "Observables",
|
|
234
217
|
"hit.search.aggregate.button": "Create Summary",
|
|
235
218
|
"hit.search.button": "Perform search",
|
|
236
219
|
"hit.search.custom": "Custom Sort",
|
|
@@ -239,9 +222,6 @@
|
|
|
239
222
|
"hit.search.filter.fields": "Fields",
|
|
240
223
|
"hit.search.filter.label": "Lookup Filters",
|
|
241
224
|
"hit.search.filter.values": "Values",
|
|
242
|
-
"hit.search.index": "Indexes",
|
|
243
|
-
"hit.search.index.hit": "Hits",
|
|
244
|
-
"hit.search.index.observable": "Observables",
|
|
245
225
|
"hit.search.invalid": "Invalid Query",
|
|
246
226
|
"hit.search.keyboard": "Keyboard shortcuts",
|
|
247
227
|
"hit.search.keyboard.no_shortcuts": "No shortcuts",
|
|
@@ -279,7 +259,6 @@
|
|
|
279
259
|
"hit.summary.subtitle": "Limited to a maximum of 10 000 hits.",
|
|
280
260
|
"hit.summary.title": "Summary of Hits Over Time",
|
|
281
261
|
"hit.summary.zoom.reset": "Reset Zoom",
|
|
282
|
-
"hit.view.overview": "Overview",
|
|
283
262
|
"hit.viewer.aggregate": "Summary",
|
|
284
263
|
"hit.viewer.comments": "Comments",
|
|
285
264
|
"hit.viewer.data": "Raw Data",
|
|
@@ -315,31 +294,6 @@
|
|
|
315
294
|
"modal.action.empty": "Action Name cannot be empty.",
|
|
316
295
|
"modal.action.label": "Action Name",
|
|
317
296
|
"modal.action.title": "Save Action",
|
|
318
|
-
"modal.cases.add_to_case": "Add to Case",
|
|
319
|
-
"modal.cases.add_to_case.full_path": "Full path: {{path}}",
|
|
320
|
-
"modal.cases.add_to_case.items_section": "Alert Placement",
|
|
321
|
-
"modal.cases.add_to_case.path_invalid": "Path must not start or end with a /",
|
|
322
|
-
"modal.cases.add_to_case.select_case": "Search Cases",
|
|
323
|
-
"modal.cases.add_to_case.select_path": "Select Folder Path",
|
|
324
|
-
"modal.cases.add_to_case.title": "Item Title",
|
|
325
|
-
"modal.cases.alerts.resolved": "Resolved Alerts",
|
|
326
|
-
"modal.cases.create_case": "Create Case",
|
|
327
|
-
"modal.cases.create_case.escalation": "Escalation",
|
|
328
|
-
"modal.cases.create_case.full_path": "Full path: {{path}}",
|
|
329
|
-
"modal.cases.create_case.item.path": "Folder Path (optional)",
|
|
330
|
-
"modal.cases.create_case.item.title": "Item Title",
|
|
331
|
-
"modal.cases.create_case.items_section": "Alert Placement",
|
|
332
|
-
"modal.cases.create_case.overview": "Case Overview (Markdown, optional)",
|
|
333
|
-
"modal.cases.create_case.summary": "Short Case Summary",
|
|
334
|
-
"modal.cases.create_case.title": "Case Title",
|
|
335
|
-
"modal.cases.rename_item": "Rename Item",
|
|
336
|
-
"modal.cases.rename_item.error.empty": "Name cannot be empty",
|
|
337
|
-
"modal.cases.rename_item.error.slash": "Name cannot contain '/'",
|
|
338
|
-
"modal.cases.rename_item.error.taken": "An item already exists at this path",
|
|
339
|
-
"modal.cases.rename_item.folder_path": "Folder: {{path}}",
|
|
340
|
-
"modal.cases.rename_item.new_name": "New Name",
|
|
341
|
-
"modal.cases.resolve": "Resolve Case",
|
|
342
|
-
"modal.cases.resolve.description": "When resolving a case, you must either assess all open alerts, or add an assessment to the alerts.",
|
|
343
297
|
"modal.confirm.delete.description": "Are you sure you want to delete this item?",
|
|
344
298
|
"modal.confirm.delete.title": "Confirm Deletion",
|
|
345
299
|
"modal.rationale.description": "Provide a rationale that succinctly explains to other analysts why you are confident in this assessment.",
|
|
@@ -361,8 +315,6 @@
|
|
|
361
315
|
"modal.rule.title": "Create a New Rule",
|
|
362
316
|
"no.data": "No Data",
|
|
363
317
|
"none": "None",
|
|
364
|
-
"normal": "Normal Priority",
|
|
365
|
-
"observable.open": "Open Observable",
|
|
366
318
|
"on": "on",
|
|
367
319
|
"open": "Open",
|
|
368
320
|
"operations.add_label": "Add Label",
|
|
@@ -384,60 +336,6 @@
|
|
|
384
336
|
"page.403.title": "403: Access Forbidden",
|
|
385
337
|
"page.404.description": "The page you are looking for cannot be found...",
|
|
386
338
|
"page.404.title": "404: Not found",
|
|
387
|
-
"page.cases.assets": "Assets",
|
|
388
|
-
"page.cases.assets.empty": "No assets found.",
|
|
389
|
-
"page.cases.assets.filter_by_type": "Filter by type:",
|
|
390
|
-
"page.cases.assets.seen_in": "Seen in",
|
|
391
|
-
"page.cases.assets.type.hash": "Hash",
|
|
392
|
-
"page.cases.assets.type.hosts": "Host",
|
|
393
|
-
"page.cases.assets.type.id": "ID",
|
|
394
|
-
"page.cases.assets.type.ids": "ID",
|
|
395
|
-
"page.cases.assets.type.ip": "IP",
|
|
396
|
-
"page.cases.assets.type.signature": "Signature",
|
|
397
|
-
"page.cases.assets.type.uri": "URI",
|
|
398
|
-
"page.cases.assets.type.user": "User",
|
|
399
|
-
"page.cases.created": "Created",
|
|
400
|
-
"page.cases.dashboard": "Dashboard",
|
|
401
|
-
"page.cases.dashboard.alerts": "Alerts",
|
|
402
|
-
"page.cases.dashboard.cases": "Related Cases",
|
|
403
|
-
"page.cases.dashboard.duration": "Duration",
|
|
404
|
-
"page.cases.dashboard.indicators": "Indicators",
|
|
405
|
-
"page.cases.dashboard.target": "Targets",
|
|
406
|
-
"page.cases.dashboard.tasks": "Tasks",
|
|
407
|
-
"page.cases.dashboard.threat": "Threats",
|
|
408
|
-
"page.cases.detail.participants": "Participants",
|
|
409
|
-
"page.cases.detail.properties": "Properties",
|
|
410
|
-
"page.cases.detail.status": "Status",
|
|
411
|
-
"page.cases.detail.viewers": "Active Viewers",
|
|
412
|
-
"page.cases.escalation": "Escalation",
|
|
413
|
-
"page.cases.folder.drop.root": "Place here to move to root",
|
|
414
|
-
"page.cases.rules": "Rules",
|
|
415
|
-
"page.cases.rules.author": "Author",
|
|
416
|
-
"page.cases.rules.create": "Create Rule",
|
|
417
|
-
"page.cases.rules.delete.confirm": "Delete this rule?",
|
|
418
|
-
"page.cases.rules.destination": "Alert Destination Path",
|
|
419
|
-
"page.cases.rules.destination.help": "Handlebars template for the case item path (e.g. alerts/{{howler.analytic}})",
|
|
420
|
-
"page.cases.rules.empty": "No correlation rules configured.",
|
|
421
|
-
"page.cases.rules.no_expiry": "No expiry",
|
|
422
|
-
"page.cases.rules.query": "Match Query",
|
|
423
|
-
"page.cases.rules.timeframe": "Rule Expiry",
|
|
424
|
-
"page.cases.sidebar.folder.remove": "Remove folder",
|
|
425
|
-
"page.cases.sidebar.item.open": "Open item",
|
|
426
|
-
"page.cases.sidebar.item.remove": "Remove item",
|
|
427
|
-
"page.cases.sidebar.item.rename": "Rename item",
|
|
428
|
-
"page.cases.sources": "Sources",
|
|
429
|
-
"page.cases.status.in-progress": "In Progress",
|
|
430
|
-
"page.cases.status.on-hold": "On Hold",
|
|
431
|
-
"page.cases.status.open": "Open",
|
|
432
|
-
"page.cases.status.resolved": "Resolved",
|
|
433
|
-
"page.cases.timeline": "Timeline",
|
|
434
|
-
"page.cases.timeline.empty": "No events match the selected filters.",
|
|
435
|
-
"page.cases.timeline.filter.escalation": "Escalation",
|
|
436
|
-
"page.cases.timeline.filter.escalation.empty": "No escalation levels found.",
|
|
437
|
-
"page.cases.timeline.filter.label": "Show only",
|
|
438
|
-
"page.cases.timeline.filter.mitre": "MITRE ATT&CK",
|
|
439
|
-
"page.cases.timeline.filter.mitre.empty": "No tactics or techniques found.",
|
|
440
|
-
"page.cases.updated": "Updated",
|
|
441
339
|
"page.dashboard.settings.edit": "Edit Dashboard",
|
|
442
340
|
"page.dashboard.settings.refreshRate": "Refresh Rate",
|
|
443
341
|
"page.dashboard.title": "Dashboard",
|
|
@@ -462,7 +360,6 @@
|
|
|
462
360
|
"page.help": "Help",
|
|
463
361
|
"page.help.title": "Help Dashboard",
|
|
464
362
|
"page.login.button": "Sign in",
|
|
465
|
-
"page.login.error": "Just type anything in the username and password fields...",
|
|
466
363
|
"page.login.password": "Password",
|
|
467
364
|
"page.login.username": "Username",
|
|
468
365
|
"page.logout": "Logging out current user ... ",
|
|
@@ -509,8 +406,6 @@
|
|
|
509
406
|
"page.user.search.column.groups": "Groups",
|
|
510
407
|
"page.user.search.column.username": "Username",
|
|
511
408
|
"page.user.search.prompt": "Search by username, fullname, email or group",
|
|
512
|
-
"pages.cases.detail.participants": "Participants",
|
|
513
|
-
"pages.cases.detail.status": "Status",
|
|
514
409
|
"password": "New Password",
|
|
515
410
|
"password.confirm": "Confirm Password",
|
|
516
411
|
"password.match": "Password and Confirm Password must match",
|
|
@@ -524,7 +419,6 @@
|
|
|
524
419
|
"personalization.showbreadcrumbs": "Show Breadcrumbs",
|
|
525
420
|
"personalization.sticky": "Sticky Topbar",
|
|
526
421
|
"query": "Query",
|
|
527
|
-
"query.invalid": "Invalid query",
|
|
528
422
|
"quicksearch.aria": "search",
|
|
529
423
|
"quicksearch.placeholder": "Search ...",
|
|
530
424
|
"rationale.default": "Hit assessed as {{assessment}}",
|
|
@@ -640,16 +534,6 @@
|
|
|
640
534
|
"route.analytics.triage.title": "Triage Settings",
|
|
641
535
|
"route.analytics.updated": "Analytic Updated!",
|
|
642
536
|
"route.analytics.view": "View Analytic",
|
|
643
|
-
"route.cases": "Cases",
|
|
644
|
-
"route.cases.create": "Create Case",
|
|
645
|
-
"route.cases.filter.assignee": "Assignee",
|
|
646
|
-
"route.cases.filter.assignees": "Assignees",
|
|
647
|
-
"route.cases.filter.date": "Date Range",
|
|
648
|
-
"route.cases.filter.myself": "Myself",
|
|
649
|
-
"route.cases.filter.status": "Status",
|
|
650
|
-
"route.cases.manager.search": "Search Cases",
|
|
651
|
-
"route.cases.search.prompt": "Search cases by title, summary, description, participants or task details",
|
|
652
|
-
"route.cases.view": "View Case",
|
|
653
537
|
"route.clear": "Clear query",
|
|
654
538
|
"route.dossiers": "Dossiers",
|
|
655
539
|
"route.dossiers.create": "New Dossier",
|
|
@@ -712,10 +596,8 @@
|
|
|
712
596
|
"route.help.actions": "Action Documentation",
|
|
713
597
|
"route.help.api": "API Documentation",
|
|
714
598
|
"route.help.auth": "Authentication",
|
|
715
|
-
"route.help.bundles": "Hit Bundles",
|
|
716
599
|
"route.help.client": "Howler Client",
|
|
717
600
|
"route.help.hit": "Hit Documentation",
|
|
718
|
-
"route.help.hit.banner": "Hit Banner Documentation",
|
|
719
601
|
"route.help.main": "Dashboard",
|
|
720
602
|
"route.help.notebook": "Notebook Documentation",
|
|
721
603
|
"route.help.overviews": "Overviews",
|
|
@@ -828,7 +710,6 @@
|
|
|
828
710
|
"search.result.showing": "Showing {{offset}} to {{length}} of {{total}} results",
|
|
829
711
|
"search.result.showing.single": "No results",
|
|
830
712
|
"search.total": "There are a total of {{count}} hits matching this query.",
|
|
831
|
-
"started": "Started",
|
|
832
713
|
"templates.edit.analytic": "Edit analytic template",
|
|
833
714
|
"templates.edit.detection": "Edit detection template",
|
|
834
715
|
"to": "to",
|