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 = () => {