1- import { patientLib } from ' ./patient-lib.js' ;
2- import { navControler } from ' ./patient-nav-controler.js'
1+ import { patientLib } from " ./patient-lib.js" ;
2+ import { navControler } from " ./patient-nav-controler.js" ;
33/**
4- * UI management code.
4+ * UI management code.
55 * Relies on patientLib for API calls and data management
6- *
7- * @param {* } event
6+ *
7+ * @param {* } event
88 */
99let navData ;
1010window . onload = async ( event ) => {
1111 navData = await navControler . setNavComponents ( ) ;
12- console . log ( ' ## navData' , navData ) ;
12+ console . log ( " ## navData" , navData ) ;
1313 const { patientApiEndpoint, questionaryId, formKey } = navData ;
14- console . log ( ' ## patientApiEndpoint:' , patientApiEndpoint ) ;
14+ console . log ( " ## patientApiEndpoint:" , patientApiEndpoint ) ;
1515 await patientLib . connect ( patientApiEndpoint , questionaryId ) ;
1616 // - form title
17- const formTitle = document . getElementById ( ' card-questionnary-details-title' ) ;
17+ const formTitle = document . getElementById ( " card-questionnary-details-title" ) ;
1818 formTitle . innerHTML = patientLib . getFormTitle ( questionaryId ) ;
19- refreshForm ( ) ;
20- }
19+ const dateInput = document . getElementById ( "form-date" ) ;
20+ dateInput . value = new Date ( ) . toISOString ( ) . split ( "T" ) [ 0 ] ; // format YYYY-MM-DD
21+ dateInput . onfocusout = function ( ) {
22+ const date = dateInput . valueAsDate ;
23+ console . log ( "## Focus Out Date" , date ) ;
24+ refreshForm ( date ) ;
25+ } ;
2126
27+ refreshForm ( dateInput . valueAsDate ) ;
28+ refreshDataTable ( ) ;
29+ } ;
2230
23- async function refreshForm ( ) {
31+ async function refreshForm ( date ) {
32+ console . log ( "## Refresh Form Date:" , date ) ;
2433 const { questionaryId, formKey } = navData ;
2534 // -- content
26- ; console . log ( )
27- const formData = await patientLib . getFormContent ( questionaryId , formKey )
35+ console . log ( ) ;
36+ const formData = await patientLib . getFormContent (
37+ questionaryId ,
38+ formKey ,
39+ date
40+ ) ;
2841 updateFormContent ( formData ) ;
29- document . getElementById ( ' submit-button-list' ) . onclick = function ( ) {
30- submitForm ( formData ) ;
42+ document . getElementById ( " submit-button-list" ) . onclick = function ( ) {
43+ submitForm ( formData , date ) ;
3144 } ;
3245}
3346
47+ async function refreshDataTable ( date ) {
48+ const { questionaryId, formKey } = navData ;
49+ const tableData = await patientLib . getHistoricalContent (
50+ questionaryId ,
51+ formKey
52+ ) ;
53+ const table = document . getElementById ( "historical-data" ) ;
54+ table . innerHTML = "" ;
55+
56+ // -- headers
57+ const headerRow = table . insertRow ( - 1 ) ;
58+ const headerDateCell = document . createElement ( "TH" ) ;
59+ headerDateCell . innerHTML = "Date" ;
60+ headerRow . appendChild ( headerDateCell ) ;
61+ for ( const th of tableData . tableHeaders ) {
62+ const headerCell = document . createElement ( "TH" ) ;
63+ headerCell . innerHTML = th . label ;
64+ headerRow . appendChild ( headerCell ) ;
65+ }
66+ for ( const [ dateStr , data ] of Object . entries ( tableData . valuesByDate ) ) {
67+ const row = table . insertRow ( - 1 ) ;
68+ const cellDate = row . insertCell ( - 1 ) ;
69+ cellDate . innerHTML = dateStr ;
70+ for ( const th of tableData . tableHeaders ) {
71+ const cell = row . insertCell ( - 1 ) ;
72+ cell . innerHTML = data [ th . fieldId ] || '' ;
73+ }
74+ }
75+
76+ console . log ( "## tabledata" , tableData ) ;
77+ }
3478
3579// ------- Form -------- //
3680
3781/**
3882 * Take the from content from the definition and actual values and create the HTML
3983 */
4084async function updateFormContent ( formData ) {
41- console . log ( ' Form content:' , formData ) ;
42-
85+ console . log ( " Form content:" , formData ) ;
86+
4387 // Append the HTML to the form
44- document . getElementById ( ' inputs-list' ) . innerHTML = '' ; // Clear previous content
88+ document . getElementById ( " inputs-list" ) . innerHTML = "" ; // Clear previous content
4589 for ( let i = 0 ; i < formData . length ; i ++ ) {
4690 const formField = formData [ i ] ;
4791 const fieldId = formField . id ;
48- const fieldValue = ( formField . value != null ) ? formField . value : '' ;
92+ const fieldValue = formField . value != null ? formField . value : "" ;
4993 const fieldType = formField . type ;
5094 const fieldLabel = formField . label ;
51-
95+
5296 // Create the HTML for the form field
5397 let fieldHTML = `\n<BR><label for="${ fieldId } ">${ fieldLabel } </label>` ;
54- if ( fieldType === ' text' || fieldType === ' number' ) {
98+ if ( fieldType === " text" || fieldType === " number" ) {
5599 fieldHTML += `<input type="${ fieldType } " id="${ fieldId } " value="${ fieldValue } " class="form-control"/>` ;
56- } else if ( fieldType === ' select' ) {
100+ } else if ( fieldType === " select" ) {
57101 fieldHTML += `<select id="${ fieldId } " class="form-control">` ;
58102 fieldHTML += `<option value="">--</option>` ;
59103 for ( const option of formField . options ) {
60- const selected = ( option . value === fieldValue ) ? ' selected' : '' ;
104+ const selected = option . value === fieldValue ? " selected" : "" ;
61105 fieldHTML += `<option value="${ option . value } " ${ selected } >${ option . label } </option>` ;
62106 }
63107 fieldHTML += `</select>` ;
64- } else if ( fieldType === ' date' ) {
108+ } else if ( fieldType === " date" ) {
65109 fieldHTML += `<input type="date" id="${ fieldId } " value="${ fieldValue } " class="form-control"/>` ;
66110 }
67-
68- document . getElementById ( ' inputs-list' ) . innerHTML += fieldHTML ;
111+
112+ document . getElementById ( " inputs-list" ) . innerHTML += fieldHTML ;
69113 }
70114}
71115
72116/**
73117 * Submit the form and send the data to the API
74118 */
75- async function submitForm ( formData ) {
119+ async function submitForm ( formData , date ) {
76120 const values = { } ;
77121 for ( let i = 0 ; i < formData . length ; i ++ ) {
78122 const field = formData [ i ] ;
79123 const fieldId = field . id ;
80124 const formField = document . getElementById ( fieldId ) ;
81125 // Store the value in the values object
82- if ( field . type === ' date' ) {
83- values [ field . id ] = formField . valueAsDate ;
126+ if ( field . type === " date" ) {
127+ values [ field . id ] = formField . valueAsDate ;
84128 } else {
85- values [ field . id ] = formField . value . trim ( ) ;
86- }
129+ values [ field . id ] = formField . value . trim ( ) ;
130+ }
87131 }
88- await patientLib . handleFormSubmit ( formData , values ) ;
89- alert ( ' Form submitted successfully' ) ;
90- } ;
132+ await patientLib . handleFormSubmit ( formData , values , date ) ;
133+ alert ( " Form submitted successfully" ) ;
134+ }
0 commit comments