mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Merge branch 'master' of github.com:gradido/gradido
This commit is contained in:
commit
a68cad4b87
18
.github/workflows/push.yml
vendored
18
.github/workflows/push.yml
vendored
@ -1,18 +0,0 @@
|
||||
name: on-push
|
||||
on: push
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build the stack
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
docker-compose up -d
|
||||
- name: Test
|
||||
env:
|
||||
GN_INSTANCE_FOLDER: /tmp/gradio-node-instance
|
||||
GN_CONTAINER_NAME: gradido-node-build
|
||||
run: docker run gradido-node-test
|
||||
timeout-minutes: 2
|
||||
|
||||
116
.github/workflows/test.yml
vendored
116
.github/workflows/test.yml
vendored
@ -4,34 +4,13 @@ name: gradido test CI
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
##############################################################################
|
||||
# JOB: PREPARE #####################################################
|
||||
##############################################################################
|
||||
#prepare:
|
||||
# name: Prepare
|
||||
# runs-on: ubuntu-latest
|
||||
# # needs: [nothing]
|
||||
# steps:
|
||||
# ##########################################################################
|
||||
# # CHECKOUT CODE ##########################################################
|
||||
# ##########################################################################
|
||||
# - name: Checkout code
|
||||
# uses: actions/checkout@v2
|
||||
# ##########################################################################
|
||||
# # TODO: DO STUFF ??? #####################################################
|
||||
# ##########################################################################
|
||||
# - name: Check translation files
|
||||
# run: |
|
||||
# scripts/translations/sort.sh
|
||||
# scripts/translations/missing-keys.sh
|
||||
|
||||
##############################################################################
|
||||
# JOB: DOCKER BUILD TEST FRONTEND ############################################
|
||||
##############################################################################
|
||||
build_test_frontend:
|
||||
name: Docker Build Test - Frontend
|
||||
runs-on: ubuntu-latest
|
||||
#needs: [nothing] # [prepare]
|
||||
#needs: [nothing]
|
||||
steps:
|
||||
##########################################################################
|
||||
# CHECKOUT CODE ##########################################################
|
||||
@ -39,7 +18,7 @@ jobs:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
##########################################################################
|
||||
# NEO4J ##################################################################
|
||||
# FRONTEND ###############################################################
|
||||
##########################################################################
|
||||
- name: Frontend | Build `test` image
|
||||
run: |
|
||||
@ -78,30 +57,58 @@ jobs:
|
||||
# path: /tmp/backend.tar
|
||||
|
||||
##############################################################################
|
||||
# JOB: DOCKER BUILD TEST WEBAPP ##############################################
|
||||
# JOB: DOCKER BUILD TEST LOGIN SERVER ########################################
|
||||
##############################################################################
|
||||
#build_test_webapp:
|
||||
# name: Docker Build Test - WebApp
|
||||
# runs-on: ubuntu-latest
|
||||
# needs: [prepare]
|
||||
# steps:
|
||||
# ##########################################################################
|
||||
# # CHECKOUT CODE ##########################################################
|
||||
# ##########################################################################
|
||||
# - name: Checkout code
|
||||
# uses: actions/checkout@v2
|
||||
# ##########################################################################
|
||||
# # BUILD WEBAPP DOCKER IMAGE (build) ######################################
|
||||
# ##########################################################################
|
||||
# - name: webapp | Build `test` image
|
||||
# run: |
|
||||
# docker build --target test -t "ocelotsocialnetwork/webapp:test" webapp/
|
||||
# docker save "ocelotsocialnetwork/webapp:test" > /tmp/webapp.tar
|
||||
# - name: Upload Artifact
|
||||
# uses: actions/upload-artifact@v2
|
||||
# with:
|
||||
# name: docker-webapp-test
|
||||
# path: /tmp/webapp.tar
|
||||
build_test_login_server:
|
||||
name: Docker Build Test - Login Server
|
||||
runs-on: ubuntu-latest
|
||||
#needs: [nothing]
|
||||
steps:
|
||||
##########################################################################
|
||||
# CHECKOUT CODE ##########################################################
|
||||
##########################################################################
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
##########################################################################
|
||||
# BUILD LOGIN SERVER DOCKER IMAGE (build) ################################
|
||||
##########################################################################
|
||||
- name: login server | Build `test` image
|
||||
run: |
|
||||
docker build --target login_server_debug -t "gradido/loginserver:test" -f ./login_server/Dockerfile.debug login_server/
|
||||
docker save "gradido/loginserver:test" > /tmp/loginserver.tar
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: docker-loginserver-test
|
||||
path: /tmp/loginserver.tar
|
||||
|
||||
##############################################################################
|
||||
# JOB: DOCKER BUILD TEST COMMUNITY SERVER ####################################
|
||||
##############################################################################
|
||||
build_test_community_server:
|
||||
name: Docker Build Test - Community Server
|
||||
runs-on: ubuntu-latest
|
||||
#needs: [nothing]
|
||||
steps:
|
||||
##########################################################################
|
||||
# CHECKOUT CODE ##########################################################
|
||||
##########################################################################
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
##########################################################################
|
||||
# BUILD COMMUNITY SERVER DOCKER IMAGE (build) ############################
|
||||
##########################################################################
|
||||
- name: community server | Build `test` image
|
||||
run: |
|
||||
docker build -t "gradido/communityserver:test" -f ./community_server/Dockerfile ./
|
||||
docker save "gradido/communityserver:test" > /tmp/communityserver.tar
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: docker-communityserver-test
|
||||
path: /tmp/communityserver.tar
|
||||
|
||||
##############################################################################
|
||||
# JOB: LINT FRONTEND #########################################################
|
||||
@ -241,4 +248,19 @@ jobs:
|
||||
# run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps webapp
|
||||
# - name: webapp | Unit tests
|
||||
# #run: docker run --rm ocelotsocialnetwork/webapp:build yarn run test
|
||||
# run: docker-compose exec -T webapp yarn test
|
||||
# run: docker-compose exec -T webapp yarn test
|
||||
|
||||
#test:
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - uses: actions/checkout@v2
|
||||
# - name: Build the stack
|
||||
# run: |
|
||||
# git submodule update --init --recursive
|
||||
# docker-compose up -d
|
||||
# - name: Test
|
||||
# env:
|
||||
# GN_INSTANCE_FOLDER: /tmp/gradio-node-instance
|
||||
# GN_CONTAINER_NAME: gradido-node-build
|
||||
# run: docker run gradido-node-test
|
||||
# timeout-minutes: 2
|
||||
11
.gitmodules
vendored
11
.gitmodules
vendored
@ -2,12 +2,12 @@
|
||||
path = gn
|
||||
url = https://github.com/gradido/gn.git
|
||||
branch = master
|
||||
[submodule "mithril_client"]
|
||||
path = community_server/mithril_client
|
||||
url = git@github.com:gradido/gradido_mithrilJS_client.git
|
||||
#[submodule "mithril_client"]
|
||||
# path = community_server/mithril_client
|
||||
# url = https://github.com/gradido/gradido_mithrilJS_client.git
|
||||
[submodule "src/protobuf"]
|
||||
path = community_server/src/protobuf
|
||||
url = git@github.com:gradido/gradido_protocol.git
|
||||
url = https://github.com/gradido/gradido_protocol.git
|
||||
[submodule "dependencies/tinf"]
|
||||
path = login_server/dependencies/tinf
|
||||
url = https://github.com/jibsen/tinf.git
|
||||
@ -22,5 +22,4 @@
|
||||
url = https://github.com/gradido/iroha-ed25519.git
|
||||
[submodule "dependencies/spirit-po"]
|
||||
path = login_server/dependencies/spirit-po
|
||||
url = https://github.com/cbeck88/spirit-po.git
|
||||
|
||||
url = https://github.com/cbeck88/spirit-po.git
|
||||
21
CHANGELOG.md
21
CHANGELOG.md
@ -4,4 +4,25 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
|
||||
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
||||
|
||||
#### [0.9.2](https://github.com/gradido/gradido/compare/0.9.1...0.9.2)
|
||||
|
||||
- Reload after login fixed [`#50`](https://github.com/gradido/gradido/pull/50)
|
||||
- Monorepo login server [`#48`](https://github.com/gradido/gradido/pull/48)
|
||||
- Stage0 [`#3`](https://github.com/gradido/gradido/pull/3)
|
||||
- Add auto-sign Transaction functionality [`5592275`](https://github.com/gradido/gradido/commit/55922753a7ffd9552be132501d744da491c409b5)
|
||||
- read in login the real client ip X-Real-IP from nginx forwarded not from community server [`512d307`](https://github.com/gradido/gradido/commit/512d307a19b955bb6e26ae8b274def354829b50f)
|
||||
- move check if all passwords allow direct into pwdValidation so it will work with every code which ask for password [`e2c38c1`](https://github.com/gradido/gradido/commit/e2c38c1a0fc25a4a2bc922c4bbc44d86b6d00d8b)
|
||||
|
||||
#### 0.9.1
|
||||
|
||||
> 13 March 2021
|
||||
|
||||
- Login gbb [`#12`](https://github.com/gradido/gradido/pull/12)
|
||||
- Admin prework axios json [`#10`](https://github.com/gradido/gradido/pull/10)
|
||||
- Merge pull request #1 from gradido/master [`#8`](https://github.com/gradido/gradido/pull/8)
|
||||
- [WIP] 2 create a dockerfile for the frontend application [`#6`](https://github.com/gradido/gradido/pull/6)
|
||||
- Master - first step [`#1`](https://github.com/gradido/gradido/pull/1)
|
||||
- Add docker compose [`#7`](https://github.com/gradido/gradido/pull/7)
|
||||
- style 404 side :) [`c7bdf89`](https://github.com/gradido/gradido/commit/c7bdf8978594b932615e48f9bb1c19d3c3bf3fcf)
|
||||
- publish workflow test [`df6f66f`](https://github.com/gradido/gradido/commit/df6f66ffe70baa9ed3f70b460a6c0c14011bb944)
|
||||
- many translations. translation structure [`bf68547`](https://github.com/gradido/gradido/commit/bf685479767d19c246c4d6abe3577dc3cb666346)
|
||||
|
||||
@ -1 +0,0 @@
|
||||
Subproject commit f0b1d113cee2a76e9dbb098b315f4acaf38410d0
|
||||
@ -35,6 +35,15 @@ class StateBalance extends Entity
|
||||
|
||||
protected $_virtual = ['decay'];
|
||||
|
||||
private function convertToTimestamp($dateOrTime)
|
||||
{
|
||||
if(method_exists($dateOrTime, 'getTimestamp')) {
|
||||
return $dateOrTime->getTimestamp();
|
||||
} else {
|
||||
return $dateOrTime->i18nFormat(Time::UNIX_TIMESTAMP_FORMAT);
|
||||
}
|
||||
}
|
||||
|
||||
protected function _getDecay()
|
||||
{
|
||||
// decay factor in seconds per year
|
||||
@ -44,7 +53,7 @@ class StateBalance extends Entity
|
||||
// SELECT TIMESTAMPDIFF(SECOND, modified, CURDATE()) AS age_in_seconds from state_balances
|
||||
// decay_for_duration = decay_factor^seconds
|
||||
// decay = gradido_cent * decay_for_duration
|
||||
$decay_duration = intval(Time::now()->getTimestamp() - $this->record_date->getTimestamp());
|
||||
$decay_duration = $this->decayDuration(Time::now());
|
||||
if($decay_duration === 0) {
|
||||
return $this->amount;
|
||||
}
|
||||
@ -53,7 +62,8 @@ class StateBalance extends Entity
|
||||
}
|
||||
public function partDecay($target_date)
|
||||
{
|
||||
$decay_duration = intval($target_date->getTimestamp() - $this->record_date->getTimestamp());
|
||||
if($target_date == null) return 0;
|
||||
$decay_duration = $this->decayDuration($target_date);
|
||||
if($decay_duration <= 0) {
|
||||
return $this->amount;
|
||||
}
|
||||
@ -61,7 +71,8 @@ class StateBalance extends Entity
|
||||
}
|
||||
|
||||
public function decayDuration($target_date)
|
||||
{
|
||||
return intval($target_date->getTimestamp() - $this->record_date->getTimestamp());
|
||||
{
|
||||
if($this->record_date == null) return 0;
|
||||
return intval($this->convertToTimestamp($target_date) - $this->record_date->getTimestamp());
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
namespace Model\Transactions;
|
||||
|
||||
use Cake\ORM\TableRegistry;
|
||||
use Cake\I18n\Date;
|
||||
|
||||
class TransactionBody extends TransactionBase {
|
||||
private $mProtoTransactionBody = null;
|
||||
@ -75,6 +76,7 @@ class TransactionBody extends TransactionBase {
|
||||
|
||||
$transactionEntity->transaction_type_id = $this->transactionTypeId;
|
||||
$transactionEntity->memo = $this->getMemo();
|
||||
$transactionEntity->received = new Date();
|
||||
|
||||
if ($transactionsTable->save($transactionEntity)) {
|
||||
// success
|
||||
|
||||
@ -5,7 +5,8 @@ module.exports = {
|
||||
},
|
||||
extends: ['plugin:vue/essential'],
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||
// TODO no console!
|
||||
'no-console': 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
|
||||
},
|
||||
parserOptions: {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bootstrap-vue-gradido-wallet",
|
||||
"version": "0.9.1",
|
||||
"version": "0.9.2",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "node server.js",
|
||||
|
||||
@ -4,8 +4,7 @@
|
||||
</header>
|
||||
<div class="">
|
||||
<particles-bg type="custom" :config="config" :bg="true" />
|
||||
<router-view />
|
||||
|
||||
<router-view />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -19,17 +18,17 @@ export default {
|
||||
components: {
|
||||
ParticlesBg
|
||||
},
|
||||
created () {
|
||||
//console.log("this.$cookies.get('gdd_session_id') ", this.$cookies.get('gdd_session_id') )
|
||||
console.log(" $cookies.isKey('gdd_session_id') ", this.$cookies.isKey("gdd_session_id") )
|
||||
if ( this.$cookies.isKey('gdd_session_id') ) {
|
||||
//this.$store.state.email = this.$cookies.get('gdd_u')
|
||||
console.log("login to kontooverview")
|
||||
this.$router.push('/KontoOverview')
|
||||
}else {
|
||||
console.log("login to LOGIN")
|
||||
this.$router.push("/Login")
|
||||
}
|
||||
created () {
|
||||
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.$router.push("overview")
|
||||
}else {
|
||||
console.log("app.vue to Logout")
|
||||
this.$store.dispatch('logout')
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -52,7 +51,7 @@ export default {
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.btn {
|
||||
.btn-primary pim{
|
||||
background-color: #5A7B02;
|
||||
border-color: #5e72e4;
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<bread-crumb list-classes="breadcrumb-links breadcrumb-dark">
|
||||
<BreadCrumbItem>
|
||||
<router-link to="/">
|
||||
<router-link to="/overview">
|
||||
<i class="fas fa-home"></i>
|
||||
</router-link>
|
||||
</BreadCrumbItem>
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
|
||||
<template slot="footer">
|
||||
<base-button type="white">Ok</base-button>
|
||||
<base-button type="link" class="text-white ml-auto" @click="$store.state.modals = false">abbrechen</base-button>
|
||||
<base-button type="link" class="ml-auto" @click="$store.state.modals = false">abbrechen</base-button>
|
||||
</template>
|
||||
</modal>
|
||||
|
||||
|
||||
@ -6,12 +6,12 @@
|
||||
<navbar-toggle-button @click.native="showSidebar">
|
||||
|
||||
</navbar-toggle-button>
|
||||
<router-link class="navbar-brand" to="/">
|
||||
<router-link class="navbar-brand" to="/overview">
|
||||
<img :src="logo" class="navbar-brand-img" alt="...">
|
||||
</router-link>
|
||||
|
||||
<slot name="mobile-right">
|
||||
<ul class="nav align-items-center d-md-none">
|
||||
<ul class="nav align-items-center d-md-none">
|
||||
|
||||
<base-dropdown class="nav-item" menu-on-right tag="li" title-tag="a">
|
||||
<a slot="title-container" class="nav-link" href="#" role="button">
|
||||
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<router-link to="/KontoOverview" class="dropdown-item text-lg text-muted">
|
||||
<router-link to="/overview" class="dropdown-item text-lg text-muted">
|
||||
<i class="ni ni-single-02"></i>
|
||||
<span>{{ $t('site.overview.account_overview')}}</span>
|
||||
</router-link>
|
||||
@ -40,10 +40,10 @@
|
||||
</router-link>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<router-link @click="logout" class="dropdown-item text-lg text-muted">
|
||||
<div @click="logout" class="dropdown-item text-lg text-muted" >
|
||||
<i class="ni ni-support-16"></i>
|
||||
<span>{{ $t('logout') }}</span>
|
||||
</router-link>
|
||||
{{ $t('logout') }}
|
||||
</div>
|
||||
</base-dropdown>
|
||||
</ul>
|
||||
</slot>
|
||||
@ -53,7 +53,7 @@
|
||||
<div class="navbar-collapse-header d-md-none">
|
||||
<div class="row">
|
||||
<div class="col-6 collapse-brand">
|
||||
<router-link to="/">
|
||||
<router-link to="/overview">
|
||||
<img :src="logo">
|
||||
</router-link>
|
||||
</div>
|
||||
@ -62,26 +62,20 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="navbar-nav">
|
||||
<slot name="links">
|
||||
</slot>
|
||||
</ul>
|
||||
|
||||
<hr class="my-3">
|
||||
|
||||
<ul class="navbar-nav mb-md-3">
|
||||
|
||||
<hr class="my-3">
|
||||
<ul class="navbar-nav mb-md-3">
|
||||
<li class="nav-item">
|
||||
|
||||
<a class="nav-link text-lg bg-light" href="#!" @click="logout">
|
||||
{{ $t('logout') }}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</template>
|
||||
<script>
|
||||
@ -96,7 +90,7 @@
|
||||
logo: {
|
||||
type: String,
|
||||
default: 'img/brand/green.png',
|
||||
description: 'Sidebar app logo'
|
||||
description: 'Gradido Sidebar app logo'
|
||||
},
|
||||
autoClose: {
|
||||
type: Boolean,
|
||||
@ -116,17 +110,9 @@
|
||||
showSidebar() {
|
||||
this.$sidebar.displaySidebar(true)
|
||||
},
|
||||
setLocale(locale) {
|
||||
this.$i18n.locale = locale
|
||||
//this.$router.push({
|
||||
// params: { lang: locale }
|
||||
//})
|
||||
//this.hideDropdown()
|
||||
},
|
||||
logout(){
|
||||
//console.log("DashboardNavbar.vue user logout() : ")
|
||||
this.$store.dispatch('logout')
|
||||
}
|
||||
logout(){
|
||||
this.$store.dispatch('logout')
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this.$sidebar.showSidebar) {
|
||||
|
||||
@ -29,6 +29,7 @@ import { messages } from 'vee-validate/dist/locale/en.json';
|
||||
import VueQrcodeReader from "vue-qrcode-reader";
|
||||
import VueQrcode from "vue-qrcode";
|
||||
|
||||
import VueFlatPickr from 'vue-flatpickr-component';
|
||||
|
||||
import VueGoodTablePlugin from 'vue-good-table';
|
||||
// import the styles
|
||||
@ -54,6 +55,7 @@ export default {
|
||||
Vue.use(VueMoment);
|
||||
Vue.use(VueQrcodeReader);
|
||||
Vue.use(VueQrcode);
|
||||
Vue.use(VueFlatPickr);
|
||||
configure({
|
||||
classes: {
|
||||
valid: 'is-valid',
|
||||
|
||||
@ -2,7 +2,7 @@ import DashboardLayout from '@/views/Layout/DashboardLayout.vue'
|
||||
import AuthLayoutGDD from '@/views/Layout/AuthLayout_gdd.vue'
|
||||
import AuthLayout from '@/views/Layout/AuthLayout.vue'
|
||||
|
||||
import NotFound from '@/views/NotFoundPage.vue'
|
||||
// import NotFound from '@/views/NotFoundPage.vue'
|
||||
|
||||
|
||||
const routes = [
|
||||
@ -31,11 +31,11 @@ const routes = [
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
redirect: 'KontoOverview',
|
||||
redirect: 'overview',
|
||||
component: DashboardLayout,
|
||||
children: [
|
||||
{
|
||||
path: '/KontoOverview',
|
||||
path: '/overview',
|
||||
component: () => import('../views/KontoOverview.vue'),
|
||||
meta: {
|
||||
requiresAuth: true
|
||||
@ -70,15 +70,6 @@ const routes = [
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/',
|
||||
redirect: 'login',
|
||||
component: AuthLayout,
|
||||
children: [
|
||||
|
||||
{ path: '*', component: NotFound }
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import router from '../routes/router.js'
|
||||
import loginAPI from '../apis/loginAPI'
|
||||
import communityAPI from '../apis/communityAPI'
|
||||
import axios from 'axios'
|
||||
//import CONFIG from '../config'
|
||||
|
||||
|
||||
export const store = new Vuex.Store({
|
||||
@ -25,7 +26,14 @@ export const store = new Vuex.Store({
|
||||
auto_sign: true
|
||||
},
|
||||
transactions: [],
|
||||
modals: false
|
||||
modals: false,
|
||||
optionAxios: {
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Access-Control-Allow-Origin': '*',
|
||||
'Access-Control-Allow-Credentials': 'true'
|
||||
}
|
||||
}
|
||||
},
|
||||
// Retrieve a state variable
|
||||
getters: {
|
||||
@ -59,20 +67,33 @@ export const store = new Vuex.Store({
|
||||
// Asyncronous actions - used for api calls
|
||||
actions: {
|
||||
login: async ({ dispatch, commit }, data) => {
|
||||
console.log('action: login')
|
||||
// console.log('action: login')
|
||||
|
||||
//axios.post("http://localhost/login_api/unsecureLogin/",
|
||||
// {"email": data.email, "password":data.password }).then((result) => {
|
||||
// console.log("store login result", result)
|
||||
|
||||
const result = await loginAPI.login(data.email,data.password)
|
||||
console.log('result',result)
|
||||
console.log('result.success',result.success)
|
||||
if( result.success ){
|
||||
// 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('/KontoOverview')
|
||||
router.push('/overview')
|
||||
} else {
|
||||
// Register failed, we perform a logout
|
||||
// console.log('action login to logout start')
|
||||
dispatch('logout')
|
||||
}
|
||||
}
|
||||
//}, (error) => {
|
||||
// console.log(error);
|
||||
//});
|
||||
|
||||
|
||||
},
|
||||
passwordReset: async (data) => {
|
||||
console.log("<<<<<<<<<<< PASSWORT RESET TODO >>>>>>>>>>>", data.email)
|
||||
@ -81,16 +102,17 @@ export const store = new Vuex.Store({
|
||||
// http://localhost/transaction-creations/ajaxCreate
|
||||
},
|
||||
createUser: async ({ commit, dispatch }, data) => {
|
||||
console.log('action: createUser')
|
||||
// console.log('action: createUser')
|
||||
const result = await loginAPI.create(data.email,data.first_name,data.last_name,data.password)
|
||||
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('/KontoOverview')
|
||||
router.push('/overview')
|
||||
} else {
|
||||
// Register failed, we perform a logout
|
||||
// console.log('action createUser to logout start')
|
||||
dispatch('logout')
|
||||
}
|
||||
},
|
||||
@ -112,7 +134,7 @@ export const store = new Vuex.Store({
|
||||
//console.log('action: ajaxCreate')
|
||||
state.ajaxCreateData.amount = (state.ajaxCreateData.amount)*10000
|
||||
axios.post("http://localhost/transaction-send-coins/ajaxCreate", state.ajaxCreateData).then((result) => {
|
||||
console.log("store ajaxCreate result", result)
|
||||
//console.log("store ajaxCreate result", result)
|
||||
|
||||
if( result.success ){
|
||||
// TODO
|
||||
@ -128,12 +150,18 @@ export const store = new Vuex.Store({
|
||||
// const result = await communityAPI.transactions(state.session_id)
|
||||
},
|
||||
accountBalance: async ({ commit, dispatch, state }) => {
|
||||
//console.log('action: accountBalance')
|
||||
const result = await communityAPI.balance(state.session_id)
|
||||
//console.log(result)
|
||||
// console.log('action: accountBalance')
|
||||
// console.log('action: dispatch', dispatch)
|
||||
// console.log('action: state.session_id', state.session_id)
|
||||
// console.log(" action: $cookies.get('gdd_session_id') ", $cookies.get("gdd_session_id") )
|
||||
// commit('session_id', $cookies.get("gdd_session_id"))
|
||||
// commit('email', $cookies.get("gdd_u"))
|
||||
const result = await communityAPI.balance($cookies.get("gdd_session_id"))
|
||||
// console.log("accountBalance result", result)
|
||||
if(result.success) {
|
||||
commit('user_balance', result.result.data.balance)
|
||||
} else {
|
||||
console.log('action accountBalance to logout start')
|
||||
dispatch('logout')
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
<b-row align-v="center" slot="header">
|
||||
<b-col>
|
||||
<h6 class="text-light text-uppercase ls-1 mb-1">Charts</h6>
|
||||
<h5 class="h3 text-white mb-0">Geschöpft</h5>
|
||||
<h5 class="h3 mb-0">Geschöpft</h5>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<b-nav class="nav-pills justify-content-end">
|
||||
@ -226,7 +226,7 @@
|
||||
import AdminUserCreation from './AdminOverview/AdminUserCreation';
|
||||
import axios from 'axios';
|
||||
|
||||
|
||||
|
||||
export default {
|
||||
components: {
|
||||
LineChart,
|
||||
|
||||
@ -68,7 +68,7 @@
|
||||
<b-row align-v="center" slot="header">
|
||||
<b-col>
|
||||
<h6 class="text-light text-uppercase ls-1 mb-1">Overview</h6>
|
||||
<h5 class="h3 text-white mb-0">Sales value</h5>
|
||||
<h5 class="h3 mb-0">Sales value</h5>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<b-nav class="nav-pills justify-content-end">
|
||||
|
||||
@ -6,41 +6,43 @@
|
||||
<gdd-sent />
|
||||
<hr>
|
||||
<gdd-table />
|
||||
|
||||
<hr>
|
||||
<div>
|
||||
<gdd-add-work />
|
||||
<gdd-add-work-2 />
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<!--
|
||||
<!--
|
||||
<div>
|
||||
<gdd-add-work />
|
||||
</div>
|
||||
<br>
|
||||
-->
|
||||
<div>
|
||||
<gdd-work-table />
|
||||
</div>
|
||||
-->
|
||||
</div>
|
||||
</base-header>
|
||||
<hr>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import GddStatus from './KontoOverview/GddStatus.vue';
|
||||
import GddSent from './KontoOverview/GddSent.vue';
|
||||
import GddTable from './KontoOverview/GddTable.vue';
|
||||
import GddAddWork from './KontoOverview/GddAddWork.vue';
|
||||
// import GddWorkTable from './KontoOverview/GddWorkTable.vue';
|
||||
import GddStatus from './KontoOverview/GddStatus.vue';
|
||||
import GddSent from './KontoOverview/GddSent.vue';
|
||||
import GddTable from './KontoOverview/GddTable.vue';
|
||||
import GddAddWork2 from './KontoOverview/GddAddWork2.vue';
|
||||
import GddWorkTable from './KontoOverview/GddWorkTable.vue';
|
||||
|
||||
export default {
|
||||
name: "Overview",
|
||||
components: {
|
||||
GddStatus,
|
||||
GddSent,
|
||||
GddTable,
|
||||
GddAddWork
|
||||
//GddWorkTable
|
||||
GddStatus,
|
||||
GddSent,
|
||||
GddTable,
|
||||
GddAddWork2,
|
||||
GddWorkTable
|
||||
},
|
||||
created() {
|
||||
this.$store.dispatch('accountBalance')
|
||||
},
|
||||
this.$store.dispatch('accountBalance', $cookies.get("gdd_session_id"))
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
@ -70,6 +70,15 @@
|
||||
<base-input label="Beitrag">
|
||||
<textarea class="form-control form-control-lg" rows="3" v-model="form.text" ></textarea>
|
||||
</base-input>
|
||||
<b-row class="form-group">
|
||||
<label class="col-md-2 col-form-label form-control-label form-control-lg">Tätigkeit</label>
|
||||
<b-col md="8">
|
||||
<base-input placeholder="Tätigkeit" v-model="form.location" class="form-control-lg"></base-input>
|
||||
</b-col>
|
||||
<b-col md="2">
|
||||
<base-input placeholder="Stunden" v-model="form.location" class="form-control-lg"></base-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
240
frontend/src/views/KontoOverview/GddAddWork2.vue
Normal file
240
frontend/src/views/KontoOverview/GddAddWork2.vue
Normal file
@ -0,0 +1,240 @@
|
||||
<template>
|
||||
<div>
|
||||
<b-tabs content-class="mt-3" fill>
|
||||
<b-tab :title="names.thisMonth" active>
|
||||
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
|
||||
<base-input label="Arbeitstunden" >
|
||||
<b-form-input type="number" placeholder="23" />
|
||||
</base-input>
|
||||
<base-input label="Datum / Zeitraum" >
|
||||
<flat-pickr class="form-control" v-model="date" :config="config"></flat-pickr>
|
||||
</base-input>
|
||||
</b-col>
|
||||
<b-col cols="9">
|
||||
<base-input label="Arbeitsreport">
|
||||
<textarea class="form-control" rows="5" @focus="textFocus"></textarea>
|
||||
</base-input>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col><button class="btn btn-info text-right" @click.prevent="newWorkForm">weiteren Report hinzufügen</button></b-col>
|
||||
<b-col>
|
||||
<div class="text-right">
|
||||
<button class="btn btn-info text-right" @click.prevent="submitForm2">save new Report</button>
|
||||
</div>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</b-tab>
|
||||
|
||||
|
||||
|
||||
<b-tab :title="names.lastMonth">
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
|
||||
<base-input label="Arbeitstunden" >
|
||||
<b-form-input type="number" placeholder="23" />
|
||||
</base-input>
|
||||
<base-input label="Datum / Zeitraum" >
|
||||
<flat-pickr class="form-control" v-model="date" :config="lastConfig"></flat-pickr>
|
||||
</base-input>
|
||||
</b-col>
|
||||
<b-col cols="9">
|
||||
<base-input label="Arbeitsreport">
|
||||
<textarea class="form-control" rows="5" @focus="textFocus"></textarea>
|
||||
</base-input>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col><button class="btn btn-warning text-right" @click.prevent="newWorkForm">+ weiteren Report hinzufügen</button></b-col>
|
||||
<b-col>
|
||||
<div class="text-right">
|
||||
<button class="btn btn-info text-right" @click.prevent="submitForm2">save new Report</button>
|
||||
</div>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<hr>
|
||||
<pre>Selected date is - {{date}}</pre>
|
||||
<p>{{days.lastMonth}} Days in {{names.lastMonth}} </p>
|
||||
|
||||
<p>Du hast diesen Monat
|
||||
{{stundenSumme>0 ? 'schon ' : 'noch keine' }}
|
||||
{{stundenSumme>0 ? ''+ stundenSumme : '' }}
|
||||
Stunden eingetragen</p>
|
||||
|
||||
</b-tab>
|
||||
|
||||
|
||||
|
||||
|
||||
<b-tab :title="names.beforLastMonth">
|
||||
|
||||
<b-row>
|
||||
<b-col cols="3">
|
||||
|
||||
<base-input label="Arbeitstunden" >
|
||||
<b-form-input type="number" placeholder="23" />
|
||||
</base-input>
|
||||
<base-input label="Datum / Zeitraum" >
|
||||
<flat-pickr class="form-control" v-model="date" :config="beforLastConfig"></flat-pickr>
|
||||
</base-input>
|
||||
</b-col>
|
||||
<b-col cols="9">
|
||||
<base-input label="Arbeitsreport">
|
||||
<textarea class="form-control" rows="5" @focus="textFocus"></textarea>
|
||||
</base-input>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col><button class="btn btn-warning text-right" @click.prevent="newWorkForm">+ weiteren Report hinzufügen</button></b-col>
|
||||
<b-col>
|
||||
<div class="text-right">
|
||||
<button class="btn btn-info text-right" @click.prevent="submitForm3">save new Report</button>
|
||||
</div>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<hr>
|
||||
<pre>Selected date is - {{date}}</pre>
|
||||
<p>{{days.beforLastMonth}} Days in {{names.beforLastMonth}} </p>
|
||||
<p>Du hast noch keine Einträge </p>
|
||||
|
||||
|
||||
</b-tab>
|
||||
|
||||
</b-tabs>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import flatPickr from "vue-flatpickr-component"
|
||||
import "flatpickr/dist/flatpickr.css"
|
||||
|
||||
export default {
|
||||
name: 'GDDAddWork2',
|
||||
components: {flatPickr},
|
||||
data(){
|
||||
return {
|
||||
date: null,
|
||||
config: {
|
||||
altInput: false,
|
||||
dateFormat: "d-m-Y",
|
||||
minDate: this.$moment().startOf('month').format("DD.MM.YYYY"),
|
||||
maxDate: this.$moment().format("DD.MM.YYYY"),
|
||||
mode: 'range'
|
||||
|
||||
},
|
||||
lastConfig:{
|
||||
altInput: false,
|
||||
dateFormat: "d-m-Y",
|
||||
minDate: this.$moment().month(this.$moment().month()-1).startOf('month').format("DD.MM.YYYY"),
|
||||
maxDate: this.$moment().month(this.$moment().month()-1).endOf('month').format("DD.MM.YYYY"),
|
||||
mode: 'range'
|
||||
},
|
||||
beforLastConfig:{
|
||||
altInput: false,
|
||||
dateFormat: "d-m-Y",
|
||||
minDate: this.$moment().month(this.$moment().month()-2).startOf('month').format("DD.MM.YYYY"),
|
||||
maxDate: this.$moment().month(this.$moment().month()-2).endOf('month').format("DD.MM.YYYY"),
|
||||
mode: 'range'
|
||||
},
|
||||
index: 0,
|
||||
form:[],
|
||||
stundenSumme: 0,
|
||||
messages: [],
|
||||
submitted:false,
|
||||
days: {
|
||||
thisMonth: this.$moment().month(this.$moment().month()).daysInMonth(),
|
||||
lastMonth: this.$moment().month(this.$moment().month()-1).daysInMonth(),
|
||||
beforLastMonth: this.$moment().month(this.$moment().month()-2).daysInMonth(),
|
||||
},
|
||||
names: {
|
||||
thisMonth: this.$moment().month(this.$moment().month()).format('MMMM'),
|
||||
lastMonth: this.$moment().month(this.$moment().month()-1).format('MMMM'),
|
||||
beforLastMonth: this.$moment().month(this.$moment().month()-2).format('MMMM')
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
watch: {
|
||||
$form: function(){
|
||||
stunden(this.form)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getTR(m,i){
|
||||
console.log(m+"-"+i)
|
||||
},
|
||||
stunden(hour, i, mon) {
|
||||
let n = 0
|
||||
console.log("stunden(form)=>", hour)
|
||||
console.log("stunden(i)=>", i)
|
||||
console.log("stunden(mon)=>", mon)
|
||||
|
||||
|
||||
console.log("this.stundenSumme start=> ", this.stundenSumme)
|
||||
this.stundenSumme = 0
|
||||
console.log("arr.length => ", this.form.length)
|
||||
for (n; n < this.form.length; n++){
|
||||
console.log(">arr[n]=> ",this.form[n])
|
||||
if (this.form[n] > 0) {
|
||||
this.stundenSumme += parseInt(this.form[n]) ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
this.messages.push({
|
||||
id: this.index,
|
||||
MonthsNumber: mon,
|
||||
DaysNumber: i,
|
||||
HoursNumber: hour,
|
||||
DestinationText: '',
|
||||
TextDecoded: ''
|
||||
});
|
||||
this.index++
|
||||
console.log("this.stundenSumme ende=> ", this.stundenSumme)
|
||||
},
|
||||
addNewMessage: function(){
|
||||
this.messages.push({
|
||||
DaysNumber: '',
|
||||
TextDecoded: ''
|
||||
});
|
||||
|
||||
},
|
||||
deleteNewMessage: function(event) {
|
||||
console.log("deleteNewMessage:event) => ", event)
|
||||
//console.log("deleteNewMessage:this.events.splice(this.event) => ", this.events.splice(this.event))
|
||||
this.form.splice(event, null);
|
||||
this.messages.splice(index, 1);
|
||||
this.index--
|
||||
},
|
||||
submitForm: function(e) {
|
||||
console.log(this.messages);
|
||||
|
||||
this.messages = [{ DaysNumber: '', TextDecoded: '' }];
|
||||
this.submitted = true;
|
||||
},
|
||||
submitForm2() {
|
||||
console.log("submitForm2 TODO")
|
||||
},
|
||||
submitForm3() {
|
||||
console.log("submitForm3 TODO")
|
||||
},
|
||||
textFocus(){
|
||||
console.log("textFocus TODO")
|
||||
},
|
||||
newWorkForm(){
|
||||
console.log("newWorkForm TODO")
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@ -13,12 +13,10 @@
|
||||
</b-row>
|
||||
<b-row>
|
||||
<qrcode-stream @decode="onDecode" @detect="onDetect" ></qrcode-stream>
|
||||
<b-alert show variant="secondary">
|
||||
|
||||
<b-alert show variant="secondary">
|
||||
<span class="alert-text"><strong>QR Code Scanner</strong> - Scanne den QR Code deines Partners</span>
|
||||
</b-alert>
|
||||
<b-alert show variant="warning" >
|
||||
|
||||
<b-alert show variant="warning" >
|
||||
<span class="alert-text" @click="scan=false"><strong>abrechen!</strong></span>
|
||||
</b-alert>
|
||||
</b-row>
|
||||
@ -38,10 +36,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>
|
||||
<img src="img/icons/gradido/qr-scan-pure.png" width="80" height="auto" @click="scan=true"/>
|
||||
</b-input-group-prepend>
|
||||
<b-form-input
|
||||
id="input-1"
|
||||
@ -75,17 +71,13 @@
|
||||
</b-form-input>
|
||||
|
||||
<b-input-group-prepend>
|
||||
|
||||
<div class="h1">GDD</div>
|
||||
|
||||
</b-input-group-prepend>
|
||||
|
||||
</b-input-group>
|
||||
<b-input-group>
|
||||
<b-input-group-prepend>
|
||||
|
||||
<b-icon icon="chat-right-text" class="display-1"></b-icon>
|
||||
|
||||
<b-input-group-prepend>
|
||||
<b-icon icon="chat-right-text" class="display-1"></b-icon>
|
||||
</b-input-group-prepend>
|
||||
<b-form-textarea v-model="form.memo"></b-form-textarea>
|
||||
</b-input-group>
|
||||
@ -97,7 +89,6 @@
|
||||
<br>
|
||||
</b-form>
|
||||
</validation-observer>
|
||||
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
</b-col>
|
||||
@ -133,14 +124,13 @@ export default {
|
||||
async onDecode (decodedString) {
|
||||
console.log('onDecode JSON.parse(decodedString)',JSON.parse(decodedString) )
|
||||
const arr = JSON.parse(decodedString)
|
||||
console.log('arr',arr[0].email )
|
||||
// console.log('arr',arr[0].email )
|
||||
this.modal.h4 = 'Scan erfolgreich'
|
||||
this.modal.p = arr
|
||||
this.form.email = arr[0].email
|
||||
this.form.amount1 = arr[0].amount
|
||||
console.log('arr mail',arr.email)
|
||||
console.log('arr mail',arr.amount)
|
||||
|
||||
// console.log('arr mail',arr.email)
|
||||
// console.log('arr mail',arr.amount)
|
||||
this.modals2 = true
|
||||
},
|
||||
async onDetect (promise) {
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
|
||||
<script>
|
||||
import axios from 'axios';
|
||||
|
||||
|
||||
export default {
|
||||
name: 'GddTable',
|
||||
data(){
|
||||
@ -57,13 +57,12 @@ export default {
|
||||
axios.get("http://localhost/state-balances/ajaxListTransactions/"+ this.$store.state.session_id).then((result) => {
|
||||
//console.log("result",result)
|
||||
//console.log("result.state",result.data.state)
|
||||
//
|
||||
//console.log("result.data.state == 'success'",result.data.state == "success")
|
||||
|
||||
//console.log("result.count",result.data.count)
|
||||
// console.log("result.gdtSum",result.data.gdtSum)
|
||||
console.log("result.transactions",typeof(result.data.transactions))
|
||||
//commit('transactions', result.data.transactions)
|
||||
//console.log("result.count",result.data.count)
|
||||
//console.log("result.gdtSum",result.data.gdtSum)
|
||||
//console.log("result.transactions",typeof(result.data.transactions))
|
||||
//commit('transactions', result.data.transactions)
|
||||
this.$store.state.user.balance_gdt = result.data.gdtSum
|
||||
this.items = result.data.transactions
|
||||
this.count = result.data.count
|
||||
@ -76,7 +75,7 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
filteredItems(a) {
|
||||
console.log("filteredItems date",a.items)
|
||||
// console.log("filteredItems date",a.items)
|
||||
return a.items
|
||||
|
||||
}
|
||||
|
||||
@ -1,20 +1,18 @@
|
||||
<template>
|
||||
<div>
|
||||
<b-list-group >
|
||||
<b-list-group-item v-for="item in items" :key="item.id">
|
||||
<div class="d-flex w-100 justify-content-between" @click="toogle(item)" >
|
||||
<b-icon v-if="item.status == 'submitted'" icon="clock-history" class="m-1" font-scale="2" style="color:orange"></b-icon>
|
||||
<b-icon v-else icon="check2-all" class="m-1" font-scale="2" style="color:green" ></b-icon>
|
||||
<h2 class="text-muted"><small>{{item.datel}}</small> - {{item.text}}</h2>
|
||||
</div>
|
||||
</b-list-group-item>
|
||||
</b-list-group>
|
||||
<b-list-group >
|
||||
<b-list-group-item v-for="item in items" :key="item.id">
|
||||
<div class="d-flex w-100 justify-content-between" @click="toogle(item)" >
|
||||
<b-icon v-if="item.status == 'submitted'" icon="clock-history" class="m-1" font-scale="2" style="color:orange"></b-icon>
|
||||
<b-icon v-else icon="check2-all" class="m-1" font-scale="2" style="color:green" ></b-icon>
|
||||
<h2 class="text-muted"><small>{{item.datel}}</small> - {{item.text}}</h2>
|
||||
</div>
|
||||
</b-list-group-item>
|
||||
</b-list-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
export default {
|
||||
name: 'GddWorkTable',
|
||||
data(){
|
||||
@ -22,8 +20,8 @@ export default {
|
||||
form: [],
|
||||
items: [
|
||||
{ id: 1, text: 'Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '12.12.2020 14:04', status: 'submitted' },
|
||||
{ id: 2, text: 'Larsen Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '22.06.2020 22:23', status: 'submitted' },
|
||||
{ id: 3, text: 'Geneva Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '15.04.2020 12:55', status: 'confirmed' },
|
||||
{ id: 2, text: 'Larsen Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '22.06.2020 22:23', status: 'submitted' },
|
||||
{ id: 3, text: 'Geneva Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '15.04.2020 12:55', status: 'confirmed' },
|
||||
{ id: 4, text: 'Community Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem Ipsum ', datel: '10.03.2020 18:20', status: 'confirmed'}
|
||||
]
|
||||
};
|
||||
@ -37,10 +35,7 @@ export default {
|
||||
},
|
||||
toogle(item) {
|
||||
const temp = '<b-collapse visible v-bind:id="item.id">xxx <small class="text-muted">porta</small></b-collapse>'
|
||||
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<b-col xl="5" lg="6" md="6" class="px-5">
|
||||
<h1 class="text-light">Landing Gradido</h1>
|
||||
<br>
|
||||
<router-link to="/KontoOverview" class="font-weight-bold text-white mt-5"> LoginUser</router-link>
|
||||
<router-link to="/overview" class="font-weight-bold text-white mt-5"> LoginUser</router-link>
|
||||
<br><br>
|
||||
<router-link to="/AdminOverview" class="font-weight-bold text-white mt-5"> Login Admin</router-link>
|
||||
<br><br>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<sidebar-item
|
||||
:link="{
|
||||
name: 'Kontoübersicht',
|
||||
path: 'KontoOverview',
|
||||
path: '/overview',
|
||||
icon: 'ni ni-tv-2 text-primary',
|
||||
}"
|
||||
>
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
expand="lg"
|
||||
>
|
||||
<div slot="brand" class="navbar-wrapper">
|
||||
<b-navbar-brand to="/">
|
||||
<b-navbar-brand to="/overview">
|
||||
<img src="img/brand/white.png">
|
||||
</b-navbar-brand>
|
||||
</div>
|
||||
@ -17,7 +17,7 @@
|
||||
<div class="navbar-collapse-header">
|
||||
<b-row>
|
||||
<b-col cols="6" class="collapse-brand">
|
||||
<router-link to="/">
|
||||
<router-link to="/overview">
|
||||
<img src="img/brand/green.png">
|
||||
</router-link>
|
||||
</b-col>
|
||||
|
||||
@ -13,17 +13,17 @@
|
||||
</div>
|
||||
</b-col>
|
||||
<b-col xl="6" class="col-xl-6">
|
||||
<b-nav class="nav-footer justify-content-center justify-content-xl-end">
|
||||
<b-nav-item ref="https://www.creative-tim.com" target="_blank">
|
||||
<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://www.creative-tim.com/presentation" target="_blank">
|
||||
<b-nav-item href="https://gradido.net/" target="_blank">
|
||||
{{$t('imprint')}}
|
||||
</b-nav-item>
|
||||
<b-nav-item href="http://blog.creative-tim.com" target="_blank">
|
||||
<b-nav-item href="https://gradido.net/" target="_blank">
|
||||
{{$t('privacy_policy')}}
|
||||
</b-nav-item>
|
||||
<b-nav-item href="https://www.creative-tim.com/license" target="_blank">
|
||||
<b-nav-item href="https://gradido.net/" target="_blank">
|
||||
{{$t('license')}}
|
||||
</b-nav-item>
|
||||
</b-nav>
|
||||
@ -41,25 +41,10 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { BaseNav } from '@/components';
|
||||
import { ZoomCenterTransition } from 'vue2-transitions';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
//BaseNav,
|
||||
//ZoomCenterTransition
|
||||
},
|
||||
props: {
|
||||
backgroundColor: {
|
||||
type: String,
|
||||
default: 'black'
|
||||
}
|
||||
},
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
showMenu: false,
|
||||
menuTransitionDuration: 250,
|
||||
pageTransitionDuration: 200,
|
||||
year: new Date().getFullYear(),
|
||||
pageClass: 'login-page'
|
||||
};
|
||||
@ -76,80 +61,10 @@
|
||||
// params: { lang: locale }
|
||||
//})
|
||||
//this.hideDropdown()
|
||||
},
|
||||
toggleNavbar() {
|
||||
document.body.classList.toggle('nav-open');
|
||||
this.showMenu = !this.showMenu;
|
||||
},
|
||||
closeMenu() {
|
||||
document.body.classList.remove('nav-open');
|
||||
this.showMenu = false;
|
||||
},
|
||||
setBackgroundColor() {
|
||||
document.body.classList.add('bg-default');
|
||||
},
|
||||
removeBackgroundColor() {
|
||||
document.body.classList.remove('bg-default');
|
||||
},
|
||||
updateBackground() {
|
||||
if (!this.$route.meta.noBodyBackground) {
|
||||
this.setBackgroundColor();
|
||||
} else {
|
||||
this.removeBackgroundColor()
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.removeBackgroundColor();
|
||||
},
|
||||
beforeRouteUpdate(to, from, next) {
|
||||
// Close the mobile menu first then transition to next page
|
||||
if (this.showMenu) {
|
||||
this.closeMenu();
|
||||
setTimeout(() => {
|
||||
next();
|
||||
}, this.menuTransitionDuration);
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
$route: {
|
||||
immediate: true,
|
||||
handler: function () {
|
||||
this.updateBackground()
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
$scaleSize: 0.8;
|
||||
@keyframes zoomIn8 {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale3d($scaleSize, $scaleSize, $scaleSize);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.main-content .zoomIn {
|
||||
animation-name: zoomIn8;
|
||||
}
|
||||
|
||||
@keyframes zoomOut8 {
|
||||
from {
|
||||
opacity: 1;
|
||||
}
|
||||
to {
|
||||
opacity: 0;
|
||||
transform: scale3d($scaleSize, $scaleSize, $scaleSize);
|
||||
}
|
||||
}
|
||||
|
||||
.main-content .zoomOut {
|
||||
animation-name: zoomOut8;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<side-bar>
|
||||
<template slot="links" >
|
||||
|
||||
<b-nav-item href="#!" to="/KontoOverview">
|
||||
<b-nav-item href="#!" to="/overview">
|
||||
|
||||
<b-nav-text class="p-0 text-lg text-muted">Senden</b-nav-text>
|
||||
</b-nav-item>
|
||||
@ -58,7 +58,7 @@
|
||||
|
||||
import DashboardNavbar from './DashboardNavbar.vue';
|
||||
import ContentFooter from './ContentFooter.vue';
|
||||
import DashboardContent from './Content.vue';
|
||||
// import DashboardContent from './Content.vue';
|
||||
import { FadeTransition } from 'vue2-transitions';
|
||||
|
||||
export default {
|
||||
@ -74,11 +74,7 @@
|
||||
if (isWindows) {
|
||||
initScrollbar('sidenav');
|
||||
}
|
||||
},
|
||||
logout(){
|
||||
//console.log("DashboardLayout.vue user logout() : ")
|
||||
this.$store.dispatch('logout')
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initScrollbar()
|
||||
|
||||
@ -4,7 +4,9 @@
|
||||
class="navbar-top navbar-expand"
|
||||
:class="{'navbar-dark': type === 'default'}"
|
||||
>
|
||||
<a href="#" aria-current="page" class="h4 mb-0 text-white text-uppercase d-none d-lg-inline-block active router-link-active"> {{$route.name}} </a>
|
||||
<a href="#" aria-current="page" class="h4 mb-0 text-uppercase d-none d-lg-inline-block active router-link-active">
|
||||
{{$route.name}}
|
||||
</a>
|
||||
<!-- Navbar links -->
|
||||
<b-navbar-nav class="align-items-center ml-md-auto">
|
||||
<!-- This item dont have <b-nav-item> because item have data-action/data-target on tag <a>, wich we cant add -->
|
||||
@ -15,32 +17,20 @@
|
||||
</li>
|
||||
</b-navbar-nav>
|
||||
<b-navbar-nav class="align-items-center ml-auto ml-md-0">
|
||||
<!-- <b-form class="navbar-search form-inline mr-sm-3"
|
||||
:class="{'navbar-search-dark': type === 'default', 'navbar-search-light': type === 'light'}"
|
||||
id="navbar-search-main">
|
||||
<b-form-group class="mb-0">
|
||||
<b-input-group class="input-group-alternative input-group-merge">
|
||||
<b-form-input placeholder="Search" type="text"> </b-form-input>
|
||||
|
||||
<div class="input-group-append">
|
||||
<span class="input-group-text"><i class="fas fa-search"></i></span>
|
||||
</div>
|
||||
</b-input-group>
|
||||
</b-form-group>
|
||||
</b-form> -->
|
||||
<base-dropdown menu-on-right
|
||||
class="nav-item"
|
||||
tag="li"
|
||||
title-tag="a"
|
||||
title-classes="nav-link pr-0">
|
||||
<a href="#" class="nav-link pr-0" @click.prevent slot="title-container">
|
||||
<a href="#" class="pr-1" @click.prevent slot="title-container">
|
||||
<b-media no-body class="align-items-center">
|
||||
|
||||
<span class="avatar avatar-sm rounded-circle">
|
||||
<vue-qrcode :value="$store.state.email" />
|
||||
</span>
|
||||
|
||||
<b-media-body class="ml-2 d-none d-lg-block">
|
||||
<span class="mb-0 text-lg font-weight-bold">{{this.$store.state.email}}</span>
|
||||
<span class="avatar avatar-sm rounded-circle">
|
||||
<vue-qrcode :value="$store.state.email" />
|
||||
</span>
|
||||
<span class="mb-0 text-lg font-weight-bold">{{ $store.state.email }}</span>
|
||||
</b-media-body>
|
||||
</b-media>
|
||||
</a>
|
||||
@ -50,7 +40,7 @@
|
||||
<b-dropdown-header class="noti-title">
|
||||
<h6 class="text-overflow m-0"> {{ $t('welcome') }}</h6>
|
||||
</b-dropdown-header>
|
||||
<b-dropdown-item href="#!" to="/KontoOverview">
|
||||
<b-dropdown-item href="#!" to="/overview">
|
||||
<i class="ni ni-single-02"></i>
|
||||
<span>{{ $t('site.overview.account_overview')}}</span>
|
||||
</b-dropdown-item>
|
||||
@ -78,13 +68,13 @@
|
||||
</base-nav>
|
||||
</template>
|
||||
<script>
|
||||
import { CollapseTransition } from 'vue2-transitions';
|
||||
import { BaseNav } from '@/components';
|
||||
import { CollapseTransition } from 'vue2-transitions'
|
||||
import { BaseNav } from '@/components'
|
||||
import VueQrcode from 'vue-qrcode'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
CollapseTransition,
|
||||
//CollapseTransition,
|
||||
BaseNav,
|
||||
VueQrcode
|
||||
},
|
||||
|
||||
@ -348,7 +348,7 @@
|
||||
<div class="pr-md-5">
|
||||
<h1 class="text-light"> {{ $t('site.landing1.explore') }}</h1>
|
||||
<p class="text-light">{{ $t('site.landing1.text') }}</p>
|
||||
<router-link to="/user" class="font-weight-bold text-warning mt-5">{{ $t('site.landing1.link') }}</router-link>
|
||||
<router-link to="/overview" class="font-weight-bold text-warning mt-5">{{ $t('site.landing1.link') }}</router-link>
|
||||
</div>
|
||||
</b-col>
|
||||
</b-row>
|
||||
@ -363,7 +363,7 @@ export default {
|
||||
name: 'not-found',
|
||||
data() {
|
||||
return {
|
||||
anime:{
|
||||
anime:{
|
||||
targets: '.row svg',
|
||||
translateY: 10,
|
||||
autoplay: true,
|
||||
@ -371,7 +371,7 @@ export default {
|
||||
easing: 'easeInOutSine',
|
||||
direction: 'alternate'
|
||||
},
|
||||
anime:{
|
||||
anime2:{
|
||||
targets: '#zero',
|
||||
translateX: 10,
|
||||
autoplay: true,
|
||||
|
||||
@ -6,8 +6,8 @@
|
||||
<div class="text-center mb-7">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col xl="5" lg="6" md="8" class="px-5">
|
||||
<h1 class="text-white">Gradido Wallet</h1>
|
||||
<p class="text-lead text-white">{{ $t('site.login.community')}}</p>
|
||||
<h1>Gradido Wallet</h1>
|
||||
<p class="text-lead">{{ $t('site.login.community')}}</p>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
<div class="header-body text-center mb-7">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col xl="5" lg="6" md="8" class="px-5">
|
||||
<h1 class="text-white">{{ $t('site.password.title')}}</h1>
|
||||
<p class="text-lead text-white">{{ $t('site.password.subtitle')}}</p>
|
||||
<h1 >{{ $t('site.password.title')}}</h1>
|
||||
<p class="text-lead">{{ $t('site.password.subtitle')}}</p>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
|
||||
@ -6,8 +6,8 @@
|
||||
<div class="header-body text-center mb-7">
|
||||
<b-row class="justify-content-center">
|
||||
<b-col xl="5" lg="6" md="8" class="px-5">
|
||||
<h1 class="text-white">{{ $t('site.signup.title')}}</h1>
|
||||
<p class="text-lead text-white">{{ $t('site.signup.subtitle')}}</p>
|
||||
<h1 >{{ $t('site.signup.title')}}</h1>
|
||||
<p class="text-lead">{{ $t('site.signup.subtitle')}}</p>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gradido",
|
||||
"version": "0.9.1",
|
||||
"version": "0.9.2",
|
||||
"description": "Gradido",
|
||||
"main": "index.js",
|
||||
"repository": "git@github.com:gradido/gradido.git",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user