reneco-advanced-input-module 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/.editorconfig +15 -0
  2. package/.prettierrc.json +13 -0
  3. package/LICENSE +21 -0
  4. package/api-key-inject.js +46 -0
  5. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  6. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  7. package/dist/cjs/file-uploader.voice-input-module.entry.cjs.js.map +1 -0
  8. package/dist/cjs/file-uploader_2.cjs.entry.js +1319 -0
  9. package/dist/cjs/file-uploader_2.cjs.entry.js.map +1 -0
  10. package/dist/cjs/index-BTSzTkSZ.js +1494 -0
  11. package/dist/cjs/index-BTSzTkSZ.js.map +1 -0
  12. package/dist/cjs/index.cjs.js +5 -0
  13. package/dist/cjs/index.cjs.js.map +1 -0
  14. package/dist/cjs/loader.cjs.js +16 -0
  15. package/dist/cjs/loader.cjs.js.map +1 -0
  16. package/dist/cjs/voice-input-module.cjs.js +28 -0
  17. package/dist/cjs/voice-input-module.cjs.js.map +1 -0
  18. package/dist/collection/collection-manifest.json +13 -0
  19. package/dist/collection/components/file-uploader/file-uploader.css +26 -0
  20. package/dist/collection/components/file-uploader/file-uploader.js +130 -0
  21. package/dist/collection/components/file-uploader/file-uploader.js.map +1 -0
  22. package/dist/collection/components/voice-input-module/voice-input-module.css +251 -0
  23. package/dist/collection/components/voice-input-module/voice-input-module.js +875 -0
  24. package/dist/collection/components/voice-input-module/voice-input-module.js.map +1 -0
  25. package/dist/collection/index.js +12 -0
  26. package/dist/collection/index.js.map +1 -0
  27. package/dist/collection/services/audio-recorder.service.js +66 -0
  28. package/dist/collection/services/audio-recorder.service.js.map +1 -0
  29. package/dist/collection/services/llm.service.js +193 -0
  30. package/dist/collection/services/llm.service.js.map +1 -0
  31. package/dist/collection/services/speech-to-text.service.js +62 -0
  32. package/dist/collection/services/speech-to-text.service.js.map +1 -0
  33. package/dist/collection/types/form-schema.types.js +2 -0
  34. package/dist/collection/types/form-schema.types.js.map +1 -0
  35. package/dist/collection/types/service-providers.types.js +2 -0
  36. package/dist/collection/types/service-providers.types.js.map +1 -0
  37. package/dist/collection/utils/schema-converter.js +422 -0
  38. package/dist/collection/utils/schema-converter.js.map +1 -0
  39. package/dist/components/file-uploader.d.ts +11 -0
  40. package/dist/components/file-uploader.js +9 -0
  41. package/dist/components/file-uploader.js.map +1 -0
  42. package/dist/components/file-uploader2.js +98 -0
  43. package/dist/components/file-uploader2.js.map +1 -0
  44. package/dist/components/index.d.ts +33 -0
  45. package/dist/components/index.js +4 -0
  46. package/dist/components/index.js.map +1 -0
  47. package/dist/components/voice-input-module.d.ts +11 -0
  48. package/dist/components/voice-input-module.js +1292 -0
  49. package/dist/components/voice-input-module.js.map +1 -0
  50. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  51. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  52. package/dist/esm/file-uploader.voice-input-module.entry.js.map +1 -0
  53. package/dist/esm/file-uploader_2.entry.js +1316 -0
  54. package/dist/esm/file-uploader_2.entry.js.map +1 -0
  55. package/dist/esm/index-jmc2yzBp.js +1487 -0
  56. package/dist/esm/index-jmc2yzBp.js.map +1 -0
  57. package/dist/esm/index.js +4 -0
  58. package/dist/esm/index.js.map +1 -0
  59. package/dist/esm/loader.js +14 -0
  60. package/dist/esm/loader.js.map +1 -0
  61. package/dist/esm/voice-input-module.js +24 -0
  62. package/dist/esm/voice-input-module.js.map +1 -0
  63. package/dist/index.cjs.js +1 -0
  64. package/dist/index.js +1 -0
  65. package/dist/types/components/file-uploader/file-uploader.d.ts +8 -0
  66. package/dist/types/components/voice-input-module/voice-input-module.d.ts +55 -0
  67. package/dist/types/components.d.ts +158 -0
  68. package/dist/types/index.d.ts +9 -0
  69. package/dist/types/services/audio-recorder.service.d.ts +9 -0
  70. package/dist/types/services/llm.service.d.ts +15 -0
  71. package/dist/types/services/speech-to-text.service.d.ts +11 -0
  72. package/dist/types/stencil-public-runtime.d.ts +1709 -0
  73. package/dist/types/types/form-schema.types.d.ts +70 -0
  74. package/dist/types/types/service-providers.types.d.ts +20 -0
  75. package/dist/types/utils/schema-converter.d.ts +22 -0
  76. package/dist/voice-input-module/file-uploader.voice-input-module.entry.esm.js.map +1 -0
  77. package/dist/voice-input-module/index.esm.js +2 -0
  78. package/dist/voice-input-module/index.esm.js.map +1 -0
  79. package/dist/voice-input-module/loader.esm.js.map +1 -0
  80. package/dist/voice-input-module/p-7b4f33ba.entry.js +2 -0
  81. package/dist/voice-input-module/p-7b4f33ba.entry.js.map +1 -0
  82. package/dist/voice-input-module/p-DQuL1Twl.js +2 -0
  83. package/dist/voice-input-module/p-DQuL1Twl.js.map +1 -0
  84. package/dist/voice-input-module/p-jmc2yzBp.js +3 -0
  85. package/dist/voice-input-module/p-jmc2yzBp.js.map +1 -0
  86. package/dist/voice-input-module/voice-input-module.esm.js +2 -0
  87. package/dist/voice-input-module/voice-input-module.esm.js.map +1 -0
  88. package/env-config.js +4 -0
  89. package/inject-env.js +20 -0
  90. package/package.json +37 -0
  91. package/readme.md +111 -0
  92. package/src/components/file-uploader/file-uploader.css +26 -0
  93. package/src/components/file-uploader/file-uploader.tsx +100 -0
  94. package/src/components/file-uploader/readme.md +31 -0
  95. package/src/components/voice-input-module/readme.md +114 -0
  96. package/src/components/voice-input-module/voice-input-module.css +251 -0
  97. package/src/components/voice-input-module/voice-input-module.tsx +731 -0
  98. package/src/components.d.ts +158 -0
  99. package/src/index.html +663 -0
  100. package/src/index.ts +12 -0
  101. package/src/services/audio-recorder.service.ts +74 -0
  102. package/src/services/llm.service.ts +221 -0
  103. package/src/services/speech-to-text.service.ts +72 -0
  104. package/src/types/form-schema.types.ts +78 -0
  105. package/src/types/service-providers.types.ts +22 -0
  106. package/src/utils/schema-converter.ts +494 -0
  107. package/stencil.config.ts +24 -0
  108. package/tsconfig.json +30 -0
