Merge pull request #54 from gradido/fix-language_1

sprache angepasst, for login, pwd, sigin
This commit is contained in:
Ulf Gebhardt 2021-03-23 17:47:12 +01:00 committed by GitHub
commit 3065ddfbae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 206 additions and 438 deletions

View File

@ -41,6 +41,7 @@
"vue-clickaway": "^2.2.2",
"vue-clipboard2": "^0.3.0",
"vue-cookies": "^1.7.4",
"vue-country-flag": "^2.0.3",
"vue-flatpickr-component": "^8.1.2",
"vue-good-table": "^2.21.3",
"vue-i18n": "^8.22.4",

View File

@ -19,11 +19,14 @@ export default {
ParticlesBg
},
created () {
console.log( "xx", $cookies.get("gdd_lang"))
console.log('%cWillkommen bei Gradido %cgreen text', 'font-weight:bold', 'color: green')
if ( $cookies.isKey("gdd_session_id") == true) {
console.log('%cHey %c'+$cookies.get("gdd_u")+'', 'font-weight:bold', 'color: orange')
this.$store.commit('session_id', $cookies.get("gdd_session_id"))
this.$store.commit('email', $cookies.get("gdd_u"))
this.$store.commit('language', $cookies.get("gdd_lang"))
this.$i18n.locale = $cookies.get("gdd_lang")
this.$router.push("overview")
}else {
console.log("app.vue to Logout")

View File

@ -1,13 +1,13 @@
{
"message": "hallo gradido !!",
"welcome":"Willkommen!",
"logout":"Logout",
"logout":"Abmelden",
"login":"Login",
"signup": "Registrieren",
"imprint":"Impressum",
"privacy_policy":"Datenschutzerklärung",
"license":"Lizenz",
"back":"zurück",
"sent":"Senden",
"transactions":"Transaktionen",
"language":"Sprachen",
"languages":{
@ -38,7 +38,7 @@
},
"site": {
"login": {
"community":"Du bist die Gemeinschaft",
"community":"Tausend Dank, weil du bei uns bist!",
"remember":"Passwort merken",
"signin":"Anmelden",
"forgot_pwd":"Passwort vergessen?",

View File

@ -4,10 +4,10 @@
"logout":"Logout",
"login":"Login",
"signup": "Sign up",
"imprint":"Imprint",
"imprint":"Legal notice",
"privacy_policy":"Privacy policy",
"license":"License",
"back":"back",
"sent":"Sent",
"transactions":"transactions",
"language":"Language",
"languages":{
@ -39,8 +39,8 @@
},
"site": {
"login": {
"community":"You are the community",
"remember":"Remember me",
"community":"A thousand thanks for being with us!",
"remember":"Remember password",
"signin":"Sign in",
"forgot_pwd":"Forgot password?",
"new_wallet":"Create new wallet"

View File

@ -14,7 +14,7 @@ import router from './routes/router';
Vue.use(DashboardPlugin);
Vue.config.productionTip = false;
Vue.use(VueCookies);
/* eslint-disable no-new */
new Vue({

View File

@ -37,6 +37,9 @@ import 'vue-good-table/dist/vue-good-table.css';
import VueMoment from 'vue-moment';
import CountryFlag from 'vue-country-flag'
Object.keys(rules).forEach(rule => {
extend(rule, {
...rules[rule], // copies rule configuration
@ -56,6 +59,7 @@ export default {
Vue.use(VueQrcodeReader);
Vue.use(VueQrcode);
Vue.use(VueFlatPickr);
Vue.use(CountryFlag);
configure({
classes: {
valid: 'is-valid',

View File

@ -26,6 +26,11 @@ const routes = [
{
path: '/password',
component: () => import('../views/Pages/Password.vue')
},
{
path: '/explorer',
name: 'Explorer',
component: () => import('../views/Pages/Explorer.vue'),
}
]
},
@ -68,7 +73,7 @@ const routes = [
meta: {
requiresAuth: true
}
}
}
]
}
];

View File

@ -7,11 +7,13 @@ import communityAPI from '../apis/communityAPI'
import axios from 'axios'
//import CONFIG from '../config'
export const store = new Vuex.Store({
state: {
session_id: null,
email: null,
language: 'en',
sizeDE: 'normal',
sizeGB: 'big',
user : {
name:"",
balance: 0,
@ -43,6 +45,19 @@ export const store = new Vuex.Store({
},
// Syncronous mutation of the state
mutations: {
language: (state, language) => {
console.log('mutation: language', language)
state.language = language
$cookies.set('gdd_lang', language);
if (state.language == "de") {
state.sizeDE = 'big'
state.sizeGB = 'normal'
} else {
state.sizeDE = 'normal'
state.sizeGB = 'big'
}
},
email: (state, email) => {
//console.log('mutation: email')
state.email = email
@ -77,12 +92,14 @@ export const store = new Vuex.Store({
// console.log('result.data.state',result.data.state)
// console.log('result.data.session_id',result.data.session_id)
if( result.success){
commit('session_id', result.result.data.session_id)
commit('email', data.email)
$cookies.set('gdd_session_id', result.result.data.session_id);
$cookies.set('gdd_u', data.email);
router.push('/overview')
} else {
// Register failed, we perform a logout
@ -128,6 +145,7 @@ export const store = new Vuex.Store({
commit('email', null)
$cookies.remove('gdd_session_id');
$cookies.remove('gdd_u');
$cookies.remove('gdd_lang');
router.push('/Login')
},
ajaxCreate: async ({ dispatch, state }) => {

View File

@ -6,6 +6,9 @@
<span class="btn-inner--text">{{ $t('site.overview.send_gradido') }} </span>
</base-button>
<b-collapse id="collapse-1" class="mt-2">
<b-alert variant="warning" show dismissible >
<strong>Achtung!</strong> Bitte überprüfe alle deine Eingaben sehr genau. Du bist alleine Verantwortlich für deine Entscheidungen. Versendete Gradidos können nicht wieder zurück geholt werden.
</b-alert>
<b-card >
<div v-if="scan">
<b-row>
@ -28,6 +31,10 @@
<qrcode-drop-zone id="input-0" v-model="form.img"></qrcode-drop-zone>
<br>
<div>
<b-col class="text-left pl-6">
<b-badge variant="primary">Empfänger</b-badge>
</b-col>
<b-input-group
id="input-group-1"
label="Empfänger:"
@ -36,8 +43,8 @@
size="lg"
class="mb-3"
>
<b-input-group-prepend>
<img src="img/icons/gradido/qr-scan-pure.png" width="80" height="auto" @click="scan=true"/>
<b-input-group-prepend class="p-3">
<b-icon icon="envelope" class="display-3"></b-icon>
</b-input-group-prepend>
<b-form-input
id="input-1"
@ -51,12 +58,17 @@
</div>
<br>
<div>
<b-col class="text-left pl-6">
<b-badge variant="primary">Betrag</b-badge>
</b-col>
<b-col v-if="($store.state.user.balance == form.amount)" class="text-right">
<b-badge variant="primary">maximale anzahl GDD zum versenden erreicht!</b-badge>
</b-col>
<b-input-group id="input-group-2" label="Betrag:" label-for="input-2"
size="lg"
class="mb-3">
<b-input-group-prepend>
<img src="img/icons/gradido/plus.png" width="80">
<div class="h3 pt-3 pr-3">GDD</div>
</b-input-group-prepend>
<b-form-input
@ -66,24 +78,31 @@
placeholder="0.01"
step="0.01"
min="0.01"
max="1000"
:max="$store.state.user.balance"
style="font-size: xx-large; padding-left:20px">
</b-form-input>
<b-input-group-prepend>
<div class="h1">GDD</div>
</b-input-group-prepend>
{{$store.state.user.balance}}
</b-input-group>
</b-input-group>
<b-col class="text-left pl-6">
<b-badge variant="primary">Nachricht für den Empfänger (optional)</b-badge>
</b-col>
<b-input-group>
<b-input-group-prepend>
<b-icon icon="chat-right-text" class="display-1"></b-icon>
<b-input-group-prepend class="p-3">
<b-icon icon="chat-right-text" class="display-3"></b-icon>
</b-input-group-prepend>
<b-form-textarea v-model="form.memo"></b-form-textarea>
<b-form-textarea v-model="form.memo" class="pl-3"></b-form-textarea>
</b-input-group>
</div>
{{$refs.observer}}
<br>
<b-row>
<b-col></b-col>
<b-col></b-col>
</b-row>
<b-button type="submit" variant="primary">{{$t('form.send_now')}}</b-button>
<b-button type="reset" variant="danger">{{$t('form.cancel')}}</b-button>
<br>
@ -110,17 +129,21 @@ export default {
},
data(){
return {
scan: false,
scan: false,
show: true,
form: {
img: '',
email: '',
amount: '',
memo:''
}
},
sent: false,
}
},
methods: {
sendbutton(){
this.sent = true
},
async onDecode (decodedString) {
console.log('onDecode JSON.parse(decodedString)',JSON.parse(decodedString) )
const arr = JSON.parse(decodedString)

View File

@ -4,7 +4,8 @@
<b-col xl="6" md="6">
<stats-card type="gradient-red"
sub-title="balance_gdd"
class="mb-4">
class="mb-4"
style="font-size: -webkit-xxx-large">
{{ $n($store.state.user.balance) }} GDD
</stats-card>
</b-col>
@ -22,12 +23,6 @@
<script>
export default {
name: 'GddStatus',
data(){
return {
balance_gdd: this.$store.state.user.balance,
balance_gdt: this.$store.state.user.balance_gdt,
}
}
name: 'GddStatus'
};
</script>

View File

@ -61,9 +61,6 @@
<b-nav-item href="http://blog.creative-tim.com" target="_blank">
Datenschutzerklärung
</b-nav-item>
<b-nav-item href="https://www.creative-tim.com/license" target="_blank">
License
</b-nav-item>
</b-nav>
</b-col>
</b-row>

View File

@ -2,47 +2,23 @@
<div class="main-content">
<template>
<div class="main-content">
<router-view></router-view>
<router-view></router-view>
<content-footer v-if="!$route.meta.hideFooter"></content-footer>
</div>
<footer class="py-5" id="footer-main">
<b-container >
<b-row align-v="center" class="justify-content-xl-between">
<b-col xl="6">
<div class="copyright text-center text-xl-left text-muted">
© {{year}} <a href="https://gradido.net/" class="font-weight-bold ml-1" target="_blank">Gradido Wallet</a>
</div>
</b-col>
<b-col xl="6" class="col-xl-6">
<b-nav class="nav-footer justify-content-center justify-content-lg-end">
<b-nav-item ref="https://gradido.net/" target="_blank">
Gradido
</b-nav-item>
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('imprint')}}
</b-nav-item>
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('privacy_policy')}}
</b-nav-item>
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('license')}}
</b-nav-item>
</b-nav>
</b-col>
</b-row>
<br>
<br>
<b-row >
<b-col class="nav-link text-center" @click.prevent="setLocale('en')">{{ $t('languages.en') }}</b-col>
<b-col class="nav-link text-center" @click.prevent="setLocale('de')">{{ $t('languages.de') }}</b-col>
</b-row>
</b-container>
</footer>
</template>
</div>
</template>
<script>
import ContentFooter from './ContentFooter.vue';
export default {
components: {
ContentFooter
},
data() {
return {
year: new Date().getFullYear(),

View File

@ -3,7 +3,7 @@
<b-row align-v="center" class="justify-content-lg-between">
<b-col lg="6">
<div class="copyright text-center text-lg-left text-muted">
© {{year}} <a href="https://gradido.net/" class="font-weight-bold ml-1" target="_blank">Gradido Wallet</a>
© {{year}} <a href="#!" to="/login" class="font-weight-bold ml-1" >Gradido Wallet</a>
</div>
</b-col>
<b-col lg="6">
@ -17,34 +17,37 @@
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('privacy_policy')}}
</b-nav-item>
<b-nav-item href="https://gradido.net/" target="_blank">
{{$t('license')}}
<b-nav-item href="#!" to="/explorer" >
GDD-Explorer
</b-nav-item>
</b-nav>
</b-col>
</b-row>
<br>
<br>
<b-row >
<b-col class="nav-link text-center" @click.prevent="setLocale('en')">{{ $t('languages.en') }}</b-col>
<b-col class="nav-link text-center" @click.prevent="setLocale('de')">{{ $t('languages.de') }}</b-col>
<b-col class="nav-link text-center" @click.prevent="setLocale('en')"><country-flag country='gb' :size='this.$store.state.sizeGB'/>{{ $t('languages.en') }}</b-col>
<b-col class="nav-link text-center" @click.prevent="setLocale('de')"><country-flag country='de' :size='this.$store.state.sizeDE' />{{ $t('languages.de') }}</b-col>
</b-row>
</footer>
</template>
<script>
import CountryFlag from 'vue-country-flag'
export default {
comments: {
CountryFlag
},
data() {
return {
year: new Date().getFullYear()
year: new Date().getFullYear(),
};
},
methods: {
setLocale(locale) {
this.$i18n.locale = locale
//this.$router.push({
// params: { lang: locale }
//})
//this.hideDropdown()
this.$store.commit('language', this.$i18n.locale)
}
},
};

View File

@ -6,19 +6,19 @@
<b-nav-item href="#!" to="/overview">
<b-nav-text class="p-0 text-lg text-muted">Senden</b-nav-text>
<b-nav-text class="p-0 text-lg text-muted">{{ $t('sent')}}</b-nav-text>
</b-nav-item>
<b-nav-item href="#!" to="/profile">
<b-nav-text class="p-0 text-lg text-muted">Profil</b-nav-text>
<b-nav-text class="p-0 text-lg text-muted">{{ $t('site.navbar.my-profil')}}</b-nav-text>
</b-nav-item>
<b-nav-item href="#!" to="/profileedit">
<b-nav-text class="p-0 text-lg text-muted">Settings</b-nav-text>
<b-nav-text class="p-0 text-lg text-muted">{{ $t('site.navbar.settings') }}</b-nav-text>
</b-nav-item>
<b-nav-item href="#!" to="/activity">
<b-nav-text class="p-0 text-lg text-muted">Activity</b-nav-text>
<b-nav-text class="p-0 text-lg text-muted">{{ $t('site.navbar.activity') }}</b-nav-text>
</b-nav-item>
</template>

View File

@ -0,0 +1,28 @@
<template>
<div>
<!-- Header -->
<div class="header bg-gradient-info py-7 py-lg-3 pt-lg-2">
<b-container>
<div class="header-body text-center mb-7">
<p class="h1">GDD</p>
<p class="h4">Explorer</p>
</div>
</b-container>
<div class="separator separator-bottom separator-skew zindex-100">
<svg x="0" y="0" viewBox="0 0 2560 100" preserveAspectRatio="none" version="1.1" xmlns="http://www.w3.org/2000/svg">
<polygon class="fill-default" points="2560 0 2560 100 0 100"></polygon>
</svg>
</div>
</div>
<!-- Page content -->
<div>
<b-card>
<b-card-body>
This is some text within a card body.
</b-card-body>
</b-card>
</div>
</div>
</template>

View File

@ -6,7 +6,7 @@
<div class="text-center mb-7">
<b-row class="justify-content-center">
<b-col xl="5" lg="6" md="8" class="px-5">
<h1>Gradido Wallet</h1>
<h1>Gradido</h1>
<p class="text-lead">{{ $t('site.login.community')}}</p>
</b-col>
</b-row>

View File

@ -27,9 +27,10 @@
name="Email"
:rules="{required: true, email: true}"
v-model="model.email">
</base-input>
</base-input>
{{form}}
<div class="text-center">
<b-button type="submit" variant="primary" class="mt-4">{{ $t('site.password.reset_now')}}</b-button>
<b-button type="submit" variant="primary" class="mt-4" :disabled="disable">{{ $t('site.password.reset_now')}}</b-button>
</div>
</b-form>
</validation-observer>
@ -48,6 +49,7 @@
name: 'password',
data() {
return {
disable: 'disabled',
model: {
email: ''
}

View File

@ -99,6 +99,7 @@
lastname: '',
email: '',
password: '',
password2: '',
agree: false
}
}

View File

@ -12,7 +12,9 @@
</b-container>
</b-container>
</div>
<b-container fluid class="mt--6">
<b-row>
<b-col xl="4" class="order-xl-2 mb-5">
@ -24,6 +26,28 @@
<gdd-table></gdd-table>
</b-col>
</b-row>
<b-row>
<b-col xl="6" S>
<div class="chart">
<line-chart
:height="350"
:chart-data="bigLineChart.chartData"
>
</line-chart>
</div>
</b-col>
<b-col xl="6" >
<div class="chart">
<line-chart
:height="350"
:chart-data="bigLineChart.chartData"
>
</line-chart>
</div>
</b-col>
</b-row>
</b-container>
</div>
</template>
@ -32,10 +56,39 @@
import GddWorkTable from '../../views/KontoOverview/GddWorkTable.vue';
import * as chartConfigs from '@/components/Charts/config';
import LineChart from '@/components/Charts/LineChart';
//import BarChart from '@/components/Charts/BarChart';
export default {
components: {
GddTable,
GddWorkTable
GddWorkTable,
LineChart,
//BarChart
},
data(){
return {
bigLineChart: {
allData: [
[0, 20, 10, 30, 15, 40, 20, 60, 60],
[0, 20, 5, 25, 10, 30, 35, 60, 40],
[0, 2, 5, 7, 10, 30, 15, 9, 10],
[0, 2, 5, 7, 10, 14, 29, 78, 120]
],
activeIndex: 0,
chartData: {
datasets: [
{
label: 'Performance',
data: [0, 20, 10, 30, 15, 40, 20, 60, 60],
}
],
labels: ['May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
},
extraOptions: chartConfigs.blueChartOptions,
},
}
}
};
</script>

View File

@ -1,37 +0,0 @@
<template>
<footer class="footer px-4 mx-2">
<b-row align-v="center" class="justify-content-lg-between">
<b-col lg="6">
<div class="copyright text-center text-lg-left text-muted">
© {{year}} <a href="https://www.creative-tim.com" class="font-weight-bold ml-1" target="_blank">Creative Tim</a>
</div>
</b-col>
<b-col lg="6">
<b-nav class="nav-footer justify-content-center justify-content-lg-end">
<b-nav-item ref="https://www.creative-tim.com" target="_blank">
Creative Tim
</b-nav-item>
<b-nav-item href="https://www.creative-tim.com/presentation" target="_blank">
About Us
</b-nav-item>
<b-nav-item href="http://blog.creative-tim.com" target="_blank">
Blog
</b-nav-item>
<b-nav-item href="https://www.creative-tim.com/license" target="_blank">
License
</b-nav-item>
</b-nav>
</b-col>
</b-row>
</footer>
</template>
<script>
export default {
data() {
return {
year: new Date().getFullYear()
};
}
};
</script>
<style></style>

View File

@ -1,77 +0,0 @@
<template>
<div class="wrapper">
<notifications></notifications>
<side-bar>
<template slot-scope="" slot="links">
<sidebar-item
:link="{
name: 'Dashboards',
icon: 'ni ni-shop text-primary',
}"
>
<sidebar-item :link="{ name: 'Dashboard', path: '/dashboard' }"></sidebar-item>
</sidebar-item>
</template>
</side-bar>
<div class="main-content">
<dashboard-navbar></dashboard-navbar>
<div @click="$sidebar.displaySidebar(false)">
<fade-transition :duration="200" origin="center top" mode="out-in">
<!-- your content here -->
<router-view></router-view>
</fade-transition>
</div>
<content-footer v-if="!$route.meta.hideFooter"></content-footer>
</div>
</div>
</template>
<script>
/* eslint-disable no-new */
import PerfectScrollbar from 'perfect-scrollbar';
import 'perfect-scrollbar/css/perfect-scrollbar.css';
function hasElement(className) {
return document.getElementsByClassName(className).length > 0;
}
function initScrollbar(className) {
if (hasElement(className)) {
new PerfectScrollbar(`.${className}`);
} else {
// try to init it later in case this component is loaded async
setTimeout(() => {
initScrollbar(className);
}, 100);
}
}
import DashboardNavbar from './SampleNavbar.vue';
import ContentFooter from './SampleFooter.vue';
import DashboardContent from '../Layout/Content.vue';
import { FadeTransition } from 'vue2-transitions';
export default {
props: [],
components: {
DashboardNavbar,
ContentFooter,
//DashboardContent,
FadeTransition,
},
methods: {
initScrollbar() {
let docClasses = document.body.classList;
let isWindows = navigator.platform.startsWith('Win');
if (isWindows) {
// if we are on windows OS we activate the perfectScrollbar function
initScrollbar('scrollbar-inner');
docClasses.add('perfect-scrollbar-on');
} else {
docClasses.add('perfect-scrollbar-off');
}
}
}
};
</script>

View File

@ -1,137 +0,0 @@
<template>
<base-nav
container-classes="container-fluid"
class="navbar-top border-bottom navbar-expand"
:class="$route.meta.navbarClasses ? $route.meta.navbarClasses : 'bg-success navbar-dark'"
type=""
>
<!-- Search form -->
<b-form class="navbar-search form-inline mr-sm-3"
:class="$route.meta.searchClasses ? $route.meta.searchClasses : 'navbar-search-light'"
id="navbar-search-main">
<b-form-group class="mb-0">
<b-input-group class="input-group-alternative input-group-merge">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-search"></i></span>
</div>
<b-form-input placeholder="Search" type="text"></b-form-input>
</b-input-group>
</b-form-group>
<button type="button" class="close" data-action="search-close" data-target="#navbar-search-main" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</b-form>
<!-- Navbar links -->
<b-navbar-nav class="align-items-center ml-md-auto">
<!-- This item dont have <b-nav-item> becouse they add class 'nav-link' which is not needed here -->
<li class="nav-item d-xl-none">
<!-- Sidenav toggler -->
<div class="pr-3 sidenav-toggler sidenav-toggler-dark"
@click="toggleSidebar">
<div class="sidenav-toggler-inner">
<i class="sidenav-toggler-line"></i>
<i class="sidenav-toggler-line"></i>
<i class="sidenav-toggler-line"></i>
</div>
</div>
</li>
<!-- This item dont have <b-nav-item> because item have data-action/data-target on tag <a>, wich we cant add -->
<li class="nav-item d-sm-none">
<a class="nav-link" href="#" data-action="search-show" data-target="#navbar-search-main">
<i class="ni ni-zoom-split-in"></i>
</a>
</li>
</b-navbar-nav>
<b-navbar-nav class="align-items-center ml-auto ml-md-0">
<b-nav-item-dropdown right>
<b-dropdown-item class="pr-0" href="#" >
<b-media no-body class="align-items-center">
<span class="avatar avatar-sm">
<b-img alt="Image placeholder" rounded="circle" src="img/theme/team-4.jpg" />
</span>
<b-media-body class="ml-2 d-none d-lg-block">
<span class="mb-0 text-sm font-weight-bold">John Snow</span>
</b-media-body>
</b-media>
</b-dropdown-item>
<b-dropdown>
<b-dropdown-header class="noti-title">
<h6 class="text-overflow m-0">Welcome!</h6>
</b-dropdown-header >
<b-dropdown-item href="#!">
<i class="ni ni-single-02"></i>
<span>My profile</span>
</b-dropdown-item>
<b-dropdown-item href="#!">
<i class="ni ni-settings-gear-65"></i>
<span>Settings</span>
</b-dropdown-item>
<b-dropdown-item href="#!">
<i class="ni ni-calendar-grid-58"></i>
<span>Activity</span>
</b-dropdown-item>
<b-dropdown-item href="#!">
<i class="ni ni-support-16"></i>
<span>Support</span>
</b-dropdown-item>
<div class="dropdown-divider"></div>
<b-dropdown-item href="#!">
<i class="ni ni-user-run"></i>
<span>Logout</span>
</b-dropdown-item>
</b-dropdown>
</b-nav-item-dropdown>
</b-navbar-nav>
</base-nav>
</template>
<script>
import { CollapseTransition } from 'vue2-transitions';
import { BaseNav, Modal } from '@/components';
export default {
components: {
//CollapseTransition,
BaseNav,
//Modal
},
computed: {
routeName() {
const { name } = this.$route;
return this.capitalizeFirstLetter(name);
},
isRTL() {
return this.$rtl.isRTL;
}
},
data() {
return {
activeNotifications: false,
showMenu: false,
searchModalVisible: false,
searchQuery: ''
};
},
methods: {
capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
},
toggleNotificationDropDown() {
this.activeNotifications = !this.activeNotifications;
},
closeDropDown() {
this.activeNotifications = false;
},
toggleSidebar() {
this.$sidebar.displaySidebar(!this.$sidebar.showSidebar);
},
hideSidebar() {
this.$sidebar.displaySidebar(false);
}
}
};
</script>
<style scoped>
.top-navbar {
top: 0px;
}
</style>

View File

@ -1,95 +0,0 @@
<template>
<div>
<base-header class="pb-6">
<b-row align-v="center" class="py-4">
<b-col lg="6" cols="7">
<h6 class="h2 text-white d-inline-block mb-0">Default</h6>
<nav aria-label="breadcrumb" class="d-none d-md-inline-block ml-md-4">
<route-bread-crumb></route-bread-crumb>
</nav>
</b-col>
<b-col lg="6" cols="5" class="text-right">
<base-button size="sm" type="neutral">New</base-button>
<base-button size="sm" type="neutral">Filters</base-button>
</b-col>
</b-row>
<!-- Card stats -->
<b-row >
<b-col xl="3" md="6" >
<stats-card title="Total traffic"
type="gradient-red"
sub-title="350,897"
icon="ni ni-active-40">
<template slot="footer">
<span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 3.48%</span>
<span class="text-nowrap">Since last month</span>
</template>
</stats-card>
</b-col>
<b-col md="6" xl="3">
<stats-card title="Total traffic"
type="gradient-orange"
sub-title="2,356"
icon="ni ni-chart-pie-35">
<template slot="footer">
<span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 12.18%</span>
<span class="text-nowrap">Since last month</span>
</template>
</stats-card>
</b-col>
<b-col md="6" xl="3">
<stats-card title="Sales"
type="gradient-green"
sub-title="924"
icon="ni ni-money-coins">
<template slot="footer">
<span class="text-danger mr-2"><i class="fa fa-arrow-down"></i> 5.72%</span>
<span class="text-nowrap">Since last month</span>
</template>
</stats-card>
</b-col>
<b-col md="6" xl="3">
<stats-card title="Performance"
type="gradient-info"
sub-title="49,65%"
icon="ni ni-chart-bar-32">
<template slot="footer">
<span class="text-success mr-2"><i class="fa fa-arrow-up"></i> 54.8%</span>
<span class="text-nowrap">Since last month</span>
</template>
</stats-card>
</b-col>
</b-row>
</base-header>
<b-container fluid class="mt--6">
<b-row class="starter-page">
Sample page
</b-row>
</b-container>
</div>
</template>
<script>
import RouteBreadCrumb from '@/components/Breadcrumb/RouteBreadcrumb';
import StatsCard from '@/components/Cards/StatsCard';
export default {
name: 'starter-page',
components: {
StatsCard,
RouteBreadCrumb
},
data() {
return {};
}
};
</script>
<style>
.starter-page {
min-height: calc(100vh - 380px);
}
</style>

View File

@ -9626,6 +9626,11 @@ vue-cookies@^1.7.4:
resolved "https://registry.yarnpkg.com/vue-cookies/-/vue-cookies-1.7.4.tgz#d241d0a0431da0795837651d10b4d73e7c8d3e8d"
integrity sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA==
vue-country-flag@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/vue-country-flag/-/vue-country-flag-2.0.3.tgz#f644d8f5150a97f473f0c13e04622c6ede37d1de"
integrity sha512-QZM3hNNhnGU+G1qnpq1BiICE4Zh91UA++/UpM0go8XbxkVxTiPy4asWY07vL/3PtW8M69YqWVbhwG13rzvNwkA==
vue-eslint-parser@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1"