Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2024-10-03 14:34:29 +01:00
parent b4f9284d41
commit 8052447de6
4 changed files with 50 additions and 11 deletions

View file

@ -66,7 +66,6 @@ class ImportController extends Controller
}
$reader = Reader::createFromFileObject($file->openFile('r')); //file pointer leak?
$reader->setDelimiter(request('delimiter', ','));
try {
$import->header_row = $reader->fetchOne(0);
} catch (JsonEncodingException $e) {

View file

@ -40,7 +40,7 @@ class Importer extends Component
public $consumables_fields;
public $components_fields;
public $aliases_fields;
public $delimiter = 'comma';
public $delimiter;
protected $rules = [
'files.*.file_path' => 'required|string',
@ -49,7 +49,7 @@ class Importer extends Component
'headerRow' => 'array',
'typeOfImport' => 'string',
'field_map' => 'array',
'delimiter' => 'in:comma,semicolon',
'delimiter' => 'in:comma,semicolon,pipe',
];
/**

View file

@ -2,6 +2,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
class Import extends Model
@ -11,4 +12,36 @@ class Import extends Model
'first_row' => 'array',
'field_map' => 'json',
];
protected function delimiter(): Attribute
{
return Attribute::make(
set: function ($value) {
if ($value == 'semicolon') {
return ';';
}
if ($value == 'pipe') {
return '|';
}
return ',';
},
get: function ($value) {
if ($value == 'semicolon') {
return ';';
}
if ($value == 'pipe') {
return '|';
}
return ',';
}
);
}
}

View file

@ -295,16 +295,23 @@
@else
<form class="form-horizontal">
<fieldset>
<legend style="border: 0px; font-size: 15px;">Select Delimiter:</legend>
<label class="form-control">
<input type="radio" name="delimiter" id="delimiter" value="comma" wire:model.live="delimiter">
Comma
</label>
<label class="form-control">
<input type="radio" name="delimiter" id="delimiter" value="comma" wire:model.live="delimiter">
Comma
</label>
<label class="form-control">
<input type="radio" name="delimiter" id="delimiter" value="semicolon" wire:model.live="delimiter">
Semicolon
</label>
<label class="form-control">
<input type="radio" name="delimiter" id="delimiter" value="semicolon" wire:model.live="delimiter">
Semicolon
</label>
<label class="form-control">
<input type="radio" name="delimiter" id="delimiter" value="pipe" wire:model.live="delimiter">
Pipe
</label>
</fieldset>
<span class="btn btn-primary fileinput-button">
<span>