diff --git a/package-lock.json b/package-lock.json index 7aeece4..56b09ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "server-manager", + "name": "fair-dsm-assessment-tool", "version": "0.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "server-manager", + "name": "fair-dsm-assessment-tool", "version": "0.0.0", "dependencies": { "@angular/animations": "~11.2.4", @@ -22,7 +22,7 @@ "zone.js": "~0.11.3" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.1102.3", + "@angular-devkit/build-angular": "^0.1102.19", "@angular/cli": "~11.2.3", "@angular/compiler-cli": "~11.2.4", "@types/jasmine": "~3.6.0", @@ -3649,6 +3649,16 @@ "node": ">=8" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -6757,6 +6767,13 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -10079,6 +10096,13 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "node_modules/nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", @@ -19984,6 +20008,16 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -22466,6 +22500,13 @@ } } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -25097,6 +25138,13 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", diff --git a/package.json b/package.json index c1c2939..fdcfc94 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "zone.js": "~0.11.3" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.1102.3", + "@angular-devkit/build-angular": "^0.1102.19", "@angular/cli": "~11.2.3", "@angular/compiler-cli": "~11.2.4", "@types/jasmine": "~3.6.0", diff --git a/src/app/app-body/home.component.css b/src/app/app-body/home.component.css index 8728681..84d3bb8 100644 --- a/src/app/app-body/home.component.css +++ b/src/app/app-body/home.component.css @@ -40,10 +40,6 @@ - - - - .submit-btn { float: right; } @@ -56,6 +52,28 @@ color: darkorange; } +.tab-question-img { + width: 500px !important; + float: right; + background-position: center; + background-repeat: no-repeat; + position: relative; + background-size: cover; + +} + +.tab-question-img-header { + text-align: end; + position: relative; + font-size: larger; + font-weight: bold; + top: -20px; + right: -500px; + transform: translate(-50%, -50%); + color: darkblue; + } + + .options{ margin-bottom: 10px !important; } diff --git a/src/app/app-body/home.component.html b/src/app/app-body/home.component.html index ba1a699..5d3934c 100644 --- a/src/app/app-body/home.component.html +++ b/src/app/app-body/home.component.html @@ -1,13 +1,26 @@
- - + +

- [ {{tab1CurrentData.SectionId}} of {{tab1Data.length+tab2Data.length+tab3Data.length}} ] + [{{tab1CurrentData.SectionId}} of {{tab1Data.length+tab2Data.length+tab3Data.length}}] {{ tab1CurrentData ? tab1CurrentData.Question : "" }}

+ +
+ + +
+
- +

[ {{tab2CurrentData.SectionId}} of {{tab1Data.length+tab2Data.length+tab3Data.length}} ] {{ tab2CurrentData ? tab2CurrentData.Question : "" }}

+ +
+ + +
+
- +

[ {{tab3CurrentData.SectionId}} of {{tab1Data.length+tab2Data.length+tab3Data.length}} ] {{ tab3CurrentData ? tab3CurrentData.Question : "" }}

