Skip to content

Commit 80d48d3

Browse files
committed
Merge pull request #16 in LFOR/questionnaire-viewer from extract_lforms_loader to master
* commit '982f646cd19db4a6e0c20408048cefca2d684b2a': Updated the change log and set the version to 0.5.1 Removed usage of jQuery Now uses lforms-loader
2 parents d456a7c + 982f646 commit 80d48d3

File tree

10 files changed

+71
-122
lines changed

10 files changed

+71
-122
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
This log documents the significant changes for each release.
44
This project follows [Semantic Versioning](http://semver.org/).
55

6+
## [0.5.1] - 2023-08-15
7+
### Changed
8+
- Extracted the code for automatically loading lforms into an "lforms-loader"
9+
package which can be used by other apps as well as this one.
10+
- No longer uses jQuery (in preparation for the soon to be released version of
11+
lforms which does not leak its version of jQuery to the window object).
12+
613
## [0.5.0] - 2023-06-29
714
### Added
815
- The viewer now has the ability to specify, via an 'lfv' parameter, the version

docs/index.625900fc.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

docs/index.625900fc.js.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/index.dab007f6.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/index.dab007f6.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
<p class=alert><b>Note:</b> It appears you are using an unsupported
33
version of the IE browser. This website will not work properly with
44
IE 8 or below.</p>
5-
<![endif]--> <div id="header"> <div id="siteNameBox"> <h1 id="siteName">FHIR Questionnaire Viewer</h1><br> <span id="tagLine">Using <a href="https://lhcforms.nlm.nih.gov/" target="_blank" rel="noreferrer">LHC-Forms Widget</a> <span id="lformsVersionMenu"> version <input id="lformsVersion" type="text" size="16"> </span> </span></div> </div> <div id="qv-form-input" style="display:none"> <div id="qv-form-input-intro"> <p>This is a tool that allows you to render a FHIR Questionnaire (JSON), with its needed resources from either a FHIR resource package file or a FHIR server. (See the <a href="https://confluence.hl7.org/display/FHIR/NPM+Package+Specification" target="_blank" rel="noreferrer">FHIR NPM package specification</a>.)</p> </div> <div id="qv-form-input-settings"> <div class="qv-url-row"> <div class="qv-url-name"><label for="urlQuestionnaire">URL of a FHIR Questionnaire:</label></div> <div class="qv-url-value"><input type="text" id="urlQuestionnaire"></div> </div> <div class="qv-url-row"> <div class="qv-url-name"> <input type="radio" id="radioPackage" name="resourceURL" value="package" checked onclick="app.toggleInputFields('urlFhirServer', 'urlPackage')"> <label for="radioPackage">URL of a FHIR resource package:</label> </div> <div class="qv-url-value"><input type="text" id="urlPackage"></div> </div> <div class="qv-url-row"> <div class="qv-url-name"> <input type="radio" id="radioFhirServer" name="resourceURL" value="fhirServer" onclick="app.toggleInputFields('urlPackage', 'urlFhirServer')"> <label for="radioFhirServer">URL of a FHIR server for resources:</label> </div> <div class="qv-url-value"><input type="text" id="urlFhirServer" disabled></div> </div> <div id="qv-param-notes">*Note: These field values can be specified in the URL. Use URL parameter "q" to provide the URL for a Questionnaire JSON, and optionally either parameter "p" to provide the URL for a FHIR resource package (package.tgz), or parameter "s" to provide the URL for a FHIR server. The parameter "lfv" can be used to set the version of LHC-Forms being used to render the form.</div> </div> <button id="qv-btn-load" onclick="app.viewQuestionnaire()">Load Data</button> </div> <div role="alert" id="qv-error" style="display:none"> <div id="qv-error-header">Errors</div> <div id="qv-error-message"></div> </div> <div role="alert" id="qv-loading" style="display:none"> Loading ... </div> <div id="qv-form-view"> <div id="qv-form-notes"> <span role="alert" id="qv-form-info"></span> <span><button id="qv-btn-show-warning" style="display:none" onclick="app.toggleWarning()">Show Warning Messages</button></span> <div role="alert" style="display:none" id="qv-form-warning"></div> </div> <div id="qv-lforms"></div> </div> <script src="index.625900fc.js" type="module"></script> </body></html>
5+
<![endif]--> <div id="header"> <div id="siteNameBox"> <h1 id="siteName">FHIR Questionnaire Viewer</h1><br> <span id="tagLine">Using <a href="https://lhcforms.nlm.nih.gov/" target="_blank" rel="noreferrer">LHC-Forms Widget</a> <span id="lformsVersionMenu"> version <input id="lformsVersion" type="text" size="16"> </span> </span></div> </div> <div id="qv-form-input" style="display:none"> <div id="qv-form-input-intro"> <p>This is a tool that allows you to render a FHIR Questionnaire (JSON), with its needed resources from either a FHIR resource package file or a FHIR server. (See the <a href="https://confluence.hl7.org/display/FHIR/NPM+Package+Specification" target="_blank" rel="noreferrer">FHIR NPM package specification</a>.)</p> </div> <div id="qv-form-input-settings"> <div class="qv-url-row"> <div class="qv-url-name"><label for="urlQuestionnaire">URL of a FHIR Questionnaire:</label></div> <div class="qv-url-value"><input type="text" id="urlQuestionnaire"></div> </div> <div class="qv-url-row"> <div class="qv-url-name"> <input type="radio" id="radioPackage" name="resourceURL" value="package" checked onclick="app.toggleInputFields('urlFhirServer', 'urlPackage')"> <label for="radioPackage">URL of a FHIR resource package:</label> </div> <div class="qv-url-value"><input type="text" id="urlPackage"></div> </div> <div class="qv-url-row"> <div class="qv-url-name"> <input type="radio" id="radioFhirServer" name="resourceURL" value="fhirServer" onclick="app.toggleInputFields('urlPackage', 'urlFhirServer')"> <label for="radioFhirServer">URL of a FHIR server for resources:</label> </div> <div class="qv-url-value"><input type="text" id="urlFhirServer" disabled></div> </div> <div id="qv-param-notes">*Note: These field values can be specified in the URL. Use URL parameter "q" to provide the URL for a Questionnaire JSON, and optionally either parameter "p" to provide the URL for a FHIR resource package (package.tgz), or parameter "s" to provide the URL for a FHIR server. The parameter "lfv" can be used to set the version of LHC-Forms being used to render the form.</div> </div> <button id="qv-btn-load" onclick="app.viewQuestionnaire()">Load Data</button> </div> <div role="alert" id="qv-error" style="display:none"> <div id="qv-error-header">Errors</div> <div id="qv-error-message"></div> </div> <div role="alert" id="qv-loading" style="display:none"> Loading ... </div> <div id="qv-form-view"> <div id="qv-form-notes"> <span role="alert" id="qv-form-info"></span> <span><button id="qv-btn-show-warning" style="display:none" onclick="app.toggleWarning()">Show Warning Messages</button></span> <div role="alert" style="display:none" id="qv-form-warning"></div> </div> <div id="qv-lforms"></div> </div> <script src="index.dab007f6.js" type="module"></script> </body></html>

package-lock.json

Lines changed: 43 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "questionnaire-viewer",
3-
"version": "0.5.0",
3+
"version": "0.5.1",
44
"description": "A website for rendering a FHIR Questionnaire using the LHC-Forms widget",
55
"config": {
66
"testServerPort": 4029,
@@ -29,6 +29,10 @@
2929
],
3030
"author": "wangye@nih.gov",
3131
"license": "MIT",
32+
"aliasComment": "alias is used below to prevent Parcel from adding a polyfill for 'process'",
33+
"alias": {
34+
"process": false
35+
},
3236
"devDependencies": {
3337
"cypress": "^10.10.0",
3438
"http-server": "^14.1.1",
@@ -41,9 +45,9 @@
4145
"dependencies": {
4246
"fhirclient": "^2.3.10",
4347
"js-untar-lhc": "^2.1.1",
48+
"lforms-loader": "^1.0.0",
4449
"lforms-updater": "^29.0.1",
4550
"pako": "^1.0.11",
46-
"semver": "^7.5.2",
4751
"string-to-arraybuffer": "^1.0.2",
4852
"url-parse": "^1.5.3",
4953
"whatwg-fetch": "^3.0.0"

source/js/lformsLoader.js

Lines changed: 0 additions & 73 deletions
This file was deleted.

source/js/viewer.js

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
// this file contained the code only used by viewer.html. The code here is
44
// mostly for the lforms version menu, and it includes app.js.
55

6-
import {loadLForms} from './lformsLoader.js'
7-
import semverSort from 'semver/functions/rsort';
6+
import {loadLForms, getSupportedLFormsVersions, changeLFormsVersion} from 'lforms-loader'
87
import * as app from './app.js';
98

109
let params = new URL(document.location).searchParams;
@@ -39,43 +38,18 @@ function showHeader() {
3938
*/
4039
function initLFormsVersionMenu() {
4140
// Get the list of lforms versions
42-
fetch('https://clinicaltables.nlm.nih.gov/lforms-versions').then(response=>{
43-
// https://clinicaltables.nlm.nih.gov/lforms-versions contains output like:
44-
// <span class="name">lforms-9.0.2.zip</span>
45-
if (response.ok) { // otherwise, don't show the menu
46-
response.text().then(pageText=>{
47-
const versions =
48-
[...pageText.matchAll(/<span class="name">lforms-(.*)\.zip<\/span>/g)].map(
49-
m=>m[1]).filter(v=>v.split('.')[0]>=29);
50-
semverSort(versions);
51-
const ac = new LForms.Def.Autocompleter.Prefetch('lformsVersion', versions,
52-
{defaultValue: LForms.lformsVersion, matchListValue: true, addSeqNum: false});
53-
ac.setFieldToListValue(LForms.lformsVersion);
54-
$('#lformsVersionMenu')[0].style.display='inline';
55-
LForms.Def.Autocompleter.Event.observeListSelections('lformsVersion', (data)=>{
56-
if (data.final_val && data.on_list && data.final_val != LForms.lformsVersion)
57-
changeLFormsVersion(data.final_val);
58-
});
59-
});
60-
}
41+
getSupportedLFormsVersions().then(versions=>{
42+
const ac = new LForms.Def.Autocompleter.Prefetch('lformsVersion', versions,
43+
{defaultValue: LForms.lformsVersion, matchListValue: true, addSeqNum: false});
44+
ac.setFieldToListValue(LForms.lformsVersion);
45+
document.getElementById('lformsVersionMenu').style.display='inline';
46+
LForms.Def.Autocompleter.Event.observeListSelections('lformsVersion', (data)=>{
47+
if (data.final_val && data.on_list && data.final_val != LForms.lformsVersion)
48+
changeLFormsVersion(data.final_val);
49+
});
6150
});
6251
}
6352

64-
/**
65-
* Handles a selection of a new LForms version.
66-
* @param newLFormsVersion the new version to switch to (assumed valid)
67-
*/
68-
function changeLFormsVersion(newLFormsVersion) {
69-
// We need to reload the page.
70-
// The menu only shows if parameters were not set for the questionnaire, so
71-
// we can't preserve any field values the user might have filled in for the
72-
// questionnaire.
73-
let pageURL = window.location.origin + window.location.pathname;
74-
const params = new URLSearchParams(window.location.search);
75-
params.set('lfv', newLFormsVersion);
76-
window.location = pageURL + '?' + params;
77-
}
78-
7953

8054
/**
8155
* Initializes the app after everything has loaded.

0 commit comments

Comments
 (0)