mirror of
https://github.com/snipe/snipe-it.git
synced 2025-03-05 20:52:15 -08:00
Implement restoring select values
This commit is contained in:
parent
4f031149e8
commit
bca7f208a6
|
@ -24,7 +24,7 @@ class SavedReport extends Model
|
|||
'options',
|
||||
];
|
||||
|
||||
public function checkmarkValue($property)
|
||||
public function checkmarkValue($property): string
|
||||
{
|
||||
// Assuming we're using the null object pattern,
|
||||
// return the default value if the object is not saved yet.
|
||||
|
@ -37,7 +37,25 @@ class SavedReport extends Model
|
|||
return $this->options[$property] ?? '0';
|
||||
}
|
||||
|
||||
public function textValue($property)
|
||||
public function selectValue($property)
|
||||
{
|
||||
return $this->options[$property] ?? null;
|
||||
}
|
||||
|
||||
public function selectValues($property)
|
||||
{
|
||||
if (!isset($this->options[$property])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($this->options[$property] === [null]) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $this->options[$property];
|
||||
}
|
||||
|
||||
public function textValue($property): string
|
||||
{
|
||||
// Assuming we're using the null object pattern,
|
||||
// return the default value if the object is not saved yet.
|
||||
|
|
|
@ -5,6 +5,18 @@
|
|||
|
||||
<div class="col-md-7{{ (isset($item) && (Helper::checkIfRequired($item, $fieldname))) ? ' required' : '' }}">
|
||||
<select class="js-data-ajax" data-endpoint="categories/{{ (isset($category_type)) ? $category_type : 'assets' }}" data-placeholder="{{ trans('general.select_category') }}" name="{{ $fieldname }}" style="width: 100%" id="category_select_id" aria-label="{{ $fieldname }}" {!! ((isset($item)) && (Helper::checkIfRequired($item, $fieldname))) ? ' data-validation="required" required' : '' !!}{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset ($selected)
|
||||
@if (!is_array($selected))
|
||||
@php
|
||||
$selected = [$selected];
|
||||
@endphp
|
||||
@endif
|
||||
@foreach ($selected as $category_id)
|
||||
<option value="{{ $category_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ \App\Models\Category::find($category_id)->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($category_id = old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))
|
||||
<option value="{{ $category_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ (\App\Models\Category::find($category_id)) ? \App\Models\Category::find($category_id)->name : '' }}
|
||||
|
|
|
@ -22,6 +22,13 @@
|
|||
{{ Form::label($fieldname, $translated_name, array('class' => 'col-md-3 control-label')) }}
|
||||
<div class="col-md-6">
|
||||
<select class="js-data-ajax" data-endpoint="companies" data-placeholder="{{ trans('general.select_company') }}" name="{{ $fieldname }}" style="width: 100%" id="company_select"{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset ($selected)
|
||||
@foreach ($selected as $company_id)
|
||||
<option value="{{ $company_id }}" selected="selected" role="option" aria-selected="true">
|
||||
{{ \App\Models\Company::find($company_id)->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($company_id = Request::old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))
|
||||
<option value="{{ $company_id }}" selected="selected">
|
||||
{{ (\App\Models\Company::find($company_id)) ? \App\Models\Company::find($company_id)->name : '' }}
|
||||
|
|
|
@ -4,6 +4,18 @@
|
|||
|
||||
<div class="col-md-6">
|
||||
<select class="js-data-ajax" data-endpoint="departments" data-placeholder="{{ trans('general.select_department') }}" name="{{ $fieldname }}" style="width: 100%" id="department_select" aria-label="{{ $fieldname }}"{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset ($selected)
|
||||
@if (!is_array($selected))
|
||||
@php
|
||||
$selected = [$selected];
|
||||
@endphp
|
||||
@endif
|
||||
@foreach ($selected as $department_id)
|
||||
<option value="{{ $department_id }}" selected="selected" role="option" aria-selected="true">
|
||||
{{ \App\Models\Department::find($department_id)->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($department_id = old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))
|
||||
<option value="{{ $department_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ (\App\Models\Department::find($department_id)) ? \App\Models\Department::find($department_id)->name : '' }}
|
||||
|
|
|
@ -4,6 +4,13 @@
|
|||
{{ Form::label($fieldname, $translated_name, array('class' => 'col-md-3 control-label')) }}
|
||||
<div class="col-md-7{{ ((isset($required) && ($required =='true'))) ? ' required' : '' }}">
|
||||
<select class="js-data-ajax" data-endpoint="locations" data-placeholder="{{ trans('general.select_location') }}" name="{{ $fieldname }}" style="width: 100%" id="{{ $fieldname }}_location_select" aria-label="{{ $fieldname }}" {!! ((isset($item)) && (Helper::checkIfRequired($item, $fieldname))) ? ' data-validation="required" required' : '' !!}{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset($selected)
|
||||
@foreach($selected as $location_id)
|
||||
<option value="{{ $location_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ (\App\Models\Location::find($location_id))->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($location_id = old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))
|
||||
<option value="{{ $location_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ (\App\Models\Location::find($location_id)) ? \App\Models\Location::find($location_id)->name : '' }}
|
||||
|
|
|
@ -5,6 +5,18 @@
|
|||
|
||||
<div class="col-md-7{{ ((isset($required)) && ($required=='true')) ? ' required' : '' }}">
|
||||
<select class="js-data-ajax" data-endpoint="manufacturers" data-placeholder="{{ trans('general.select_manufacturer') }}" name="{{ $fieldname }}" style="width: 100%" id="manufacturer_select_id" aria-label="{{ $fieldname }}" {!! ((isset($item)) && (Helper::checkIfRequired($item, $fieldname))) ? ' data-validation="required" required' : '' !!}{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset ($selected)
|
||||
@if (!is_array($selected))
|
||||
@php
|
||||
$selected = [$selected];
|
||||
@endphp
|
||||
@endif
|
||||
@foreach ($selected as $manufacturer_id)
|
||||
<option value="{{ $manufacturer_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ \App\Models\Manufacturer::find($manufacturer_id)->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($manufacturer_id = old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))
|
||||
<option value="{{ $manufacturer_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ (\App\Models\Manufacturer::find($manufacturer_id)) ? \App\Models\Manufacturer::find($manufacturer_id)->name : '' }}
|
||||
|
|
|
@ -5,6 +5,18 @@
|
|||
|
||||
<div class="col-md-7{{ ((isset($field_req)) || ((isset($required) && ($required =='true')))) ? ' required' : '' }}">
|
||||
<select class="js-data-ajax" data-endpoint="models" data-placeholder="{{ trans('general.select_model') }}" name="{{ $fieldname }}" style="width: 100%" id="model_select_id" aria-label="{{ $fieldname }}"{!! (isset($field_req) ? ' data-validation="required" required' : '') !!}{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset ($selected)
|
||||
@if (!is_array($selected))
|
||||
@php
|
||||
$selected = [$selected];
|
||||
@endphp
|
||||
@endif
|
||||
@foreach ($selected as $model_id)
|
||||
<option value="{{ $model_id }}" selected="selected" role="option" aria-selected="true">
|
||||
{{ \App\Models\AssetModel::find($model_id)->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($model_id = old($fieldname, ($item->{$fieldname} ?? request($fieldname) ?? '')))
|
||||
<option value="{{ $model_id }}" selected="selected">
|
||||
{{ (\App\Models\AssetModel::find($model_id)) ? \App\Models\AssetModel::find($model_id)->name : '' }}
|
||||
|
|
|
@ -5,6 +5,13 @@
|
|||
|
||||
<div class="col-md-7{{ ((isset($required)) && ($required=='true')) ? ' required' : '' }}">
|
||||
<select class="js-data-ajax" data-endpoint="statuslabels" data-placeholder="{{ trans('general.select_statuslabel') }}" name="{{ $fieldname }}" style="width: 100%" id="status_select_id" aria-label="{{ $fieldname }}" {!! ((isset($item)) && (Helper::checkIfRequired($item, $fieldname))) ? ' data-validation="required" required' : '' !!}{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset ($selected)
|
||||
@foreach ($selected as $status_id)
|
||||
<option value="{{ $status_id }}" selected="selected" role="option" aria-selected="true">
|
||||
{{ \App\Models\Statuslabel::find($status_id)->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($status_id = old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))
|
||||
<option value="{{ $status_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ (\App\Models\Statuslabel::find($status_id)) ? \App\Models\Statuslabel::find($status_id)->name : '' }}
|
||||
|
|
|
@ -4,6 +4,13 @@
|
|||
|
||||
<div class="col-md-7{{ (isset($item) && (Helper::checkIfRequired($item, $fieldname))) ? ' required' : '' }}">
|
||||
<select class="js-data-ajax" data-endpoint="suppliers" data-placeholder="{{ trans('general.select_supplier') }}" name="{{ $fieldname }}" style="width: 100%" id="supplier_select" aria-label="{{ $fieldname }}"{{ (isset($multiple) && ($multiple=='true')) ? " multiple='multiple'" : '' }}>
|
||||
@isset ($selected)
|
||||
@foreach ($selected as $supplier_id)
|
||||
<option value="{{ $supplier_id }}" selected="selected" role="option" aria-selected="true">
|
||||
{{ \App\Models\Supplier::find($supplier_id)->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endisset
|
||||
@if ($supplier_id = old($fieldname, (isset($item)) ? $item->{$fieldname} : ''))
|
||||
<option value="{{ $supplier_id }}" selected="selected" role="option" aria-selected="true" role="option">
|
||||
{{ (\App\Models\Supplier::find($supplier_id)) ? \App\Models\Supplier::find($supplier_id)->name : '' }}
|
||||
|
|
|
@ -244,15 +244,15 @@
|
|||
|
||||
<br>
|
||||
|
||||
@include ('partials.forms.edit.company-select', ['translated_name' => trans('general.company'),'multiple' => 'true', 'fieldname' => 'by_company_id[]', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'multiple' => 'true', 'fieldname' => 'by_location_id[]', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.location-select', ['translated_name' => trans('admin/hardware/form.default_location'), 'multiple' => 'true', 'fieldname' => 'by_rtd_location_id[]', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.department-select', ['translated_name' => trans('general.department'), 'fieldname' => 'by_dept_id', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.supplier-select', ['translated_name' => trans('general.supplier'), 'fieldname' => 'by_supplier_id[]', 'multiple' => 'true', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.model-select', ['translated_name' => trans('general.asset_model'), 'fieldname' => 'by_model_id[]', 'multiple' => 'true', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.manufacturer-select', ['translated_name' => trans('general.manufacturer'), 'fieldname' => 'by_manufacturer_id', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.category-select', ['translated_name' => trans('general.category'), 'fieldname' => 'by_category_id', 'hide_new' => 'true', 'category_type' => 'asset'])
|
||||
@include ('partials.forms.edit.status-select', ['translated_name' => trans('admin/hardware/form.status'), 'fieldname' => 'by_status_id[]', 'multiple' => 'true', 'hide_new' => 'true'])
|
||||
@include ('partials.forms.edit.company-select', ['translated_name' => trans('general.company'),'multiple' => 'true', 'fieldname' => 'by_company_id[]', 'hide_new' => 'true', 'selected' => $savedReport->selectValues('by_company_id')])
|
||||
@include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'multiple' => 'true', 'fieldname' => 'by_location_id[]', 'hide_new' => 'true', 'selected' => $savedReport->selectValues('by_location_id')])
|
||||
@include ('partials.forms.edit.location-select', ['translated_name' => trans('admin/hardware/form.default_location'), 'multiple' => 'true', 'fieldname' => 'by_rtd_location_id[]', 'hide_new' => 'true', 'selected' => $savedReport->selectValues('by_rtd_location_id')])
|
||||
@include ('partials.forms.edit.department-select', ['translated_name' => trans('general.department'), 'fieldname' => 'by_dept_id', 'hide_new' => 'true', 'selected' => $savedReport->selectValue('by_dept_id')])
|
||||
@include ('partials.forms.edit.supplier-select', ['translated_name' => trans('general.supplier'), 'fieldname' => 'by_supplier_id[]', 'multiple' => 'true', 'hide_new' => 'true', 'selected' => $savedReport->selectValues('by_supplier_id')])
|
||||
@include ('partials.forms.edit.model-select', ['translated_name' => trans('general.asset_model'), 'fieldname' => 'by_model_id[]', 'multiple' => 'true', 'hide_new' => 'true', 'selected' => $savedReport->selectValues('by_model_id')])
|
||||
@include ('partials.forms.edit.manufacturer-select', ['translated_name' => trans('general.manufacturer'), 'fieldname' => 'by_manufacturer_id', 'hide_new' => 'true', 'selected' => $savedReport->selectValue('by_manufacturer_id')])
|
||||
@include ('partials.forms.edit.category-select', ['translated_name' => trans('general.category'), 'fieldname' => 'by_category_id', 'hide_new' => 'true', 'category_type' => 'asset', 'selected' => $savedReport->selectValue('by_category_id')])
|
||||
@include ('partials.forms.edit.status-select', ['translated_name' => trans('admin/hardware/form.status'), 'fieldname' => 'by_status_id[]', 'multiple' => 'true', 'hide_new' => 'true', 'selected' => $savedReport->selectValues('by_status_id')])
|
||||
|
||||
<!-- Order Number -->
|
||||
<div class="form-group">
|
||||
|
|
|
@ -7,7 +7,7 @@ use Tests\TestCase;
|
|||
|
||||
class SavedReportTest extends TestCase
|
||||
{
|
||||
public function testParsingCheckmarkValues()
|
||||
public function testParsingCheckmarkValue()
|
||||
{
|
||||
$savedReport = SavedReport::factory()->create([
|
||||
'options' => [
|
||||
|
@ -21,7 +21,7 @@ class SavedReportTest extends TestCase
|
|||
$this->assertEquals('1', (new SavedReport)->checkmarkValue('is_a_checkbox_value'));
|
||||
}
|
||||
|
||||
public function testParsingTextValues()
|
||||
public function testParsingTextValue()
|
||||
{
|
||||
$savedReport = SavedReport::factory()->create([
|
||||
'options' => [
|
||||
|
@ -35,12 +35,42 @@ class SavedReportTest extends TestCase
|
|||
$this->assertEquals('', (new SavedReport)->textValue('is_a_text_value'));
|
||||
}
|
||||
|
||||
public function testParsingSelectValues()
|
||||
public function testParsingSelectValue()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
$savedReport = SavedReport::factory()->create([
|
||||
'options' => [
|
||||
'is_a_text_value_as_well' => '4',
|
||||
'contains_a_null_value' => null,
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals('4', $savedReport->selectValue('is_a_text_value_as_well'));
|
||||
$this->assertEquals('', $savedReport->selectValue('non_existent_key'));
|
||||
$this->assertNull($savedReport->selectValue('contains_a_null_value'));
|
||||
}
|
||||
|
||||
public function testSelectValuesDoNotIncludeDeletedModels()
|
||||
public function testParsingSelectValues()
|
||||
{
|
||||
$savedReport = SavedReport::factory()->create([
|
||||
'options' => [
|
||||
'is_an_array' => ['2', '3', '4'],
|
||||
'is_an_array_containing_null' => [null],
|
||||
],
|
||||
]);
|
||||
|
||||
$this->assertEquals(['2', '3', '4'], $savedReport->selectValues('is_an_array'));
|
||||
$this->assertEquals(null, $savedReport->selectValues('non_existent_key'));
|
||||
$this->assertNull($savedReport->selectValues('is_an_array_containing_null'));
|
||||
}
|
||||
|
||||
public function testSelectValueDoesNotIncludeDeletedOrNonExistentModels()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
|
||||
// @todo: maybe it should optionally include deleted values?
|
||||
}
|
||||
|
||||
public function testSelectValuesDoNotIncludeDeletedOrNonExistentModels()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
|
||||
|
@ -48,4 +78,9 @@ class SavedReportTest extends TestCase
|
|||
// company is deleted
|
||||
// ensure company's id is not returned
|
||||
}
|
||||
|
||||
public function testDeletedCustomFieldsDoNotCauseAnIssue()
|
||||
{
|
||||
$this->markTestIncomplete();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue