mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 21:10:38 +03:00
M: Remove inheritance data from archive schemas
This commit is contained in:
parent
4eebcaef53
commit
251ebece5d
|
@ -115,14 +115,19 @@ class RSFormSerializer(serializers.ModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
def to_representation(self, instance: LibraryItem) -> dict:
|
def to_representation(self, instance: LibraryItem) -> dict:
|
||||||
result = LibraryItemDetailsSerializer(instance).data
|
result = self.to_base_data(instance)
|
||||||
result['items'] = []
|
|
||||||
for cst in RSForm(instance).constituents().order_by('order'):
|
|
||||||
result['items'].append(CstSerializer(cst).data)
|
|
||||||
result['inheritance'] = []
|
|
||||||
for link in Inheritance.objects.filter(Q(child__schema=instance) | Q(parent__schema=instance)):
|
for link in Inheritance.objects.filter(Q(child__schema=instance) | Q(parent__schema=instance)):
|
||||||
result['inheritance'].append([link.child.pk, link.parent.pk])
|
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['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'):
|
for oss in LibraryItem.objects.filter(operations__result=instance).only('alias'):
|
||||||
result['oss'].append({
|
result['oss'].append({
|
||||||
'id': oss.pk,
|
'id': oss.pk,
|
||||||
|
@ -132,11 +137,9 @@ class RSFormSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def to_versioned_data(self) -> dict:
|
def to_versioned_data(self) -> dict:
|
||||||
''' Create serializable version representation without redundant data. '''
|
''' 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['versions']
|
||||||
del result['editors']
|
del result['editors']
|
||||||
del result['inheritance']
|
|
||||||
del result['oss']
|
|
||||||
|
|
||||||
del result['owner']
|
del result['owner']
|
||||||
del result['visible']
|
del result['visible']
|
||||||
|
@ -150,7 +153,7 @@ class RSFormSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def from_versioned_data(self, version: int, data: dict) -> dict:
|
def from_versioned_data(self, version: int, data: dict) -> dict:
|
||||||
''' Load data from version. '''
|
''' Load data from version. '''
|
||||||
result = self.to_representation(cast(LibraryItem, self.instance))
|
result = self.to_base_data(cast(LibraryItem, self.instance))
|
||||||
result['version'] = version
|
result['version'] = version
|
||||||
return result | data
|
return result | data
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ interface EditorRSFormCardProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSFormCardProps) {
|
function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSFormCardProps) {
|
||||||
const { schema } = useRSForm();
|
const model = useRSForm();
|
||||||
const controller = useRSEdit();
|
const controller = useRSEdit();
|
||||||
|
|
||||||
function initiateSubmit() {
|
function initiateSubmit() {
|
||||||
|
@ -53,10 +53,10 @@ function EditorRSFormCard({ isModified, onDestroy, setIsModified }: EditorRSForm
|
||||||
>
|
>
|
||||||
<FlexColumn className='flex-shrink'>
|
<FlexColumn className='flex-shrink'>
|
||||||
<FormRSForm id={globals.library_item_editor} isModified={isModified} setIsModified={setIsModified} />
|
<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>
|
</FlexColumn>
|
||||||
|
|
||||||
<RSFormStats stats={schema?.stats} />
|
{model.schema ? <RSFormStats stats={model.schema.stats} isArchive={model.isArchive} /> : null}
|
||||||
</AnimateFade>
|
</AnimateFade>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
@ -13,17 +13,15 @@ import ValueStats from '@/components/ui/ValueStats';
|
||||||
import { type IRSFormStats } from '@/models/rsform';
|
import { type IRSFormStats } from '@/models/rsform';
|
||||||
|
|
||||||
interface RSFormStatsProps {
|
interface RSFormStatsProps {
|
||||||
stats?: IRSFormStats;
|
isArchive: boolean;
|
||||||
|
stats: IRSFormStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
function RSFormStats({ stats }: RSFormStatsProps) {
|
function RSFormStats({ stats, isArchive }: RSFormStatsProps) {
|
||||||
if (!stats) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return (
|
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='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>Всего</span>
|
||||||
<span>{stats.count_all}</span>
|
<span>{stats.count_all}</span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -37,7 +35,7 @@ function RSFormStats({ stats }: RSFormStatsProps) {
|
||||||
id='count_inherited'
|
id='count_inherited'
|
||||||
icon={<IconChild size='1.25rem' className='clr-text-primary' />}
|
icon={<IconChild size='1.25rem' className='clr-text-primary' />}
|
||||||
value={stats.count_inherited}
|
value={stats.count_inherited}
|
||||||
title='Наследованные'
|
titleHtml={isArchive ? 'Архивные схемы не хранят<br/> информацию о наследовании' : 'Наследованные'}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ValueStats
|
<ValueStats
|
||||||
|
|
Loading…
Reference in New Issue
Block a user