M: Remove inheritance data from archive schemas
This commit is contained in:
parent
1305560679
commit
eb5cb6945f
|
@ -115,14 +115,19 @@ class RSFormSerializer(serializers.ModelSerializer):
|
|||
fields = '__all__'
|
||||
|
||||
def to_representation(self, instance: LibraryItem) -> dict:
|
||||
result = LibraryItemDetailsSerializer(instance).data
|
||||
result['items'] = []
|
||||
for cst in RSForm(instance).constituents().order_by('order'):
|
||||
result['items'].append(CstSerializer(cst).data)
|
||||
result['inheritance'] = []
|
||||
result = self.to_base_data(instance)
|
||||
for link in Inheritance.objects.filter(Q(child__schema=instance) | Q(parent__schema=instance)):
|
||||
result['inheritance'].append([link.child.pk, link.parent.pk])
|
||||
return result
|
||||
|
||||
def to_base_data(self, instance: LibraryItem) -> dict:
|
||||
''' Create serializable base representation without redundant data. '''
|
||||
result = LibraryItemDetailsSerializer(instance).data
|
||||
result['items'] = []
|
||||
result['oss'] = []
|
||||
result['inheritance'] = []
|
||||
for cst in RSForm(instance).constituents().order_by('order'):
|
||||
result['items'].append(CstSerializer(cst).data)
|
||||
for oss in LibraryItem.objects.filter(operations__result=instance).only('alias'):
|
||||
result['oss'].append({
|
||||
'id': oss.pk,
|
||||
|
@ -132,11 +137,9 @@ class RSFormSerializer(serializers.ModelSerializer):
|
|||
|
||||
def to_versioned_data(self) -> dict:
|
||||
''' Create serializable version representation without redundant data. '''
|
||||
result = self.to_representation(cast(LibraryItem, self.instance))
|
||||
result = self.to_base_data(cast(LibraryItem, self.instance))
|
||||
del result['versions']
|
||||
del result['editors']
|
||||
del result['inheritance']
|
||||
del result['oss']
|
||||
|
||||
del result['owner']
|
||||
del result['visible']
|
||||
|
@ -150,7 +153,7 @@ class RSFormSerializer(serializers.ModelSerializer):
|
|||
|
||||
def from_versioned_data(self, version: int, data: dict) -> dict:
|
||||
''' Load data from version. '''
|
||||
result = self.to_representation(cast(LibraryItem, self.instance))
|
||||
result = self.to_base_data(cast(LibraryItem, self.instance))
|
||||
result['version'] = version
|
||||
return result | data
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ interface EditorRSFormCardProps {
|
|||
}
|
||||
|
||||
function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSFormCardProps) {
|
||||
const { schema } = useRSForm();
|
||||
const model = useRSForm();
|
||||
const controller = useRSEdit();
|
||||
|
||||
function initiateSubmit() {
|
||||
|
@ -53,10 +53,10 @@ function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSForm
|
|||
>
|
||||
<FlexColumn className='flex-shrink'>
|
||||
<FormRSForm id={globals.library_item_editor} isModified={isModified} setIsModified={setIsModified} />
|
||||
<EditorLibraryItem item={schema} isModified={isModified} controller={controller} />
|
||||
<EditorLibraryItem item={model.schema} isModified={isModified} controller={controller} />
|
||||
</FlexColumn>
|
||||
|
||||
<RSFormStats stats={schema?.stats} />
|
||||
{model.schema ? <RSFormStats stats={model.schema.stats} isArchive={model.isArchive} /> : null}
|
||||
</AnimateFade>
|
||||
</>
|
||||
);
|
||||
|
|
|
@ -13,17 +13,15 @@ import ValueStats from '@/components/ui/ValueStats';
|
|||
import { type IRSFormStats } from '@/models/rsform';
|
||||
|
||||
interface RSFormStatsProps {
|
||||
stats?: IRSFormStats;
|
||||
isArchive: boolean;
|
||||
stats: IRSFormStats;
|
||||
}
|
||||
|
||||
function RSFormStats({ stats }: RSFormStatsProps) {
|
||||
if (!stats) {
|
||||
return null;
|
||||
}
|
||||
function RSFormStats({ stats, isArchive }: RSFormStatsProps) {
|
||||
return (
|
||||
<div className='flex flex-col mt-3 md:gap-1 md:ml-6 md:mt-8 md:w-[18rem] w-[25rem]'>
|
||||
<div className='flex flex-col mt-3 md:gap-1 md:ml-5 md:mt-8 md:w-[18rem] w-[25rem]'>
|
||||
<div className='grid grid-cols-4 gap-1 mb-3 justify-items-end'>
|
||||
<div className='col-span-2 w-fit flex gap-3'>
|
||||
<div className='col-span-2 w-fit flex gap-3 hover:cursor-default'>
|
||||
<span>Всего</span>
|
||||
<span>{stats.count_all}</span>
|
||||
</div>
|
||||
|
@ -37,7 +35,7 @@ function RSFormStats({ stats }: RSFormStatsProps) {
|
|||
id='count_inherited'
|
||||
icon={<IconChild size='1.25rem' className='clr-text-primary' />}
|
||||
value={stats.count_inherited}
|
||||
title='Наследованные'
|
||||
titleHtml={isArchive ? 'Архивные схемы не хранят<br/> информацию о наследовании' : 'Наследованные'}
|
||||
/>
|
||||
|
||||
<ValueStats
|
||||
|
|
Loading…
Reference in New Issue
Block a user