Skip to content

Commit

Permalink
Fix file question with camera doesnt work in matrixdynamic
Browse files Browse the repository at this point in the history
  • Loading branch information
dk981234 committed May 13, 2024
1 parent 2cb0996 commit d6f1c77
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 9 deletions.
9 changes: 2 additions & 7 deletions src/question_file.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IPlainDataOptions } from "./base-interfaces";
import { IPlainDataOptions, ISurveyImpl } from "./base-interfaces";
import { IQuestionPlainData, Question } from "./question";
import { property, propertyArray, Serializer } from "./jsonobject";
import { QuestionFactory } from "./questionfactory";
Expand Down Expand Up @@ -368,7 +368,7 @@ export class QuestionFileModel extends QuestionFileModelBase {
super.updateElementCssCore(cssClasses);
this.prevFileAction.iconName = this.cssClasses.leftIconId;
this.nextFileAction.iconName = this.cssClasses.rightIconId;
//this.mobileFileNavigator.cssClasses = this.survey.getCss().actionBar;
this.updateCurrentMode();
}
private getFileIndexCaption(): string {
return this.getLocalizationFormatString("indexText", this.indexToShow + 1, this.pagesCount);
Expand Down Expand Up @@ -934,11 +934,6 @@ export class QuestionFileModel extends QuestionFileModelBase {
this.actionsContainer.containerCss = classes.actionsContainer;
return classes;
}
//todo remove in v2
public updateElementCss(reNew?: boolean): void {
super.updateElementCss(reNew);
this.updateCurrentMode();
}
public onSurveyLoad(): void {
super.onSurveyLoad();
this.updateCurrentMode();
Expand Down
44 changes: 42 additions & 2 deletions tests/questionFileTests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { StylesManager } from "../src/stylesmanager";
import { Serializer } from "../src/jsonobject";
import { Camera } from "../src/utils/camera";
import { defaultV2Css } from "../src/defaultCss/defaultV2Css";
import { QuestionMatrixDynamicModel } from "../src/question_matrixdynamic";
export * from "../src/localization/german";
export default QUnit.module("Survey_QuestionFile");

Expand Down Expand Up @@ -1422,7 +1423,7 @@ QUnit.test("QuestionFile current mode property, camera is not available", functi
assert.equal(survey.getQuestionByName("q2").currentMode, "file");
assert.equal(survey.getQuestionByName("q3").currentMode, "camera");
assert.equal(survey.getQuestionByName("q4").currentMode, "file-camera");
assert.equal(callbacks.length, 2, "callbacks are set");
assert.ok(callbacks.length > 0, "callbacks are set");
callbacks.forEach(cb => cb([]));
assert.equal(survey.getQuestionByName("q1").currentMode, "file", "#1");
assert.equal(survey.getQuestionByName("q2").currentMode, "file", "#2");
Expand Down Expand Up @@ -1465,7 +1466,7 @@ QUnit.test("QuestionFile current mode property, camera is available", function (
assert.equal(survey.getQuestionByName("q2").currentMode, "file");
assert.equal(survey.getQuestionByName("q3").currentMode, "camera");
assert.equal(survey.getQuestionByName("q4").currentMode, "file-camera");
assert.equal(callbacks.length, 2, "callbacks are set");
assert.ok(callbacks.length > 0, "callbacks are set");

callbacks.forEach(cb => cb(devices));
assert.equal(survey.getQuestionByName("q1").currentMode, "file", "#1");
Expand Down Expand Up @@ -1920,3 +1921,42 @@ QUnit.test("Choose file action should have disabled class", function (assert) {
assert.equal(question.getChooseFileCss(), "sd-file__choose-btn sd-file__choose-file-btn--disabled sd-action sd-file__choose-btn--text sd-action--disabled", "Disabled");
});

QUnit.test("Bug #8242: currentMode is set incorrectly when file question is located inside matrixdynamic", function (assert) {
Camera.setCameraList(<any>[{ label: "test" }]);
const survey = new SurveyModel({
"pages": [
{
"name": "page1",
"elements": [
{
"type": "matrixdynamic",
"name": "question1",
"columns": [
{
"name": "col1",
"cellType": "file",
"sourceType": "file-camera"
}
],
"rowCount": 1
}
]
}
]
});
survey.css = defaultV2Css;
const getFileQuestionFromRow = (rowIndex: number) => {
return <QuestionFileModel>question.renderedTable.rows[rowIndex * 2 + 1].cells[0].cell.question;
};
const question = <QuestionMatrixDynamicModel>survey.getAllQuestions()[0];
assert.equal(getFileQuestionFromRow(0).currentMode, "file-camera");
assert.ok(getFileQuestionFromRow(0).actionsContainer.getActionById("sv-file-start-camera").visible);
question.addRowUI();
assert.equal(getFileQuestionFromRow(1).currentMode, "file-camera");
assert.ok(getFileQuestionFromRow(1).actionsContainer.getActionById("sv-file-start-camera").visible);
question.addRowUI();
assert.equal(getFileQuestionFromRow(2).currentMode, "file-camera");
assert.ok(getFileQuestionFromRow(2).actionsContainer.getActionById("sv-file-start-camera").visible);
Camera.clear();
});

0 comments on commit d6f1c77

Please sign in to comment.