11import React , { useEffect , useState } from "react" ;
2- import { createPolicy , doPolicyFlowFromString , readPolicyDirectory } from "../util/PolicyManagement" ;
2+ import { createPolicy , doPolicyFlowFromString , readPolicy , readPolicyDirectory } from "../util/PolicyManagement" ;
33import PolicyModal from "./Modal" ;
44import { SimplePolicy } from "../util/policyCreation" ;
55
66export default function Home ( ) {
77
8- const [ policyList , setPolicyList ] = useState ( [ ] as SimplePolicy [ ] )
8+ const [ policyList , setPolicyList ] = useState < SimplePolicy [ ] > ( [ ] )
9+ const [ selectedPolicy , setSelectedPolicy ] = useState < null | string > ( null )
910
1011 useEffect ( ( ) => {
1112 async function getPolicies ( ) {
@@ -14,22 +15,27 @@ export default function Home() {
1415 }
1516 getPolicies ( )
1617 } , [ ] )
17-
1818
1919 async function addPolicy ( policyText : string ) {
2020 console . log ( 'Adding the following policy:' )
2121 console . log ( policyText )
2222 await doPolicyFlowFromString ( policyText )
23+ const policyObject = await readPolicy ( policyText )
24+ setPolicyList ( policyList . concat ( policyObject ) )
2325 }
2426
2527 function renderPolicy ( policy : SimplePolicy ) {
2628 return (
27- < div className = " policyentry" >
29+ < div key = { policy . policyLocation } className = { ` policyentry ${ policy . policyIRI === selectedPolicy ? 'selectedentry' : '' } ` } onClick = { ( ) => setSelectedPolicy ( policy . policyIRI ) } >
2830 < p > { policy . policyIRI } </ p >
2931 </ div >
3032 )
3133 }
3234
35+ const selectedPolicyText = selectedPolicy
36+ ? policyList . filter ( p => p . policyIRI === selectedPolicy ) [ 0 ] ?. policyText || ''
37+ : ''
38+
3339 return (
3440 < div id = "policypage" >
3541 < div id = "policymanagementcontainer" className = "rowcontainer" >
@@ -42,9 +48,9 @@ export default function Home() {
4248 < PolicyModal addPolicy = { addPolicy } />
4349 </ div >
4450 < div id = "PolicyDisplayScreen" >
45- < textarea id = "policyview" readOnly />
51+ < textarea id = "policyview" value = { selectedPolicyText } readOnly />
4652 </ div >
4753 </ div >
4854 </ div >
4955 )
50- }
56+ }
0 commit comments