Browse Source

feat: add remaining components to dashboard

dashboard-layout
ken 7 months ago
parent
commit
add2ba0713
14 changed files with 99 additions and 146 deletions
  1. +1
    -42
      gca-admin-gurusoft-message-dashboard/src/App.vue
  2. +0
    -51
      gca-admin-gurusoft-message-dashboard/src/components/Dashboard.vue
  3. +0
    -18
      gca-admin-gurusoft-message-dashboard/src/components/ElementWrapper.Vue
  4. +4
    -4
      gca-admin-gurusoft-message-dashboard/src/components/MarkedsBanner.vue
  5. +3
    -3
      gca-admin-gurusoft-message-dashboard/src/components/MarkedsBannerPage.vue
  6. +0
    -0
      gca-admin-gurusoft-message-dashboard/src/components/MarkedsPopUp.vue
  7. +4
    -4
      gca-admin-gurusoft-message-dashboard/src/components/SystemBanner.vue
  8. +2
    -2
      gca-admin-gurusoft-message-dashboard/src/components/SystemBannerPage.vue
  9. +1
    -1
      gca-admin-gurusoft-message-dashboard/src/components/SystemMessagesPage.vue
  10. +0
    -0
      gca-admin-gurusoft-message-dashboard/src/mocks/markedsBanner.json
  11. +0
    -0
      gca-admin-gurusoft-message-dashboard/src/mocks/systemBanner.json
  12. +5
    -21
      gca-admin-gurusoft-message-dashboard/src/router/index.js
  13. +41
    -0
      gca-admin-gurusoft-message-dashboard/src/views/Dashboard.vue
  14. +38
    -0
      package-lock.json

+ 1
- 42
gca-admin-gurusoft-message-dashboard/src/App.vue View File

@ -3,47 +3,6 @@
<template> <template>
<div class="app"> <div class="app">
<SystemBanner />
<router-view/> <router-view/>
</div> </div>
<header>
<img alt="Vue logo" class="logo" src="./assets/logo.svg" width="125" height="125" />
<div class="wrapper">
<HelloWorld msg="You did it!" />
</div>
</header>
<main>
<TheWelcome />
</main>
</template>
<style scoped>
header {
line-height: 1.5;
}
.logo {
display: block;
margin: 0 auto 2rem;
}
@media (min-width: 1024px) {
header {
display: flex;
place-items: center;
padding-right: calc(var(--section-gap) / 2);
}
.logo {
margin: 0 2rem 0 0;
}
header .wrapper {
display: flex;
place-items: flex-start;
flex-wrap: wrap;
}
}
</style>
</template>

+ 0
- 51
gca-admin-gurusoft-message-dashboard/src/components/Dashboard.vue View File

@ -1,51 +0,0 @@
<script setup lang="ts">
import OverlayPopup from "./OverlayPopup.vue";
import SystemMesssages from "./SystemMesssages.vue";
import SystemLinks from "@/components/SystemLinks.vue";
import MarkedPopUp from "@/components/MarkedPopUp.vue";
</script>
<style scoped>
</style>
<!--<template>-->
<!-- <div class="list-group w-25 gap-3 p-3" style="margin: auto">-->
<!-- <OverlayPopup></OverlayPopup>-->
<!-- <router-link to="/systemmessage" class="btn btn-secondary">-->
<!-- System messages-->
<!-- </router-link>-->
<!-- <router-link to="/systemmessagelist" class="btn btn-secondary">-->
<!-- System messages-->
<!-- </router-link>-->
<!-- </div>-->
<!--</template>-->
<template>
<div class="container-fluid text-center border border-3 border-dark">
<div class="row border">
<div class="col">
1 of 1
</div>
</div>
<div class="row">
<div class="col border">
1 of 2
</div>
<div class="col border">
<div class="row">
<div class="col">
<SystemMesssages/>
</div>
<div class="col border border-warning">
<SystemLinks/>
</div>
</div>
</div>
</div>
</div>
<OverlayPopup/>
<MarkedPopUp/>
</template>

+ 0
- 18
gca-admin-gurusoft-message-dashboard/src/components/ElementWrapper.Vue View File

@ -1,18 +0,0 @@
<template>
<div>
<h3>{{ banner.title }}</h3>
<p>{{ banner.text }}</p>
<a :href="banner.link" target="_blank">{{ banner.link }}</a>
</div>
</template>
<script setup>
import { computed } from 'vue'
import mockData from '../mocks/mockdata.json'
const props = defineProps(['elementId'])
const banner = computed(() => mockData.find(item => item.id.toString() === props.elementId))
</script>

