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 = {
|
export const fcTemplateHelpers = {
|
||||||
listObjects: async () => [],
|
listObjects: async () => [],
|
||||||
getObject: async () => ({}),
|
getObject: async () => ({}),
|
||||||
formatDate: () => ''
|
formatDate: () => '',
|
||||||
|
renderDocumentTemplate: async () => ''
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,6 +76,23 @@ const stableStringify = (value) => {
|
|||||||
const getObjectTypeSubscriptionKey = (objectType, filter = {}) =>
|
const getObjectTypeSubscriptionKey = (objectType, filter = {}) =>
|
||||||
`${objectType}:${stableStringify(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) => {
|
const getObjectTypeSubscriptionArgs = (filterOrCallback, callback) => {
|
||||||
if (typeof filterOrCallback === 'function') {
|
if (typeof filterOrCallback === 'function') {
|
||||||
return { filter: {}, callback: filterOrCallback }
|
return { filter: {}, callback: filterOrCallback }
|
||||||
@ -1112,22 +1129,7 @@ const ApiServerProvider = ({ children }) => {
|
|||||||
onDataChange
|
onDataChange
|
||||||
} = params
|
} = params
|
||||||
|
|
||||||
let newFilter = { ...filter }
|
const newFilter = mapObjectFiltersForQuery(filter, type)
|
||||||
|
|
||||||
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]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.debug('Fetching table data from:', type, {
|
logger.debug('Fetching table data from:', type, {
|
||||||
page,
|
page,
|
||||||
@ -1144,8 +1146,8 @@ const ApiServerProvider = ({ children }) => {
|
|||||||
page,
|
page,
|
||||||
limit,
|
limit,
|
||||||
...newFilter,
|
...newFilter,
|
||||||
sort: sorter.field,
|
sortProperty: sorter.field,
|
||||||
order: sorter.order
|
sortOrder: sorter.order
|
||||||
},
|
},
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
@ -1182,22 +1184,7 @@ const ApiServerProvider = ({ children }) => {
|
|||||||
const getObjectNeighbors = async (type, params = {}) => {
|
const getObjectNeighbors = async (type, params = {}) => {
|
||||||
const { id, filter = {}, sorter = {} } = params
|
const { id, filter = {}, sorter = {} } = params
|
||||||
|
|
||||||
let newFilter = { ...filter }
|
const newFilter = mapObjectFiltersForQuery(filter, type)
|
||||||
|
|
||||||
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]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.debug('Fetching object neighbors from:', type, {
|
logger.debug('Fetching object neighbors from:', type, {
|
||||||
id,
|
id,
|
||||||
@ -1212,8 +1199,8 @@ const ApiServerProvider = ({ children }) => {
|
|||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
...newFilter,
|
...newFilter,
|
||||||
sort: sorter.field,
|
sortProperty: sorter.field,
|
||||||
order: sorter.order
|
sortOrder: sorter.order
|
||||||
},
|
},
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
@ -1588,8 +1575,8 @@ const ApiServerProvider = ({ children }) => {
|
|||||||
const response = await axios.get(`${config.backendUrl}/notes`, {
|
const response = await axios.get(`${config.backendUrl}/notes`, {
|
||||||
params: {
|
params: {
|
||||||
parent: getModelByName(parentType).prefix + ':' + parentId,
|
parent: getModelByName(parentType).prefix + ':' + parentId,
|
||||||
sort: 'createdAt',
|
sortProperty: 'createdAt',
|
||||||
order: 'ascend'
|
sortOrder: 'ascend'
|
||||||
},
|
},
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
@ -2122,7 +2109,7 @@ const ApiServerProvider = ({ children }) => {
|
|||||||
|
|
||||||
const fetchNotificationsApi = useCallback(async () => {
|
const fetchNotificationsApi = useCallback(async () => {
|
||||||
const response = await axios.get(`${config.backendUrl}/notifications`, {
|
const response = await axios.get(`${config.backendUrl}/notifications`, {
|
||||||
params: { limit: 100, sort: 'createdAt', order: 'descend' },
|
params: { limit: 100, sortProperty: 'createdAt', sortOrder: 'descend' },
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json',
|
Accept: 'application/json',
|
||||||
Authorization: `Bearer ${token}`
|
Authorization: `Bearer ${token}`
|
||||||
|
|||||||
@ -43,8 +43,8 @@ export const useTableData = ({
|
|||||||
page: pageNum,
|
page: pageNum,
|
||||||
limit: pageSize,
|
limit: pageSize,
|
||||||
...filters,
|
...filters,
|
||||||
sort: sorter.field,
|
sortProperty: sorter.field,
|
||||||
order: sorter.order
|
sortOrder: sorter.order
|
||||||
},
|
},
|
||||||
headers: {
|
headers: {
|
||||||
Accept: 'application/json'
|
Accept: 'application/json'
|
||||||
|
|||||||
@ -189,6 +189,7 @@ export const Invoice = {
|
|||||||
'_reference',
|
'_reference',
|
||||||
'state',
|
'state',
|
||||||
'orderType',
|
'orderType',
|
||||||
|
'order',
|
||||||
'to',
|
'to',
|
||||||
'from',
|
'from',
|
||||||
'invoiceDate',
|
'invoiceDate',
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user