109 lines
5.2 KiB
PHP
109 lines
5.2 KiB
PHP
@extends('layouts.bo')
|
|
|
|
@section('content')
|
|
<div class="card">
|
|
<div class="card-header">
|
|
{{ __('Gestion des codes uniques') }}
|
|
<!-- Button modal -->
|
|
<button type="button" class="btn btn-sm btn-success float-right" data-toggle="modal" data-target="#exportModal">
|
|
<i class="fas fa-file-export"></i> {{ __('Export') }}
|
|
</button>
|
|
@include('bo.codes.search-form')
|
|
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="exportModal" tabindex="-1" aria-labelledby="exportModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="exportModalLabel">{{ __('Export des codes uniques') }}</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<form method="POST" action="{{ route('bo.export-codes') }}">
|
|
@csrf
|
|
<div class="modal-body">
|
|
<div class="form-group form-row">
|
|
<label class="col-form-label col" for="nb_code_tot">{{ __('Nombre total de codes à exporter') }}</label>
|
|
<input type="number" name="nb_code_tot" id="nb_code_tot" class="form-control col" required>
|
|
</div>
|
|
<div class="form-group form-row">
|
|
<label class="col-form-label col" for="nb_code_fic">{{ __('Nombre de codes par fichier') }}</label>
|
|
<input type="number" name="nb_code_fic" id="nb_code_fic" class="form-control col" required>
|
|
</div>
|
|
<div class="form-group form-row">
|
|
<label class="col-form-label col" for="nb_code_ligne">{{ __('Nombre de codes par ligne') }}</label>
|
|
<input type="number" name="nb_code_ligne" id="nb_code_ligne" class="form-control col" required>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">{{ __('Fermer') }}</button>
|
|
<button type="submit" class="btn btn-sm btn-success">{{ __('Lancer l\'export') }}</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<form action="{{route('bo.codes')}}" method="POST">
|
|
@csrf
|
|
<div class="card-body">
|
|
<p>{{__('Nombre de code(s)') }}</p>
|
|
<ul>
|
|
<li>{{ __('en base') }} : {{$nbCodeBase}}</li>
|
|
<li>{{ __('utilisé(s)') }} : {{$nbCodeUsed}}</li>
|
|
<li>{{ __('déjà exporté(s)') }} : {{ $nbCodeExported }}</li>
|
|
<li>{{ __('restant à exporté(s)') }} : {{$nbCodeRemainingToExport}}</li>
|
|
</ul>
|
|
<hr/>
|
|
<div class="form-group form-row">
|
|
<label class="col-form-label text-center col">{{ __('Nombre de codes à générer') }} <span class="required-asterisk">*</span></label>
|
|
<input class="form-control col" type="number" name="quantity" min="0">
|
|
<label class="col-form-label text-center col">{{__('Longueur des codes') }} <span class="required-asterisk">*</span></label>
|
|
<input id="codeLengthInput" class="form-control col" type="number" name="code_length" min="0" value="{{ $settings->code_length ?? config('codes.codeLength') }}" readonly>
|
|
</div>
|
|
<small >{{ __('Il est possible de générer') }} <span id="maxCodes" class="text-danger">0</span> {{ __('codes uniques.') }}</small><br>
|
|
<small class="text-muted">{{ __('!! Si la longueur des codes est changé l\'export pourra prendre plus de temps. !!') }}</small>
|
|
</div>
|
|
<div class="card-footer text-center">
|
|
<button type="submit" class="btn btn-success"><i class="fas fa-cog"></i> {{ __('Générer') }}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
@endsection
|
|
|
|
@push('scripts')
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
let codeLenghtInput = document.getElementById('codeLengthInput'),
|
|
smallWarning = document.getElementById('maxCodes')
|
|
|
|
/**
|
|
* Fonction factorielle
|
|
*/
|
|
let fact = (nbr) => {
|
|
let i, f = 1
|
|
for(i = 1; i <= nbr; i++)
|
|
{
|
|
f = f * i; // ou f *= i;
|
|
}
|
|
return f;
|
|
}
|
|
let calculateMax = () => {
|
|
let p = Number.parseInt({{ strlen(config('codes.codeCharList')) }}),
|
|
n = codeLenghtInput.value
|
|
return Math.pow(p, n)-1 - Number.parseInt({{ $nbCodeBase }});
|
|
}
|
|
let numberWithCommas = (x) => {
|
|
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
}
|
|
|
|
smallWarning.innerText = numberWithCommas(calculateMax())
|
|
|
|
codeLenghtInput.addEventListener('input', () => {
|
|
smallWarning.innerText = numberWithCommas(calculateMax())
|
|
})
|
|
});
|
|
</script>
|
|
@endpush
|