feat(frontent): re-adds onboarding wizard
This commit is contained in:
@@ -0,0 +1,255 @@
|
||||
<template>
|
||||
<div v-if="quickstart > 0" class="ma-3">
|
||||
<div v-if="user" class="ma-5 headline justify-center text-center">
|
||||
Hello {{ user.name.split(' ')[0] }} 👋,
|
||||
<br />
|
||||
It seems you're new here, let's get you set up!
|
||||
</div>
|
||||
<v-stepper v-model="quickstart" flat shaped vertical class="rounded-lg quickstart-stepper mt-5">
|
||||
<v-btn
|
||||
small
|
||||
text
|
||||
class="white--grey"
|
||||
style="position: absolute; top: 5px; right: 5px; z-index: 1002"
|
||||
@click="skip"
|
||||
>
|
||||
Skip
|
||||
</v-btn>
|
||||
<v-stepper-step :complete="quickstart > 1" step="1">Create your first stream</v-stepper-step>
|
||||
|
||||
<v-stepper-content step="1" class="body-2">
|
||||
<p>
|
||||
Streams are the
|
||||
<b>primary way Speckle organizes data</b>
|
||||
. You can see them as a folder, a project or a repository.
|
||||
</p>
|
||||
<p>
|
||||
Streams
|
||||
<b>can be shared with others</b>
|
||||
and can be made publicly visible on the web. Only the owner of a stream can manage its
|
||||
permissions and visibility.
|
||||
</p>
|
||||
<p>
|
||||
In order to use Speckle you first need to create a stream, so
|
||||
<b>go ahead and create your first one</b>
|
||||
!
|
||||
</p>
|
||||
</v-stepper-content>
|
||||
|
||||
<v-stepper-step :complete="quickstart > 2" step="2">Install Speckle Manager</v-stepper-step>
|
||||
|
||||
<v-stepper-content step="2" class="body-2">
|
||||
<p>
|
||||
Speckle Manager is a free
|
||||
<b>desktop application</b>
|
||||
that lets you install connectors for some of the most popular design and analysis
|
||||
software.
|
||||
</p>
|
||||
<p>
|
||||
The connectors
|
||||
<b>exchange</b>
|
||||
geometry and BIM data with Speckle, so that you can access it wherever you want!
|
||||
</p>
|
||||
<v-btn elevation="10" class="my-5" rounded color="primary" @click="downloadManager">
|
||||
<v-icon small class="mr-4">mdi-download</v-icon>
|
||||
Download Manager
|
||||
</v-btn>
|
||||
</v-stepper-content>
|
||||
|
||||
<v-stepper-step :complete="quickstart > 3" step="3">Set up Speckle Manager</v-stepper-step>
|
||||
|
||||
<v-stepper-content step="3">
|
||||
<p>
|
||||
With Speckle Manager installed,
|
||||
<b>log into your account</b>
|
||||
and then
|
||||
<b>install the connectors</b>
|
||||
for the software that you use.
|
||||
</p>
|
||||
<p>
|
||||
<v-btn
|
||||
elevation="10"
|
||||
rounded
|
||||
color="primary"
|
||||
target="_blank"
|
||||
@click="refreshApplications"
|
||||
>
|
||||
Done
|
||||
</v-btn>
|
||||
</p>
|
||||
|
||||
<p v-if="refreshFailied" class="red--text caption">
|
||||
Please install Manager and log into your account to continue.
|
||||
</p>
|
||||
|
||||
<p class="caption">Having issues logging in Manager? Try with the button below:</p>
|
||||
<v-btn small text rounded color="primary" @click="addAccount">
|
||||
<v-icon small class="mr-4">mdi-account-plus</v-icon>
|
||||
Add account to manager
|
||||
</v-btn>
|
||||
</v-stepper-content>
|
||||
|
||||
<v-stepper-step step="4">Send data to Speckle</v-stepper-step>
|
||||
<v-stepper-content step="4">
|
||||
<p>Great progress 🥳!</p>
|
||||
<p>
|
||||
We're almost done here, and just need to send your first set of data to Speckle. By doing
|
||||
so you will also be creating your first
|
||||
<b>commit.</b>
|
||||
</p>
|
||||
<p>
|
||||
Commits are
|
||||
<b>snapshots or versions of your data in time.</b>
|
||||
Every time you send to Speckle, a new commit is created for you.
|
||||
</p>
|
||||
<p>Send data to Speckle now by using one of our connetors!</p>
|
||||
<p>
|
||||
<v-btn
|
||||
elevation="10"
|
||||
class="my-5"
|
||||
rounded
|
||||
color="primary"
|
||||
href="https://speckle.guide/user/connectors.html"
|
||||
target="_blank"
|
||||
>
|
||||
Send Some Data
|
||||
</v-btn>
|
||||
</p>
|
||||
</v-stepper-content>
|
||||
</v-stepper>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import gql from 'graphql-tag'
|
||||
|
||||
export default {
|
||||
apollo: {
|
||||
user: {
|
||||
query: gql`
|
||||
query {
|
||||
user {
|
||||
id
|
||||
name
|
||||
streams {
|
||||
totalCount
|
||||
}
|
||||
commits {
|
||||
totalCount
|
||||
}
|
||||
}
|
||||
}
|
||||
`,
|
||||
skip() {
|
||||
return !this.loggedIn
|
||||
}
|
||||
},
|
||||
authorizedApps: {
|
||||
query: gql`
|
||||
query {
|
||||
user {
|
||||
id
|
||||
authorizedApps {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
`,
|
||||
update: (data) => data.user.authorizedApps
|
||||
},
|
||||
$subscribe: {
|
||||
userStreamAdded: {
|
||||
query: gql`
|
||||
subscription {
|
||||
userStreamAdded
|
||||
}
|
||||
`,
|
||||
result() {
|
||||
this.$apollo.queries.user.refetch()
|
||||
},
|
||||
skip() {
|
||||
return !this.loggedIn
|
||||
}
|
||||
},
|
||||
userStreamRemoved: {
|
||||
query: gql`
|
||||
subscription {
|
||||
userStreamRemoved
|
||||
}
|
||||
`,
|
||||
result() {
|
||||
this.$apollo.queries.user.refetch()
|
||||
},
|
||||
skip() {
|
||||
return !this.loggedIn
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data: () => ({
|
||||
streams: [],
|
||||
hasClickedDownload: false,
|
||||
refreshFailied: false,
|
||||
skipped: false
|
||||
}),
|
||||
computed: {
|
||||
loggedIn() {
|
||||
return localStorage.getItem('uuid') !== null
|
||||
},
|
||||
rootUrl() {
|
||||
return window.location.origin
|
||||
},
|
||||
quickstart() {
|
||||
if (!this.user || this.skipped) return 0
|
||||
if (this.user.streams.totalCount === 0) return 1
|
||||
if (this.user.streams.totalCount > 0 && !this.hasManager && !this.hasClickedDownload) return 2
|
||||
if (this.user.streams.totalCount > 0 && !this.hasManager && this.hasClickedDownload) return 3
|
||||
if (this.hasManager && this.user.commits.totalCount === 0) return 4
|
||||
if (this.user.commits.totalCount > 0) return 0
|
||||
|
||||
return 0
|
||||
},
|
||||
hasManager() {
|
||||
if (!this.authorizedApps) return false
|
||||
return this.authorizedApps.findIndex((a) => a.id === 'sdm') !== -1
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
streams(val) {
|
||||
if (val.items.length === 0 && !localStorage.getItem('onboarding')) {
|
||||
this.$router.push('/onboarding')
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.skipped = localStorage.getItem('wizard')
|
||||
},
|
||||
methods: {
|
||||
skip() {
|
||||
localStorage.setItem('wizard', 'skipped')
|
||||
this.skipped = true
|
||||
},
|
||||
downloadManager() {
|
||||
this.hasClickedDownload = true
|
||||
this.$matomo && this.$matomo.trackPageView(`onboarding/managerdownload`)
|
||||
this.$matomo && this.$matomo.trackEvent('onboarding', 'managerdownload')
|
||||
window.open('https://releases.speckle.dev/manager/SpeckleManager%20Setup.exe', '_blank')
|
||||
},
|
||||
addAccount() {
|
||||
this.$matomo && this.$matomo.trackPageView(`onboarding/accountadd`)
|
||||
this.$matomo && this.$matomo.trackEvent('onboarding', 'accountadd')
|
||||
window.open(`speckle://accounts?add_server_account=${this.rootUrl}`, '_blank')
|
||||
},
|
||||
async refreshApplications() {
|
||||
await this.$apollo.queries.authorizedApps.refetch()
|
||||
if (!this.hasManager) {
|
||||
this.refreshFailied = true
|
||||
} else this.refreshFailied = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.quickstart-stepper {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="list-item-activity">
|
||||
<div v-if="user" class="caption mb-2">
|
||||
<div v-if="user" class="body-2 mb-2">
|
||||
<user-avatar :id="user.id" :avatar="user.avatar" :size="30" :name="user.name" />
|
||||
|
||||
<a target="_blank" :href="'/profile/' + user.id">{{ user.name }}</a>
|
||||
@@ -16,6 +16,7 @@
|
||||
<v-card
|
||||
v-if="activity.actionType.includes('stream_permissions') && stream"
|
||||
class="mb-5 ml-10 activity-card"
|
||||
flat
|
||||
>
|
||||
<v-card-text class="pa-5 body-1">
|
||||
<v-chip v-if="targetUser" pill :color="activityInfo.color">
|
||||
@@ -43,9 +44,11 @@
|
||||
<v-card
|
||||
v-else-if="activity.resourceType === 'stream' && stream"
|
||||
class="mb-5 ml-10 activity-card"
|
||||
flat
|
||||
>
|
||||
<v-card-text class="pa-5 body-1">
|
||||
<a :href="url" class="title">
|
||||
<v-icon color="primary" small>mdi-compare-vertical</v-icon>
|
||||
{{ stream.name }}
|
||||
</a>
|
||||
<span class="ml-3 body-2 font-italic">{{ activityInfo.actionText }}</span>
|
||||
@@ -95,7 +98,7 @@
|
||||
</v-card>
|
||||
|
||||
<!-- BRANCHES -->
|
||||
<v-card v-else-if="activity.resourceType === 'branch'" class="mb-5 ml-10 activity-card">
|
||||
<v-card v-else-if="activity.resourceType === 'branch'" class="mb-5 ml-10 activity-card" flat>
|
||||
<v-card-text class="pa-5 body-1">
|
||||
<v-chip :to="url" :color="activityInfo.color">
|
||||
<v-icon small class="mr-2 float-left" light>{{ activityInfo.icon }}</v-icon>
|
||||
@@ -107,7 +110,7 @@
|
||||
</v-card>
|
||||
|
||||
<!-- COMMITS -->
|
||||
<v-card v-else-if="activity.resourceType === 'commit'" class="mb-5 ml-10 activity-card">
|
||||
<v-card v-else-if="activity.resourceType === 'commit'" class="mb-5 ml-10 activity-card" flat>
|
||||
<v-card-text class="pa-5">
|
||||
<div>
|
||||
<v-chip :to="url" :color="activityInfo.color">
|
||||
@@ -115,7 +118,7 @@
|
||||
{{ activity.resourceId }}
|
||||
</v-chip>
|
||||
<span class="mx-3 body-2 font-italic">{{ activityInfo.actionText }}</span>
|
||||
<span v-if="activity.actionType === 'commit_create' && commit">
|
||||
<span v-if="activity.actionType !== 'commit_delete' && commit">
|
||||
<v-chip
|
||||
:to="`/streams/${activity.streamId}/branches/${commit.branchName}`"
|
||||
small
|
||||
@@ -124,10 +127,12 @@
|
||||
<v-icon small class="float-left" light>mdi-source-branch</v-icon>
|
||||
{{ commit.branchName }}
|
||||
</v-chip>
|
||||
<span class="mx-3 body-2 font-italic">from</span>
|
||||
<source-app-avatar :application-name="commit.sourceApplication" />
|
||||
<span v-if="activity.actionType === 'commit_create'">
|
||||
<span class="mx-3 body-2 font-italic">from</span>
|
||||
<source-app-avatar :application-name="commit.sourceApplication" />
|
||||
</span>
|
||||
</span>
|
||||
<span v-if="activity.actionType === 'commit_create' && !commit">[commit deleted]</span>
|
||||
<span v-if="activity.actionType !== 'commit_delete' && !commit">[commit deleted]</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="activityInfo.description"
|
||||
@@ -294,7 +299,7 @@ export default {
|
||||
actionText: 'new stream',
|
||||
description: this.activity?.info?.stream?.description
|
||||
? this.truncate(this.activity.info.stream.description, 50)
|
||||
: 'No description provided.'
|
||||
: ''
|
||||
}
|
||||
case 'stream_update':
|
||||
return {
|
||||
@@ -322,11 +327,11 @@ export default {
|
||||
return {
|
||||
icon: 'mdi-source-branch-plus',
|
||||
captionText: 'created a branch in',
|
||||
actionText: 'new branch',
|
||||
actionText: 'new branch in',
|
||||
color: 'success',
|
||||
description: this.activity?.info?.branch?.description
|
||||
? this.truncate(this.activity.info.branch.description, 50)
|
||||
: 'No description provided.'
|
||||
: ''
|
||||
}
|
||||
case 'branch_delete':
|
||||
return {
|
||||
@@ -339,7 +344,7 @@ export default {
|
||||
return {
|
||||
icon: 'mdi-source-branch-sync',
|
||||
captionText: 'updated a branch in',
|
||||
actionText: 'branch updated',
|
||||
actionText: 'branch updated in',
|
||||
color: 'primary',
|
||||
description: this.updatedDescription()
|
||||
}
|
||||
@@ -355,7 +360,7 @@ export default {
|
||||
return {
|
||||
icon: 'mdi-timeline-text-outline',
|
||||
captionText: 'updated a commit in',
|
||||
actionText: 'commit updated',
|
||||
actionText: 'commit updated in',
|
||||
color: 'primary',
|
||||
description: this.updatedDescription()
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<v-card
|
||||
:to="'/streams/' + stream.id"
|
||||
color=""
|
||||
:elevation="hover ? 5 : 1"
|
||||
:elevation="hover ? 5 : 0"
|
||||
style="transition: all 0.2s ease-in-out"
|
||||
>
|
||||
<img
|
||||
|
||||
@@ -16,18 +16,5 @@ query {
|
||||
commits {
|
||||
totalCount
|
||||
}
|
||||
activity {
|
||||
totalCount
|
||||
cursor
|
||||
items {
|
||||
actionType
|
||||
userId
|
||||
resourceId
|
||||
resourceType
|
||||
streamId
|
||||
message
|
||||
time
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
</v-col>
|
||||
<v-col cols="12" sm="12" md="8" lg="9" xl="10">
|
||||
<v-row>
|
||||
<v-col cols="12">
|
||||
<getting-started-wizard />
|
||||
</v-col>
|
||||
<v-col v-if="$apollo.loading">
|
||||
<v-card elevation="0" color="transparent">
|
||||
<div v-if="$apollo.loading" class="my-5">
|
||||
@@ -70,127 +73,17 @@
|
||||
</infinite-loading>
|
||||
</v-row>
|
||||
</v-col>
|
||||
<v-col v-if="quickstart > 0">
|
||||
<div v-if="quickstart === 1" class="ma-5 headline">
|
||||
Hello 👋
|
||||
<v-col v-else cols="12">
|
||||
<div class="ma-5 headline justify-center text-center">
|
||||
😿
|
||||
<br />
|
||||
It seems you're new here, let's get you set up:
|
||||
Your don't have any streams!
|
||||
|
||||
<br />
|
||||
<span class="subtitle-2 font-italic">
|
||||
Create one now with the big blue button to the side.
|
||||
</span>
|
||||
</div>
|
||||
<v-stepper
|
||||
v-model="quickstart"
|
||||
flat
|
||||
shaped
|
||||
vertical
|
||||
class="rounded-lg quickstart-stepper mt-5"
|
||||
>
|
||||
<v-stepper-step :complete="quickstart > 1" step="1">
|
||||
Create your first stream
|
||||
</v-stepper-step>
|
||||
|
||||
<v-stepper-content step="1" class="body-2">
|
||||
<p>
|
||||
Streams are the
|
||||
<b>primary way Speckle organizes data</b>
|
||||
. You can see them as a folder, a project or a repository.
|
||||
</p>
|
||||
<p>
|
||||
Streams
|
||||
<b>can be shared with others</b>
|
||||
and can be made publicly visible on the web. Only the owner of a stream can manage
|
||||
its permissions and visibility.
|
||||
</p>
|
||||
<p>
|
||||
In order to use Speckle you first need to create a stream, so
|
||||
<b>go ahead and create your first one</b>
|
||||
!
|
||||
</p>
|
||||
</v-stepper-content>
|
||||
|
||||
<v-stepper-step :complete="quickstart > 2" step="2">
|
||||
Install Speckle Manager
|
||||
</v-stepper-step>
|
||||
|
||||
<v-stepper-content step="2" class="body-2">
|
||||
<p>
|
||||
Speckle Manager is a free
|
||||
<b>desktop application</b>
|
||||
that lets you install connectors for some of the most popular design and analysis
|
||||
software.
|
||||
</p>
|
||||
<p>
|
||||
The connectors
|
||||
<b>exchange</b>
|
||||
geometry and BIM data with Speckle, so that you can access it wherever you want!
|
||||
</p>
|
||||
<v-btn elevation="10" class="my-5" rounded color="primary" @click="downloadManager">
|
||||
<v-icon small class="mr-4">mdi-download</v-icon>
|
||||
Download Manager
|
||||
</v-btn>
|
||||
</v-stepper-content>
|
||||
|
||||
<v-stepper-step :complete="quickstart > 3" step="3">
|
||||
Set up Speckle Manager
|
||||
</v-stepper-step>
|
||||
|
||||
<v-stepper-content step="3">
|
||||
<p>
|
||||
With Speckle Manager installed,
|
||||
<b>log into your account</b>
|
||||
and then
|
||||
<b>install the connectors</b>
|
||||
for the software that you use.
|
||||
</p>
|
||||
<p>
|
||||
<v-btn
|
||||
elevation="10"
|
||||
rounded
|
||||
color="primary"
|
||||
target="_blank"
|
||||
@click="refreshApplications"
|
||||
>
|
||||
Done
|
||||
</v-btn>
|
||||
</p>
|
||||
|
||||
<p v-if="refreshFailied" class="red--text caption">
|
||||
Please install Manager and log into your account to continue.
|
||||
</p>
|
||||
|
||||
<p class="caption">Having issues logging in Manager? Try with the button below:</p>
|
||||
<v-btn small text rounded color="primary" @click="addAccount">
|
||||
<v-icon small class="mr-4">mdi-account-plus</v-icon>
|
||||
Add account to manager
|
||||
</v-btn>
|
||||
</v-stepper-content>
|
||||
|
||||
<v-stepper-step step="4">Send data to Speckle</v-stepper-step>
|
||||
<v-stepper-content step="4">
|
||||
<p>Great progress 🥳!</p>
|
||||
<p>
|
||||
We're almost done here, and just need to send your first set of data to Speckle.
|
||||
By doing so you will also be creating your first
|
||||
<b>commit.</b>
|
||||
</p>
|
||||
<p>
|
||||
Commits are
|
||||
<b>snapshots or versions of your data in time.</b>
|
||||
Every time you send to Speckle, a new commit is created for you.
|
||||
</p>
|
||||
<p>Send data to Speckle now by using one of our connetors!</p>
|
||||
<p>
|
||||
<v-btn
|
||||
elevation="10"
|
||||
class="my-5"
|
||||
rounded
|
||||
color="primary"
|
||||
href="https://speckle.guide/user/connectors.html"
|
||||
target="_blank"
|
||||
>
|
||||
How to use connectors
|
||||
</v-btn>
|
||||
</p>
|
||||
</v-stepper-content>
|
||||
</v-stepper>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-col>
|
||||
@@ -200,6 +93,7 @@
|
||||
<script>
|
||||
import ListItemStream from '../components/ListItemStream'
|
||||
import StreamNewDialog from '../components/dialogs/StreamNewDialog'
|
||||
import GettingStartedWizard from '../components/GettingStartedWizard'
|
||||
import streamsQuery from '../graphql/streams.gql'
|
||||
import userQuery from '../graphql/user.gql'
|
||||
import InfiniteLoading from 'vue-infinite-loading'
|
||||
@@ -212,7 +106,8 @@ export default {
|
||||
ListItemStream,
|
||||
StreamNewDialog,
|
||||
InfiniteLoading,
|
||||
ServerInviteDialog
|
||||
ServerInviteDialog,
|
||||
GettingStartedWizard
|
||||
},
|
||||
apollo: {
|
||||
streams: {
|
||||
@@ -253,43 +148,14 @@ export default {
|
||||
return !this.loggedIn
|
||||
}
|
||||
}
|
||||
},
|
||||
authorizedApps: {
|
||||
query: gql`
|
||||
query {
|
||||
user {
|
||||
id
|
||||
authorizedApps {
|
||||
id
|
||||
}
|
||||
}
|
||||
}
|
||||
`,
|
||||
update: (data) => data.user.authorizedApps
|
||||
}
|
||||
},
|
||||
data: () => ({
|
||||
activeTab: 'streams',
|
||||
streams: [],
|
||||
newStreamDialog: false,
|
||||
hasClickedDownload: false,
|
||||
refreshFailied: false
|
||||
newStreamDialog: false
|
||||
}),
|
||||
computed: {
|
||||
quickstart() {
|
||||
if (!this.user) return 0
|
||||
if (this.streams.totalCount === 0) return 1
|
||||
if (this.streams.totalCount > 0 && !this.hasManager && !this.hasClickedDownload) return 2
|
||||
if (this.streams.totalCount > 0 && !this.hasManager && this.hasClickedDownload) return 3
|
||||
if (this.hasManager && this.user.commits.totalCount === 0) return 4
|
||||
if (this.user.commits.totalCount > 0) return 0
|
||||
|
||||
return 0
|
||||
},
|
||||
hasManager() {
|
||||
if (!this.authorizedApps) return false
|
||||
return this.authorizedApps.findIndex((a) => a.id === 'sdm') !== -1
|
||||
},
|
||||
recentActivity() {
|
||||
let activity = []
|
||||
|
||||
@@ -309,9 +175,6 @@ export default {
|
||||
},
|
||||
loggedIn() {
|
||||
return localStorage.getItem('uuid') !== null
|
||||
},
|
||||
rootUrl() {
|
||||
return window.location.origin
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -325,23 +188,7 @@ export default {
|
||||
showServerInviteDialog() {
|
||||
this.$refs.serverInviteDialog.show()
|
||||
},
|
||||
downloadManager() {
|
||||
this.hasClickedDownload = true
|
||||
this.$matomo && this.$matomo.trackPageView(`onboarding/managerdownload`)
|
||||
this.$matomo && this.$matomo.trackEvent('onboarding', 'managerdownload')
|
||||
window.open('https://releases.speckle.dev/manager/SpeckleManager%20Setup.exe', '_blank')
|
||||
},
|
||||
addAccount() {
|
||||
this.$matomo && this.$matomo.trackPageView(`onboarding/accountadd`)
|
||||
this.$matomo && this.$matomo.trackEvent('onboarding', 'accountadd')
|
||||
window.open(`speckle://accounts?add_server_account=${this.rootUrl}`, '_blank')
|
||||
},
|
||||
async refreshApplications() {
|
||||
await this.$apollo.queries.authorizedApps.refetch()
|
||||
if (!this.hasManager) {
|
||||
this.refreshFailied = true
|
||||
} else this.refreshFailied = false
|
||||
},
|
||||
|
||||
infiniteHandler($state) {
|
||||
this.$apollo.queries.streams.fetchMore({
|
||||
variables: {
|
||||
@@ -390,8 +237,3 @@ export default {
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
<style scoped>
|
||||
.quickstart-stepper {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -53,6 +53,9 @@
|
||||
</v-col>
|
||||
<v-col cols="12" sm="12" md="8" lg="9" xl="10">
|
||||
<v-row>
|
||||
<v-col cols="12">
|
||||
<getting-started-wizard />
|
||||
</v-col>
|
||||
<v-col v-if="$apollo.loading && !timeline">
|
||||
<v-card elevation="0" color="transparent">
|
||||
<div v-if="$apollo.loading" class="my-5">
|
||||
@@ -61,7 +64,7 @@
|
||||
</v-card>
|
||||
</v-col>
|
||||
|
||||
<v-col v-else>
|
||||
<v-col v-else-if="timeline && timeline.items.length > 0">
|
||||
<div>
|
||||
<v-subheader class="mb-3">Recent activity</v-subheader>
|
||||
<div v-if="timeline" key="activity-list">
|
||||
@@ -81,6 +84,18 @@
|
||||
</div>
|
||||
</div>
|
||||
</v-col>
|
||||
<v-col v-else cols="12">
|
||||
<div class="ma-5 headline justify-center text-center">
|
||||
🎈
|
||||
<br />
|
||||
Your feed is empty!
|
||||
|
||||
<br />
|
||||
<span class="subtitle-2 font-italic">
|
||||
Try creating a stream, sending data etc and your activity willshow up here.
|
||||
</span>
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-col>
|
||||
</v-row>
|
||||
@@ -89,14 +104,23 @@
|
||||
|
||||
<script>
|
||||
import ListItemActivity from '@/components/ListItemActivity'
|
||||
import GettingStartedWizard from '../components/GettingStartedWizard'
|
||||
import ServerInviteDialog from '@/components/dialogs/ServerInviteDialog.vue'
|
||||
import StreamNewDialog from '@/components/dialogs/StreamNewDialog'
|
||||
import gql from 'graphql-tag'
|
||||
import InfiniteLoading from 'vue-infinite-loading'
|
||||
import SpeckleLoading from '../components/SpeckleLoading.vue'
|
||||
|
||||
export default {
|
||||
name: 'Timeline',
|
||||
components: { ListItemActivity, InfiniteLoading, ServerInviteDialog, StreamNewDialog },
|
||||
components: {
|
||||
ListItemActivity,
|
||||
InfiniteLoading,
|
||||
ServerInviteDialog,
|
||||
StreamNewDialog,
|
||||
GettingStartedWizard,
|
||||
SpeckleLoading
|
||||
},
|
||||
props: {
|
||||
type: String
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user