package/src/index.html ADDED
@@ -0,0 +1,663 @@
1
+ <!DOCTYPE html>
2
+ <html dir="ltr" lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0" />
6
+ <title>Voice Input Module Demo</title>
7
+ <script type="module" src="/build/voice-input-module.esm.js"></script>
8
+ <script nomodule src="/build/voice-input-module.js"></script>
9
+ <style>
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
12
+ margin: 0;
13
+ padding: 2rem;
14
+ background: #f8fafc;
15
+ line-height: 1.6;
16
+ }
17
+ .container {
18
+ max-width: 1000px;
19
+ margin: 0 auto;
20
+ background: white;
21
+ padding: 2rem;
22
+ border-radius: 1rem;
23
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
24
+ }
25
+ h1 {
26
+ color: #1e293b;
27
+ margin-bottom: 1rem;
28
+ }
29
+ textarea {
30
+ width:800px;
31
+ height:300px;
32
+ }
33
+ .description {
34
+ color: #64748b;
35
+ margin-bottom: 2rem;
36
+ }
37
+ .demo-section {
38
+ margin: 2rem 0;
39
+ padding: 1.5rem;
40
+ background: #f8fafc;
41
+ border-radius: 0.5rem;
42
+ border: 1px solid #e2e8f0;
43
+ }
44
+ .demo-title {
45
+ font-weight: 600;
46
+ color: #374151;
47
+ margin-bottom: 1rem;
48
+ }
49
+ .schema-example {
50
+ background: #1e293b;
51
+ color: #e2e8f0;
52
+ padding: 1rem;
53
+ border-radius: 0.375rem;
54
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
55
+ font-size: 0.875rem;
56
+ overflow-x: auto;
57
+ margin: 1rem 0;
58
+ }
59
+ .result-display {
60
+ margin-top: 1rem;
61
+ padding: 1rem;
62
+ background: #f0f9ff;
63
+ border: 1px solid #0ea5e9;
64
+ border-radius: 0.375rem;
65
+ }
66
+ .setup-note {
67
+ background: #fef3c7;
68
+ border: 1px solid #f59e0b;
69
+ border-radius: 0.375rem;
70
+ padding: 1rem;
71
+ margin-bottom: 2rem;
72
+ color: #92400e;
73
+ }
74
+
75
+ .toggle-section {
76
+ margin: 1rem 0;
77
+ }
78
+
79
+ .toggle-button {
80
+ background: #3b82f6;
81
+ color: white;
82
+ border: none;
83
+ padding: 0.5rem 1rem;
84
+ border-radius: 0.375rem;
85
+ cursor: pointer;
86
+ font-size: 0.875rem;
87
+ display: flex;
88
+ align-items: center;
89
+ gap: 0.5rem;
90
+ margin-bottom: 0.5rem;
91
+ }
92
+
93
+ .toggle-button:hover {
94
+ background: #2563eb;
95
+ }
96
+
97
+ .toggle-content {
98
+ display: none;
99
+ padding: 1rem;
100
+ background: white;
101
+ border: 1px solid #e5e7eb;
102
+ border-radius: 0.375rem;
103
+ }
104
+
105
+ .toggle-content.visible {
106
+ display: block;
107
+ }
108
+
109
+ .editable-schema {
110
+ min-height: 200px;
111
+ padding: 1rem;
112
+ border: 1px solid #d1d5db;
113
+ border-radius: 0.375rem;
114
+ font-family: 'Monaco', 'Menlo', monospace;
115
+ font-size: 0.875rem;
116
+ white-space: pre-wrap;
117
+ background: #f9fafb;
118
+ width: 100%;
119
+ box-sizing: border-box;
120
+ resize: vertical;
121
+ }
122
+
123
+ .editable-schema:focus {
124
+ outline: none;
125
+ border-color: #3b82f6;
126
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
127
+ }
128
+
129
+ .debug-title {
130
+ font-weight: 600;
131
+ color: #374151;
132
+ margin-bottom: 0.5rem;
133
+ }
134
+
135
+ .debug-content {
136
+ background: #1e293b;
137
+ color: #e2e8f0;
138
+ padding: 1rem;
139
+ border-radius: 0.375rem;
140
+ font-family: 'Monaco', 'Menlo', monospace;
141
+ font-size: 0.875rem;
142
+ overflow-x: auto;
143
+ white-space: pre-wrap;
144
+ }
145
+ </style>
146
+ </head>
147
+ <body>
148
+ <div class="container">
149
+ <h1>Voice Input Module Component</h1>
150
+ <div class="setup-note">
151
+ <strong>Setup Required:</strong> This component requires OpenAI API key to be passed in options.
152
+ </div>
153
+
154
+ <div class="demo-section">
155
+ <div class="demo-title">NG component</div>
156
+ <voice-input-module
157
+ id="demo3"
158
+ form-json='{"ID":1003,"System_Name":"Adoption_End","Type":"Container","Settings":{"ID":1003,"Flex_Direction":"row","Flex_Wrap":"wrap","Align_Items":"flex-start","Field_Width":8,"Label_Translation_ID":{"fr":"Adoption_End","en":"Adoption_End"},"Description_Translation_ID":{"fr":"Adoption_End","en":"Adoption_End"},"Label":"Root"},"Children":[{"ID":2016,"System_Name":"Individual_ID","Type":"InputAutocomplete","Settings":{"Autocomplete_Start":0,"Operator":"contains","Field_Width":4,"Source_View":"Individuals","Source_Field":["Adult_ID","Egg_ID"],"Trigger_Min_Length":3,"Label_Translation_ID":{"fr":"Individual_ID","en":"Individual_ID"},"Description_Translation_ID":{"fr":"Individual_ID","en":"Individual_ID"},"Label":"Individual_ID"},"Children":[],"Is_Virtual":false,"Required":true},{"ID":2017,"System_Name":"ID","Type":"InputInteger","Settings":{"ID":1005,"Min":null,"Max":null,"Default_Value":null,"Unit":null,"Field_Width":4,"Label_Translation_ID":{"fr":"ID","en":"ID"},"Description_Translation_ID":{"fr":"ID","en":"ID"},"Label":"ID"},"Children":[],"Is_Virtual":false,"Required":true},{"ID":2018,"System_Name":"End_Of_Adoption_Cause","Type":"InputInteger","Settings":{"ID":1006,"Min":null,"Max":null,"Default_Value":null,"Unit":null,"Field_Width":4,"Label_Translation_ID":{"fr":"End_Of_Adoption_Cause","en":"End_Of_Adoption_Cause"},"Description_Translation_ID":{"fr":"End_Of_Adoption_Cause","en":"End_Of_Adoption_Cause"},"Label":"End_Of_Adoption_Cause"},"Children":[],"Is_Virtual":false,"Required":false},{"ID":2019,"System_Name":"New_Position","Type":"InputInteger","Settings":{"ID":1007,"Min":null,"Max":null,"Default_Value":null,"Unit":null,"Field_Width":4,"Label_Translation_ID":{"fr":"New_Position","en":"New_Position"},"Description_Translation_ID":{"fr":"New_Position","en":"New_Position"},"Label":"New_Position"},"Children":[],"Is_Virtual":false,"Required":true},{"ID":2020,"System_Name":"Comment","Type":"InputTextArea","Settings":{"ID":1005,"Min_Length":null,"Max_Length":null,"Default_Value":null,"Field_Width":4,"Label_Translation_ID":{"fr":"Comment","en":"Comment"},"Description_Translation_ID":{"fr":"Comment","en":"Comment"},"Label":"Comment"},"Children":[],"Is_Virtual":false,"Required":false},{"ID":2021,"System_Name":"Former_Adoptive_Father","Type":"InputTextArea","Settings":{"ID":1006,"Min_Length":null,"Max_Length":null,"Default_Value":null,"Field_Width":4,"Label_Translation_ID":{"fr":"Former Adoptive Father","en":"Former_Adoptive_Father"},"Description_Translation_ID":{"fr":"Former_Adoptive_Father","en":"Former_Adoptive_Father"},"Label":"Former_Adoptive_Father"},"Children":[],"Is_Virtual":false,"Required":false},{"ID":2022,"System_Name":"Former_Adoptive_Mother","Type":"InputTextArea","Settings":{"ID":1007,"Min_Length":null,"Max_Length":null,"Default_Value":null,"Field_Width":4,"Label_Translation_ID":{"fr":"Former_Adoptive_Mother","en":"Former_Adoptive_Mother"},"Description_Translation_ID":{"fr":"Former_Adoptive_Mother","en":"Former_Adoptive_Mother"},"Label":"Former_Adoptive_Mother"},"Children":[],"Is_Virtual":false,"Required":false},{"ID":2023,"System_Name":"Start_Date","Type":"InputDateTimePicker","Settings":{"ID":1003,"Format":null,"Default_Value":null,"Field_Width":4,"Is_Default_Value_Now":null,"Has_Future_Date":null,"Label_Translation_ID":{"fr":"Start Date","en":"Start Date"},"Description_Translation_ID":{"fr":"Start Date","en":"Start Date"},"Label":"Start_Date"},"Children":[],"Is_Virtual":false,"Required":true},{"ID":2024,"System_Name":"Test_Decimal","Type":"InputDecimal","Settings":{"ID":1003,"Min":null,"Max":null,"Default_Value":null,"Unit":null,"Field_Width":4,"Number_Of_Decimal":3,"Label_Translation_ID":{"fr":"Test_Decimal","en":"Test_Decimal"},"Description_Translation_ID":{"fr":"Test_Decimal","en":"Test_Decimal"},"Label":"Test_Decimal"},"Children":[],"Is_Virtual":false,"Required":false},{"ID":2025,"System_Name":"Test_Classap","Type":"InputClassification","Settings":{"ID":1003,"Start_Node_ID":222957,"Default_Value":null,"Is_Fullpath_Used":null,"Is_Multiple":null,"Field_Width":4,"Type":"thesaurus","Label_Translation_ID":{"fr":"Test_Classap","en":"Test_Classap"},"Description_Translation_ID":{"fr":"Test_Classap","en":"Test_Classap"},"Label":"Test_Classap"},"Children":["hello","world"],"Is_Virtual":false,"Required":false},{"ID":2026,"System_Name":"Test_Checkbox","Type":"InputCheckbox","Settings":{"ID":2,"Default_Value":null,"Field_Width":4,"Label_Translation_ID":{"fr":"Test_Checkbox","en":"Test_Checkbox"},"Description_Translation_ID":{"fr":"Test_Checkbox","en":"Test_Checkbox"},"Label":"Test_Checkbox"},"Children":[],"Is_Virtual":false,"Required":true},{"ID":2027,"System_Name":"Test_Translation_ID","Type":"InputTextTranslation","Settings":{"ID":2,"Min_Length":null,"Max_Length":null,"Default_Value":null,"Field_Width":4,"Label_Translation_ID":{"fr":"Test_Translation_ID","en":"Test_Translation_ID"},"Description_Translation_ID":{"fr":"Test_Translation_ID","en":"Test_Translation_ID"},"Label":"Test_Translation_ID"},"Children":[],"Is_Virtual":false,"Required":false}],"Is_Virtual":false,"Required":false,"Meta":{"ID":3,"System_Name":"Protocol"},"Object_Type":{"ID":81,"System_Name":"Adoption_End"}}'
159
+ api-key="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"
160
+ render-form="true"
161
+ display-status="true"
162
+ debug="true"
163
+ context="ng"
164
+ classification-root-url="http://localhost:8888"
165
+ voice-or-ocr="both"
166
+ >
167
+ </voice-input-module>
168
+ </div>
169
+
170
+ <!-- NOTE STEP 1 -->
171
+ <div class="demo-section">
172
+ <div class="demo-title">Ecoll component</div>
173
+ <voice-input-module
174
+ id="demo2"
175
+ form-json='[{"name":"general informations","label":"Informations générales de l&apos;événement","role":"main","class":"general-infos","items":[{"type":"number","name":"Event_ID","label":"ID","readonly":true,"disabled":false},{"type":"text","name":"Subject","label":"Sujet","readonly":true,"tooltip_value":"M19N08550","disabled":false},{"type":"date","name":"Start_Date","label":"Date de l&apos;événement","required":true,"disabled":false},{"type":"text","name":"TUse_Login","label":"Opérateur","readonly":true,"disabled":false}]},{"name":"eventdetails","label":"Détails de l&apos;événement","role":"event-details","class":"event-details","items":[{"name":"Sample_Status","label":"Statut","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":2014257,"StartNodeID":2014257,"lng":"fr","Reach":[2014257]},"multiple":false,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":true,"defaultValue":["2014257"]}},"dynprop":{"ID":1792,"Name":"Sample_Status","Label_EN":"Status","Label_FR":"Statut","Type":"thesaurus","Is_Required":true,"Is_Readonly":true,"Min_Value":0,"Default_Value":"2014257","External_Info":2014257,"Linked_Entity":"Sample","Linked_Field":"Sample_Status","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":true,"readonly":true,"editable":true,"extraction_field":false,"hide":false,"disabled":false},{"name":"Sample_Type","label":"Type d&apos;échantillon","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":"2014261","StartNodeID":"2014261","lng":"fr"},"multiple":false,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":false}},"dynprop":{"ID":1793,"Name":"Sample_Type","Label_EN":"Sample type","Label_FR":"Type d&apos;échantillon","Type":"thesaurus","Is_Required":true,"Is_Readonly":false,"Min_Value":0,"External_Info":"2014261","Linked_Entity":"Sample","Linked_Field":"Sample_Type","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":true,"readonly":false,"editable":true,"extraction_field":false,"hide":false,"disabled":false},{"name":"Context","label":"Contexte","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":"2014303","StartNodeID":"2014303","lng":"fr"},"multiple":false,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":false}},"dynprop":{"ID":1794,"Name":"Context","Label_EN":"Context","Label_FR":"Contexte","Type":"thesaurus","Is_Required":true,"Is_Readonly":false,"Min_Value":0,"External_Info":"2014303","Linked_Entity":"Sample","Linked_Field":"Context","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":true,"readonly":false,"editable":true,"extraction_field":false,"hide":false,"disabled":false},{"name":"Purpose","label":"But","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":"168027","StartNodeID":"168027","lng":"fr"},"multiple":false,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":false}},"dynprop":{"ID":1795,"Name":"Purpose","Label_EN":"Purpose","Label_FR":"But","Type":"thesaurus","Is_Required":true,"Is_Readonly":false,"Min_Value":0,"External_Info":"168027","Linked_Entity":"Sample","Linked_Field":"Purpose","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":true,"readonly":false,"editable":true,"extraction_field":false,"hide":false,"disabled":false},{"name":"Position","label":"Position","icon":"reneco-localtion","type":"position","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Position","language":"fr","options":{"IsDeprecated":false,"startNode":213847,"StartNodeID":213847,"lng":"fr","Reach":[213847]},"multiple":false,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":true,"defaultValue":["213847"]}},"dynprop":{"ID":1796,"Name":"Position","Label_EN":"Location","Label_FR":"Position","Type":"position","Is_Required":true,"Is_Readonly":true,"Min_Value":0,"Default_Value":"213847","External_Info":213847,"Linked_Entity":"Sample","Linked_Field":"Position","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":true,"readonly":true,"editable":true,"extraction_field":false,"hide":false,"disabled":false},{"name":"Analysis_Request","label":"Demande d&apos;analyse","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":"81768","StartNodeID":"81768","lng":"fr"},"multiple":true,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":false}},"dynprop":{"ID":1797,"Name":"Analysis_Request","Label_EN":"Analysis request","Label_FR":"Demande d&apos;analyse","Type":"thesaurus","Is_Required":true,"Is_Readonly":false,"Min_Value":0,"External_Info":"start_node_id=81768|multiple=true","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":true,"readonly":false,"editable":true,"extraction_field":false,"hide":false,"disabled":false},{"name":"Targeted_Pathogen","label":"Pathogène ciblé","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":"87227","StartNodeID":"87227","lng":"fr"},"multiple":true,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":false}},"dynprop":{"ID":1798,"Name":"Targeted_Pathogen","Label_EN":"Targeted pathogen","Label_FR":"Pathogène ciblé","Type":"thesaurus","Is_Required":false,"Is_Readonly":false,"Min_Value":0,"External_Info":"start_node_id=87227|multiple=true","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":false,"readonly":false,"editable":true,"extraction_field":false,"hide":false,"disabled":false},{"name":"Anatomy","label":"Anatomie","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":"78255","StartNodeID":"78255","lng":"fr"},"multiple":true,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":false}},"dynprop":{"ID":1799,"Name":"Anatomy","Label_EN":"Anatomy","Label_FR":"Anatomie","Type":"thesaurus","Is_Required":false,"Is_Readonly":false,"Min_Value":0,"External_Info":"start_node_id=78255|multiple=true","Required_When":"{input:Sample_Type|op:like|value:Organ}|{input:Sample_Type|op:like|value:FTA}|{input:Sample_Type|op:like|value:Swab}|{input:Sample_Type|op:like|value:Prepared slide}|{input:Sample_Type|op:=|value:DNA}|{input:Sample_Type|op:like|value:RNA}","Hide_When":"{input:Sample_Type|op:notlike|value:Organ}|{input:Sample_Type|op:notlike|value:FTA}|{input:Sample_Type|op:notlike|value:Swab}|{input:Sample_Type|op:notlike|value:Prepared slide}|{input:Sample_Type|op:notlike|value:Faeces}|{input:Sample_Type|op:!=|value:DNA}|{input:Sample_Type|op:notlike|value:RNA}|{input:Sample_Type|op:notlike|value:Blood}","Disabled_When":"{input:Sample_Type|op:like|value:Faeces}|{input:Sample_Type|op:like|value:Blood}","Default_Value_When":"{input:Sample_Type|op:like|value:Faeces|default_value:81126}|{input:Sample_Type|op:like|value:Blood|default_value:2017986}","Linked_Entity":"Sample","Linked_Field":"Anatomy","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":false,"readonly":false,"editable":true,"extraction_field":false,"required_when":[{"input":"Sample_Type","op":"like","value":"Organ"},{"input":"Sample_Type","op":"like","value":"FTA"},{"input":"Sample_Type","op":"like","value":"Swab"},{"input":"Sample_Type","op":"like","value":"Prepared slide"},{"input":"Sample_Type","op":"=","value":"DNA"},{"input":"Sample_Type","op":"like","value":"RNA"}],"hide_when":[{"input":"Sample_Type","op":"notlike","value":"Organ"},{"input":"Sample_Type","op":"notlike","value":"FTA"},{"input":"Sample_Type","op":"notlike","value":"Swab"},{"input":"Sample_Type","op":"notlike","value":"Prepared slide"},{"input":"Sample_Type","op":"notlike","value":"Faeces"},{"input":"Sample_Type","op":"!=","value":"DNA"},{"input":"Sample_Type","op":"notlike","value":"RNA"},{"input":"Sample_Type","op":"notlike","value":"Blood"}],"disabled_when":[{"input":"Sample_Type","op":"like","value":"Faeces"},{"input":"Sample_Type","op":"like","value":"Blood"}],"default_value_when":[{"input":"Sample_Type","op":"like","value":"Faeces","default_value":"81126"},{"input":"Sample_Type","op":"like","value":"Blood","default_value":"2017986"}],"hide":true,"disabled":false},{"name":"FTA_Card_Code","label":"Code de carte FTA","icon":"","type":"text","dynprop":{"ID":1800,"Name":"FTA_Card_Code","Label_EN":"FTA card code","Label_FR":"Code de carte FTA","Type":"string","Is_Required":false,"Is_Readonly":false,"Min_Value":0,"Required_When":"{input:Sample_Type|op:like|value:FTA}","Hide_When":"{input:Sample_Type|op:notlike|value:FTA}","Linked_Entity":"Sample","Linked_Field":"FTA_Card_Code","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":false,"readonly":false,"editable":true,"extraction_field":false,"required_when":[{"input":"Sample_Type","op":"like","value":"FTA"}],"hide_when":[{"input":"Sample_Type","op":"notlike","value":"FTA"}],"hide":true,"disabled":false},{"name":"FTA_Card_Position","label":"Emplacement sur la carte","icon":"reneco-logo-thesaurus","type":"thesaurus","config":{"options":{"source":"webservice","origin":"classification","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzUxMiJ9.eyJpc3MiOiJOU3BvcnRhbCIsInN1YiI6IjE4NzUiLCJ1c2VybmFtZSI6Iktvc3Rob3dhIEx1ZG92aWMiLCJ1c2VybGFuZ3VhZ2UiOiJlbiIsImV4cCI6MTc2NDA2NDk1Nywicm9sZXMiOnsiREVWIFRSQUNLIjoiQWRtaW5pc3RyYXRldXIiLCJQb3J0YWwiOiJBZG1pbmlzdHJhdGV1ciIsIlBhcmFtZXRlcnMiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBQYXJhbWV0ZXJzIjoiQWRtaW5pc3RyYXRldXIiLCJOUyBUaFx1MDBlOXNhdXJ1cyAocmVhZCBvbmx5KSI6IkFkbWluaXN0cmF0ZXVyIiwiUG9zaXRpb24gKHJlYWQgb25seSkiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIEVudG9tb2xvZ3kiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBEYXRhIEVudHJ5IFVuZHVsYXRhIjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gTWFuYWdlbWVudCBVbmR1bGF0YSI6IkFkbWluaXN0cmF0ZXVyIiwiU2VjdXJpdGUiOiJBZG1pbmlzdHJhdGV1ciIsImVDb2xsZWN0aW9uIFZldGVyaW5hcnkiOiJBZG1pbmlzdHJhdGV1ciIsIkRFViBlQ29sbGVjdGlvbiBWZXRlcmluYXJ5IjoiQWRtaW5pc3RyYXRldXIiLCJSZXByb2R1Y3Rpb24gRGF0YSBFbnRyeSBVbmR1bGF0YSBERVYiOiJBZG1pbmlzdHJhdGV1ciIsIlJlcHJvZHVjdGlvbiBNYW5hZ2VtZW50IFVuZHVsYXRhIERFViI6IkFkbWluaXN0cmF0ZXVyIiwiREVWIGVDb2xsZWN0aW9uIEJvdGEiOiJBZG1pbmlzdHJhdGV1ciJ9fQ.qNQfo8hqzyyrEOJSi_32wvxCsd2K2jX3FxzJe-CSpXNU1ABvc7pCyqXVqpTIB2VA2xUioNlGnvTTCNzb4fuYjYv46QaTeCzcTcsjc3Mf-1coeBkufov7CGF2mCcA-MaE4Zpzgz01qP1Ud9JMJ9glldwkNRPXt9rjOLjoEsq88ITgC8i0cpFArCzzRdqx5PbQMcaQXcnVjU2y4k1qASLm6UxvO5W6TnDyuRAKfcGeN7iMEP8wvdI-UrwvCLyNb6mKk3VtHfuvc--TO9HrCyTtxxWnXLltWsEu4ne1wGx7PogUFY-wST_mqjEg2SnJ8GzdR0My4LW8lAWJlSzVCI2pNA","url":"https://nsdev01.int/ng/api/v1/classification/getTree/Thesaurus","language":"fr","options":{"IsDeprecated":false,"startNode":"2014322","StartNodeID":"2014322","lng":"fr"},"multiple":false,"searchPlaceholder":"Search","mode":"input","loading":"display","displayTree":true,"isFullpath":false,"displayRootNode":false}},"dynprop":{"ID":1801,"Name":"FTA_Card_Position","Label_EN":"Position in card","Label_FR":"Emplacement sur la carte","Type":"thesaurus","Is_Required":false,"Is_Readonly":false,"Min_Value":0,"External_Info":"2014322","Required_When":"{input:Sample_Type|op:like|value:FTA}","Hide_When":"{input:Sample_Type|op:notlike|value:FTA}","Linked_Entity":"Sample","Linked_Field":"FTA_Card_Position","Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":false,"readonly":false,"editable":true,"extraction_field":false,"required_when":[{"input":"Sample_Type","op":"like","value":"FTA"}],"hide_when":[{"input":"Sample_Type","op":"notlike","value":"FTA"}],"hide":true,"disabled":false},{"name":"Comment","label":"Notes","icon":"","type":"textarea","dynprop":{"ID":1802,"Name":"Comment","Label_EN":"Comment","Label_FR":"Notes","Type":"textarea","Is_Required":false,"Is_Readonly":false,"Min_Value":0,"Event_Type_ID":1,"Is_Hidden":false,"Extraction_Field":false},"required":false,"readonly":false,"editable":true,"extraction_field":false,"hide":false,"disabled":false}]},{"Event_ID": null}]'
176
+ api-key="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"
177
+ render-form="true"
178
+ display-status="true"
179
+ debug="true"
180
+ context="ecoll-veto"
181
+ language="fr"
182
+ classification-root-url="http://localhost:8888"
183
+ >
184
+ </voice-input-module>
185
+ </div>
186
+
187
+ <div id="result2" class="result-display" style="display: none;">
188
+ <strong>Form Filled Result:</strong>
189
+ <pre id="result2-content"></pre>
190
+ </div>
191
+
192
+ <div class="demo-section">
193
+ <div class="demo-title">Demo XML Conversion Utilities</div>
194
+ <p>The component also provides XML ⟷ JSON conversion utilities:</p>
195
+ <button onclick="testXmlConversion()">Test XML Conversion</button>
196
+ <div id="xml-result" style="display: none; margin-top: 1rem;">
197
+ <div class="schema-example" id="xml-content"></div>
198
+ </div>
199
+ </div>
200
+
201
+
202
+ <div class="demo-section">
203
+ <div class="demo-title">TRACK Legacy XML demo</div>
204
+ <button onclick="testTrackXmlConversion()">Test TRACK Legacy XML Conversion</button>
205
+ <div id="track-xml-result" style="display: none; margin-top: 1rem;">
206
+ <div class="schema-example" id="track-xml-content"></div>
207
+ </div>
208
+ </div>
209
+
210
+ </div>
211
+
212
+ <script>
213
+
214
+ // Handle form filled events
215
+ document.getElementById('demo2').addEventListener('formFilled', (event) => {
216
+ const result = event.detail;
217
+ const resultDiv = document.getElementById('result2');
218
+ const resultContent = document.getElementById('result2-content');
219
+
220
+ resultContent.textContent = JSON.stringify(result, null, 2);
221
+ resultDiv.style.display = 'block';
222
+ console.log('Demo 2 Form Filled:', result);
223
+
224
+ // Update debug information if available
225
+ if (result.debugInfo) {
226
+ const debugContent = document.getElementById('debug2');
227
+ debugContent.innerHTML = `
228
+ <div class="debug-title">Debug Information:</div>
229
+ <pre class="debug-content">${JSON.stringify(result.debugInfo, null, 2)}</pre>
230
+ `;
231
+ }
232
+ });
233
+
234
+ document.getElementById('demo3').addEventListener('formFilled', (event) => {
235
+ const result = event.detail;
236
+ console.log('Raw Component Demo Form Filled:', result);
237
+ });
238
+
239
+ //-----------------------------------
240
+ // Test XML conversion
241
+ function testXmlConversion() {
242
+ console.log("testXmlConversion");
243
+ const xmlForm = `
244
+ <form title="Sample Form">
245
+ <input name="name" type="text" title="Full Name" required="true" />
246
+ <input name="age" type="number" title="Age" min="18" max="100" />
247
+ <input name="subscribe" type="checkbox" title="Subscribe to Newsletter" />
248
+ <select name="country" title="Country">
249
+ <option value="us">United States</option>
250
+ <option value="ca">Canada</option>
251
+ <option value="uk">United Kingdom</option>
252
+ </select>
253
+ </form>
254
+ `;
255
+
256
+ const component = document.getElementById('demo2');
257
+ try {
258
+ component.convertXmlToJsonLegacy(xmlForm).then((jsonresult) => {
259
+ const backToXml = component.convertJsonToXmlLegacy(jsonresult).then((xmlresult) => {
260
+ const resultDiv = document.getElementById('xml-result');
261
+ const xmlContent = document.getElementById('xml-content');
262
+
263
+ xmlContent.innerHTML = `
264
+ <strong>Original XML:</strong>
265
+ ${xmlForm}
266
+ <br />
267
+
268
+ <strong>Converted to JSON:</strong>
269
+ ${JSON.stringify(jsonresult, null, 2)}
270
+ <br />
271
+ <br />
272
+
273
+ <strong>Back to XML:</strong>
274
+ ${xmlresult}
275
+ <br />
276
+
277
+ <div>To Component Result:</div>
278
+ <voice-input-module
279
+ id="fromxml"
280
+ form-json='${JSON.stringify(jsonresult, null, 2)}'
281
+ api-key="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"
282
+ render-form="true"
283
+ display-status="true"
284
+ debug="true"
285
+ context="track"
286
+ classification-root-url="http://localhost:8888"
287
+ >
288
+ </voice-input-module>
289
+
290
+ <div id='toxmlaftervoice'></div>
291
+ `;
292
+
293
+ resultDiv.style.display = 'block';
294
+
295
+ document.getElementById('fromxml').addEventListener('formFilled', (event) => {
296
+ const result = event.detail;
297
+ console.log('fromxml Demo Form Filled:', result);
298
+
299
+ component.convertJsonToXmlLegacy(result.data).then((finalxmlresult) => {
300
+ const finalxmlContent = document.getElementById('toxmlaftervoice');
301
+ console.log("finalxmlContent", finalxmlContent);
302
+
303
+ finalxmlContent.innerHTML = `
304
+ ${finalxmlresult}
305
+ `
306
+ });
307
+ });
308
+ });
309
+ });
310
+
311
+ } catch (error) {
312
+ alert('Conversion error: ' + error.message);
313
+ }
314
+ }
315
+
316
+ // Handle recording state changes
317
+ document.addEventListener('recordingStateChanged', (event) => {
318
+ console.log('Recording state changed:', event.detail);
319
+ });
320
+
321
+ //-----------------------------------
322
+ // TRACK Legacy XML conversion
323
+
324
+ function testTrackXmlConversion() {
325
+ // const xmlForm = `
326
+ // <Xforms>
327
+ // <Fields>
328
+ // <ID>input_10802764</ID>
329
+ // <TFie_PK_ID>1865032</TFie_PK_ID>
330
+ // <TVal_PK_ID>10802764</TVal_PK_ID>
331
+ // <TFIn_PK_ID>645682</TFIn_PK_ID>
332
+ // <isForm>Form</isForm>
333
+ // <LabelText>Poids</LabelText>
334
+ // <SystemName>Weight</SystemName>
335
+ // <CssStyle>cssHeader</CssStyle>
336
+ // <ControlType>Header</ControlType>
337
+ // <TFie_Fullpath> Poids</TFie_Fullpath>
338
+ // <TVal_FK_Parent_ID>0</TVal_FK_Parent_ID>
339
+ // </Fields>
340
+ // <Fields>
341
+ // <ID>input_10802765</ID>
342
+ // <TFie_PK_ID>1865032</TFie_PK_ID>
343
+ // <TVal_PK_ID>10802765</TVal_PK_ID>
344
+ // <TFIn_PK_ID>645682</TFIn_PK_ID>
345
+ // <isForm>Form Item</isForm>
346
+ // <LabelText>Poids</LabelText>
347
+ // <SystemName>Weight</SystemName>
348
+ // <CssStyle>cssHeader</CssStyle>
349
+ // <ControlType>Header</ControlType>
350
+ // <TFie_Fullpath> Poids Poids</TFie_Fullpath>
351
+ // <TVal_FK_Parent_ID>10802764</TVal_FK_Parent_ID>
352
+ // </Fields>
353
+ // <Fields>
354
+ // <ID>input_10802766</ID>
355
+ // <TFie_PK_ID>1865033</TFie_PK_ID>
356
+ // <TVal_PK_ID>10802766</TVal_PK_ID>
357
+ // <TFIn_PK_ID>645682</TFIn_PK_ID>
358
+ // <Enabled>True</Enabled>
359
+ // <isForm>Field</isForm>
360
+ // <LabelText>Poids</LabelText>
361
+ // <SystemName>Weight</SystemName>
362
+ // <HelpText/>
363
+ // <CssStyle>cssNormal</CssStyle>
364
+ // <Value/>
365
+ // <ControlType>RealPicker</ControlType>
366
+ // <ValidationRequired>Required</ValidationRequired>
367
+ // <ValidationMin>10</ValidationMin>
368
+ // <ValidationMax>3500</ValidationMax>
369
+ // <Mask/>
370
+ // <TypeId>5519</TypeId>
371
+ // <Unit>gramme(s)</Unit>
372
+ // <TFie_Fullpath> Poids Poids</TFie_Fullpath>
373
+ // <TVal_FK_Parent_ID>10802765</TVal_FK_Parent_ID>
374
+ // <DefaultValue/>
375
+ // </Fields>
376
+ // <Fields>
377
+ // <ID>input_10802767</ID>
378
+ // <TFie_PK_ID>1865034</TFie_PK_ID>
379
+ // <TVal_PK_ID>10802767</TVal_PK_ID>
380
+ // <TFIn_PK_ID>645682</TFIn_PK_ID>
381
+ // <Enabled>True</Enabled>
382
+ // <isForm>Field</isForm>
383
+ // <LabelText>Notes</LabelText>
384
+ // <SystemName>Comment</SystemName>
385
+ // <HelpText/>
386
+ // <CssStyle>cssNormal</CssStyle>
387
+ // <Value/>
388
+ // <ControlType>Multiline</ControlType>
389
+ // <ValidationRequired>Not Required</ValidationRequired>
390
+ // <ValidationMin/>
391
+ // <ValidationMax/>
392
+ // <Mask/>
393
+ // <TypeId>4231</TypeId>
394
+ // <Unit/>
395
+ // <TFie_Fullpath> Poids Notes</TFie_Fullpath>
396
+ // <TVal_FK_Parent_ID>10802765</TVal_FK_Parent_ID>
397
+ // <DefaultValue/>
398
+ // </Fields>
399
+ // </Xforms>`;
400
+ const xmlForm = `
401
+ <Xforms>
402
+ <Fields>
403
+ <ID>input_10804074</ID>
404
+ <TFie_PK_ID>1892825</TFie_PK_ID>
405
+ <TVal_PK_ID>10804074</TVal_PK_ID>
406
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
407
+ <isForm>Form</isForm>
408
+ <LabelText>Mort</LabelText>
409
+ <SystemName>Death</SystemName>
410
+ <CssStyle>cssHeader</CssStyle>
411
+ <ControlType>Header</ControlType>
412
+ <TFie_Fullpath> Mort</TFie_Fullpath>
413
+ <TVal_FK_Parent_ID>0</TVal_FK_Parent_ID>
414
+ </Fields>
415
+ <Fields>
416
+ <ID>input_10804075</ID>
417
+ <TFie_PK_ID>1892825</TFie_PK_ID>
418
+ <TVal_PK_ID>10804075</TVal_PK_ID>
419
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
420
+ <isForm>Form Item</isForm>
421
+ <LabelText>Mort</LabelText>
422
+ <SystemName>Death</SystemName>
423
+ <CssStyle>cssHeader</CssStyle>
424
+ <ControlType>Header</ControlType>
425
+ <TFie_Fullpath> Mort Mort</TFie_Fullpath>
426
+ <TVal_FK_Parent_ID>10804074</TVal_FK_Parent_ID>
427
+ </Fields>
428
+ <Fields>
429
+ <ID>input_10804076</ID>
430
+ <TFie_PK_ID>1892826</TFie_PK_ID>
431
+ <TVal_PK_ID>10804076</TVal_PK_ID>
432
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
433
+ <Enabled>True</Enabled>
434
+ <isForm>Field</isForm>
435
+ <LabelText>Statut de sortie</LabelText>
436
+ <SystemName>Exit status</SystemName>
437
+ <HelpText></HelpText>
438
+ <CssStyle>cssNormal</CssStyle>
439
+ <Value>Death status>Dead</Value>
440
+ <ControlType>ThesaurusPicker</ControlType>
441
+ <ValidationRequired>Required</ValidationRequired>
442
+ <ValidationMin></ValidationMin>
443
+ <ValidationMax></ValidationMax>
444
+ <Mask></Mask>
445
+ <TypeId>2013199</TypeId>
446
+ <Unit></Unit>
447
+ <TFie_Fullpath> Mort Statut de sortie</TFie_Fullpath>
448
+ <TVal_FK_Parent_ID>10804075</TVal_FK_Parent_ID>
449
+ <DefaultValue>Death status>Dead</DefaultValue>
450
+ </Fields>
451
+ <Fields>
452
+ <ID>input_10804077</ID>
453
+ <TFie_PK_ID>1892827</TFie_PK_ID>
454
+ <TVal_PK_ID>10804077</TVal_PK_ID>
455
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
456
+ <Enabled>True</Enabled>
457
+ <isForm>Field</isForm>
458
+ <LabelText>Date de sortie</LabelText>
459
+ <SystemName>Exit date</SystemName>
460
+ <HelpText></HelpText>
461
+ <CssStyle>cssNormal</CssStyle>
462
+ <Value></Value>
463
+ <ControlType>DatePicker</ControlType>
464
+ <ValidationRequired>Required</ValidationRequired>
465
+ <ValidationMin></ValidationMin>
466
+ <ValidationMax></ValidationMax>
467
+ <Mask></Mask>
468
+ <TypeId>4383</TypeId>
469
+ <Unit></Unit>
470
+ <TFie_Fullpath> Mort Date de sortie</TFie_Fullpath>
471
+ <TVal_FK_Parent_ID>10804075</TVal_FK_Parent_ID>
472
+ <DefaultValue></DefaultValue>
473
+ </Fields>
474
+ <Fields>
475
+ <ID>input_10804078</ID>
476
+ <TFie_PK_ID>1892828</TFie_PK_ID>
477
+ <TVal_PK_ID>10804078</TVal_PK_ID>
478
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
479
+ <Enabled>False</Enabled>
480
+ <isForm>Field</isForm>
481
+ <LabelText>Position</LabelText>
482
+ <SystemName>Location</SystemName>
483
+ <HelpText></HelpText>
484
+ <CssStyle>cssNormal</CssStyle>
485
+ <Value></Value>
486
+ <ControlType>TermPicker</ControlType>
487
+ <ValidationRequired>Required</ValidationRequired>
488
+ <ValidationMin></ValidationMin>
489
+ <ValidationMax></ValidationMax>
490
+ <Mask></Mask>
491
+ <TypeId>80713</TypeId>
492
+ <Unit></Unit>
493
+ <TFie_Fullpath> Mort Position</TFie_Fullpath>
494
+ <TVal_FK_Parent_ID>10804075</TVal_FK_Parent_ID>
495
+ <DefaultValue></DefaultValue>
496
+ </Fields>
497
+ <Fields>
498
+ <ID>input_10804079</ID>
499
+ <TFie_PK_ID>1892829</TFie_PK_ID>
500
+ <TVal_PK_ID>10804079</TVal_PK_ID>
501
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
502
+ <Enabled>True</Enabled>
503
+ <isForm>Field</isForm>
504
+ <LabelText>Type de mort</LabelText>
505
+ <SystemName>Death type</SystemName>
506
+ <HelpText></HelpText>
507
+ <CssStyle>cssNormal</CssStyle>
508
+ <Value></Value>
509
+ <ControlType>ThesaurusPicker</ControlType>
510
+ <ValidationRequired>Required</ValidationRequired>
511
+ <ValidationMin></ValidationMin>
512
+ <ValidationMax></ValidationMax>
513
+ <Mask></Mask>
514
+ <TypeId>167303</TypeId>
515
+ <Unit></Unit>
516
+ <TFie_Fullpath> Mort Type de mort</TFie_Fullpath>
517
+ <TVal_FK_Parent_ID>10804075</TVal_FK_Parent_ID>
518
+ <DefaultValue></DefaultValue>
519
+ </Fields>
520
+ <Fields>
521
+ <ID>input_10804080</ID>
522
+ <TFie_PK_ID>1892830</TFie_PK_ID>
523
+ <TVal_PK_ID>10804080</TVal_PK_ID>
524
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
525
+ <Enabled>True</Enabled>
526
+ <isForm>Field</isForm>
527
+ <LabelText>Poids</LabelText>
528
+ <SystemName>Weight</SystemName>
529
+ <HelpText></HelpText>
530
+ <CssStyle>cssNormal</CssStyle>
531
+ <Value></Value>
532
+ <ControlType>RealPicker</ControlType>
533
+ <ValidationRequired>Not Required</ValidationRequired>
534
+ <ValidationMin>10</ValidationMin>
535
+ <ValidationMax>3500</ValidationMax>
536
+ <Mask></Mask>
537
+ <TypeId>5519</TypeId>
538
+ <Unit>gramme(s)</Unit>
539
+ <TFie_Fullpath> Mort Poids</TFie_Fullpath>
540
+ <TVal_FK_Parent_ID>10804075</TVal_FK_Parent_ID>
541
+ <DefaultValue></DefaultValue>
542
+ </Fields>
543
+ <Fields>
544
+ <ID>input_10804081</ID>
545
+ <TFie_PK_ID>1892831</TFie_PK_ID>
546
+ <TVal_PK_ID>10804081</TVal_PK_ID>
547
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
548
+ <Enabled>False</Enabled>
549
+ <isForm>Field</isForm>
550
+ <LabelText>Sentinelle</LabelText>
551
+ <SystemName>Sentinel</SystemName>
552
+ <HelpText></HelpText>
553
+ <CssStyle>cssNormal</CssStyle>
554
+ <Value>Yes/No>No</Value>
555
+ <ControlType>ThesaurusPicker</ControlType>
556
+ <ValidationRequired>Required</ValidationRequired>
557
+ <ValidationMin></ValidationMin>
558
+ <ValidationMax></ValidationMax>
559
+ <Mask></Mask>
560
+ <TypeId>167278</TypeId>
561
+ <Unit></Unit>
562
+ <TFie_Fullpath> Mort Sentinelle</TFie_Fullpath>
563
+ <TVal_FK_Parent_ID>10804075</TVal_FK_Parent_ID>
564
+ <DefaultValue>Yes/No>No</DefaultValue>
565
+ </Fields>
566
+ <Fields>
567
+ <ID>input_10804082</ID>
568
+ <TFie_PK_ID>1892832</TFie_PK_ID>
569
+ <TVal_PK_ID>10804082</TVal_PK_ID>
570
+ <TFIn_PK_ID>645940</TFIn_PK_ID>
571
+ <Enabled>True</Enabled>
572
+ <isForm>Field</isForm>
573
+ <LabelText>Notes</LabelText>
574
+ <SystemName>Comment</SystemName>
575
+ <HelpText></HelpText>
576
+ <CssStyle>cssNormal</CssStyle>
577
+ <Value></Value>
578
+ <ControlType>Multiline</ControlType>
579
+ <ValidationRequired>Not Required</ValidationRequired>
580
+ <ValidationMin></ValidationMin>
581
+ <ValidationMax></ValidationMax>
582
+ <Mask></Mask>
583
+ <TypeId>4231</TypeId>
584
+ <Unit></Unit>
585
+ <TFie_Fullpath> Mort Notes</TFie_Fullpath>
586
+ <TVal_FK_Parent_ID>10804075</TVal_FK_Parent_ID>
587
+ <DefaultValue></DefaultValue>
588
+ </Fields>
589
+ </Xforms>
590
+ `;
591
+
592
+ const component = document.getElementById('demo2');
593
+ try {
594
+ component.convertXmlToJson(xmlForm).then((jsonresult) => {
595
+ const jsonresultsaved = JSON.parse(JSON.stringify(jsonresult));
596
+ const jsonresultSTR = JSON.stringify(jsonresult, null, 2).replace("'", "");
597
+ const backToXml = component.convertJsonToXml(jsonresult).then((xmlresult) => {
598
+ const resultDiv = document.getElementById('track-xml-result');
599
+ const xmlContent = document.getElementById('track-xml-content');
600
+
601
+ xmlContent.innerHTML = `
602
+ <strong>Original XML:</strong>
603
+ <br />
604
+ <textarea>
605
+ ${xmlForm}
606
+ </textarea>
607
+ <br />
608
+
609
+ <strong>Converted to JSON:</strong>
610
+ ${jsonresultSTR}
611
+ <br />
612
+ <br />
613
+
614
+ <strong>Back to XML:</strong>
615
+ <br />
616
+ <textarea>
617
+ ${xmlresult}
618
+ </textarea>
619
+ <br />
620
+
621
+ <div>To Component Result:</div>
622
+ <voice-input-module
623
+ id="fromxml"
624
+ form-json='${jsonresultSTR}'
625
+ api-key="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"
626
+ render-form="true"
627
+ display-status="true"
628
+ debug="true"
629
+ context="track"
630
+ language="fr"
631
+ classification-root-url="http://localhost:8888"
632
+ >
633
+ </voice-input-module>
634
+ <br/><br/>
635
+ <textarea id='toxmlaftervoice'></textarea>
636
+ `;
637
+
638
+ resultDiv.style.display = 'block';
639
+
640
+ document.getElementById('fromxml').addEventListener('formFilled', (event) => {
641
+ const result = event.detail;
642
+ console.log('fromxml Demo Form Filled:', result);
643
+
644
+ component.convertJsonToXml(result.data).then((finalxmlresult) => {
645
+ const finalxmlContent = document.getElementById('toxmlaftervoice');
646
+ console.log("finalxmlContent", finalxmlContent);
647
+
648
+ finalxmlContent.innerHTML = `
649
+ ${finalxmlresult}
650
+ `
651
+ });
652
+ });
653
+ });
654
+ });
655
+
656
+ } catch (error) {
657
+ alert('Conversion error: ' + error.message);
658
+ }
659
+ }
660
+
661
+ </script>
662
+ </body>
663
+ </html>