diff --git a/package-lock.json b/package-lock.json index 85198596..dc47934a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "traitify-widgets", - "version": "3.8.2", + "version": "3.9.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "traitify-widgets", - "version": "3.8.2", + "version": "3.9.0", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.5.2", diff --git a/package.json b/package.json index e4127bd0..3cb5e322 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "traitify-widgets", - "version": "3.8.2", + "version": "3.9.0", "description": "Traitiy Widgets", "repository": { "type": "git", diff --git a/public/index.js b/public/index.js index f50aadbe..a995ed9e 100644 --- a/public/index.js +++ b/public/index.js @@ -144,6 +144,7 @@ function createAssessment() { if(cache.get("surveyType") === "benchmark") { return createWidget(); } if(cache.get("surveyType") === "cognitive") { return createCognitiveAssessment(); } if(cache.get("surveyType") === "order") { return createWidget(); } + if(cache.get("surveyType") === "generic") { return createGenericAssessment(); } const params = { deck_id: cache.get("deckID"), @@ -240,6 +241,24 @@ function createElement(options = {}) { return element; } +function createGenericAssessment() { + const query = Traitify.GraphQL.generic.create; + const variables = { + surveyID: cache.get("surveyID"), + profileID: cache.get("profileID") + }; + + Traitify.http.post(Traitify.GraphQL.generic.path, {query, variables}).then((response) => { + try { + const id = response.data.getOrCreateGenericAssessment.id; + cache.set("assessmentID", id); + } catch(error) { + console.log(error); + } + setTimeout(createWidget, 500); + }); +} + function destroyWidget() { Traitify.destroy(); } function setupTargets() { @@ -369,6 +388,7 @@ function setupDom() { options: [ {text: "Benchmark", value: "benchmark"}, {text: "Cognitive", value: "cognitive"}, + {text: "Generic", value: "generic"}, {text: "Order", value: "order"}, {text: "Personality", value: "personality"} ], @@ -404,6 +424,9 @@ function setupDom() { row.appendChild(createOption({name: "orderID", text: "Order ID:"})); group.appendChild(row) + row = createElement({className: surveyType !== "generic" ? "hide" : "", id: "generic-options"}); + row.appendChild(createOption({name: "profileID", text: "Profile ID:"})); + group.appendChild(row); row = createElement({className: "row"}); row.appendChild(createElement({onClick: createAssessment, tag: "button", text: "Create / Load"})); group.appendChild(row); @@ -427,6 +450,29 @@ function setupCognitive() { }); } +function setupGeneric() { + const query = Traitify.GraphQL.generic.surveys; + const variables = {localeKey: cache.get("locale")}; + + Traitify.http.post(Traitify.GraphQL.generic.path, {query, variables}).then((response) => { + try { + const options = response.data.genericSurveys + .map(({id, name}) => ({text: name, value: id})) + .sort((a, b) => a.text.localeCompare(b.text)); + + document.querySelector("#generic-options").appendChild(createOption({ + name: "surveyID", + onChange: onInputChange, + options, + text: "Survey:" + })); + } catch(error) { + console.log(error); + } + }); + +} + function setupTraitify() { const environment = cache.get("environment"); @@ -455,7 +501,7 @@ function onSurveyTypeChange(e) { const name = e.target.name; const value = e.target.value; const assessmentID = cache.get(`${value}AssessmentID`); - const otherValues = ["benchmark", "cognitive", "order", "personality"].filter((type) => type !== value); + const otherValues = ["benchmark", "cognitive", "generic", "order", "personality"].filter((type) => type !== value); cache.set("assessmentID", assessmentID); @@ -468,4 +514,5 @@ function onSurveyTypeChange(e) { setupTraitify(); setupDom(); setupCognitive(); +setupGeneric(); createWidget(); diff --git a/src/components/common/modal/index.js b/src/components/common/modal/index.js index b976a043..c6a6c652 100644 --- a/src/components/common/modal/index.js +++ b/src/components/common/modal/index.js @@ -4,11 +4,12 @@ import Icon from "components/common/icon"; import useTranslate from "lib/hooks/use-translate"; import style from "./style.scss"; -export default function Modal({children, onClose, title}) { +export default function Modal({children, containerClass = null, onClose, title}) { const translate = useTranslate(); + const sectionClass = [style.modalContainer, containerClass].filter(Boolean).join(" "); return (