+ +
+ + +
+
= new Set(); + QuestionsToSkip: Set= new Set(); baseLevelURI = "https://fairplus.github.io/Data-Maturity/docs/Levels/Level"; constructor(private appService: AppService, private router: Router) {} @@ -73,41 +73,99 @@ export class HomeComponent implements OnInit { console.log('tab1CurrentData: ', this.tab1CurrentData); } - currentSelectedTab: number = 1; + currentSelectedTab: number = 0; currentTabBackwardBtnDisable: boolean = true; currentTabForwardBtnDisable: boolean = false; - tabClicked(tab:number){ + tabClicked(tab:number, qindex?:number){ console.log('tab: ', tab); this.currentSelectedTab = tab; - if(this.currentSelectedTab===1) this.setCurrentBackwardForwardButton(this.tab1CurrentDataIndex,this.tab1Data); - if(this.currentSelectedTab===2) this.setCurrentBackwardForwardButton(this.tab2CurrentDataIndex,this.tab2Data); - if(this.currentSelectedTab===3) this.setCurrentBackwardForwardButton(this.tab3CurrentDataIndex,this.tab3Data); + if(this.currentSelectedTab===0) this.setCurrentBackwardForwardButton(this.tab1CurrentDataIndex,this.tab1Data); + if(this.currentSelectedTab===1) this.setCurrentBackwardForwardButton(this.tab2CurrentDataIndex,this.tab2Data); + if(this.currentSelectedTab===2) this.setCurrentBackwardForwardButton(this.tab3CurrentDataIndex,this.tab3Data); + if(qindex!==undefined){ + if(tab==1){ + this.tab2CurrentDataIndex=qindex + this.tab2CurrentData = this.tab2Data[qindex]; + //console.log('tab2CurrentData: ', this.tab2CurrentData); + this.setCurrentBackwardForwardButton(this.tab2CurrentDataIndex,this.tab2Data); + }else if(tab==2){ + this.tab3CurrentDataIndex=qindex + this.tab3CurrentData = this.tab3Data[qindex]; + //console.log('tab2CurrentData: ', this.tab2CurrentData); + this.setCurrentBackwardForwardButton(this.tab3CurrentDataIndex,this.tab3Data); + } + } } setCurrentBackwardForwardButton(tabCurrentDataIndex:any,tabData:any){ - this.currentTabBackwardBtnDisable = tabCurrentDataIndex === 0 ? true: false; - this.currentTabForwardBtnDisable = tabCurrentDataIndex === tabData.length - 1 ? true: false; + // this.currentTabBackwardBtnDisable = tabCurrentDataIndex === 0 ? true: false; + // this.currentTabForwardBtnDisable = tabCurrentDataIndex === tabData.length - 1 ? true: false; + if(this.currentSelectedTab===0 && tabCurrentDataIndex ==0){ + this.currentTabBackwardBtnDisable=true; + }else{ + this.currentTabBackwardBtnDisable=false; + } + if( this.currentSelectedTab ===2 && this.tab3CurrentDataIndex === tabData.length -1 ){ + this.currentTabForwardBtnDisable=true; + }else{ + this.currentTabForwardBtnDisable=false; + } } tabBackwardBtnClick() { - if(this.currentSelectedTab===1){ + if(this.currentSelectedTab===0){ console.log('tab1BackwardBtnClick'); - this.tab1CurrentDataIndex = this.tab1CurrentDataIndex - 1; + + let findPreviousIndex=this.tab1CurrentDataIndex; + do{ + findPreviousIndex=findPreviousIndex - 1 + }while(this.QuestionsToSkip.has(findPreviousIndex +1 as any)) + + this.tab1CurrentDataIndex=findPreviousIndex; this.tab1CurrentData = this.tab1Data[this.tab1CurrentDataIndex]; //console.log('tab1CurrentData: ', this.tab1CurrentData); this.setCurrentBackwardForwardButton(this.tab1CurrentDataIndex,this.tab1Data); } - else if(this.currentSelectedTab===2){ + else if(this.currentSelectedTab===1){ console.log('tab2BackwardBtnClick'); - this.tab2CurrentDataIndex = this.tab2CurrentDataIndex - 1; + + let findPreviousIndex=this.tab2CurrentDataIndex + this.tab1Data.length; + do{ + findPreviousIndex=findPreviousIndex - 1 + }while(this.QuestionsToSkip.has(findPreviousIndex +1 as any)) + + this.tab2CurrentDataIndex=findPreviousIndex - this.tab1Data.length; + + if((this.tab2CurrentDataIndex) < 0 ){ + const diff= this.tab2CurrentDataIndex + this.tab1Data.length; + this.tabClicked(0,diff); + console.log('jump') + return; + } + this.tab2CurrentData = this.tab2Data[this.tab2CurrentDataIndex]; //console.log('tab1CurrentData: ', this.tab1CurrentData); this.setCurrentBackwardForwardButton(this.tab2CurrentDataIndex,this.tab2Data); + } - else if(this.currentSelectedTab===3){ + else if(this.currentSelectedTab===2){ console.log('tab3BackwardBtnClick'); - this.tab3CurrentDataIndex = this.tab3CurrentDataIndex - 1; + + let findPreviousIndex=this.tab3CurrentDataIndex + this.tab1Data.length + this.tab2Data.length; + do{ + findPreviousIndex=findPreviousIndex - 1 + }while(this.QuestionsToSkip.has(findPreviousIndex +1 as any)) + + this.tab3CurrentDataIndex=findPreviousIndex - this.tab1Data.length - this.tab2Data.length; + + if((this.tab3CurrentDataIndex) < 0 ){ + const diff= this.tab3CurrentDataIndex + this.tab2Data.length; + this.tabClicked(1,diff); + console.log('jump') + return; + } + this.tab3CurrentData = this.tab3Data[this.tab3CurrentDataIndex]; //console.log('tab1CurrentData: ', this.tab1CurrentData); this.setCurrentBackwardForwardButton(this.tab3CurrentDataIndex,this.tab3Data); @@ -115,27 +173,67 @@ export class HomeComponent implements OnInit { } + + tabForwardBtnClick() { - if(this.currentSelectedTab===1){ + if(this.currentSelectedTab===0){ console.log('tab1ForwardBtnClick'); - this.tab1CurrentDataIndex = this.tab1CurrentDataIndex + 1; - this.tab1CurrentData = this.tab1Data[this.tab1CurrentDataIndex]; - //console.log('tab1CurrentData: ', this.tab1CurrentData); - this.setCurrentBackwardForwardButton(this.tab1CurrentDataIndex,this.tab1Data); + if(this.tab1CurrentData.IsAnswered=== true) { + + let findNextIndex=this.tab1CurrentDataIndex; + do{ + findNextIndex=findNextIndex+1 + }while(this.QuestionsToSkip.has(findNextIndex +1 as any)) + + this.tab1CurrentDataIndex=findNextIndex; + + if(this.tab1Data.length <= (this.tab1CurrentDataIndex)){ + const diff= this.tab1CurrentDataIndex -this.tab1Data.length; + this.tabClicked(1,diff); + console.log('jump') + return; + } + + this.tab1CurrentData = this.tab1Data[this.tab1CurrentDataIndex]; + //console.log('tab1CurrentData: ', this.tab1CurrentData); + this.setCurrentBackwardForwardButton(this.tab1CurrentDataIndex,this.tab1Data); + } } - else if(this.currentSelectedTab===2){ + + else if(this.currentSelectedTab===1){ console.log('tab2ForwardBtnClick'); - this.tab2CurrentDataIndex = this.tab2CurrentDataIndex + 1; - this.tab2CurrentData = this.tab2Data[this.tab2CurrentDataIndex]; - //console.log('tab1CurrentData: ', this.tab1CurrentData); - this.setCurrentBackwardForwardButton(this.tab2CurrentDataIndex,this.tab2Data); + if(this.tab2CurrentData.IsAnswered=== true) { + let findNextIndex=this.tab2CurrentDataIndex + this.tab1Data.length; + do{ + findNextIndex=findNextIndex+1 + }while(this.QuestionsToSkip.has(findNextIndex +1 as any)) + + this.tab2CurrentDataIndex=findNextIndex - this.tab1Data.length; + if(this.tab2Data.length <= (this.tab2CurrentDataIndex)){ + const diff= this.tab2CurrentDataIndex -this.tab2Data.length; + this.tabClicked(2,diff); + console.log('jump') + return; + } + this.tab2CurrentData = this.tab2Data[this.tab2CurrentDataIndex]; + //console.log('tab2CurrentData: ', this.tab2CurrentData); + this.setCurrentBackwardForwardButton(this.tab2CurrentDataIndex,this.tab2Data); + } } - else if(this.currentSelectedTab===3){ + + else if(this.currentSelectedTab===2){ console.log('tab3ForwardBtnClick'); - this.tab3CurrentDataIndex = this.tab3CurrentDataIndex + 1; - this.tab3CurrentData = this.tab3Data[this.tab3CurrentDataIndex]; - //console.log('tab1CurrentData: ', this.tab1CurrentData); - this.setCurrentBackwardForwardButton(this.tab3CurrentDataIndex,this.tab3Data); + if(this.tab3CurrentData.IsAnswered=== true) { + let findNextIndex=this.tab3CurrentDataIndex + this.tab1Data.length + this.tab2Data.length + do{ + findNextIndex=findNextIndex+1 + }while(this.QuestionsToSkip.has(findNextIndex +1 as any)) + + this.tab3CurrentDataIndex=findNextIndex - this.tab1Data.length - this.tab2Data.length; + this.tab3CurrentData = this.tab3Data[this.tab3CurrentDataIndex]; + //console.log('tab3CurrentData: ', this.tab3CurrentData); + this.setCurrentBackwardForwardButton(this.tab3CurrentDataIndex,this.tab3Data); + } } } @@ -160,7 +258,7 @@ export class HomeComponent implements OnInit { return dt.IsAnswered === true; } ); - if ( answeredQuestion &&answeredQuestion.length === this.appService.appData.length) + if ( answeredQuestion && answeredQuestion.length + this.QuestionsToSkip.size === this.appService.appData.length) { this.isVisible = true; @@ -392,6 +490,10 @@ export class HomeComponent implements OnInit { radioChecked(sourceTab: number,data: QuestionModel,selectedOption: OptionsEntity,event?: any) { console.log(' questionID, selectedOptionID ',data.SectionId,selectedOption.Id,event.target.checked); + (selectedOption.SkipQuestionIDs||[]).forEach(id=>{ + this.QuestionsToSkip.add(id); + }); + let chekedValue = event.target.checked; if (sourceTab == 1) this.updateTabData(1,data, selectedOption.Id, chekedValue); diff --git a/src/app/interface/question-model.ts b/src/app/interface/question-model.ts index 819fd4e..9307c9b 100644 --- a/src/app/interface/question-model.ts +++ b/src/app/interface/question-model.ts @@ -9,6 +9,7 @@ export interface QuestionModel { MultipleAllowed: boolean; NoneOfAboveAllowed: boolean; IsAnswered: boolean; + Image: string; } export interface OptionsEntity { Id: number; @@ -20,6 +21,7 @@ export interface QuestionModel { URI?: string |null; IsSelected: boolean; SuperIndicators: string[] | null; + SkipQuestionIDs ?: string[] | null; } diff --git a/src/assets/app-data/FAIR_DSM_ASSESS_v1.1.json b/src/assets/app-data/FAIR_DSM_ASSESS_v1.1.json index 4e357be..be8fd84 100644 --- a/src/assets/app-data/FAIR_DSM_ASSESS_v1.1.json +++ b/src/assets/app-data/FAIR_DSM_ASSESS_v1.1.json @@ -7,6 +7,7 @@ "Question": "Which of the following statements best describes the current state of Data?", "MultipleAllowed": false, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -17,7 +18,8 @@ "SubCategory": "Dataset Representation (DR)", "URI": "https://fairplus.github.io/Data-Maturity/docs/Indicators/#dsm-0-r2", "IsSelected": false, - "SuperIndicators": null + "SuperIndicators": null, + "SkipQuestionIDs": [2, 3, 9] }, { "Id": 2, @@ -28,7 +30,8 @@ "SubCategory": "Dataset Representation (DR)", "URI": "https://fairplus.github.io/Data-Maturity/docs/Indicators/#dsm-1-r2", "IsSelected": false, - "SuperIndicators": null + "SuperIndicators": null, + "SkipQuestionIDs": [4, 5] } ] }, @@ -40,6 +43,7 @@ "Question": "Which of the following statements best describe how your data is currently represented?", "MultipleAllowed": true, "NoneOfAboveAllowed": true, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -97,6 +101,7 @@ "Question": "Which of the following statements best describes the current state of the Dataset\u0027s Metadata?", "MultipleAllowed": false, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -118,7 +123,8 @@ "SubCategory": "Dataset Metadata Representation", "URI": "https://fairplus.github.io/Data-Maturity/docs/Indicators/#dsm-1-r0", "IsSelected": false, - "SuperIndicators": null + "SuperIndicators": null, + "SkipQuestionIDs": [5] } ] }, @@ -130,6 +136,7 @@ "Question": "Which of the following statements best describes how the Dataset\u0027s metadata is represented?", "MultipleAllowed": true, "NoneOfAboveAllowed": true, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -201,6 +208,7 @@ "Question": "The following statements refer to the representation of Contextual Metadata that is necessary to understand and interpret Datasets\u0027 content. Which of the following statements best describes how information describing the context surrounding the dataset(s) is represented?", "MultipleAllowed": false, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -283,6 +291,7 @@ "Question": "Which of the following statements best describes the current format of the Dataset Metadata?", "MultipleAllowed": true, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -354,6 +363,7 @@ "Question": "Which of the following statements best describes the current data format?", "MultipleAllowed": false, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -414,6 +424,7 @@ "Question": "The following statements refer to the \u0022Data Content\u0022 reported in a Dataset that is designed and purposed for FAIR sharing. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -480,6 +491,7 @@ "Question": "The following statements refer to the Dataset Fields contained in a Dataset. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": true, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -535,6 +547,7 @@ "Question": "The following statements refer to the data values (measurements) recorded for each variable reported by a Dataset Field. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": true, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -590,6 +603,7 @@ "Question": "The following statemets refer to the metadata reported about the study/project related context surrounding the datasets. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -656,6 +670,7 @@ "Question": "The following statements refer to different metatadata content reported in a Dataset\u0027s Descriptor. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -722,6 +737,7 @@ "Question": "The following statements refer to field-level metadata. Select all that apply. (None is an option)", "MultipleAllowed": true, "NoneOfAboveAllowed": true, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -766,6 +782,7 @@ "Question": "The following statements refer to value-level metadata. Select all that apply. (None is an option)", "MultipleAllowed": true, "NoneOfAboveAllowed": true, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -799,6 +816,7 @@ "Question": "The following statements refer to the Storage Capabilities of the Data and Metadata Hosting Environments. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -865,6 +883,7 @@ "Question": "The following statements refer to the Retrieval Capabilities of the Data and Metadata Hosting Environments. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1, @@ -953,6 +972,7 @@ "Question": "The following statements refer to the Search Capabilities of the Data and Metadata Hosting Environments. Select all that apply.", "MultipleAllowed": true, "NoneOfAboveAllowed": false, + "Image":"../../assets/app-image/conceptual-model.png", "Options": [ { "Id": 1,