You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by kl...@apache.org on 2022/08/20 06:40:04 UTC
[incubator-devlake] branch main updated: fix: use camel-case props for adv json samples (#2782)
This is an automated email from the ASF dual-hosted git repository.
klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new 466fe9c2 fix: use camel-case props for adv json samples (#2782)
466fe9c2 is described below
commit 466fe9c208c20e6c90d4ad82c1ebfc71a3b50eaa
Author: Julien Chinapen <ju...@merico.dev>
AuthorDate: Sat Aug 20 02:40:00 2022 -0400
fix: use camel-case props for adv json samples (#2782)
* fix: use camel-case props for adv json samples
* refactor: update related properties to camel-case
* feat: add application error fallback ui mode
* chore: apply linting cleanups
---
config-ui/src/App.js | 62 ++++++-------
config-ui/src/components/ErrorBoundary.jsx | 103 +++++++++++++++++++++
.../src/components/blueprints/DataScopesGrid.jsx | 4 +-
.../blueprints/create-workflow/AdvancedJSON.jsx | 2 +-
config-ui/src/data/pipeline-config-samples/dbt.js | 4 +-
.../src/data/pipeline-config-samples/default.js | 16 ++--
.../src/data/pipeline-config-samples/feishu.js | 4 +-
.../data/pipeline-config-samples/gitextractor.js | 4 +-
.../src/data/pipeline-config-samples/github.js | 4 +-
.../src/data/pipeline-config-samples/gitlab.js | 4 +-
.../src/data/pipeline-config-samples/jenkins.js | 4 +-
config-ui/src/data/pipeline-config-samples/jira.js | 4 +-
.../src/data/pipeline-config-samples/refdiff.js | 4 +-
.../src/data/pipeline-config-samples/starrocks.js | 4 +-
.../src/pages/blueprints/blueprint-settings.jsx | 52 +++++------
15 files changed, 188 insertions(+), 87 deletions(-)
diff --git a/config-ui/src/App.js b/config-ui/src/App.js
index 8161293d..94d37fa0 100644
--- a/config-ui/src/App.js
+++ b/config-ui/src/App.js
@@ -19,7 +19,7 @@
import React from 'react'
import {
BrowserRouter as Router,
- Route,
+ Route
} from 'react-router-dom'
import 'normalize.css'
@@ -32,6 +32,7 @@ import '@fontsource/inter/variable-full.css'
// Theme variables (@styles/theme.scss) injected via Webpack w/ @sass-loader additionalData option!
// import '@/styles/theme.scss'
+import ErrorBoundary from '@/components/ErrorBoundary'
import Configure from './pages/configure/index'
import Integration from '@/pages/configure/integration/index'
import ManageIntegration from '@/pages/configure/integration/manage'
@@ -52,62 +53,59 @@ import Connections from '@/pages/connections/index'
function App () {
return (
<Router>
- {/* Admin */}
<Route exact path='/'>
- <Integration />
+ <ErrorBoundary>
+ <Integration />
+ </ErrorBoundary>
</Route>
<Route path='/integrations/:providerId'>
- <ManageIntegration />
+ <ErrorBoundary>
+ <ManageIntegration />
+ </ErrorBoundary>
</Route>
<Route path='/connections/add/:providerId'>
- <AddConnection />
- </Route>
- <Route path='/connections/edit/:providerId/:connectionId'>
- <EditConnection />
+ <ErrorBoundary>
+ <AddConnection />
+ </ErrorBoundary>
</Route>
<Route path='/connections/configure/:providerId/:connectionId'>
- <ConfigureConnection />
+ <ErrorBoundary>
+ <ConfigureConnection />
+ </ErrorBoundary>
</Route>
<Route exact path='/integrations'>
- <Integration />
- </Route>
- <Route exact path='/triggers'>
- <Triggers />
- </Route>
- <Route exact path='/pipelines/create'>
- <CreatePipeline />
- </Route>
- <Route exact path='/pipelines'>
- <Pipelines />
- </Route>
- <Route exact path='/pipelines/activity'>
- <PipelineActivity />
- </Route>
- <Route exact path='/pipelines/activity/:pId'>
- <PipelineActivity />
+ <ErrorBoundary>
+ <Integration />
+ </ErrorBoundary>
</Route>
<Route exact path='/blueprints/create'>
- <CreateBlueprint />
+ <ErrorBoundary>
+ <CreateBlueprint />
+ </ErrorBoundary>
</Route>
<Route exact path='/blueprints/detail/:bId'>
- <BlueprintDetail />
+ <ErrorBoundary>
+ <BlueprintDetail />
+ </ErrorBoundary>
</Route>
<Route exact path='/blueprints/settings/:bId'>
- <BlueprintSettings />
+ <ErrorBoundary>
+ <BlueprintSettings />
+ </ErrorBoundary>
</Route>
<Route exact path='/blueprints'>
- <Blueprints />
+ <ErrorBoundary>
+ <Blueprints />
+ </ErrorBoundary>
</Route>
<Route exact path='/connections'>
<Connections />
</Route>
- <Route exact path='/lake/api/configuration'>
- <Configure />
- </Route>
<Route exact path='/offline'>
<Offline />
</Route>
</Router>
+
)
}
diff --git a/config-ui/src/components/ErrorBoundary.jsx b/config-ui/src/components/ErrorBoundary.jsx
new file mode 100644
index 00000000..daefc1a7
--- /dev/null
+++ b/config-ui/src/components/ErrorBoundary.jsx
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+import React, { Fragment } from 'react'
+import { withRouter } from 'react-router-dom'
+import { Button, Intent, Icon, Colors, Elevation, Card } from '@blueprintjs/core'
+import Nav from '@/components/Nav'
+import Sidebar from '@/components/Sidebar'
+import AppCrumbs from '@/components/Breadcrumbs'
+import Content from '@/components/Content'
+import ContentLoader from '@/components/loaders/ContentLoader'
+import { ReactComponent as Logo } from '@/images/devlake-logo.svg'
+import { ReactComponent as LogoText } from '@/images/devlake-textmark.svg'
+
+class ErrorBoundary extends React.Component {
+ constructor (props) {
+ super(props)
+ this.state = {
+ hasError: false,
+ error: null,
+ errorInfo: null
+ }
+ }
+
+ static getDerivedStateFromError (error) {
+ console.log('>>> DEVLAKE APP ERROR:', error)
+ return { hasError: true, error: error }
+ }
+
+ componentDidCatch (error, errorInfo) {
+ console.log('>>> DEVLAKE ERROR STACKTRACE:', errorInfo, error)
+ }
+
+ render () {
+ if (this.state.hasError) {
+ return (
+ <>
+ <div className='container'>
+ <Nav />
+ <Content>
+ <main className='main' style={{ marginLeft: 0 }}>
+ <div className='headlineContainer'>
+ <div style={{ display: 'flex', justifyContent: 'center' }}>
+ <div>
+ <div className='devlake-logo' style={{ margin: 0 }}>
+ <Logo width={48} height={48} className='logo' />
+ <LogoText width={100} height={13} className='logo-textmark' />
+ </div>
+ <h1 style={{ margin: 0, textAlign: 'center' }}>
+ Application Error
+ </h1>
+ <Card elevation={Elevation.TWO} style={{ margin: '18px 0', maxWidth: '700px' }}>
+ <h2 style={{ margin: 0 }}>
+ <span style={{ display: 'inline-block', marginRight: '10px' }}>
+ <Icon icon='error' color={Colors.RED5} size={16} />
+ </span>
+ {this.state.error?.toString() || 'Unknown Error'}
+ </h2>
+ <p style={{ margin: 0 }}>
+ Please try again, if the problem persists include the above error message when filing a bug report on <strong>GitHub</strong>.
+ You can also message us on <strong>Slack</strong> to engage with community members for solutions to common issues.
+ </p>
+ <p style={{ margin: '18px 0 0 0', textAlign: 'center' }}>
+ <Button onClick={() => this.props.history.push('/')} text='Continue' intent={Intent.PRIMARY} />
+ <a
+ href='https://github.com/apache/incubator-devlake'
+ className='bp3-button bp3-outlined'
+ target='_blank'
+ style={{ marginLeft: '10px' }}
+ rel='noreferrer'
+ >
+ Visit GitHub
+ </a>
+ </p>
+ </Card>
+ </div>
+ </div>
+ </div>
+ </main>
+ </Content>
+ </div>
+ </>
+ )
+ }
+
+ return this.props.children
+ }
+}
+export default withRouter(ErrorBoundary)
diff --git a/config-ui/src/components/blueprints/DataScopesGrid.jsx b/config-ui/src/components/blueprints/DataScopesGrid.jsx
index b7c13609..c1ccd540 100644
--- a/config-ui/src/components/blueprints/DataScopesGrid.jsx
+++ b/config-ui/src/components/blueprints/DataScopesGrid.jsx
@@ -204,9 +204,9 @@ const DataScopesGrid = (props) => {
}}
>
<Button
- disabled={[Providers.JENKINS, Providers.TAPD].includes(c.providerId)}
+ disabled={mode === BlueprintMode.NORMAL && [Providers.JENKINS, Providers.TAPD].includes(c.providerId)}
icon='annotation'
- intent={c.providerId === Providers.JENKINS ? Intent.NONE : Intent.PRIMARY}
+ intent={mode === BlueprintMode.NORMAL && c.providerId === Providers.JENKINS ? Intent.NONE : Intent.PRIMARY}
size={12}
small
minimal
diff --git a/config-ui/src/components/blueprints/create-workflow/AdvancedJSON.jsx b/config-ui/src/components/blueprints/create-workflow/AdvancedJSON.jsx
index 5d6f165c..9bf0076c 100644
--- a/config-ui/src/components/blueprints/create-workflow/AdvancedJSON.jsx
+++ b/config-ui/src/components/blueprints/create-workflow/AdvancedJSON.jsx
@@ -99,7 +99,7 @@ const AdvancedJSON = (props) => {
<Card
className='code-editor-card'
interactive={false}
- elevation={elevation}
+ elevation={Elevation.ZERO}
style={{ padding: '2px', minWidth: '320px', width: '100%', maxWidth: '100%', marginBottom: '20px', ...cardStyle }}
>
<TextArea
diff --git a/config-ui/src/data/pipeline-config-samples/dbt.js b/config-ui/src/data/pipeline-config-samples/dbt.js
index f9199f01..025e17f4 100644
--- a/config-ui/src/data/pipeline-config-samples/dbt.js
+++ b/config-ui/src/data/pipeline-config-samples/dbt.js
@@ -18,8 +18,8 @@
const dbtConfig = [
[
{
- Plugin: 'dbt',
- Options: {
+ plugin: 'dbt',
+ options: {
projectPath: '/var/www/html/my-project',
projectName: 'myproject',
projectTarget: 'dev',
diff --git a/config-ui/src/data/pipeline-config-samples/default.js b/config-ui/src/data/pipeline-config-samples/default.js
index 99c7c144..3d34d317 100644
--- a/config-ui/src/data/pipeline-config-samples/default.js
+++ b/config-ui/src/data/pipeline-config-samples/default.js
@@ -18,28 +18,28 @@
const defaultConfig = [
[
{
- Plugin: 'gitlab',
- Options: {
+ plugin: 'gitlab',
+ options: {
projectId: 8967944,
connectionId: 1
}
},
{
- Plugin: 'jira',
- Options: {
+ plugin: 'jira',
+ options: {
boardId: 8,
connectionId: 1
}
},
{
- Plugin: 'jenkins',
- Options: {
+ plugin: 'jenkins',
+ options: {
connectionId: 1
}
},
{
- Plugin: 'github',
- Options: {
+ plugin: 'github',
+ options: {
repo: 'lake',
owner: 'merico-dev',
connectionId: 1
diff --git a/config-ui/src/data/pipeline-config-samples/feishu.js b/config-ui/src/data/pipeline-config-samples/feishu.js
index 0498e699..877b38fa 100644
--- a/config-ui/src/data/pipeline-config-samples/feishu.js
+++ b/config-ui/src/data/pipeline-config-samples/feishu.js
@@ -18,8 +18,8 @@
const feishuConfig = [
[
{
- Plugin: 'feishu',
- Options: {}
+ plugin: 'feishu',
+ options: {}
}
]
]
diff --git a/config-ui/src/data/pipeline-config-samples/gitextractor.js b/config-ui/src/data/pipeline-config-samples/gitextractor.js
index b9e99185..25448473 100644
--- a/config-ui/src/data/pipeline-config-samples/gitextractor.js
+++ b/config-ui/src/data/pipeline-config-samples/gitextractor.js
@@ -18,8 +18,8 @@
const gitextractorConfig = [
[
{
- Plugin: 'gitextractor',
- Options: {
+ plugin: 'gitextractor',
+ options: {
url: 'https://github.com/apache/incubator-devlake.git',
repoId: 'github:GithubRepo:384111310'
}
diff --git a/config-ui/src/data/pipeline-config-samples/github.js b/config-ui/src/data/pipeline-config-samples/github.js
index 3432f983..528009e2 100644
--- a/config-ui/src/data/pipeline-config-samples/github.js
+++ b/config-ui/src/data/pipeline-config-samples/github.js
@@ -16,8 +16,8 @@
*
*/
const githubConfig = [[{
- Plugin: 'github',
- Options: {
+ plugin: 'github',
+ options: {
repo: 'lake',
owner: 'merico-dev',
connectionId: 1
diff --git a/config-ui/src/data/pipeline-config-samples/gitlab.js b/config-ui/src/data/pipeline-config-samples/gitlab.js
index a2d84bd3..e93c66cd 100644
--- a/config-ui/src/data/pipeline-config-samples/gitlab.js
+++ b/config-ui/src/data/pipeline-config-samples/gitlab.js
@@ -16,8 +16,8 @@
*
*/
const gitlabConfig = [[{
- Plugin: 'gitlab',
- Options: {
+ plugin: 'gitlab',
+ options: {
projectId: 278964,
connectionId: 1
}
diff --git a/config-ui/src/data/pipeline-config-samples/jenkins.js b/config-ui/src/data/pipeline-config-samples/jenkins.js
index 1bf29637..d6d98b57 100644
--- a/config-ui/src/data/pipeline-config-samples/jenkins.js
+++ b/config-ui/src/data/pipeline-config-samples/jenkins.js
@@ -18,8 +18,8 @@
const jenkinsConfig = [
[
{
- Plugin: 'jenkins',
- Options: {
+ plugin: 'jenkins',
+ options: {
connectionId: 1
}
}
diff --git a/config-ui/src/data/pipeline-config-samples/jira.js b/config-ui/src/data/pipeline-config-samples/jira.js
index 02a4d455..511499fc 100644
--- a/config-ui/src/data/pipeline-config-samples/jira.js
+++ b/config-ui/src/data/pipeline-config-samples/jira.js
@@ -18,8 +18,8 @@
const jiraConfig = [
[
{
- Plugin: 'jira',
- Options: {
+ plugin: 'jira',
+ options: {
connectionId: 1,
boardId: 8,
since: '2006-01-02T15:04:05Z'
diff --git a/config-ui/src/data/pipeline-config-samples/refdiff.js b/config-ui/src/data/pipeline-config-samples/refdiff.js
index 969640c2..678a645e 100644
--- a/config-ui/src/data/pipeline-config-samples/refdiff.js
+++ b/config-ui/src/data/pipeline-config-samples/refdiff.js
@@ -18,8 +18,8 @@
const refdiffConfig = [
[
{
- Plugin: 'refdiff',
- Options: {
+ plugin: 'refdiff',
+ options: {
repoId: 'github:GithubRepo:384111310',
pairs: [
{ newRef: 'refs/tags/v0.6.0', oldRef: 'refs/tags/0.5.0' },
diff --git a/config-ui/src/data/pipeline-config-samples/starrocks.js b/config-ui/src/data/pipeline-config-samples/starrocks.js
index 40631d2b..a6031392 100644
--- a/config-ui/src/data/pipeline-config-samples/starrocks.js
+++ b/config-ui/src/data/pipeline-config-samples/starrocks.js
@@ -18,8 +18,8 @@
const starRocksConfig = [
[
{
- Plugin: 'starrocks',
- Options: {
+ plugin: 'starrocks',
+ options: {
host: '127.0.0.1',
port: 9030,
user: 'root',
diff --git a/config-ui/src/pages/blueprints/blueprint-settings.jsx b/config-ui/src/pages/blueprints/blueprint-settings.jsx
index f2a30163..5b7c636e 100644
--- a/config-ui/src/pages/blueprints/blueprint-settings.jsx
+++ b/config-ui/src/pages/blueprints/blueprint-settings.jsx
@@ -586,13 +586,13 @@ const BlueprintSettings = (props) => {
: []
// @todo: handle multi-stage
const getAdvancedGithubProjects = (t, providerId) => [Providers.GITHUB].includes(providerId)
- ? [`${t.Options.owner}/${t.Options?.repo}`]
+ ? [`${t.options?.owner}/${t.options?.repo}`]
: []
const getAdvancedGitlabProjects = (t, providerId) => [Providers.GITLAB].includes(providerId)
- ? [t.Options?.projectId]
+ ? [t.options?.projectId]
: []
const getAdvancedJiraBoards = (t, providerId) => [Providers.JIRA].includes(providerId)
- ? [t.Options?.boardId]
+ ? [t.options?.boardId]
: []
// @todo: migrate to data scopes manager
if (activeBlueprint?.id && activeBlueprint?.mode === BlueprintMode.NORMAL) {
@@ -604,7 +604,7 @@ const BlueprintSettings = (props) => {
connectionId: c.connectionId,
value: c.connectionId,
provider: integrationsData.find((i) => i.id === c.plugin),
- providerLabel: ProviderLabels[c.plugin.toUpperCase()],
+ providerLabel: ProviderLabels[c.plugin?.toUpperCase()],
providerId: c.plugin,
plugin: c.plugin,
icon: ProviderIcons[c.plugin] ? ProviderIcons[c.plugin](18, 18) : null,
@@ -642,34 +642,34 @@ const BlueprintSettings = (props) => {
setConnections(
activeBlueprint?.plan?.flat().map((c, cIdx) => ({
...c,
- id: connectionsList.find(lC => lC.value === c.Options.connectionId && lC.provider === c.Plugin)?.id,
- connectionId: c.Options?.connectionId,
- value: c.Options?.connectionId,
- provider: integrationsData.find((i) => i.id === c.Plugin),
- providerLabel: ProviderLabels[c.Plugin.toUpperCase()],
- plugin: c.Plugin,
- providerId: c.Plugin,
- icon: ProviderIcons[c.Plugin] ? ProviderIcons[c.Plugin](18, 18) : null,
- name: allProviderConnections.find(pC => pC.connectionId === c.Options.connectionId && pC.provider === c.Plugin)?.name || `Connection ID #${c.Options.connectionId || cIdx}`,
- projects: [Providers.GITLAB].includes(c.Plugin)
- ? getAdvancedGitlabProjects(c, c.Plugin)
- : getAdvancedGithubProjects(c, c.Plugin),
+ id: connectionsList.find(lC => lC.value === c.options?.connectionId && lC.provider === c.plugin)?.id,
+ connectionId: c.options?.connectionId,
+ value: c.options?.connectionId,
+ provider: integrationsData.find((i) => i.id === c.plugin),
+ providerLabel: ProviderLabels[c.plugin?.toUpperCase()],
+ plugin: c.plugin,
+ providerId: c.plugin,
+ icon: ProviderIcons[c.plugin] ? ProviderIcons[c.plugin](18, 18) : null,
+ name: allProviderConnections.find(pC => pC.connectionId === c.options?.connectionId && pC.provider === c.plugin)?.name || `Connection ID #${c.options?.connectionId || cIdx}`,
+ projects: [Providers.GITLAB].includes(c.plugin)
+ ? getAdvancedGitlabProjects(c, c.plugin)
+ : getAdvancedGithubProjects(c, c.plugin),
// entities: DEFAULT_DATA_ENTITIES.map(e => e.title),
entities: ['-'],
- entitityList: getDefaultEntities(c.Plugin),
- boards: [Providers.JIRA].includes(c.Plugin)
- ? getAdvancedJiraBoards(c, c.Plugin).map(bId => `Board ${bId}`)
+ entitityList: getDefaultEntities(c.plugin),
+ boards: [Providers.JIRA].includes(c.plugin)
+ ? getAdvancedJiraBoards(c, c.plugin).map(bId => `Board ${bId}`)
: [],
- boardIds: [Providers.JIRA].includes(c.Plugin)
- ? getAdvancedJiraBoards(c, c.Plugin)
+ boardIds: [Providers.JIRA].includes(c.plugin)
+ ? getAdvancedJiraBoards(c, c.plugin)
: [],
- boardList: [Providers.JIRA].includes(c.Plugin)
- ? getAdvancedJiraBoards(c, c.Plugin).map(bId => `Board ${bId}`)
+ boardList: [Providers.JIRA].includes(c.plugin)
+ ? getAdvancedJiraBoards(c, c.plugin).map(bId => `Board ${bId}`)
: [],
transformations: {},
// transformationStates: ['-'],
- transformationStates: typeof c.Options?.transformationRules === 'object' &&
- Object.values(c.Options?.transformationRules).some(v => (Array.isArray(v) && v.length > 0) || v.toString().length > 0)
+ transformationStates: typeof c.options?.transformationRules === 'object' &&
+ Object.values(c.options?.transformationRules).some(v => (Array.isArray(v) && v.length > 0) || v.toString().length > 0)
? ['Added'] : ['-'],
scope: c,
task: c,
@@ -814,7 +814,7 @@ const BlueprintSettings = (props) => {
setBlueprintConnections(
connections.map(
c => connectionsList.find(
- cItem => cItem.connectionId === c.connectionId && cItem.provider === c.provider.id
+ cItem => cItem.connectionId === c.connectionId && cItem.provider === c.provider?.id
)
)
)