shwo live data
This commit is contained in:
@@ -1,14 +1,16 @@
|
|||||||
<script>
|
<script>
|
||||||
import ChannelLayout from "../../layouts/ChannelLayout.svelte";
|
import ChannelLayout from "../../layouts/ChannelLayout.svelte";
|
||||||
import { onMount } from "svelte";
|
import { onMount } from "svelte";
|
||||||
import TextField from "./fields/TextField.svelte";
|
|
||||||
import LocaleChooser from "./LocaleChooser.svelte";
|
import LocaleChooser from "./LocaleChooser.svelte";
|
||||||
|
import RecordForm from "./RecordForm.svelte";
|
||||||
import RecordStatus from "./RecordStatus.svelte";
|
import RecordStatus from "./RecordStatus.svelte";
|
||||||
import PublishingOptions from "./PublishingOptions.svelte";
|
import PublishingOptions from "./PublishingOptions.svelte";
|
||||||
import { getSelectedLocales } from "./locale.svelte.js";
|
import { getSelectedLocales } from "./locale.svelte.js";
|
||||||
let { channel, user, data } = $props();
|
let { channel, user, data } = $props();
|
||||||
let selectedLocales = $state(getSelectedLocales());
|
let selectedLocales = $state(getSelectedLocales());
|
||||||
let record = $state(data.record);
|
let record = $state(data.record);
|
||||||
|
let showPublished = $state(false);
|
||||||
|
|
||||||
function handleLocaleChange() {
|
function handleLocaleChange() {
|
||||||
selectedLocales = getSelectedLocales();
|
selectedLocales = getSelectedLocales();
|
||||||
@@ -22,48 +24,35 @@
|
|||||||
<div style="display:flex;gap:20px;justify-content: space-between;">
|
<div style="display:flex;gap:20px;justify-content: space-between;">
|
||||||
<LocaleChooser {channel} onLocaleChange={handleLocaleChange}
|
<LocaleChooser {channel} onLocaleChange={handleLocaleChange}
|
||||||
></LocaleChooser>
|
></LocaleChooser>
|
||||||
|
|
||||||
|
<label>
|
||||||
|
<input bind:checked={showPublished} type="checkbox" role="switch" />
|
||||||
|
Show Live Data
|
||||||
|
</label>
|
||||||
<PublishingOptions {record} status={data.recordStatus}
|
<PublishingOptions {record} status={data.recordStatus}
|
||||||
></PublishingOptions>
|
></PublishingOptions>
|
||||||
</div>
|
</div>
|
||||||
<fieldset disabled={data.recordStatus === "trashed"}>
|
{#if !showPublished}
|
||||||
{#each data.fields as field}
|
<fieldset disabled={data.recordStatus === "trashed"}>
|
||||||
<div style="display:flex;gap:20px;">
|
<RecordForm
|
||||||
{#if field.type === "text"}
|
{channel}
|
||||||
<TextField
|
fields={data.fields}
|
||||||
{channel}
|
{record}
|
||||||
{record}
|
{selectedLocales}
|
||||||
validationError={data.validationErrors.find(
|
validationErrors={data.validationErrors}
|
||||||
(f) =>
|
fieldData={data.draftData}
|
||||||
f.fieldId === field.id && f.locale === "main",
|
></RecordForm>
|
||||||
)}
|
</fieldset>
|
||||||
schemaField={field}
|
{:else}
|
||||||
locale="main"
|
<fieldset disabled={true}>
|
||||||
dataField={data.draftData.find(
|
<RecordForm
|
||||||
(f) => f.id === field.id && f.locale === "main",
|
{channel}
|
||||||
)}
|
fields={data.fields}
|
||||||
></TextField>
|
{record}
|
||||||
{#if field.translatable}
|
{selectedLocales}
|
||||||
{#each selectedLocales as locale (locale)}
|
validationErrors={data.validationErrors}
|
||||||
<TextField
|
fieldData={data.liveData}
|
||||||
{channel}
|
></RecordForm>
|
||||||
{record}
|
</fieldset>
|
||||||
validationError={data.validationErrors.find(
|
{/if}
|
||||||
(f) =>
|
|
||||||
f.fieldId === field.id &&
|
|
||||||
f.locale === locale,
|
|
||||||
)}
|
|
||||||
schemaField={field}
|
|
||||||
{locale}
|
|
||||||
dataField={data.draftData.find(
|
|
||||||
(f) =>
|
|
||||||
f.id === field.id &&
|
|
||||||
f.locale === locale,
|
|
||||||
)}
|
|
||||||
></TextField>
|
|
||||||
{/each}
|
|
||||||
{/if}
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
</fieldset>
|
|
||||||
{/snippet}
|
{/snippet}
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<script>
|
||||||
|
import TextField from "./fields/TextField.svelte";
|
||||||
|
let {
|
||||||
|
fields,
|
||||||
|
record,
|
||||||
|
channel,
|
||||||
|
validationErrors,
|
||||||
|
fieldData,
|
||||||
|
selectedLocales,
|
||||||
|
} = $props();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#each fields as field}
|
||||||
|
<div style="display:flex;gap:20px;">
|
||||||
|
{#if field.type === "text"}
|
||||||
|
<TextField
|
||||||
|
{channel}
|
||||||
|
{record}
|
||||||
|
validationError={validationErrors.find(
|
||||||
|
(f) => f.fieldId === field.id && f.locale === "main",
|
||||||
|
)}
|
||||||
|
schemaField={field}
|
||||||
|
locale="main"
|
||||||
|
dataField={fieldData.find(
|
||||||
|
(f) => f.id === field.id && f.locale === "main",
|
||||||
|
)}
|
||||||
|
></TextField>
|
||||||
|
{#if field.translatable}
|
||||||
|
{#each selectedLocales as locale (locale)}
|
||||||
|
<TextField
|
||||||
|
{channel}
|
||||||
|
{record}
|
||||||
|
validationError={validationErrors.find(
|
||||||
|
(f) =>
|
||||||
|
f.fieldId === field.id && f.locale === locale,
|
||||||
|
)}
|
||||||
|
schemaField={field}
|
||||||
|
{locale}
|
||||||
|
dataField={fieldData.find(
|
||||||
|
(f) => f.id === field.id && f.locale === locale,
|
||||||
|
)}
|
||||||
|
></TextField>
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
@@ -5,6 +5,7 @@ use Lucent\Core\Data\RecordField;
|
|||||||
use Lucent\Core\Data\RecordMode;
|
use Lucent\Core\Data\RecordMode;
|
||||||
use Lucent\Core\Repository\RecordFieldRepo;
|
use Lucent\Core\Repository\RecordFieldRepo;
|
||||||
use stdClass;
|
use stdClass;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class RecordFieldModule
|
class RecordFieldModule
|
||||||
{
|
{
|
||||||
@@ -20,7 +21,7 @@ class RecordFieldModule
|
|||||||
})
|
})
|
||||||
->toArray();
|
->toArray();
|
||||||
|
|
||||||
DB::transaction(function () use ($recordField) {
|
DB::transaction(function () use ($liveData, $recordId) {
|
||||||
RecordFieldRepo::deleteLiveByRecordId($recordId);
|
RecordFieldRepo::deleteLiveByRecordId($recordId);
|
||||||
RecordFieldRepo::insertMany($liveData);
|
RecordFieldRepo::insertMany($liveData);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ use Lucent\Core\Repository\FieldRepo;
|
|||||||
use Lucent\Core\Repository\SchemaRepo;
|
use Lucent\Core\Repository\SchemaRepo;
|
||||||
use Lucent\Core\Repository\RecordFieldRepo;
|
use Lucent\Core\Repository\RecordFieldRepo;
|
||||||
use Lucent\Core\Record\RecordModule;
|
use Lucent\Core\Record\RecordModule;
|
||||||
|
use Lucent\Core\Record\RecordFieldModule;
|
||||||
use Lucent\Id\Id;
|
use Lucent\Id\Id;
|
||||||
use Lucent\LucentException;
|
use Lucent\LucentException;
|
||||||
use Lucent\Query\Operator\OperatorRegistry;
|
use Lucent\Query\Operator\OperatorRegistry;
|
||||||
@@ -255,6 +256,10 @@ class RecordController
|
|||||||
->where("mode", RecordMode::DRAFT)
|
->where("mode", RecordMode::DRAFT)
|
||||||
->values()
|
->values()
|
||||||
->toArray();
|
->toArray();
|
||||||
|
$liveData = collect($recordFields)
|
||||||
|
->where("mode", RecordMode::LIVE)
|
||||||
|
->values()
|
||||||
|
->toArray();
|
||||||
|
|
||||||
$schemas = SchemaRepo::all();
|
$schemas = SchemaRepo::all();
|
||||||
$schema = collect($schemas)->firstWhere("id", $record->schemaId);
|
$schema = collect($schemas)->firstWhere("id", $record->schemaId);
|
||||||
@@ -279,6 +284,7 @@ class RecordController
|
|||||||
// "graph" => toArray($graph),
|
// "graph" => toArray($graph),
|
||||||
"record" => toArray($record),
|
"record" => toArray($record),
|
||||||
"draftData" => $draftData,
|
"draftData" => $draftData,
|
||||||
|
"liveData" => $liveData,
|
||||||
"validationErrors" => $validationErrors,
|
"validationErrors" => $validationErrors,
|
||||||
"recordStatus" => $recordStatus,
|
"recordStatus" => $recordStatus,
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user