Merge branch 'master' of github.com:akaunting/akaunting

This commit is contained in:
Cüneyt Şentürk
2021-06-07 11:49:40 +03:00
13 changed files with 807 additions and 269 deletions

View File

@ -1,62 +0,0 @@
/**
* First we will load all of this project's JavaScript dependencies which
* includes Vue and other libraries. It is a great starting point when
* building robust, powerful web applications using Vue and Laravel.
*/
require('./../../bootstrap');
import Vue from 'vue';
import axios from 'axios';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import NProgressAxios from './../../plugins/nprogress-axios';
import clickOutside from './../../directives/click-ouside.js';
Vue.directive('click-outside', clickOutside);
const search = new Vue({
el: '#global-search',
data: function () {
return {
show: false,
count:0,
keyword: '',
items: {}
}
},
methods:{
onChange() {
this.show = false;
if (this.keyword.length) {
axios.get(url + '/common/search', {
params: {
keyword: this.keyword
}
})
.then(response => {
this.items = response.data;
this.count = Object.keys(this.items).length;
if (this.count) {
this.show = true;
}
})
.catch(error => {
});
}
},
closeResult() {
this.show = false;
this.count = 0;
this.items = {};
}
}
});

View File

@ -12,20 +12,51 @@ import Vue from 'vue';
import DashboardPlugin from './../../plugins/dashboard-plugin';
import Global from './../../mixins/global';
import {getQueryVariable} from './../../plugins/functions';
import {DatePicker, Tooltip} from 'element-ui';
import {Tooltip} from 'element-ui';
Vue.use(DatePicker, Tooltip);
// plugin setup
Vue.use(DashboardPlugin, Tooltip);
Vue.use(DashboardPlugin, DatePicker, Tooltip);
const app = new Vue({
el: '#app',
el: '#main-body',
components: {
[DatePicker.name]: DatePicker,
[Tooltip.name]: Tooltip,
},
mixins: [
Global
],
data: function () {
return {
filter_date: [],
};
},
mounted() {
let start_date = getQueryVariable('start_date');
if (start_date) {
let end_date = getQueryVariable('end_date');
this.filter_date.push(start_date);
this.filter_date.push(end_date);
}
},
methods: {
// Global filter change date column
onChangeFilterDate() {
if (this.filter_date) {
window.location.href = url + '/portal?start_date=' + this.filter_date[0] + '&end_date=' + this.filter_date[1];
} else {
window.location.href = url + '/portal';
}
},
}
});

View File

@ -0,0 +1,42 @@
<form wire:click.stop class="navbar-search navbar-search-light form-inline mb-0" id="navbar-search-main" autocomplete="off">
<div class="form-group mb-0 mr-sm-3">
<div class="input-group input-group-alternative input-group-merge">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-search"></i></span>
</div>
<input type="text" name="search" wire:model.debounce.500ms="keyword" class="form-control" autocomplete="off" placeholder="{{ trans('general.search') }}">
@if($results)
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-center show" ref="menu">
<div class="list-group list-group-flush">
@foreach($results as $result)
<a class="list-group-item list-group-item-action" href="{{ $result->href }}">
<div class="row align-items-center">
<div class="col ml--2">
<div class="d-flex justify-content-between align-items-center">
<div>
<div class="name">{{ $result->name }}</div>
</div>
<div class="text-muted">
<span class="type">{{ $result->type }}</span>
</div>
</div>
</div>
</div>
</a>
@endforeach
</div>
</div>
@endif
</div>
</div>
</form>
@push('scripts_end')
<script type="text/javascript">
$(window).click(function() {
Livewire.emit('resetKeyword');
});
</script>
@endpush

View File

@ -5,40 +5,7 @@
@stack('navbar_search')
@can('read-common-search')
<form class="navbar-search navbar-search-light form-inline mb-0" id="navbar-search-main" autocomplete="off">
<div id="global-search" class="form-group mb-0 mr-sm-3">
<div class="input-group input-group-alternative input-group-merge">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-search"></i></span>
</div>
<input type="text" name="search" v-model="keyword" @input="onChange" v-click-outside="closeResult" class="form-control" autocomplete="off" placeholder="{{ trans('general.search') }}">
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-center" ref="menu" :class="[{show: show}]">
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" :href="item.href" v-for="(item, index) in items">
<div class="row align-items-center">
<div class="col ml--2">
<div class="d-flex justify-content-between align-items-center">
<div>
<div class="name" v-text="item.name"></div>
</div>
<div class="text-muted">
<span class="type" v-text="item.type"></span>
</div>
</div>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
<button type="button" class="close" data-action="search-close" data-target="#navbar-search-main" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</form>
<livewire:common.search />
@endcan
<ul class="navbar-nav align-items-center ml-md-auto">

View File

