akaunting 3.0 (the last dance)

This commit is contained in:
Burak Civan
2022-06-01 10:15:55 +03:00
parent cead09f6d4
commit d9c0764572
3812 changed files with 126831 additions and 102949 deletions

View File

@ -1,42 +1,43 @@
@extends('layouts.admin')
<x-layouts.admin>
<x-slot name="title">{{ trans('general.title.new', ['type' => trans_choice('general.reports', 1)]) }}</x-slot>
@section('title', trans('general.title.new', ['type' => trans_choice('general.reports', 1)]))
<x-slot name="content">
<x-form.container>
<x-form id="report" route="reports.store">
<x-form.section>
<x-slot name="head">
<x-form.section.head title="{{ trans('general.general') }}" description="" />
</x-slot>
@section('content')
<div class="card">
{!! Form::open([
'id' => 'report',
'route' => 'reports.store',
'@submit.prevent' => 'onSubmit',
'@keydown' => 'form.errors.clear($event.target.name)',
'role' => 'form',
'class' => 'form-loading-button',
'novalidate' => true,
]) !!}
<x-slot name="body">
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
<div class="card-body">
<div class="row">
{{ Form::textGroup('name', trans('general.name'), 'font') }}
<x-form.group.select name="class" label="{{ trans_choice('general.types', 1) }}" :options="$classes" change="onChangeClass" />
{{ Form::selectGroup('class', trans_choice('general.types', 1), 'bars', $classes, null, ['required' => 'required', 'change' => 'onChangeClass']) }}
<x-form.group.textarea name="description" label="{{ trans('general.description') }}" />
</x-slot>
</x-form.section>
{{ Form::textareaGroup('description', trans('general.description'), null, null, ['rows' => '3', 'required' => 'required']) }}
<x-form.section v-if="showPreferences">
<x-slot name="head">
<x-form.section.head title="{{ trans_choice('reports.preferences', 2) }}" description="" />
</x-slot>
{{ Form::hidden('report', 'invalid', ['data-field' => 'settings']) }}
<x-slot name="body">
<component v-bind:is="report_fields" @change="onChangeReportFields"></component>
</x-slot>
</x-form.section>
<component v-bind:is="report_fields" @change="onChangeReportFields"></component>
</div>
</div>
<x-form.input.hidden name="report" value="invalid" data-field="settings" />
<div class="card-footer">
<div class="row save-buttons">
{{ Form::saveButtons('reports.index') }}
</div>
</div>
{!! Form::close() !!}
</div>
@endsection
<x-form.section>
<x-slot name="foot">
<x-form.buttons cancel-route="reports.index" />
</x-slot>
</x-form.section>
</x-form>
</x-form.container>
</x-slot>
@push('scripts_start')
<script src="{{ asset('public/js/common/reports.js?v=' . version('short')) }}"></script>
@endpush
<x-script folder="common" file="reports" />
</x-layouts.admin>

View File

