Skip to content

Commit 8426b77

Browse files
committed
Merge branch 'master' into fix-merge
2 parents d679e7b + d0b09ca commit 8426b77

File tree

15 files changed

+283
-21
lines changed

15 files changed

+283
-21
lines changed

src/assets/catalog/sentry.svg

+15
Loading

src/assets/sprite-icons/fastapi.svg

+1
Loading

src/assets/sprite-icons/flask.svg

+1
Loading

src/components/catalog/GuidePageHeader.vue

+12-4
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,22 @@
2222
</div>
2323
<CatalogItemLabel
2424
class="guide-page-header__label"
25-
item-type="catcher"
25+
:item-type="badge"
2626
/>
2727
</div>
2828
<div class="guide-page-header__description">
2929
{{ description }}
3030
</div>
3131
<div class="guide-page-header__info">
32-
<a :href="githubLink">
32+
<a
33+
v-if="githubLink"
34+
:href="githubLink"
35+
>
3336
<Icon symbol="github" />
3437
{{ $t('components.catalog.viewSource') }}
3538
</a>
3639
<a
40+
v-if="readmeLink"
3741
:href="readmeLink"
3842
>
3943
{{ $t('components.catalog.viewReadme') }}
@@ -61,17 +65,21 @@ export default {
6165
type: String,
6266
required: true,
6367
},
68+
badge: {
69+
type: String,
70+
default: 'catcher',
71+
},
6472
githubLink: {
6573
type: String,
66-
required: true,
74+
default: '',
6775
},
6876
description: {
6977
type: String,
7078
required: true,
7179
},
7280
readmeLink: {
7381
type: String,
74-
required: true,
82+
default: '',
7583
},
7684
},
7785
data() {

src/components/catalog/Item.vue

+14-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<template>
2-
<div class="catalog-item">
2+
<div
3+
class="catalog-item"
4+
:class="{'catalog-item--wide': isWide}"
5+
>
36
<div
47
class="catalog-item__header"
58
:style="{'background-image': `url(${image})`}"
@@ -48,6 +51,10 @@ export default {
4851
type: String,
4952
required: true,
5053
},
54+
isWide: {
55+
type: Boolean,
56+
default: false,
57+
},
5158
},
5259
};
5360
</script>
@@ -63,8 +70,13 @@ export default {
6370
cursor: pointer;
6471
transition: all 120ms ease;
6572
73+
&--wide {
74+
max-width: 300px;
75+
}
76+
6677
&__header {
6778
height: 100px;
79+
flex-shrink: 0;
6880
background-position: center center;
6981
background-size: cover;
7082
border-radius: 4px;
@@ -87,7 +99,7 @@ export default {
8799
}
88100
89101
&__install-button {
90-
margin: 15px auto 15px 15px;
102+
margin: 0 auto 15px 15px;
91103
text-transform: uppercase;
92104
}
93105

src/components/catalog/catchers/AddCatcher.vue

+36
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,26 @@
5252
:class="{'project-add-catcher__catalog-item--not-implemented': !item.page}"
5353
@click.native="item.page && $router.push({name: 'setup-catcher', params: {projectId: $route.params.projectId, page: item.page}})"
5454
/>
55+
56+
<a class="project-add-catcher__catalog-more" href="https://docs.hawk.so/integrations?from=garage" target="_blank">
57+
{{ $t('components.catalog.discoverMore') }}
58+
</a>
59+
60+
<h2 class="project-add-catcher__catalog-header">
61+
{{ $t('components.catalog.migrationFromSentry') }}
62+
</h2>
63+
<CatalogItem
64+
type="external"
65+
class="project-add-catcher__catalog-item"
66+
:name="'SENTRY'"
67+
:isWide="true"
68+
:image="require('../../../assets/catalog/sentry.svg')"
69+
:description="$t('components.catalog.migrationFromSentryDescription')"
70+
@click.native="$router.push({name: 'setup-catcher', params: {projectId: $route.params.projectId, page: 'sentry'}})"
71+
/>
72+
<div class="project-add-catcher__migration-description"></div>
5573
</div>
74+
5675
</div>
5776
</div>
5877
</template>
@@ -243,6 +262,7 @@ export default {
243262
display: flex;
244263
flex-direction: column;
245264
justify-content: center;
265+
margin-bottom: 100px;
246266
}
247267
248268
&__catalog-header {
@@ -283,5 +303,21 @@ export default {
283303
max-width: 245px;
284304
}
285305
}
306+
307+
&__catalog-more {
308+
background-color: var(--color-bg-main);
309+
margin: 7.5px 7.5px 50px;
310+
text-align: center;
311+
padding: 18px 20px;
312+
border-radius: 4px;
313+
width: 100%;
314+
cursor: pointer;
315+
transition: all 0.2s ease;
316+
317+
&:hover {
318+
box-shadow: 0 6px 12px -5px rgba(0,0,0,0.15);
319+
transform: translateY(-2px);
320+
}
321+
}
286322
}
287323
</style>

src/components/catalog/catchers/dynamicLoadGuidePages.js

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export default {
1111
async beforeRouteEnter(to, _from, next) {
1212
const hasSeparatePage = [
1313
'javascript',
14+
'sentry',
1415
];
1516

1617
let view = 'common';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
<template>
2+
<div class="guide-page">
3+
<GuideHeader
4+
class="guide-page__header"
5+
:background-image="
6+
require('../../../../assets/catalog/sentry.svg')
7+
"
8+
catcher-name="Sentry"
9+
:badge="'external'"
10+
:description="$t('components.catalog.migrationFromSentryDescription')"
11+
/>
12+
<div class="guide-page__instructions">
13+
<div class="guide-page__instructions-header">
14+
{{ $t('components.catalog.installation') }}
15+
</div>
16+
<GuideStepBlock :step-number="1">
17+
<template #header>
18+
{{ $t('components.catalog.getDSN') }}
19+
</template>
20+
<template #content>
21+
{{ $t('components.catalog.hereIsDSN') }}
22+
<TokenBlock v-if="computedDSN" :token="computedDSN" />
23+
<template v-else>
24+
<p style="color: var(--color-indicator-critical);">
25+
{{ $t('projects.settings.integrations.sentryDSNTextNoToken') }}
26+
</p>
27+
<UiButton
28+
:href="`/project/${project.id}/settings/integrations`"
29+
:content="$t('projects.settings.general.title')"
30+
/>
31+
</template>
32+
</template>
33+
</GuideStepBlock>
34+
<GuideStepBlock
35+
:step-number="2"
36+
last
37+
>
38+
<template #header>
39+
{{ $t('components.catalog.useDSN') }}
40+
</template>
41+
<template #content>
42+
{{ $t('components.catalog.useDSNText') }}
43+
</template>
44+
</GuideStepBlock>
45+
</div>
46+
</div>
47+
</template>
48+
49+
<script>
50+
import GuideStepBlock from '../../GuideStepBlock';
51+
import GuideHeader from '../../GuidePageHeader';
52+
import TokenBlock from '../../../project/TokenBlock';
53+
import { getSentryDSN } from '../../../../utils';
54+
import UiButton from '../../../utils/UiButton';
55+
56+
export default {
57+
name: 'SetupJavascriptCatcher',
58+
components: {
59+
GuideStepBlock,
60+
GuideHeader,
61+
TokenBlock,
62+
UiButton,
63+
},
64+
data() {
65+
return {
66+
repoUrl: 'https://github.com/codex-team/hawk.javascript',
67+
readmeUrl: 'https://github.com/codex-team/hawk.javascript/blob/master/README.md',
68+
};
69+
},
70+
computed: {
71+
/**
72+
* Current viewed project
73+
*
74+
* @returns {Project}
75+
*/
76+
project() {
77+
const projectId = this.$route.params.projectId;
78+
79+
return this.$store.getters.getProjectById(projectId);
80+
},
81+
82+
computedDSN() {
83+
if (!this.project || !this.project.token) {
84+
return '';
85+
}
86+
87+
return getSentryDSN(this.project.token);
88+
},
89+
},
90+
};
91+
</script>
92+
93+
<style src="../../../../styles/guide-page.css"></style>

src/components/event/Overview.vue

+15-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@
3636
icon="nuxt"
3737
title="Nuxt"
3838
/>
39+
<DetailsAddons
40+
v-if="getIntegrationAddons('flask')"
41+
class="event-overview__section"
42+
:addons="getIntegrationAddons('flask')"
43+
icon="flask"
44+
title="Flask"
45+
/>
46+
<DetailsAddons
47+
v-if="getIntegrationAddons('fastapi')"
48+
class="event-overview__section"
49+
:addons="getIntegrationAddons('fastapi')"
50+
icon="fastapi"
51+
title="FastAPI"
52+
/>
3953
<DetailsAddons
4054
v-if="hasContext"
4155
class="event-overview__section"
@@ -120,7 +134,7 @@ export default Vue.extend({
120134
return null;
121135
}
122136
123-
const integrationToFilter = [ 'vue', 'nuxt' ];
137+
const integrationToFilter = [ 'vue', 'nuxt', 'flask', 'fastapi'];
124138
const filteredAddons = {};
125139
126140
Object.entries(this.event.payload.addons).forEach(([name, value]) => {

0 commit comments

Comments
 (0)