@ -5,8 +5,6 @@
@stack('scripts_start')
<script src="{{ asset('public/js/common/search.js?v=' . version('short')) }}"></script>
@stack('charts')
<script src="{{ asset('public/vendor/chart.js/dist/Chart.min.js') }}"></script>
@ -137,4 +135,9 @@
@stack('body_scripts')
@livewireScripts
<!-- Livewire -->
<script type="text/javascript">
window.livewire_app_url = {{ company_id() }};
</script>
@stack('scripts_end')

View File

@ -2,6 +2,71 @@
@section('title', trans_choice('general.dashboards', 1))
@section('new_button')
<!--Dashboard General Filter-->
<el-date-picker
v-model="filter_date"
type="daterange"
align="right"
unlink-panels
:format="'yyyy-MM-dd'"
value-format="yyyy-MM-dd"
@change="onChangeFilterDate"
range-separator=">>"
start-placeholder="{{ $date_picker_shortcuts[trans("reports.this_year")]["start"] }}"
end-placeholder="{{ $date_picker_shortcuts[trans("reports.this_year")]["end"] }}"
:picker-options="{
shortcuts: [
{
text: '{{ trans("reports.this_year") }}',
onClick(picker) {
const start = new Date('{{ $date_picker_shortcuts[trans("reports.this_year")]["start"] }}');
const end = new Date('{{ $date_picker_shortcuts[trans("reports.this_year")]["end"] }}');
picker.$emit('pick', [start, end]);
}
},
{
text: '{{ trans("reports.previous_year") }}',
onClick(picker) {
const start = new Date('{{ $date_picker_shortcuts[trans("reports.previous_year")]["start"] }}');
const end = new Date('{{ $date_picker_shortcuts[trans("reports.previous_year")]["end"] }}');
picker.$emit('pick', [start, end]);
}
},
{
text: '{{ trans("reports.this_quarter") }}',
onClick(picker) {
const start = new Date('{{ $date_picker_shortcuts[trans("reports.this_quarter")]["start"] }}');
const end = new Date('{{ $date_picker_shortcuts[trans("reports.this_quarter")]["end"] }}');
picker.$emit('pick', [start, end]);
}
},
{
text: '{{ trans("reports.previous_quarter") }}',
onClick(picker) {
const start = new Date('{{ $date_picker_shortcuts[trans("reports.previous_quarter")]["start"] }}');
const end = new Date('{{ $date_picker_shortcuts[trans("reports.previous_quarter")]["end"] }}');
picker.$emit('pick', [start, end]);
}
},
{
text: '{{ trans("reports.last_12_months") }}',
onClick(picker) {
const start = new Date('{{ $date_picker_shortcuts[trans("reports.last_12_months")]["start"] }}');
const end = new Date('{{ $date_picker_shortcuts[trans("reports.last_12_months")]["end"] }}');
picker.$emit('pick', [start, end]);
}
}
]
}">
</el-date-picker>
@endsection
@section('content')
<div class="row">
<div class="col-md-4">
@ -12,6 +77,7 @@
<h5 class="text-uppercase text-white mb-0">{{ trans('general.paid') }}</h5>
<span class="font-weight-bold text-white mb-0">{{ $totals['paid'] }}</span>
</div>
<div class="col-auto">
<div class="icon icon-shape bg-white text-success rounded-circle shadow">
<i class="fa fa-money-bill"></i>
@ -19,6 +85,7 @@
</div>
</div>
</div>
<div class="card-footer">
<div class="progress progress-xs mb-0">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="{{ $progress['paid'] }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ $progress['paid'] }}%"></div>
@ -26,6 +93,7 @@
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-gradient-warning card-stats">
<div class="card-body">
@ -34,6 +102,7 @@
<h5 class="text-uppercase text-white mb-0">{{ trans('general.unpaid') }}</h5>
<span class="font-weight-bold text-white mb-0">{{ $totals['unpaid'] }}</span>
</div>
<div class="col-auto">
<div class="icon icon-shape bg-white text-warning rounded-circle shadow">
<i class="fa fa-money-bill"></i>
@ -41,6 +110,7 @@
</div>
</div>
</div>
<div class="card-footer">
<div class="progress progress-xs mb-0">
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="{{ $progress['unpaid'] }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ $progress['unpaid'] }}%"></div>
@ -48,6 +118,7 @@
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-gradient-danger card-stats">
<div class="card-body">
@ -56,6 +127,7 @@
<h5 class="text-uppercase text-white mb-0">{{ trans('general.overdue') }}</h5>
<span class="font-weight-bold text-white mb-0">{{ $totals['overdue'] }}</span>
</div>
<div class="col-auto">
<div class="icon icon-shape bg-white text-danger rounded-circle shadow">
<i class="fa fa-money-bill"></i>
@ -63,6 +135,7 @@
</div>
</div>
</div>
<div class="card-footer">
<div class="progress progress-xs mb-0">
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="{{ $progress['overdue'] }}" aria-valuemin="0" aria-valuemax="100" style="width: {{ $progress['overdue'] }}%"></div>
@ -70,6 +143,7 @@
</div>
</div>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">