@ -1,85 +1,148 @@
@extends('layouts.admin')
<x-layouts.admin>
<x-slot name="title">{{ trans('general.title.edit', ['type' => trans_choice('general.reports', 1)]) }}</x-slot>
@section('title', trans('general.title.edit', ['type' => trans_choice('general.reports', 1)]))
<x-slot name="content">
<x-form.container>
<x-form id="report" method="PATCH" :route="['reports.update', $report->id]" :model="$report">
<x-form.section>
<x-slot name="head">
<x-form.section.head title="{{ trans('general.general') }}" description="" />
</x-slot>
@section('content')
<div class="card">
{!! Form::model($report, [
'id' => 'report',
'method' => 'PATCH',
'route' => ['reports.update', $report->id],
'@submit.prevent' => 'onSubmit',
'@keydown' => 'form.errors.clear($event.target.name)',
'role' => 'form',
'class' => 'form-loading-button',
'novalidate' => true,
]) !!}
<x-slot name="body">
<x-form.group.text name="name" label="{{ trans('general.name') }}" />
<div class="card-body">
<div class="row">
{{ Form::textGroup('name', trans('general.name'), 'font') }}
<x-form.group.text name="class_disabled" label="{{ trans_choice('general.types', 1) }}" value="{{ $classes[$report->class] }}" disabled />
{{ Form::textGroup('class_disabled', trans_choice('general.types', 1), 'bars', ['required' => 'required', 'disabled' => 'true'], $classes[$report->class]) }}
{{ Form::hidden('class', $report->class) }}
<x-form.input.hidden name="class" :value="$report->class" />
{{ Form::textareaGroup('description', trans('general.description'), null, null, ['rows' => '3', 'required' => 'required']) }}
<x-form.group.textarea name="description" label="{{ trans('general.description') }}" />
</x-slot>
</x-form.section>
{{ Form::hidden('report', 'invalid', ['data-field' => 'settings']) }}
<x-form.section>
<x-slot name="head">
<x-form.section.head title="{{ trans_choice('reports.preferences', 2) }}" description="" />
</x-slot>
@foreach($class->getFields() as $field)
@php $type = $field['type']; @endphp
<x-slot name="body">
<x-form.input.hidden name="report" value="invalid" data-field="settings" />
@if (($type == 'textGroup') || ($type == 'emailGroup') || ($type == 'passwordGroup'))
{{ Form::$type($field['name'], $field['title'], $field['icon'], array_merge([
'data-field' => 'settings'
],
$field['attributes'])
) }}
@elseif ($type == 'textareaGroup')
{{ Form::$type($field['name'], $field['title']) }}
@elseif ($type == 'dateGroup')
{{ Form::$type($field['name'], $field['title'], $field['icon'], array_merge([
'data-field' => 'settings',
'show-date-format' => company_date_format(),
],
$field['attributes']),
isset($report->settings->{$field['name']}) ? $report->settings->{$field['name']}: null
) }}
@elseif ($type == 'selectGroup')
{{ Form::$type($field['name'], $field['title'], $field['icon'], $field['values'], isset($report->settings->{$field['name']}) ? $report->settings->{$field['name']} : $field['selected'], array_merge([
'data-field' => 'settings'
],
$field['attributes'])
) }}
@elseif ($type == 'radioGroup')
{{ Form::$type($field['name'], $field['title'], isset($report->settings->{$field['name']}) ? $report->settings->{$field['name']} : true, $field['enable'], $field['disable'], array_merge([
'data-field' => 'settings'
],
$field['attributes'])
) }}
@elseif ($type == 'checkboxGroup')
{{ Form::$type($field['name'], $field['title'], $field['items'], $report->settings->{$field['name']}, $field['id'], $report->settings->{$field['name']}, array_merge([
'data-field' => 'settings'
],
$field['attributes'])
) }}
@endif
@endforeach
</div>
</div>
@foreach($class->getFields() as $field)
@php $type = $field['type']; @endphp
@can('update-common-reports')
<div class="card-footer">
<div class="row save-buttons">
{{ Form::saveButtons('reports.index') }}
</div>
</div>
@endcan
@switch($type)
@case('text')
@case('textGroup')
<x-form.group.text
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
data-field="settings"
:attributes="$field['attributes']"
/>
@break
{!! Form::close() !!}
</div>
@endsection
@case('email')
@case('emailGroup')
<x-form.group.email
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
data-field="settings"
:attributes="$field['attributes']"
/>
@break
@push('scripts_start')
<script src="{{ asset('public/js/common/reports.js?v=' . version('short')) }}"></script>
@endpush
@case('password')
@case('passwordGroup')
<x-form.group.email
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
data-field="settings"
:attributes="$field['attributes']"
/>
@break
@case('textarea')
@case('textareaGroup')
<x-form.group.textarea
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
data-field="settings"
:attributes="$field['attributes']"
/>
@break
@case('date')
@case('dateGroup')
<x-form.group.date
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
:value="isset($report->settings->{$field['name']}) ? $report->settings->{$field['name']}: null"
data-field="settings"
:attributes="array_merge([
'model' => 'form.settings'.'.'.$field['name'],
'show-date-format' => company_date_format(),
], $field['attributes'])"
/>
@break
@case('select')
@case('selectGroup')
<x-form.group.select
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
:options="$field['values']"
:selected="$field['selected']"
data-field="settings"
:attributes="$field['attributes']"
/>
@break
@case('radio')
@case('radioGroup')
<x-form.group.radio
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
:attributes="array_merge([
'data-field' => 'settings'
], $field['attributes'])"
/>
@break
@case('checkbox')
@case('checkboxGroup')
<x-form.group.checkbox
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
:attributes="array_merge([
'data-field' => 'settings'
], $field['attributes'])"
/>
@break
@default
<x-form.group.text
name="{{ $field['name'] }}"
label="{{ $field['title'] }}"
:attributes="array_merge([
'data-field' => 'settings'
], $field['attributes'])"
/>
@endswitch
@endforeach
</x-slot>
</x-form.section>
@can('update-common-reports')
<x-form.section>
<x-slot name="foot">
<x-form.buttons cancel-route="reports.index" />
</x-slot>
</x-form.section>
@endcan
</x-form>
</x-form.container>
</x-slot>
<x-script folder="common" file="reports" />
</x-layouts.admin>

View File

