diff --git a/src/App.js b/src/App.js index e8a9746..6cf3feb 100644 --- a/src/App.js +++ b/src/App.js @@ -35,7 +35,8 @@ function App() { />} errorElement={ } > - } @@ -43,37 +44,38 @@ function App() { loader = {detailsLoader} /> - } errorElement={ } + loader = {detailsLoader} /> - } errorElement={ } loader = {detailsLoader} /> - } errorElement={ } - loader = {detailsLoader} /> - } errorElement={ } + loader = {detailsLoader} /> - } @@ -81,21 +83,21 @@ function App() { loader = {detailsLoader} /> - } errorElement={ } - loader = {detailsLoader} /> - } errorElement={ } loader = {detailsLoader} /> + )); @@ -119,7 +121,6 @@ const detailsLoader = async ({request, params}) => { let loader = null - let url = '/' + params.module + '/' + params.model // + '/' + params.pk // default edit if( params.common_pk ) { @@ -128,6 +129,12 @@ const detailsLoader = async ({request, params}) => { } + if( String(window.location.pathname).includes('/ticket/') ) { + + url = '/' + params.module + '/ticket/' + params.model + + } + url = 'http://127.0.0.1:8002/api/v2' + url if( params.pk ) { diff --git a/src/components/Table.jsx b/src/components/Table.jsx index bfdf567..a21bd4f 100644 --- a/src/components/Table.jsx +++ b/src/components/Table.jsx @@ -3,7 +3,7 @@ import { useEffect, useId, useState } from "react"; import { apiFetch } from "../hooks/apiFetch"; import FieldData from "../functions/FieldData"; import TextField from "./form/Textfield"; -import { Link } from "react-router-dom"; +import { Link, useParams } from "react-router-dom"; /** @@ -29,10 +29,20 @@ const Table = ({ const pagefieldId = useId(); + const params = useParams(); + if( ! String(data_url_path).startsWith('/') ) { data_url_path = '/' + data_url_path } + + if( String(window.location.pathname).includes('/ticket/') ) { + + data_url_path = '/' + params.module + '/ticket/' + params.model + + } + + useEffect(() => { apiFetch( diff --git a/src/functions/FieldData.js b/src/functions/FieldData.js index ad8c66e..94ee85e 100644 --- a/src/functions/FieldData.js +++ b/src/functions/FieldData.js @@ -107,67 +107,99 @@ export default function FieldData({ field_data = ( <> - {data[field_name].map((icon) => { - return ( - - - - ) - })} + {data[field_name].map((icon) => { + return ( + + + + ) + })} ) break; + case 'GenericField': case 'Relationship': case 'Serializer': - if( data[field_name] === null ) { - - field_data = '-' + if( fields[field_name].relationship_type === 'ManyToMany' ) { - } else if( typeof(data[field_name]) === 'object' ){ - - if( 'url' in data[field_name] ) { + if( typeof (data[field_name]) === 'object' ) { field_data = ( - {data[field_name].display_name} - ) - } else { + data[field_name].map((field) => { - field_data = data[field_name].display_name + if( 'url' in field ) { + return (''); + + } else { + + return ( + <> + {field.display_name}  + + ); + } + }) + ) } } else { - field_data = data[field_name] + if( data[field_name] === null ) { + + field_data = '-' + + } else if( typeof (data[field_name] ) === 'object' ) { + + if( 'url' in data[field_name] ) { + + field_data = ( + {data[field_name].display_name} + ) + + } else { + field_data = data[field_name].display_name + + } + + } else if( typeof (data[field_name]) === 'list' ) { + + field_data = 'data[field_name]' + + } else { + + field_data = data[field_name] + + } } break; - case 'JSON': + case 'JSON': let markdown = "``` json" - + "\r\n\r\n" - + JSON.stringify( data[field_name], null, 4 ) - + "\r\n\r\n" - + "```" - + "\r\n" + + "\r\n\r\n" + + JSON.stringify(data[field_name], null, 4) + + "\r\n\r\n" + + "```" + + "\r\n" - field_data = ( - - { markdown} - - ) + field_data = ( + + {markdown} + + ) - break; + break; - default: + default: - if ( + if( ( field_name === 'name' || field_name === 'title' diff --git a/src/layout/Ticket.jsx b/src/layout/Ticket.jsx index 5dfe750..d97881a 100644 --- a/src/layout/Ticket.jsx +++ b/src/layout/Ticket.jsx @@ -6,6 +6,7 @@ import TicketStatusIcon from "../components/icons/ticket/TicketStatusIcon"; import Badge from "../components/Badge"; import { ResponseException } from "../classes/Exceptions"; import TicketComment from "../components/page/ticket/Comment"; +import { apiFetch } from "../hooks/apiFetch"; @@ -23,94 +24,78 @@ const Ticket = () => { useEffect(() => { - fetch('http://localhost:8003/api/' + params.module + '/' + params.model + '/' + params.model_id + '/option') - - .then(response => { - - if( ! response.ok ) { - - throw new ResponseException(response) - - } - - return response.json() - - }) - - .then(data => { + apiFetch( + params.module + '/ticket/' + params.model + '/' + params.pk, + (data) =>{ setMetaData(data) - }) - - .catch( err => { - - throw Error(err) - - }) + }, + 'OPTIONS' + ) }, [params]) useEffect(() => { - fetch('http://localhost:8003/api/' + params.module + '/' + params.model + '/2/comments') + // fetch('http://localhost:8003/api/' + params.module + '/ticket/' + params.model + '/2/comments') - .then(response => { + // .then(response => { - if( ! response.ok ) { + // if( ! response.ok ) { - throw new ResponseException(response) + // throw new ResponseException(response) - } + // } - return response.json() + // return response.json() - }) + // }) - .then(data => { + // .then(data => { - setComments(data.results) + // setComments(data.results) - }) + // }) - .catch( err => { + // .catch( err => { - throw Error(err) + // throw Error(err) - }) + // }) }, [params]) useEffect(() => { - fetch('http://localhost:8003/api/' + params.module + '/' + params.model + '/2/comments/option') + // fetch('http://localhost:8003/api/' + params.module + '/' + params.model + '/2/comments/option') - .then(response => { + // .then(response => { - if( ! response.ok ) { + // if( ! response.ok ) { - throw new ResponseException(response) + // throw new ResponseException(response) - } + // } - return response.json() + // return response.json() - }) + // }) - .then(data => { + // .then(data => { - setCommentMetaData(data) + // setCommentMetaData(data) - }) + // }) - .catch( err => { + // .catch( err => { - throw Error(err) + // throw Error(err) - }) + // }) }, [params]) @@ -171,7 +156,13 @@ const Ticket = () => {
- . + + +