Beginning of editable timeline
This commit is contained in:
parent
6758a2f5dd
commit
82f7f5e0f6
6 changed files with 134 additions and 22 deletions
|
@ -7,12 +7,10 @@ export default {
|
||||||
name: "BaseColorText",
|
name: "BaseColorText",
|
||||||
props: {
|
props: {
|
||||||
text: {
|
text: {
|
||||||
required: true,
|
required: true
|
||||||
type: String
|
|
||||||
},
|
},
|
||||||
color: {
|
color: {
|
||||||
required: false,
|
required: false,
|
||||||
type: String,
|
|
||||||
default: "transparent"
|
default: "transparent"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
25
src/components/base/BaseSection.vue
Normal file
25
src/components/base/BaseSection.vue
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<template>
|
||||||
|
<section>
|
||||||
|
<BaseTitle v-if="title" center size="large">{{ title }}</BaseTitle>
|
||||||
|
<slot />
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import BaseTitle from "@/components/base/BaseTitle";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "BaseSection",
|
||||||
|
components: {
|
||||||
|
BaseTitle
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
required: false,
|
||||||
|
default: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
29
src/components/juggl/JugglTimelineEditor.vue
Normal file
29
src/components/juggl/JugglTimelineEditor.vue
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<TimelineProjectPool :projects="projects" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import TimelineProjectPool from "@/components/timeline/TimelineProjectPool.vue";
|
||||||
|
import store from "@/store";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "JugglTimelineEditor",
|
||||||
|
components: {
|
||||||
|
TimelineProjectPool
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
projects: {
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submit: function() {
|
||||||
|
store.dispatch("loadTags");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass" scoped></style>
|
56
src/components/timeline/TimelineProjectPool.vue
Normal file
56
src/components/timeline/TimelineProjectPool.vue
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
<template>
|
||||||
|
<div id="project-pool">
|
||||||
|
<JugglProjectName
|
||||||
|
v-for="project in projects"
|
||||||
|
:key="project.project_id"
|
||||||
|
:project="project"
|
||||||
|
class="unselectable"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import JugglProjectName from "@/components/juggl/JugglProjectName";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "TimelineProjectPool",
|
||||||
|
components: {
|
||||||
|
JugglProjectName
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
projects: {
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="sass" scoped>
|
||||||
|
@import '@/style/theme.sass'
|
||||||
|
|
||||||
|
#project-pool
|
||||||
|
display: flex
|
||||||
|
flex-direction: row
|
||||||
|
flex-wrap: wrap
|
||||||
|
justify-content: center
|
||||||
|
align-content: flex-start
|
||||||
|
padding: 5px
|
||||||
|
|
||||||
|
> *
|
||||||
|
border: 1px solid $grey
|
||||||
|
font-size: 16pt
|
||||||
|
margin: 5px
|
||||||
|
border-radius: 5px
|
||||||
|
|
||||||
|
&:hover
|
||||||
|
border-color: $primary !important
|
||||||
|
cursor: pointer
|
||||||
|
|
||||||
|
.unselectable
|
||||||
|
-webkit-touch-callout: none
|
||||||
|
-webkit-user-select: none
|
||||||
|
-khtml-user-select: none
|
||||||
|
-moz-user-select: none
|
||||||
|
-ms-user-select: none
|
||||||
|
user-select: none
|
||||||
|
</style>
|
|
@ -1,11 +1,9 @@
|
||||||
<template>
|
<template>
|
||||||
<LayoutNavbarPrivate>
|
<LayoutNavbarPrivate>
|
||||||
<section v-if="runningRecords.length > 0">
|
<BaseSection v-if="runningRecords.length > 0" title="Tracking">
|
||||||
<h2 class="center bold">Tracking</h2>
|
|
||||||
<JugglRecordsList :records="runningRecords" running />
|
<JugglRecordsList :records="runningRecords" running />
|
||||||
</section>
|
</BaseSection>
|
||||||
<section>
|
<BaseSection title="Projects">
|
||||||
<h2 class="center bold">Projects</h2>
|
|
||||||
<div v-if="finishedProjects.length > 0">
|
<div v-if="finishedProjects.length > 0">
|
||||||
<JugglProjectsPanel :projects="finishedProjects" />
|
<JugglProjectsPanel :projects="finishedProjects" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -15,33 +13,39 @@
|
||||||
Manage projects
|
Manage projects
|
||||||
</b-link>
|
</b-link>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</BaseSection>
|
||||||
<section v-if="finishedRecords.length > 0">
|
<BaseSection title="Timeline">
|
||||||
<h2 class="center bold">History</h2>
|
<JugglTimelineEditor :projects="allProjects" />
|
||||||
|
</BaseSection>
|
||||||
|
<BaseSection v-if="finishedRecords.length > 0" title="History">
|
||||||
<JugglRecordsList :records="finishedRecords" />
|
<JugglRecordsList :records="finishedRecords" />
|
||||||
<div class="center">
|
<div class="center">
|
||||||
<b-button to="/history" variant="outline-secondary" center
|
<b-button to="/history" variant="outline-secondary" center
|
||||||
>Show all</b-button
|
>Show all</b-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</BaseSection>
|
||||||
</LayoutNavbarPrivate>
|
</LayoutNavbarPrivate>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import LayoutNavbarPrivate from "@/components/layout/LayoutNavbarPrivate";
|
import LayoutNavbarPrivate from "@/components/layout/LayoutNavbarPrivate";
|
||||||
|
import JugglTimelineEditor from "@/components/juggl/JugglTimelineEditor";
|
||||||
import JugglProjectsPanel from "@/components/juggl/JugglProjectsPanel";
|
import JugglProjectsPanel from "@/components/juggl/JugglProjectsPanel";
|
||||||
import JugglRecordsList from "@/components/juggl/JugglRecordsList";
|
import JugglRecordsList from "@/components/juggl/JugglRecordsList";
|
||||||
import FormProjectAdd from "@/components/forms/FormProjectAdd";
|
import FormProjectAdd from "@/components/forms/FormProjectAdd";
|
||||||
|
import BaseSection from "@/components/base/BaseSection";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Home",
|
name: "Home",
|
||||||
components: {
|
components: {
|
||||||
LayoutNavbarPrivate,
|
LayoutNavbarPrivate,
|
||||||
|
JugglTimelineEditor,
|
||||||
JugglProjectsPanel,
|
JugglProjectsPanel,
|
||||||
JugglRecordsList,
|
JugglRecordsList,
|
||||||
FormProjectAdd
|
FormProjectAdd,
|
||||||
|
BaseSection
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
finishedProjects: () => {
|
finishedProjects: () => {
|
||||||
|
@ -52,6 +56,9 @@ export default {
|
||||||
},
|
},
|
||||||
runningRecords: () => {
|
runningRecords: () => {
|
||||||
return store.getters.runningRecords;
|
return store.getters.runningRecords;
|
||||||
|
},
|
||||||
|
allProjects: () => {
|
||||||
|
return store.getters.projects;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created: () => {
|
created: () => {
|
||||||
|
@ -70,9 +77,6 @@ export default {
|
||||||
.bold
|
.bold
|
||||||
font-weight: bold
|
font-weight: bold
|
||||||
|
|
||||||
section
|
|
||||||
margin-bottom: 4rem
|
|
||||||
|
|
||||||
#add-project-form
|
#add-project-form
|
||||||
margin-top: 1rem
|
margin-top: 1rem
|
||||||
text-align: center
|
text-align: center
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<LayoutNavbarPrivate title="Manage structures">
|
<LayoutNavbarPrivate title="Manage structures">
|
||||||
<section id="projects">
|
<BaseSection id="projects" title="Projects">
|
||||||
<h1>Projects</h1>
|
|
||||||
<FormProjectAdd class="bottom-space" />
|
<FormProjectAdd class="bottom-space" />
|
||||||
<b-table
|
<b-table
|
||||||
:items="allProjects"
|
:items="allProjects"
|
||||||
|
@ -45,9 +44,8 @@
|
||||||
</b-card>
|
</b-card>
|
||||||
</template>
|
</template>
|
||||||
</b-table>
|
</b-table>
|
||||||
</section>
|
</BaseSection>
|
||||||
<section id="tags">
|
<BaseSection id="tags" title="Tags">
|
||||||
<h1>Tags</h1>
|
|
||||||
<FormTagAdd class="bottom-space" />
|
<FormTagAdd class="bottom-space" />
|
||||||
<b-table
|
<b-table
|
||||||
:items="allTags"
|
:items="allTags"
|
||||||
|
@ -83,7 +81,7 @@
|
||||||
</b-card>
|
</b-card>
|
||||||
</template>
|
</template>
|
||||||
</b-table>
|
</b-table>
|
||||||
</section>
|
</BaseSection>
|
||||||
</LayoutNavbarPrivate>
|
</LayoutNavbarPrivate>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -94,6 +92,7 @@ import JugglProjectName from "@/components/juggl/JugglProjectName";
|
||||||
import FormProjectAdd from "@/components/forms/FormProjectAdd";
|
import FormProjectAdd from "@/components/forms/FormProjectAdd";
|
||||||
import FormTagDetails from "@/components/forms/FormTagDetails";
|
import FormTagDetails from "@/components/forms/FormTagDetails";
|
||||||
import { helperService } from "@/services/helper.service.js";
|
import { helperService } from "@/services/helper.service.js";
|
||||||
|
import BaseSection from "@/components/base/BaseSection";
|
||||||
import FormTagAdd from "@/components/forms/FormTagAdd";
|
import FormTagAdd from "@/components/forms/FormTagAdd";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
|
|
||||||
|
@ -105,6 +104,7 @@ export default {
|
||||||
JugglProjectName,
|
JugglProjectName,
|
||||||
FormProjectAdd,
|
FormProjectAdd,
|
||||||
FormTagDetails,
|
FormTagDetails,
|
||||||
|
BaseSection,
|
||||||
FormTagAdd
|
FormTagAdd
|
||||||
},
|
},
|
||||||
data: () => {
|
data: () => {
|
||||||
|
|
Loading…
Reference in a new issue