@ -1,91 +1,90 @@
@extends('layouts.admin')
<x-layouts.admin>
<x-slot name="title">{{ trans_choice('general.reports', 2) }}</x-slot>
@section('title', trans_choice('general.reports', 2))
<x-slot name="favorite"
title="{{ trans_choice('general.reports', 2) }}"
icon="donut_small"
route="reports.index"
></x-slot>
@section('new_button')
@can('create-common-reports')
<a href="{{ route('reports.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endcan
@endsection
<x-slot name="buttons">
@can('create-common-reports')
<x-link href="{{ route('reports.create') }}" kind="primary">
{{ trans('general.title.new', ['type' => trans_choice('general.reports', 1)]) }}
</x-link>
@endcan
</x-slot>
@section('content')
<div class="row mb-4">
@foreach($categories as $name => $reports)
<div class="col-md-12">
<h3>{{ $name }}</h3>
</div>
<x-slot name="content">
<livewire:report.pins :categories="$categories" />
@foreach($reports as $report)
<div class="col-md-4">
<div class="card card-stats">
@canany(['create-common-reports', 'update-common-reports', 'delete-common-reports'])
<a class="btn btn-sm items-align-center py-2 mr-0 card-action-button shadow-none--hover" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fa fa-ellipsis-v text-primary"></i>
</a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow">
@can('update-common-reports')
<a class="dropdown-item" href="{{ route('reports.edit', $report->id) }}">{{ trans('general.edit') }}</a>
@endcan
@can('create-common-reports')
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{ route('reports.duplicate', $report->id) }}">{{ trans('general.duplicate') }}</a>
@endcan
@can('delete-common-reports')
<div class="dropdown-divider"></div>
{!! Form::deleteLink($report, 'reports.destroy') !!}
@endcan
</div>
@endcanany
<div class="card-body">
<div class="row">
<div class="col">
<a href="{{ route('reports.show', $report->id) }}">
<h5 class="card-title text-uppercase text-muted mb-0">{{ $report->name }}</h5>
</a>
<div class="d-flex align-items-center">
<a href="{{ route('reports.show', $report->id) }}">
<h2 class="font-weight-bold mb-0" v-if="reports_total[{{ $report->id }}]" v-html="reports_total[{{ $report->id }}]"></h2>
<h2 class="font-weight-bold mb-0" v-else>{{ $totals[$report->id] }}</h2>
</a>
<button type="button" @click="onRefreshTotal('{{ $report->id }}')" class="btn btn-otline-primary btn-sm ml-2">
<i class="fas fa-redo"></i>
</button>
</div>
</div>
<div class="col-auto">
<a href="{{ route('reports.show', $report->id) }}">
<div class="icon icon-shape bg-orange text-white rounded-circle shadow">
<i class="{{ $icons[$report->id] }}"></i>
</div>
</a>
</div>
</div>
<p class="mt-3 mb-0 text-sm">
<a class="text-default" href="{{ route('reports.show', $report->id) }}">
<span class="pre">{{ $report->description }}</span>
</a>
</p>
</div>
</div>
@foreach ($categories as $category)
@php $category_id = $loop->index; @endphp
<div
@class([
'mb-14',
'mt-4' => (! $loop->first) ? false : true,
'mt-12' => ($loop->first) ? false : true,
])
>
<div class="px-2">
<x-form.section.head title="{!! $category['name'] !!}" description="{{ $category['description'] }}" />
</div>
@endforeach
<div class="grid sm:grid-cols-6 gap-12 my-3.5">
@foreach($category['reports'] as $report)
<div class="flex justify-between sm:col-span-3 p-1 group">
<div class="lg:w-80">
<a href="{{ route('reports.show', $report->id) }}" class="flex">
<span class="material-icons-outlined text-5xl transform transition-all hover:scale-125">
{{ $icons[$report->id] }}
</span>
<div class="ltr:ml-2 rtl:mr-2">
<h2 class="mb-1">
<span class="border-b border-transparent transition-all group-hover:border-black">
{{ $report->name }}
</span>
</h2>
<span class="text-black-400 text-sm">{{ $report->description }}</span>
</div>
</a>
</div>
<div class="flex items-start">
<livewire:report.pin :categories="$categories" :report-id="$report->id" />
@canany(['create-common-reports', 'update-common-reports', 'delete-common-reports'])
<x-dropdown id="widget-{{ $category_id }}-{{ $report->id }}">
<x-slot name="trigger" class="flex" override="class">
<span class="material-icons-outlined text-purple text-lg px-1 py-0.5 cursor-pointer hover:bg-gray-100 hover:rounded-lg hover:shadow-md">more_vert</span>
</x-slot>
@can('update-common-reports')
<x-dropdown.link href="{{ route('reports.edit', $report->id) }}">
{{ trans('general.edit') }}
</x-dropdown.link>
@endcan
@can('create-common-reports')
<x-dropdown.link href="{{ route('reports.duplicate', $report->id) }}">
{{ trans('general.duplicate') }}
</x-dropdown.link>
@endcan
@can('delete-common-reports')
<x-delete-link :model="$report" route="reports.destroy" />
@endcan
</x-dropdown>
@endcanany
</div>
</div>
@endforeach
</div>
</div>
@endforeach
</div>
@endsection
</x-slot>
@push('scripts_start')
<script type="text/javascript">
var reports_total = {!! json_encode($totals) !!};
</script>
<script src="{{ asset('public/js/common/reports.js?v=' . version('short')) }}"></script>
@endpush
<x-script folder="common" file="reports" />
</x-layouts.admin>