Row adding, some webpack tweaks
This commit is contained in:
@@ -56,7 +56,7 @@ class Controller extends BaseController
|
||||
'mastodon', // mastodon fetching previews
|
||||
];
|
||||
|
||||
protected function jsonResponse($data = [], $code=200)
|
||||
protected function jsonResponse($data, $code=200)
|
||||
{
|
||||
return new JsonResponse($data, $code);
|
||||
}
|
||||
|
||||
@@ -207,39 +207,13 @@ class TableController extends Controller
|
||||
}
|
||||
|
||||
// --- DATA ---
|
||||
$dataCsvLines = array_map('str_getcsv', explode("\n", $input->data));
|
||||
$dataCsvLines = Utils::csvToArray($input->data);
|
||||
|
||||
// Preparing data to insert into the Rows table
|
||||
$rowsToInsert = null;
|
||||
$rowNumerator = null;
|
||||
try {
|
||||
$rowsToInsert = collect($dataCsvLines)->map(function ($row) use ($columns) {
|
||||
if (count($row) == 0 || count($row) == 1 && $row[0] == '') return null; // discard empty lines
|
||||
if (count($row) != count($columns)) {
|
||||
throw new NotApplicableException("All rows must have " . count($columns) . " fields.");
|
||||
}
|
||||
|
||||
$data = [];
|
||||
|
||||
foreach ($row as $i => $val) {
|
||||
$col = $columns[$i];
|
||||
|
||||
if (strlen($val) > 1000) {
|
||||
// try to stop people inserting unstructured crap / malformed CSV
|
||||
throw new NotApplicableException("Value for column {$col->name} too long.");
|
||||
}
|
||||
$data[$col->id] = $col->cast($val);
|
||||
}
|
||||
|
||||
// return in a format prepared for filling eloquent
|
||||
return ['data' => $data];
|
||||
})->filter()->all(); // remove nulls, to array
|
||||
|
||||
// attach _id labels to all rows
|
||||
$rowNumerator = new RowNumerator(count($dataCsvLines));
|
||||
foreach ($rowsToInsert as &$item) {
|
||||
$item['data']['_id'] = $rowNumerator->next();
|
||||
}
|
||||
$rowsToInsert = Changeset::csvToRowsArray($columns, $dataCsvLines, true)->all();
|
||||
} catch (\Exception $e) {
|
||||
return $this->backWithErrors(['data' => $e->getMessage()]);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ use App\Tables\Changeset;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Input;
|
||||
use MightyPork\Exceptions\SimpleValidationException;
|
||||
use MightyPork\Utils\Utils;
|
||||
|
||||
class TableEditController extends Controller
|
||||
{
|
||||
@@ -100,7 +101,7 @@ class TableEditController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function draftUpdate(User $user, string $table, Request $request)
|
||||
public function draftUpdate(Request $request, User $user, string $table)
|
||||
{
|
||||
/** @var Table $tableModel */
|
||||
$tableModel = $user->tables()->where('name', $table)->first();
|
||||
@@ -121,8 +122,9 @@ class TableEditController extends Controller
|
||||
break;
|
||||
|
||||
case 'row.remove':
|
||||
$isNew = $changeset->isNewRow($input->id);
|
||||
$changeset->rowRemove($input->id);
|
||||
$resp = $changeset->fetchAndTransformRow($input->id);
|
||||
$resp = $isNew ? null : $changeset->fetchAndTransformRow($input->id);
|
||||
break;
|
||||
|
||||
case 'row.restore':
|
||||
@@ -130,6 +132,32 @@ class TableEditController extends Controller
|
||||
$resp = $changeset->fetchAndTransformRow($input->id);
|
||||
break;
|
||||
|
||||
case 'rows.add':
|
||||
$changeset->addBlankRows($input->count);
|
||||
|
||||
// rows.add is sent via a form
|
||||
if ($input->has('redirect')) {
|
||||
return redirect($input->redirect);
|
||||
} else {
|
||||
$resp = null;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'rows.add-csv':
|
||||
try {
|
||||
$changeset->addFilledRows(Utils::csvToArray($input->data));
|
||||
} catch (\Exception $e) {
|
||||
return $this->backWithErrors(['data' => $e->getMessage()]);
|
||||
}
|
||||
|
||||
// rows.add-csv is sent via a form
|
||||
if ($input->has('redirect')) {
|
||||
return redirect($input->redirect);
|
||||
} else {
|
||||
$resp = null;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$resp = "Bad Action";
|
||||
$code = 400;
|
||||
|
||||
Reference in New Issue
Block a user