Skip to content

Commit

Permalink
QuestionnaireItemSVGQuality7pt: labels can now be defined via JS. (#7)
Browse files Browse the repository at this point in the history
QuestionnaireItemQuality7pt: labels can now be defined via JS.
Fixes #4.
  • Loading branch information
dennisguse committed Jul 30, 2017
1 parent a7b3bc9 commit 9db3e87
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 49 deletions.
20 changes: 19 additions & 1 deletion src/questionnaireitem_svg_quality7pt.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/**
A QuestionnaireItem presenting the 7pt Quality scale as defined in ITU-T P.851 p. 19.
Labels are by default in German - the content of the labels is defined in the SVG.
@class QuestionnaireItemSVGQuality7pt
@augments UIElement
Expand All @@ -10,16 +11,33 @@ A QuestionnaireItem presenting the 7pt Quality scale as defined in ITU-T P.851 p
@param {string} [className] CSS class
@param {string} question
@param {boolean} [required=false]
@param {string[]} [labels=["NOTE: Default labels are defined in the SVG."]] The labels (7 items; evaluated to string)
*/
function QuestionnaireItemSVGQuality7pt(className, question, required) {
function QuestionnaireItemSVGQuality7pt(className, question, required, labels) {
QuestionnaireItemSVG.call(this, className, question, required);

this.labels = labels;
}
QuestionnaireItemSVGQuality7pt.prototype = Object.create(QuestionnaireItemSVG.prototype);
QuestionnaireItemSVGQuality7pt.prototype.constructor = QuestionnaireItemSVGQuality7pt;
QuestionnaireItemSVGQuality7pt.prototype._setupSVG = function() {
this.scaleImage = document.createElementNS("http://www.w3.org/2000/svg", "svg");
this.scaleImage.setAttribute("viewBox", "0 2 136.76 21.39");
this.scaleImage.innerHTML = '@@include("../svg_scales/quality7pt_scale_include.svg")';

if (!(this.labels instanceof Array && this.labels.length === 7)) {
TheFragebogen.logger.warn(this.constructor.name + "._setupSVG()", "Exactly 7 labels are required as array. Got: " + this.labels);
} else {
TheFragebogen.logger.debug(this.constructor.name + "._setupSVG()", "Using custom labels: " + this.labels);

this.scaleImage.getElementById("label10").textContent = this.labels[0];
this.scaleImage.getElementById("label20").textContent = this.labels[1];
this.scaleImage.getElementById("label30").textContent = this.labels[2];
this.scaleImage.getElementById("label40").textContent = this.labels[3];
this.scaleImage.getElementById("label50").textContent = this.labels[4];
this.scaleImage.getElementById("label60").textContent = this.labels[5];
this.scaleImage.getElementById("label70").textContent = this.labels[6];
}
};
QuestionnaireItemSVGQuality7pt.prototype._getAnswerElements = function() {
return this.scaleImage.getElementsByTagName("ellipse");
Expand Down
81 changes: 34 additions & 47 deletions svg_scales/quality7pt_scale.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 9db3e87

Please sign in to comment.