+ 4
- 4
gca-admin-gurusoft-message-dashboard/src/components/MarkedsBanner.vue View File

@ -26,7 +26,6 @@
:href="banner.url" :href="banner.url"
class="btn btn-outline-primary btn-sm" class="btn btn-outline-primary btn-sm"
target="_blank" target="_blank"
@click.stop
> >
til kampanje til kampanje
</a> </a>
@ -38,9 +37,9 @@
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import mockdata from '../mocks/MarkedsBanner.json'
import {ref, onMounted} from 'vue'
import {useRouter} from 'vue-router'
import mockdata from '../mocks/markedsBanner.json'
const banners = ref([]) const banners = ref([])
const router = useRouter() const router = useRouter()
@ -69,6 +68,7 @@ const goToPage = () => {
.scroll-box::-webkit-scrollbar { .scroll-box::-webkit-scrollbar {
height: 8px; height: 8px;
} }
.scroll-box::-webkit-scrollbar-thumb { .scroll-box::-webkit-scrollbar-thumb {
background-color: #ccc; background-color: #ccc;
border-radius: 4px; border-radius: 4px;

+ 3
- 3
gca-admin-gurusoft-message-dashboard/src/components/MarkedsBannerPage.vue View File

@ -3,7 +3,7 @@
<h2 class="mb-4">Alle markedsbannere</h2> <h2 class="mb-4">Alle markedsbannere</h2>
<div v-for="banner in banners" :key="banner.id" class="mb-4 border-bottom pb-3"> <div v-for="banner in banners" :key="banner.id" class="mb-4 border-bottom pb-3">
<h4>{{ banner.title }}</h4> <h4>{{ banner.title }}</h4>
<img :src="banner.image" alt="banner" class="img-fluid" style="max-width: 300px" />
<img :src="banner.image" alt="banner" class="img-fluid" style="max-width: 300px"/>
<p class="text-muted">Type: {{ banner.type }}</p> <p class="text-muted">Type: {{ banner.type }}</p>
<a :href="banner.url" target="_blank" class="btn btn-sm btn-outline-secondary mt-2">Besøk kampanje</a> <a :href="banner.url" target="_blank" class="btn btn-sm btn-outline-secondary mt-2">Besøk kampanje</a>
</div> </div>
@ -11,8 +11,8 @@
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue'
import mockdata from '../mocks/MarkedsBanner.json'
import {ref, onMounted} from 'vue'
import mockdata from '../mocks/markedsBanner.json'
const banners = ref([]) const banners = ref([])

gca-admin-gurusoft-message-dashboard/src/components/MarkedPopUp.vue → gca-admin-gurusoft-message-dashboard/src/components/MarkedsPopUp.vue View File


+ 4
- 4
gca-admin-gurusoft-message-dashboard/src/components/SystemBanner.vue View File

@ -3,7 +3,7 @@
<div class="container"> <div class="container">
<div class="alert-wrapper"> <div class="alert-wrapper">
<div <div
v-for="banner in activeBanners"
v-for="banner in activeBanners.slice(0,1)"
:key="banner.id" :key="banner.id"
class="alert alert-danger border-danger banner-drop d-flex justify-content-between align-items-start shadow-sm small-banner" class="alert alert-danger border-danger banner-drop d-flex justify-content-between align-items-start shadow-sm small-banner"
role="alert" role="alert"
@ -46,9 +46,9 @@
<script setup> <script setup>
import { ref, onMounted, computed } from 'vue'
import { useRouter } from 'vue-router'
import mockdata from '../mocks/mockdata.json'
import {ref, onMounted, computed} from 'vue'
import {useRouter} from 'vue-router'
import mockdata from '../mocks/systemBanner.json'
const banners = ref([]) const banners = ref([])
const router = useRouter() const router = useRouter()

+ 2
- 2
gca-admin-gurusoft-message-dashboard/src/components/SystemBannerPage.vue View File

@ -34,8 +34,8 @@
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue'
import mockdata from '../mocks/mockdata.json'
import {ref, onMounted} from 'vue'
import mockdata from '../mocks/systemBanner.json'
const banners = ref([]) const banners = ref([])

+ 1
- 1
gca-admin-gurusoft-message-dashboard/src/components/SystemMessagesPage.vue View File

@ -1,7 +1,7 @@
<template> <template>
<div class="container-sm py-4"> <div class="container-sm py-4">
<div class="mb-3"> <div class="mb-3">
<router-link to="/dashboard" class="btn btn-sm btn-outline-primary">
<router-link to="/" class="btn btn-sm btn-outline-primary">
Tilbake Tilbake
</router-link> </router-link>
</div> </div>

gca-admin-gurusoft-message-dashboard/src/mocks/MarkedsBanner.json → gca-admin-gurusoft-message-dashboard/src/mocks/markedsBanner.json View File


gca-admin-gurusoft-message-dashboard/src/mocks/mockdata.json → gca-admin-gurusoft-message-dashboard/src/mocks/systemBanner.json View File


+ 5
- 21
gca-admin-gurusoft-message-dashboard/src/router/index.js View File

@ -1,7 +1,7 @@
import {createRouter, createWebHistory} from 'vue-router'; import {createRouter, createWebHistory} from 'vue-router';
import SystemMessagesPage from '../components/SystemMessagesPage.vue'; import SystemMessagesPage from '../components/SystemMessagesPage.vue';
import SystemMessages from '../components/SystemMesssages.vue'; import SystemMessages from '../components/SystemMesssages.vue';
import Dashboard from '../components/Dashboard.vue';
import Dashboard from '../views/Dashboard.vue';
import SystemLinks from '../components/SystemLinks.vue' import SystemLinks from '../components/SystemLinks.vue'
import SystemBannerPage from '../components/SystemBannerPage.vue' import SystemBannerPage from '../components/SystemBannerPage.vue'
import SystemBanner from '../components/SystemBanner.vue' import SystemBanner from '../components/SystemBanner.vue'
@ -13,26 +13,10 @@ const routes = [
{path: '/systemmessagelist', name: 'SystemMessageList', component: SystemMessagesPage}, {path: '/systemmessagelist', name: 'SystemMessageList', component: SystemMessagesPage},
{path: '/systemlinks', name: 'SystemLinks', component: SystemLinks}, {path: '/systemlinks', name: 'SystemLinks', component: SystemLinks},
{path: '/', name: 'Dashboard', component: Dashboard}, {path: '/', name: 'Dashboard', component: Dashboard},
{
path: '/systembanner',
name: 'Home',
component: SystemBanner
},
{
path: '/SystemBannerPage',
name: 'BannerPage',
component: SystemBannerPage
},
{
path: '/markedsbanners',
name: 'MarkedsPage',
component: MarkedsBannerPage
},
{
path: '/markedsbanner',
name: 'MarkedsStart',
component: MarkedsBanner
}
{path: '/systembanner', name: 'Home', component: SystemBanner},
{path: '/systembannerpage', name: 'BannerPage', component: SystemBannerPage},
{path: '/markedsbanners', name: 'MarkedsPage', component: MarkedsBannerPage},
{path: '/markedsbanner', name: 'MarkedsStart', component: MarkedsBanner}
]; ];
const router = createRouter({ const router = createRouter({

+ 41
- 0
gca-admin-gurusoft-message-dashboard/src/views/Dashboard.vue View File

@ -0,0 +1,41 @@
<script setup lang="ts">
import OverlayPopup from "../components/OverlayPopup.vue";
import SystemMesssages from "../components/SystemMesssages.vue";
import SystemLinks from "../components/SystemLinks.vue";
import MarkedsPopUp from "../components/MarkedsPopUp.vue";
import SystemBanner from "@/components/SystemBanner.vue";
import MarkedsBanner from "@/components/MarkedsBanner.vue";
</script>
<style scoped>
</style>
<template>
<div class="container-fluid text-center border border-3 border-dark">
<div class="row border">
<div class="col">
<SystemBanner/>
</div>
</div>
<div class="row">
<div class="col border">
<MarkedsBanner/>
</div>
<div class="col border">
<div class="row">
<div class="col">
<SystemMesssages/>
</div>
<div class="col border border-warning">
<SystemLinks/>
</div>
</div>
</div>
</div>
</div>
<OverlayPopup/>
<MarkedsPopUp/>
</template>

+ 38
- 0
package-lock.json View File

@ -1,4 +1,42 @@
{ {
"name": "sommer2025",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": {
"": {
"dependencies": {
"bootstrap": "^5.3.7"
}
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/bootstrap": {
"version": "5.3.7",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.7.tgz",
"integrity": "sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/twbs"
},
{
"type": "opencollective",
"url": "https://opencollective.com/bootstrap"
}
],
"license": "MIT",
"peerDependencies": {
"@popperjs/core": "^2.11.8"
}
}
}
} }

Loading…
Cancel
Save