Skip to content

Commit

Permalink
Add user-defined fields to Taxonomies (#398)
Browse files Browse the repository at this point in the history
  • Loading branch information
blms committed Feb 26, 2025
1 parent a953c4f commit 5115ad3
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 30 deletions.
12 changes: 12 additions & 0 deletions client/src/components/TaxonomyItemForm.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// @flow

import type { EditContainerProps } from '@performant-software/shared-components';
import { UserDefinedFieldsForm } from '@performant-software/user-defined-fields';
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Form } from 'semantic-ui-react';
Expand All @@ -23,6 +24,17 @@ const TaxonomyItemForm = (props: Props) => {
required={props.isRequired('name')}
value={props.item.name}
/>
{ props.item.project_model_id && (
<UserDefinedFieldsForm
data={props.item.user_defined}
defineableId={props.item.project_model_id}
defineableType='CoreDataConnector::ProjectModel'
isError={props.isError}
onChange={(userDefined) => props.onSetState({ user_defined: userDefined })}
onClearValidationError={props.onClearValidationError}
tableName='CoreDataConnector::Taxonomy'
/>
)}
</Form>
);
};
Expand Down
54 changes: 26 additions & 28 deletions client/src/pages/ProjectModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,34 +160,32 @@ const ProjectModelForm = (props: Props) => {
required={props.isRequired('allow_identifiers')}
/>
</SimpleEditPage.Tab>
{ props.item.model_class !== 'CoreDataConnector::Taxonomy' && (
<SimpleEditPage.Tab
key='fields'
name={t('ProjectModel.tabs.fields')}
>
<UserDefinedFieldsEmbeddedList
actions={[{
name: 'edit',
icon: 'pencil'
}, {
name: 'delete',
icon: 'times'
}]}
addButton={{
basic: false,
color: 'blue',
location: 'top'
}}
defaults={{
table_name: props.item.model_class
}}
excludeColumns={['table_name', 'uuid']}
items={props.item.user_defined_fields}
onDelete={props.onDeleteChildAssociation.bind(this, 'user_defined_fields')}
onSave={props.onSaveChildAssociation.bind(this, 'user_defined_fields')}
/>
</SimpleEditPage.Tab>
)}
<SimpleEditPage.Tab
key='fields'
name={t('ProjectModel.tabs.fields')}
>
<UserDefinedFieldsEmbeddedList
actions={[{
name: 'edit',
icon: 'pencil'
}, {
name: 'delete',
icon: 'times'
}]}
addButton={{
basic: false,
color: 'blue',
location: 'top'
}}
defaults={{
table_name: props.item.model_class
}}
excludeColumns={['table_name', 'uuid']}
items={props.item.user_defined_fields}
onDelete={props.onDeleteChildAssociation.bind(this, 'user_defined_fields')}
onSave={props.onSaveChildAssociation.bind(this, 'user_defined_fields')}
/>
</SimpleEditPage.Tab>
<SimpleEditPage.Tab
key='relationships'
name={t('ProjectModel.tabs.relationships')}
Expand Down
3 changes: 2 additions & 1 deletion client/src/transforms/Taxonomy.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ class Taxonomy extends MergeableTransform {
getPayloadKeys(): Array<string> {
return [
'project_model_id',
'name'
'name',
'user_defined'
];
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# This migration comes from core_data_connector (originally 20250226175155)
class AddUserDefinedFieldsToCoreDataConnectorTaxonomies < ActiveRecord::Migration[7.0]
def up
add_column :core_data_connector_taxonomies, :user_defined, :jsonb, default: {}
add_index :core_data_connector_taxonomies, :user_defined, using: :gin
end

def down
remove_index :core_data_connector_taxonomies, :user_defined
remove_column :core_data_connector_taxonomies, :user_defined
end
end
4 changes: 3 additions & 1 deletion db/schema.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 5115ad3

Please sign in to comment.