web-interface.assets.1255d548-9821.88760b2430a04099d965.js.map Maven / Gradle / Ivy
{"version":3,"file":"1255d548-9821.88760b2430a04099d965.js","mappings":"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","sources":["webpack://graylog-web-interface/./src/components/common/PageNavigation.tsx","webpack://graylog-web-interface/./src/components/pipelines/PipelineConnectionsList.tsx","webpack://graylog-web-interface/./src/components/pipelines/PipelinesPageNavigation.tsx","webpack://graylog-web-interface/./src/components/pipelines/ProcessingTimelineComponent.tsx","webpack://graylog-web-interface/./src/components/pipelines/CreatePipelineButton.tsx","webpack://graylog-web-interface/./src/pages/PipelinesOverviewPage.tsx","webpack://graylog-web-interface/./src/stores/PaginationTypes.ts","webpack://graylog-web-interface/./src/stores/pipelines/PipelineConnectionsStore.ts","webpack://graylog-web-interface/./src/stores/pipelines/PipelinesStore.ts"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { LinkContainer } from 'components/common/router';\nimport { IfPermitted } from 'components/common';\nimport NavItemStateIndicator, {\n hoverIndicatorStyles,\n activeIndicatorStyles,\n} from 'components/common/NavItemStateIndicator';\n\nconst Container = styled(ButtonToolbar)`\n margin-bottom: 10px;\n`;\n\nconst StyledButton = styled(Button)(({ theme }) => css`\n font-family: ${theme.fonts.family.navigation};\n font-size: ${theme.fonts.size.navigation};\n\n &&&& {\n color: ${theme.colors.variant.darker.default};\n \n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > div {\n &:hover,\n &:focus {\n color: ${theme.colors.variant.darker.default};\n }\n }\n\n &:hover {\n ${hoverIndicatorStyles(theme)}\n }\n\n &.active {\n color: ${theme.colors.global.textDefault};\n\n ${activeIndicatorStyles(theme)}\n\n &:hover,\n &:focus {\n ${activeIndicatorStyles(theme)}\n }\n }\n }\n`);\n\nStyledButton.displayName = 'Button';\n\ntype Props = {\n /**\n * List of nav items. Define permissions, if the item should only be displayed for users with specific permissions.\n * By default, an item is active if the current URL starts with the item URL.\n * If you only want to display an item as active only when its path matches exactly, set `exactPathMatch` to true.\n */\n items: Array<{\n title: string,\n path: string,\n permissions?: string | Array\n exactPathMatch?: boolean,\n }>\n}\n\n/**\n * Simple tab navigation to allow navigating to subareas of a page.\n */\nconst PageNavigation = ({ items }: Props) => (\n \n {items.map(({ path, title, permissions, exactPathMatch }) => {\n if (!path) {\n return null;\n }\n\n return (\n \n \n \n \n {title}\n \n \n \n \n );\n })}\n \n);\n\nexport default PageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\nimport type { PipelineType } from 'stores/pipelines/PipelinesStore';\nimport type { PipelineConnectionsType } from 'stores/pipelines/PipelineConnectionsStore';\nimport type { Stream } from 'stores/streams/StreamsStore';\n\ntype Props = {\n pipeline: PipelineType,\n connections: PipelineConnectionsType[],\n streams: Stream[],\n streamsFormatter: (streams: Stream[]) => React.ReactNode,\n noConnectionsMessage?: React.ReactNode,\n}\n\nconst PipelineConnectionsList = ({ pipeline, connections, streams, streamsFormatter, noConnectionsMessage }: Props) => {\n const streamsUsingPipeline = connections\n .filter((c) => c.pipeline_ids && c.pipeline_ids.includes(pipeline.id)) // Get connections for this pipeline\n .filter((c) => streams.some((s) => s.id === c.stream_id)) // Filter out deleted streams\n .map((c) => streams.find((s) => s.id === c.stream_id))\n .sort((s1, s2) => naturalSort(s1.title, s2.title));\n\n return (\n \n {streamsUsingPipeline.length === 0 ? noConnectionsMessage : streamsFormatter(streamsUsingPipeline)}\n \n );\n};\n\nPipelineConnectionsList.propTypes = {\n pipeline: PropTypes.object.isRequired,\n connections: PropTypes.array.isRequired,\n streams: PropTypes.array.isRequired,\n streamsFormatter: PropTypes.func.isRequired,\n noConnectionsMessage: PropTypes.node,\n};\n\nPipelineConnectionsList.defaultProps = {\n noConnectionsMessage: 'Pipeline not connected to any streams',\n};\n\nexport default PipelineConnectionsList;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport PageNavigation from 'components/common/PageNavigation';\nimport Routes from 'routing/Routes';\nimport { Row } from 'components/bootstrap';\n\nconst NAV_ITEMS = [\n { title: 'Manage pipelines', path: Routes.SYSTEM.PIPELINES.OVERVIEW, exactPathMatch: true },\n { title: 'Manage rules', path: Routes.SYSTEM.PIPELINES.RULES },\n { title: 'Simulator', path: Routes.SYSTEM.PIPELINES.SIMULATOR },\n];\n\nconst EventsPageNavigation = () => (\n \n \n
\n);\n\nexport default EventsPageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useEffect, useState } from 'react';\nimport styled, { css } from 'styled-components';\nimport Immutable from 'immutable';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\nimport { LinkContainer, Link } from 'components/common/router';\nimport { Button } from 'components/bootstrap';\nimport { DataTable, Spinner, PaginatedList, SearchForm, QueryHelper } from 'components/common';\nimport { MetricContainer, CounterRate } from 'components/metrics';\nimport Routes from 'routing/Routes';\nimport { useStore } from 'stores/connect';\nimport type { Stream } from 'stores/streams/StreamsStore';\nimport StreamsStore from 'stores/streams/StreamsStore';\nimport type { PaginatedPipelines } from 'stores/pipelines/PipelinesStore';\nimport { PipelinesActions } from 'stores/pipelines/PipelinesStore';\nimport { DEFAULT_PAGINATION } from 'stores/PaginationTypes';\nimport usePaginationQueryParameter from 'hooks/usePaginationQueryParameter';\nimport { PipelineConnectionsStore, PipelineConnectionsActions } from 'stores/pipelines/PipelineConnectionsStore';\nimport useCurrentUser from 'hooks/useCurrentUser';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport ButtonToolbar from 'components/bootstrap/ButtonToolbar';\n\nimport PipelineConnectionsList from './PipelineConnectionsList';\n\nconst StyledPaginatedList = styled(PaginatedList)`\n .pagination {\n margin: 0;\n }\n`;\n\nconst SpinnerWrapper = styled.div(({ theme }) => css`\n font-size: ${theme.fonts.size.h3};\n padding: ${theme.spacings.xxs} ${theme.spacings.sm};\n`);\n\nconst Header = styled.div`\n display: flex;\n`;\n\nconst PipelineStage = styled.div<{ $idle?: boolean }>(({ $idle, theme }) => css`\n border: 1px solid ${theme.colors.gray[$idle ? '50px' : '70px']};\n border-radius: 4px;\n display: inline-block;\n margin-right: 15px;\n padding: 20px;\n text-align: center;\n width: 120px;\n background-color: ${$idle\n ? theme.utils.colorLevel(theme.colors.global.contentBackground, 10)\n : theme.colors.global.contentBackground};\n`);\n\nconst PipelineNameTD = styled.td`\n max-width: 300px;\n overflow-x: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 300px;\n`;\n\nconst StreamListTD = styled.td`\n max-width: 150px;\n width: 150px;\n word-wrap: break-word;\n`;\n\nconst PipelineFilter = ({ query, onSearch }: { query: string, onSearch: (query: string) => void }) => (\n }\n wrapperClass=\"has-bm\"\n onReset={() => onSearch('')}\n topMargin={0} />\n);\n\nconst _formatConnectedStreams = (streams) => streams.map((s) => s.title).join(', ');\n\nconst _loadPipelines = (pagination, setLoading, setPaginatedPipelines) => {\n setLoading(true);\n\n PipelinesActions.listPaginated(pagination).then((paginatedPipelines) => {\n setPaginatedPipelines(paginatedPipelines);\n setLoading(false);\n });\n};\n\nconst ProcessingTimelineComponent = () => {\n const currentUser = useCurrentUser();\n const { connections } = useStore(PipelineConnectionsStore);\n const { page, pageSize: perPage, resetPage, setPagination } = usePaginationQueryParameter();\n const [query, setQuery] = useState('');\n const [streams, setStreams] = useState();\n const [paginatedPipelines, setPaginatedPipelines] = useState();\n const [loading, setLoading] = useState(false);\n const { list: pipelines = Immutable.List(), pagination: { total = 0 } = {} } = paginatedPipelines || {};\n\n useEffect(() => {\n _loadPipelines({ page, perPage, query }, setLoading, setPaginatedPipelines);\n PipelineConnectionsActions.list();\n StreamsStore.listStreams().then(setStreams);\n }, [page, perPage, query]);\n\n const isLoading = !pipelines || !streams || !connections;\n\n if (isLoading) {\n return ;\n }\n\n const handleSearch = (newQuery) => {\n resetPage();\n setQuery(newQuery);\n };\n\n const searchFilter = (\n \n \n {loading && }\n \n );\n\n const _headerCellFormatter = (header) => {\n let className;\n\n if (header === 'Actions') {\n className = 'actions';\n }\n\n return {header} ;\n };\n\n const _formatStages = (pipeline, stages) => {\n const stageNumbers = stages.map((stage) => stage.stage);\n\n return pipelines\n .map(({ stages: pipelineStages }) => pipelineStages.map(({ stage }) => stage))\n .reduce((usedStagesAcc: number[], pipelineStages: number[]) =>\n // Concat stages in a single array removing duplicates\n Array.from(new Set([...usedStagesAcc, ...pipelineStages])),\n [])\n .sort(naturalSort)\n .map((usedStage) => {\n if (stageNumbers.indexOf(usedStage) === -1) {\n return Idle ;\n }\n\n return Stage {usedStage} ;\n });\n };\n\n const _deletePipeline = (pipeline) => () => {\n // TODO: Replace with ConfirmDialog components\n // eslint-disable-next-line no-alert\n if (window.confirm(`Do you really want to delete pipeline \"${pipeline.title}\"? This action cannot be undone.`)) {\n PipelinesActions.delete(pipeline.id).then(() => {\n _loadPipelines({ page, perPage, query }, setLoading, setPaginatedPipelines);\n setPagination({ page: Math.max(DEFAULT_PAGINATION.page, page - 1) });\n });\n }\n };\n\n const _pipelineFormatter = (pipeline) => {\n const { id, title, description, stages } = pipeline;\n\n return (\n \n \n {title}\n
\n {description}\n
\n \n \n \n \n \n Not connected} />\n \n {_formatStages(pipeline, stages)} \n \n \n \n \n \n \n \n \n \n );\n };\n\n const headers = ['Pipeline', 'Connected to Streams', 'Processing Timeline', 'Actions'];\n\n return (\n \n \n \n \n \n );\n};\n\nProcessingTimelineComponent.propTypes = {};\n\nexport default ProcessingTimelineComponent;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport { LinkContainer } from 'components/common/router';\nimport { Button } from 'components/bootstrap';\nimport Routes from 'routing/Routes';\nimport { isPermitted } from 'util/PermissionsMixin';\nimport useCurrentUser from 'hooks/useCurrentUser';\n\nconst CreatePipelineButton = () => {\n const currentUser = useCurrentUser();\n\n return (\n \n \n \n \n \n );\n};\n\nexport default CreatePipelineButton;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\n\nimport { Row, Col } from 'components/bootstrap';\nimport { DocumentTitle, PageHeader } from 'components/common';\nimport ProcessingTimelineComponent from 'components/pipelines/ProcessingTimelineComponent';\nimport DocsHelper from 'util/DocsHelper';\nimport CreatePipelineButton from 'components/pipelines/CreatePipelineButton';\nimport PipelinesPageNavigation from 'components/pipelines/PipelinesPageNavigation';\n\nconst PipelinesOverviewPage = () => (\n \n \n }\n documentationLink={{\n title: 'Pipelines documentation',\n path: DocsHelper.PAGES.PIPELINES,\n }}>\n \n Pipelines let you transform and process messages coming from streams. Pipelines consist of stages where\n rules are evaluated and applied. Messages can go through one or more stages.\n \n \n \n \n \n \n
\n \n);\n\nexport default PipelinesOverviewPage;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport type * as Immutable from 'immutable';\nimport type { $PropertyType } from 'utility-types';\n\nimport type { AdditionalQueries } from 'util/PaginationURL';\nimport type { UrlQueryFilters } from 'components/common/EntityFilters/types';\n\nexport type PaginatedResponseType = {\n count: number,\n total: number,\n page: number,\n per_page: number,\n query: string | null,\n};\n\nexport type PaginatedListJSON = {\n page: $PropertyType,\n per_page: $PropertyType,\n query: $PropertyType,\n total: number,\n count: number,\n};\n\nexport type Pagination = {\n page: number,\n perPage: number,\n query: string,\n additionalQueries?: AdditionalQueries,\n};\n\nexport type ListPagination = Pagination & {\n total: number,\n count: number,\n};\n\nexport const DEFAULT_PAGINATION: Pagination = {\n page: 1,\n perPage: 10,\n query: '',\n};\n\nexport type PaginatedList = {\n list: Immutable.List,\n pagination: ListPagination,\n};\n\nexport type Sort = {\n attributeId: string,\n direction: 'asc' | 'desc'\n};\n\nexport type SearchParams = {\n page: number,\n pageSize: number,\n query: string,\n sort: Sort\n filters?: UrlQueryFilters\n}\n\nexport type Attribute = {\n id: string,\n title: string,\n type?: 'BOOLEAN' | 'STRING' | 'DATE' | 'OBJECT_ID',\n sortable: boolean,\n hidden?: boolean,\n searchable?: boolean,\n filterable?: true,\n filter_options?: Array<{ value: string, title: string }>\n related_collection?: string,\n\n}\n\nexport type Attributes = Array\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport UserNotification from 'util/UserNotification';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport { qualifyUrl } from 'util/URLUtils';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\ntype PipelineConnectionsActionsType = {\n list: () => Promise,\n connectToStream: () => Promise,\n connectToPipeline: () => Promise,\n}\nexport const PipelineConnectionsActions = singletonActions(\n 'core.PipelineConnections',\n () => Reflux.createActions({\n list: { asyncResult: true },\n connectToStream: { asyncResult: true },\n connectToPipeline: { asyncResult: true },\n }),\n);\n\nexport type PipelineConnectionsType = {\n id?: string,\n stream_id: string,\n pipeline_ids: string[],\n};\n\ntype PipelineReverseConnectionsType = {\n pipeline_id: string,\n stream_ids: string[],\n};\n\ntype PipelineConnectionsStoreState = {\n connections: any,\n}\nexport const PipelineConnectionsStore = singletonStore(\n 'core.PipelineConnections',\n () => Reflux.createStore({\n listenables: [PipelineConnectionsActions],\n connections: undefined,\n\n getInitialState() {\n return { connections: this.connections };\n },\n\n list() {\n const failCallback = (error) => {\n UserNotification.error(`Fetching pipeline connections failed with status: ${error.message}`,\n 'Could not retrieve pipeline connections');\n };\n\n const url = qualifyUrl(ApiRoutes.ConnectionsController.list().url);\n const promise = fetch('GET', url);\n\n promise.then((response) => {\n this.connections = response;\n this.trigger({ connections: response });\n }, failCallback);\n },\n\n connectToStream(connection) {\n const url = qualifyUrl(ApiRoutes.ConnectionsController.to_stream().url);\n const updatedConnection: PipelineConnectionsType = {\n stream_id: connection.stream,\n pipeline_ids: connection.pipelines,\n };\n const promise = fetch('POST', url, updatedConnection);\n\n promise.then(\n (response) => {\n if (this.connections.filter((c) => c.stream_id === response.stream_id)[0]) {\n this.connections = this.connections.map((c) => (c.stream_id === response.stream_id ? response : c));\n } else {\n this.connections.push(response);\n }\n\n this.trigger({ connections: this.connections });\n UserNotification.success('Pipeline connections updated successfully');\n },\n this._failUpdateCallback,\n );\n },\n\n connectToPipeline(reverseConnection) {\n const url = qualifyUrl(ApiRoutes.ConnectionsController.to_pipeline().url);\n const updatedConnection: PipelineReverseConnectionsType = {\n pipeline_id: reverseConnection.pipeline,\n stream_ids: reverseConnection.streams,\n };\n const promise = fetch('POST', url, updatedConnection);\n\n promise.then(\n (response) => {\n response.forEach((connection) => {\n if (this.connections.filter((c) => c.stream_id === connection.stream_id)[0]) {\n this.connections = this.connections.map((c) => (c.stream_id === connection.stream_id ? connection : c));\n } else {\n this.connections.push(connection);\n }\n });\n\n this.trigger({ connections: this.connections });\n UserNotification.success('Pipeline connections updated successfully');\n },\n this._failUpdateCallback,\n );\n },\n\n _failUpdateCallback(error) {\n UserNotification.error(`Updating pipeline connections failed with status: ${error.message}`,\n 'Could not update pipeline connections');\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport Immutable from 'immutable';\n\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport type { PaginatedList, PaginatedListJSON, Pagination } from 'stores/PaginationTypes';\nimport PaginationURL from 'util/PaginationURL';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\ntype PipelinesActionsType = {\n delete: (id: string) => Promise,\n list: () => Promise,\n listPaginated: (pagination: Pagination) => Promise,\n get: () => Promise,\n save: () => Promise,\n update: () => Promise,\n parse: () => Promise,\n}\nexport const PipelinesActions = singletonActions(\n 'core.Pipelines',\n () => Reflux.createActions({\n delete: { asyncResult: true },\n list: { asyncResult: true },\n listPaginated: { asyncResult: true },\n get: { asyncResult: true },\n save: { asyncResult: true },\n update: { asyncResult: true },\n parse: { asyncResult: true },\n }),\n);\n\nexport type PipelineType = {\n id: string,\n title: string,\n description: string,\n source: string,\n created_at: string,\n modified_at: string,\n stages: StageType[],\n errors?: [],\n};\n\nexport type StageType = {\n stage: number,\n match: string,\n rules: [string],\n};\n\nexport type PaginatedPipelineResponse = PaginatedListJSON & {\n pipelines: Array,\n};\n\nexport type PaginatedPipelines = PaginatedList;\n\nconst listFailCallback = (error: Error) => {\n UserNotification.error(`Fetching pipelines failed with status: ${error.message}`,\n 'Could not retrieve processing pipelines');\n};\n\nexport const PipelinesStore = singletonStore(\n 'core.Pipelines',\n () => Reflux.createStore({\n listenables: [PipelinesActions],\n pipelines: undefined,\n\n getInitialState() {\n return { pipelines: this.pipelines };\n },\n\n _updatePipelinesState(pipeline: PipelineType) {\n if (!this.pipelines) {\n this.pipelines = [pipeline];\n } else {\n const doesPipelineExist = this.pipelines.some((p) => p.id === pipeline.id);\n\n if (doesPipelineExist) {\n this.pipelines = this.pipelines.map((p) => (p.id === pipeline.id ? pipeline : p));\n } else {\n this.pipelines.push(pipeline);\n }\n }\n\n this.trigger({ pipelines: this.pipelines });\n },\n\n list() {\n const url = qualifyUrl(ApiRoutes.PipelinesController.list().url);\n\n return fetch('GET', url).then((response) => {\n this.pipelines = response;\n this.trigger({ pipelines: response });\n }, listFailCallback);\n },\n\n listPaginated({\n page,\n perPage,\n query,\n }: Pagination): Promise {\n const url = PaginationURL(ApiRoutes.PipelinesController.paginatedList().url, page, perPage, query);\n\n const promise = fetch('GET', qualifyUrl(url)).then((response: PaginatedPipelineResponse) => ({\n list: Immutable.List(response.pipelines),\n pagination: {\n page: response.page,\n perPage: response.per_page,\n query: response.query,\n count: response.count,\n total: response.total,\n },\n }));\n promise.catch(listFailCallback);\n\n PipelinesActions.listPaginated.promise(promise);\n\n return promise;\n },\n\n get(pipelineId) {\n const failCallback = (error) => {\n UserNotification.error(`Fetching pipeline failed with status: ${error.message}`,\n `Could not retrieve processing pipeline \"${pipelineId}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.get(pipelineId).url);\n const promise = fetch('GET', url);\n\n promise.then(this._updatePipelinesState, failCallback);\n },\n\n save(pipelineSource) {\n const failCallback = (error) => {\n UserNotification.error(`Saving pipeline failed with status: ${error.message}`,\n 'Could not save processing pipeline');\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.create().url);\n const pipeline = {\n title: pipelineSource.title,\n description: pipelineSource.description,\n source: pipelineSource.source,\n };\n const promise = fetch('POST', url, pipeline);\n\n promise.then(\n (response) => {\n this._updatePipelinesState(response);\n UserNotification.success(`Pipeline \"${pipeline.title}\" created successfully`);\n },\n failCallback,\n );\n\n PipelinesActions.save.promise(promise);\n },\n\n update(pipelineSource) {\n const failCallback = (error) => {\n UserNotification.error(`Updating pipeline failed with status: ${error.message}`,\n 'Could not update processing pipeline');\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.update(pipelineSource.id).url);\n const pipeline = {\n id: pipelineSource.id,\n title: pipelineSource.title,\n description: pipelineSource.description,\n source: pipelineSource.source,\n };\n const promise = fetch('PUT', url, pipeline);\n\n promise.then(\n (response) => {\n this._updatePipelinesState(response);\n UserNotification.success(`Pipeline \"${pipeline.title}\" updated successfully`);\n },\n failCallback,\n );\n\n PipelinesActions.update.promise(promise);\n },\n delete(pipelineId) {\n const failCallback = (error) => {\n UserNotification.error(`Deleting pipeline failed with status: ${error.message}`,\n `Could not delete processing pipeline \"${pipelineId}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.delete(pipelineId).url);\n\n const promise = fetch('DELETE', url).then(() => {\n const updatedPipelines = this.pipelines || [];\n\n this.pipelines = updatedPipelines.filter((el) => el.id !== pipelineId);\n this.trigger({ pipelines: this.pipelines });\n UserNotification.success(`Pipeline \"${pipelineId}\" deleted successfully`);\n }, failCallback);\n\n PipelinesActions.delete.promise(promise);\n\n return promise;\n },\n parse(pipelineSource, callback) {\n const url = qualifyUrl(ApiRoutes.PipelinesController.parse().url);\n const pipeline = {\n title: pipelineSource.title,\n description: pipelineSource.description,\n source: pipelineSource.source,\n };\n\n return fetch('POST', url, pipeline).then(\n () => {\n // call to clear the errors, the parsing was successful\n callback([]);\n },\n (error) => {\n // a Bad Request indicates a parse error, set all the returned errors in the editor\n if (error.status === 400) {\n callback(error.additional.body);\n }\n },\n );\n },\n }),\n);\n"],"names":["Container","StyledButton","theme","items","path","title","permissions","exactPathMatch","PipelineConnectionsList","pipeline","connections","streams","streamsFormatter","noConnectionsMessage","streamsUsingPipeline","s","s1","s2","NAV_ITEMS","StyledPaginatedList","SpinnerWrapper","Header","PipelineStage","$idle","PipelineNameTD","StreamListTD","PipelineFilter","query","onSearch","_formatConnectedStreams","_loadPipelines","pagination","setLoading","setPaginatedPipelines","paginatedPipelines","ProcessingTimelineComponent","currentUser","useCurrentUser","PipelineConnectionsStore","page","perPage","resetPage","setPagination","usePaginationQueryParameter","setQuery","setStreams","loading","pipelines","total","StreamsStore","handleSearch","newQuery","searchFilter","_headerCellFormatter","header","className","_formatStages","stages","stageNumbers","stage","pipelineStages","usedStagesAcc","usedStage","_deletePipeline","_pipelineFormatter","id","description","Routes","ButtonToolbar","headers","PipelinesPageNavigation","DocsHelper","DEFAULT_PAGINATION","PipelineConnectionsActions","failCallback","error","url","response","connection","updatedConnection","c","reverseConnection","PipelinesActions","listFailCallback","PipelinesStore","p","promise","pipelineId","pipelineSource","updatedPipelines","el","callback"],"sourceRoot":""}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy