@use('Modules\Portal\DadosAbertos\Database\Models\DadosAbertosDataset') {{-- Formulário de dataset (CMS): o módulo preenche **apenas** o conteúdo; o shell é dono da estrutura e do title da tela (ADR-009/ADR-016). `columns`/`rows` em texto = funciona sem JS (ADR-010). Dataset **gerado** escolhe a "Fonte" (catálogo do motor, ADR-049) e não edita linhas: as linhas vêm da fonte, não do formulário (sem upload de CSV). Título/descrição/publicador/tema/licença/ periodicidade/versão publicados vêm da fonte: no dataset gerado os campos ficam somente leitura e a gravação recopia os valores da fonte (fonte = única verdade). --}} @php /** @var \Modules\Portal\DadosAbertos\Database\Models\DadosAbertosDataset $dataset */ $isEdit = $dataset->exists; $publishedValue = old('published_at', $dataset->published_at?->format('Y-m-d\TH:i')); $columnsText = old('columns_text', implode("\n", $dataset->columns ?? [])); $rowsText = old('rows_text', implode("\n", array_map( static fn (array $row): string => implode(' | ', array_map(static fn ($cell): string => (string) $cell, $row)), $dataset->rows ?? [], ))); $tagsText = old('tags_text', implode(', ', $dataset->tags ?? [])); $sourceValue = (string) old('source', $dataset->source ?? ''); $sourceMetadata = $sourceValue !== '' ? ($sources[$sourceValue] ?? null) : null; $sourceUnavailable = $dataset->isGenerated() && $sourceValue !== '' && $sourceMetadata === null; $lockedToSource = $sourceMetadata !== null; $sourceError = isset($errors) ? $errors->first('source') : null; // Bloco curado visível também quando o erro é dele: sem isso o resumo apontaria um campo // que não está na página (conversão curado→gerado com campos preenchidos — ADR-049 §3). $showCurated = $sourceValue === '' || $errors->hasAny([ 'columns', 'rows', 'classification', 'publication_basis', 'personal_data_fields', 'personal_data_fields.*', ]); // Sem fonte registrada a ajuda do select mentiria ("escolha uma fonte"): o texto vira o aviso // de catálogo vazio, e o dataset continua curado (colunas/linhas abaixo) — ADR-049 §S3.2. $sourceDescribedBy = implode(' ', array_filter([ $sources === [] ? 'field-source-empty' : 'field-source-help', filled($sourceError) ? 'field-source-error' : null, ])); // Valores publicados: gerado lê a fonte; curado lê o registro (com `old()` no erro de validação). $titleValue = $lockedToSource ? $sourceMetadata->title : $dataset->title; $summaryValue = $lockedToSource ? $sourceMetadata->description : $dataset->summary; $descriptionValue = $lockedToSource ? $sourceMetadata->description : $dataset->description; $publisherValue = $lockedToSource ? $sourceMetadata->publisher : $dataset->publisher; $themeValue = $lockedToSource ? implode(', ', $sourceMetadata->theme) : $dataset->theme; $licenseValue = $lockedToSource ? $sourceMetadata->license : old('license', $dataset->license ?? 'CC-BY-4.0'); $versionValue = $lockedToSource ? $sourceMetadata->version : old('version', $dataset->version ?? '1.0'); $periodicityValue = $lockedToSource ? $sourceMetadata->periodicity->value : old('periodicity', $dataset->periodicity ?? 'anual'); // Governança de PII do dataset curado (ADR-019/ADR-049 §7). $classificationValue = old('classification', $dataset->classification ?? 'publico'); $containsPersonalDataValue = (bool) old('contains_personal_data', $dataset->contains_personal_data ?? false); $publicationBasisValue = old('publication_basis', $dataset->publication_basis ?? 'non_personal'); $personalDataFieldsText = old('personal_data_fields_text', implode(', ', $dataset->personal_data_fields ?? [])); $columnsError = $errors->first('columns'); $rowsError = $errors->first('rows'); $classificationError = $errors->first('classification'); $publicationBasisError = $errors->first('publication_basis'); $personalDataFieldsError = $errors->first('personal_data_fields'); @endphp @if (session('status')) {{ session('status') }} @endif
@csrf @if ($isEdit) @method('PUT') @endif
@if ($sources === []) {{ __('dados_abertos::cms.source_empty') }} @else {{ __('dados_abertos::cms.source_help') }} @endif @if (filled($sourceError)) {{ $sourceError }} @endif
@if ($sourceUnavailable) {{ __('dados_abertos::cms.source_unavailable') }} @endif @if (! $showCurated) {{ __('dados_abertos::cms.source_generated_warning') }} @endif
@error('summary') {{ $message }} @enderror
@error('description') {{ $message }} @enderror
@if ($lockedToSource) {{-- O `
@else @endif @if ($showCurated)
{{ __('dados_abertos::cms.columns_help') }} @if (filled($columnsError)) {{ $columnsError }} @endif
{{ __('dados_abertos::cms.rows_help') }} @if (filled($rowsError)) {{ $rowsError }} @endif
{{-- Governança de PII (dataset curado). Dataset gerado herda a declaração da fonte. --}}
{{ __('dados_abertos::cms.personal_data_legend') }}
{{ __('dados_abertos::cms.personal_data_fields_help') }} @if (filled($personalDataFieldsError)) {{ $personalDataFieldsError }} @endif
@endif
{{ __('dados_abertos::cms.cancel') }} @if ($dataset->isPublished()) {{ __('dados_abertos::cms.public_url') }} @endif {{ __('dados_abertos::cms.save') }}