Enhance API Server Context and Template Helpers with New Features
All checks were successful
farmcontrol/farmcontrol-ui/pipeline/head This commit looks good
All checks were successful
farmcontrol/farmcontrol-ui/pipeline/head This commit looks good
- Added a new helper function 'renderDocumentTemplate' to the fcTemplateHelpers for improved document rendering capabilities. - Introduced 'mapObjectFiltersForQuery' function to streamline filter mapping in API requests, enhancing code readability and maintainability. - Updated API server context to utilize the new filter mapping function, improving data fetching logic and consistency in handling object filters. - Refactored sorting parameters in API requests to use 'sortProperty' and 'sortOrder' for better clarity and alignment with naming conventions.
This commit is contained in:
parent
c5b421533f
commit
6dcc5759f4
@ -105,5 +105,6 @@ export const fcTemplateElements = allTags.map((name) => {
|
||||
export const fcTemplateHelpers = {
|
||||
listObjects: async () => [],
|
||||
getObject: async () => ({}),
|
||||
formatDate: () => ''
|
||||
formatDate: () => '',
|
||||
renderDocumentTemplate: async () => ''
|
||||
}
|
||||
|
||||
@ -76,6 +76,23 @@ const stableStringify = (value) => {
|
||||
const getObjectTypeSubscriptionKey = (objectType, filter = {}) =>
|
||||
`${objectType}:${stableStringify(filter || {})}`
|
||||
|
||||
const mapObjectFiltersForQuery = (filter = {}, type) => {
|
||||
const newFilter = { ...filter }
|
||||
if (filter == null || Object.keys(filter).length === 0) return newFilter
|
||||
|
||||
const model = getModelByName(type)
|
||||
if (model.name === 'unknown') return newFilter
|
||||
|
||||
for (const key of Object.keys(filter)) {
|
||||
const property = model?.properties?.find((p) => p.name === key)
|
||||
if (property && property.type === 'object') {
|
||||
newFilter[`${key}._id`] = filter[key]?._id ?? filter[key]
|
||||
delete newFilter[key]
|
||||
}
|
||||
}
|
||||
return newFilter
|
||||
}
|
||||
|
||||
const getObjectTypeSubscriptionArgs = (filterOrCallback, callback) => {
|
||||
if (typeof filterOrCallback === 'function') {
|
||||
return { filter: {}, callback: filterOrCallback }
|
||||
@ -1112,22 +1129,7 @@ const ApiServerProvider = ({ children }) => {
|
||||
onDataChange
|
||||
} = params
|
||||
|
||||
let newFilter = { ...filter }
|
||||
|
||||
if (filter != null && Object.keys(filter).length > 0) {
|
||||
const model = getModelByName(type)
|
||||
|
||||
if (model.name !== 'unknown') {
|
||||
for (const key of Object.keys(filter)) {
|
||||
const property = model?.properties?.find((p) => p.name === key)
|
||||
if (property && property.type === 'object') {
|
||||
const value = filter[key]
|
||||
newFilter[`${key}._id`] = value?._id ?? value
|
||||
delete newFilter[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const newFilter = mapObjectFiltersForQuery(filter, type)
|
||||
|
||||
logger.debug('Fetching table data from:', type, {
|
||||
page,
|
||||
@ -1144,8 +1146,8 @@ const ApiServerProvider = ({ children }) => {
|
||||
page,
|
||||
limit,
|
||||
...newFilter,
|
||||
sort: sorter.field,
|
||||
order: sorter.order
|
||||
sortProperty: sorter.field,
|
||||
sortOrder: sorter.order
|
||||
},
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
@ -1182,22 +1184,7 @@ const ApiServerProvider = ({ children }) => {
|
||||
const getObjectNeighbors = async (type, params = {}) => {
|
||||
const { id, filter = {}, sorter = {} } = params
|
||||
|
||||
let newFilter = { ...filter }
|
||||
|
||||
if (filter != null && Object.keys(filter).length > 0) {
|
||||
const model = getModelByName(type)
|
||||
|
||||
if (model.name !== 'unknown') {
|
||||
for (const key of Object.keys(filter)) {
|
||||
const property = model?.properties?.find((p) => p.name === key)
|
||||
if (property && property.type === 'object') {
|
||||
const value = filter[key]
|
||||
newFilter[`${key}._id`] = value?._id ?? value
|
||||
delete newFilter[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const newFilter = mapObjectFiltersForQuery(filter, type)
|
||||
|
||||
logger.debug('Fetching object neighbors from:', type, {
|
||||
id,
|
||||
@ -1212,8 +1199,8 @@ const ApiServerProvider = ({ children }) => {
|
||||
params: {
|
||||
id,
|
||||
...newFilter,
|
||||
sort: sorter.field,
|
||||
order: sorter.order
|
||||
sortProperty: sorter.field,
|
||||
sortOrder: sorter.order
|
||||
},
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
@ -1588,8 +1575,8 @@ const ApiServerProvider = ({ children }) => {
|
||||
const response = await axios.get(`${config.backendUrl}/notes`, {
|
||||
params: {
|
||||
parent: getModelByName(parentType).prefix + ':' + parentId,
|
||||
sort: 'createdAt',
|
||||
order: 'ascend'
|
||||
sortProperty: 'createdAt',
|
||||
sortOrder: 'ascend'
|
||||
},
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
@ -2122,7 +2109,7 @@ const ApiServerProvider = ({ children }) => {
|
||||
|
||||
const fetchNotificationsApi = useCallback(async () => {
|
||||
const response = await axios.get(`${config.backendUrl}/notifications`, {
|
||||
params: { limit: 100, sort: 'createdAt', order: 'descend' },
|
||||
params: { limit: 100, sortProperty: 'createdAt', sortOrder: 'descend' },
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
Authorization: `Bearer ${token}`
|
||||
|
||||
@ -43,8 +43,8 @@ export const useTableData = ({
|
||||
page: pageNum,
|
||||
limit: pageSize,
|
||||
...filters,
|
||||
sort: sorter.field,
|
||||
order: sorter.order
|
||||
sortProperty: sorter.field,
|
||||
sortOrder: sorter.order
|
||||
},
|
||||
headers: {
|
||||
Accept: 'application/json'
|
||||
|
||||
@ -189,6 +189,7 @@ export const Invoice = {
|
||||
'_reference',
|
||||
'state',
|
||||
'orderType',
|
||||
'order',
|
||||
'to',
|
||||
'from',
|
||||
'invoiceDate',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user