mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-08 20:22:42 +01:00
Working on status selector
This commit is contained in:
parent
23c098014a
commit
ccecb65f58
@ -250,7 +250,20 @@ class AccountController extends BaseController
|
||||
$filter = '';
|
||||
}
|
||||
|
||||
Session::put("entity_filter:{$entityType}", $filter);
|
||||
// separate state and status filters
|
||||
$filters = explode(',', $filter);
|
||||
$stateFilter = [];
|
||||
$statusFilter = [];
|
||||
foreach ($filters as $filter) {
|
||||
if (in_array($filter, \App\Models\EntityModel::$statuses)) {
|
||||
$stateFilter[] = $filter;
|
||||
} else {
|
||||
$statusFilter[] = $filter;
|
||||
}
|
||||
}
|
||||
|
||||
Session::put("entity_state_filter:{$entityType}", join(',', $stateFilter));
|
||||
Session::put("entity_status_filter:{$entityType}", join(',', $statusFilter));
|
||||
|
||||
return RESULT_SUCCESS;
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ class EntityModel extends Eloquent
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function getStatuses($entityType = false)
|
||||
public static function getStates($entityType = false)
|
||||
{
|
||||
$data = [];
|
||||
|
||||
@ -305,4 +305,24 @@ class EntityModel extends Eloquent
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public static function getStatuses($entityType = false)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
public static function getStatesFor($entityType = false)
|
||||
{
|
||||
$class = static::getClassName($entityType);
|
||||
|
||||
return $class::getStates($entityType);
|
||||
}
|
||||
|
||||
public static function getStatusesFor($entityType = false)
|
||||
{
|
||||
$class = static::getClassName($entityType);
|
||||
|
||||
return $class::getStatuses($entityType);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -214,8 +214,7 @@ class Expense extends EntityModel
|
||||
|
||||
public static function getStatuses($entityType = false)
|
||||
{
|
||||
$statuses = parent::getStatuses($entityType);
|
||||
|
||||
$statuses = [];
|
||||
$statuses[EXPENSE_STATUS_LOGGED] = trans('texts.logged');
|
||||
$statuses[EXPENSE_STATUS_INVOICED] = trans('texts.invoiced');
|
||||
$statuses[EXPENSE_STATUS_PAID] = trans('texts.paid');
|
||||
|
@ -48,9 +48,9 @@ class ExpenseCategory extends EntityModel
|
||||
return "/expense_categories/{$this->public_id}/edit";
|
||||
}
|
||||
|
||||
public static function getStatuses($entityType = false)
|
||||
public static function getStates($entityType = false)
|
||||
{
|
||||
$statuses = parent::getStatuses($entityType);
|
||||
$statuses = parent::getStates($entityType);
|
||||
|
||||
unset($statuses[STATUS_DELETED]);
|
||||
|
||||
|
@ -1252,7 +1252,7 @@ class Invoice extends EntityModel implements BalanceAffecting
|
||||
|
||||
public static function getStatuses($entityType = false)
|
||||
{
|
||||
$statuses = parent::getStatuses($entityType);
|
||||
$statuses = [];
|
||||
|
||||
if ($entityType == ENTITY_RECURRING_INVOICE) {
|
||||
return $statuses;
|
||||
@ -1263,6 +1263,10 @@ class Invoice extends EntityModel implements BalanceAffecting
|
||||
if (in_array($status->id, [INVOICE_STATUS_PAID, INVOICE_STATUS_PARTIAL])) {
|
||||
continue;
|
||||
}
|
||||
} elseif ($entityType == ENTITY_INVOICE) {
|
||||
if (in_array($status->id, [INVOICE_STATUS_APPROVED])) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$statuses[$status->id] = trans('texts.status_' . strtolower($status->name));
|
||||
|
@ -88,9 +88,9 @@ class Product extends EntityModel
|
||||
return $this->belongsTo('App\Models\TaxRate');
|
||||
}
|
||||
|
||||
public static function getStatuses($entityType = false)
|
||||
public static function getStates($entityType = false)
|
||||
{
|
||||
$statuses = parent::getStatuses($entityType);
|
||||
$statuses = parent::getStates($entityType);
|
||||
|
||||
unset($statuses[STATUS_DELETED]);
|
||||
|
||||
|
@ -198,8 +198,7 @@ class Task extends EntityModel
|
||||
|
||||
public static function getStatuses($entityType = false)
|
||||
{
|
||||
$statuses = parent::getStatuses($entityType);
|
||||
|
||||
$statuses = [];
|
||||
$statuses[TASK_STATUS_LOGGED] = trans('texts.logged');
|
||||
$statuses[TASK_STATUS_RUNNING] = trans('texts.running');
|
||||
$statuses[TASK_STATUS_INVOICED] = trans('texts.invoiced');
|
||||
|
@ -119,8 +119,9 @@ class BaseRepository
|
||||
protected function applyFilters($query, $entityType, $table = false)
|
||||
{
|
||||
$table = Utils::pluralizeEntityType($table ?: $entityType);
|
||||
|
||||
if ($filters = explode(',', session('entity_filter:' . $entityType, STATUS_ACTIVE))) {
|
||||
|
||||
if ($filter = session('entity_state_filter:' . $entityType, STATUS_ACTIVE)) {
|
||||
$filters = explode(',', $filter);
|
||||
$query->where(function ($query) use ($filters, $table) {
|
||||
$query->whereNull($table . '.id');
|
||||
|
||||
@ -128,13 +129,16 @@ class BaseRepository
|
||||
$query->orWhereNull($table . '.deleted_at');
|
||||
}
|
||||
if (in_array(STATUS_ARCHIVED, $filters)) {
|
||||
$query->orWhereNotNull($table . '.deleted_at');
|
||||
if ( ! in_array(STATUS_DELETED, $filters) && ! in_array($table, ['products', 'expense_categories', 'users'])) {
|
||||
$query->where($table . '.is_deleted', '=', 0);
|
||||
}
|
||||
$query->orWhere(function ($query) use ($table) {
|
||||
$query->whereNotNull($table . '.deleted_at')
|
||||
->where($table . '.is_deleted', '=', 0);
|
||||
});
|
||||
}
|
||||
if (in_array(STATUS_DELETED, $filters)) {
|
||||
$query->orWhere($table . '.is_deleted', '=', 1);
|
||||
$query->orWhere(function ($query) use ($table) {
|
||||
$query->whereNotNull($table . '.deleted_at')
|
||||
->where($table . '.is_deleted', '=', 1);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -96,8 +96,11 @@ class ExpenseRepository extends BaseRepository
|
||||
|
||||
$this->applyFilters($query, ENTITY_EXPENSE);
|
||||
|
||||
if ($statuses = explode(',', session('entity_filter:' . ENTITY_EXPENSE))) {
|
||||
if ($statuses = session('entity_status_filter:' . ENTITY_EXPENSE)) {
|
||||
$statuses = explode(',', $statuses);
|
||||
$query->where(function ($query) use ($statuses) {
|
||||
$query->whereNull('expenses.id');
|
||||
|
||||
if (in_array(EXPENSE_STATUS_LOGGED, $statuses)) {
|
||||
$query->orWhere('expenses.invoice_id', '=', 0)
|
||||
->orWhereNull('expenses.invoice_id');
|
||||
|
@ -78,7 +78,8 @@ class InvoiceRepository extends BaseRepository
|
||||
|
||||
$this->applyFilters($query, $entityType, ENTITY_INVOICE);
|
||||
|
||||
if ($statuses = explode(',', session('entity_filter:' . $entityType))) {
|
||||
if ($statuses = session('entity_status_filter:' . $entityType)) {
|
||||
$statuses = explode(',', $statuses);
|
||||
$query->where(function ($query) use ($statuses) {
|
||||
foreach ($statuses as $status) {
|
||||
if (in_array($status, \App\Models\EntityModel::$statuses)) {
|
||||
|
@ -53,7 +53,8 @@ class TaskRepository extends BaseRepository
|
||||
|
||||
$this->applyFilters($query, ENTITY_TASK);
|
||||
|
||||
if ($statuses = explode(',', session('entity_filter:' . ENTITY_TASK))) {
|
||||
if ($statuses = session('entity_status_filter:' . ENTITY_TASK)) {
|
||||
$statuses = explode(',', $statuses);
|
||||
$query->where(function ($query) use ($statuses) {
|
||||
if (in_array(TASK_STATUS_LOGGED, $statuses)) {
|
||||
$query->orWhere('tasks.invoice_id', '=', 0)
|
||||
|
@ -2222,6 +2222,9 @@ $LANG = array(
|
||||
'bluevine_weekly_draw_rate' => 'Weekly Draw Rate',
|
||||
'bluevine_continue' => 'Continue to BlueVine',
|
||||
'bluevine_completed' => 'BlueVine signup completed',
|
||||
|
||||
'entity_state' => 'State',
|
||||
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
<label for="trashed" style="font-weight:normal; margin-left: 10px;">
|
||||
<input id="trashed" type="checkbox" onclick="setTrashVisible()"
|
||||
{!! Session::get('entity_filter:user') != 'active' ? 'checked' : ''!!}/> {!! trans('texts.show_archived_users')!!}
|
||||
{!! Session::get('entity_state_filter:user') != 'active' ? 'checked' : ''!!}/> {!! trans('texts.show_archived_users')!!}
|
||||
</label>
|
||||
|
||||
@include('partials.bulk_form', ['entityType' => ENTITY_USER])
|
||||
|
@ -46,10 +46,24 @@
|
||||
|
||||
|
||||
<span id="statusWrapper" style="display:none">
|
||||
{!! Former::multiselect('statuses')
|
||||
->style('width: 220px')
|
||||
->options(\App\Models\EntityModel::getClassName($entityType)::getStatuses($entityType))
|
||||
->raw() !!}
|
||||
<select class="form-control" style="width: 220px" id="statuses" multiple="true">
|
||||
@if (count(\App\Models\EntityModel::getStatusesFor($entityType)))
|
||||
<optgroup label="{{ trans('texts.entity_state') }}">
|
||||
@foreach (\App\Models\EntityModel::getStatesFor($entityType) as $key => $value)
|
||||
<option value="{{ $key }}">{{ $value }}</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
<optgroup label="{{ trans('texts.status') }}">
|
||||
@foreach (\App\Models\EntityModel::getStatusesFor($entityType) as $key => $value)
|
||||
<option value="{{ $key }}">{{ $value }}</option>
|
||||
@endforeach
|
||||
</optgroup>
|
||||
@else
|
||||
@foreach (\App\Models\EntityModel::getStatesFor($entityType) as $key => $value)
|
||||
<option value="{{ $key }}">{{ $value }}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<div id="top_right_buttons" class="pull-right">
|
||||
@ -254,7 +268,7 @@
|
||||
|
||||
$('#statuses').select2({
|
||||
placeholder: "{{ trans('texts.status') }}",
|
||||
}).val('{{ session('entity_filter:' . $entityType, STATUS_ACTIVE) }}'.split(','))
|
||||
}).val('{{ session('entity_state_filter:' . $entityType, STATUS_ACTIVE) . ',' . session('entity_status_filter:' . $entityType) }}'.split(','))
|
||||
.trigger('change')
|
||||
.on('change', function() {
|
||||
var filter = $('#statuses').val();
|
||||
|
Loading…
Reference in New Issue
Block a user