Skip to content

Commit

Permalink
[JS] Update siblings when a field is updated after a calculation (moz…
Browse files Browse the repository at this point in the history
  • Loading branch information
calixteman committed Jun 24, 2022
1 parent eace7e4 commit a334a21
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/scripting_api/doc.js
Original file line number Diff line number Diff line change
Expand Up @@ -1151,6 +1151,7 @@ class Doc extends PDFObject {
field.obj.value = field.obj.defaultValue;
this._send({
id: field.obj._id,
siblings: field.obj._siblings,
value: field.obj.defaultValue,
formattedValue: null,
selRange: [0, 0],
Expand Down
7 changes: 7 additions & 0 deletions src/scripting_api/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,15 @@ class EventDispatcher {
}
source.obj._send({
id: source.obj._id,
siblings: source.obj._siblings,
value,
selRange: [selStart, selEnd],
});
}
} else if (!event.willCommit) {
source.obj._send({
id: source.obj._id,
siblings: source.obj._siblings,
value: savedChange.value,
selRange: [savedChange.selStart, savedChange.selEnd],
});
Expand All @@ -178,6 +180,7 @@ class EventDispatcher {
// so just clear the field.
source.obj._send({
id: source.obj._id,
siblings: source.obj._siblings,
value: "",
formattedValue: null,
selRange: [0, 0],
Expand All @@ -193,6 +196,7 @@ class EventDispatcher {
if (this.runActions(source, source, event, "Format")) {
source.obj._send({
id: source.obj._id,
siblings: source.obj._siblings,
formattedValue: event.value?.toString?.(),
});
}
Expand All @@ -215,6 +219,7 @@ class EventDispatcher {

source.obj._send({
id: source.obj._id,
siblings: source.obj._siblings,
value: savedValue,
formattedValue,
});
Expand All @@ -223,6 +228,7 @@ class EventDispatcher {
// The value is not valid.
source.obj._send({
id: source.obj._id,
siblings: source.obj._siblings,
value: "",
formattedValue: null,
selRange: [0, 0],
Expand Down Expand Up @@ -320,6 +326,7 @@ class EventDispatcher {

target.obj._send({
id: target.obj._id,
siblings: target.obj._siblings,
value: savedValue,
formattedValue,
});
Expand Down
50 changes: 49 additions & 1 deletion test/integration/scripting_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -1413,7 +1413,7 @@ describe("Interaction", () => {
await closePages(pages);
});

it("must check that data-annotation-rotation is correc", async () => {
it("must check that data-annotation-rotation is correct", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
await page.waitForFunction(
Expand Down Expand Up @@ -1444,4 +1444,52 @@ describe("Interaction", () => {
);
});
});

describe("in issue15092.pdf", () => {
let pages;

beforeAll(async () => {
pages = await loadAndWait("issue15092.pdf", getSelector("39R"));
});

afterAll(async () => {
await closePages(pages);
});

it("must check that a values is correctly updated on a field and its siblings", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
await page.waitForFunction(
"window.PDFViewerApplication.scriptingReady === true"
);

await clearInput(page, getSelector("39R"));
await page.type(getSelector("39R"), "123", { delay: 10 });

const prevTotal = await page.$eval(
getSelector("43R"),
el => el.value
);

await clearInput(page, getSelector("42R"));
await page.type(getSelector("42R"), "456", { delay: 10 });

await page.click(getSelector("45R"));

await page.waitForFunction(
`${getQuerySelector("43R")}.value !== "${prevTotal}"`
);
await page.waitForFunction(
`${getQuerySelector("46R")}.value !== "${prevTotal}"`
);

let total = await page.$eval(getSelector("43R"), el => el.value);
expect(total).withContext(`In ${browserName}`).toEqual("579.00");

total = await page.$eval(getSelector("46R"), el => el.value);
expect(total).withContext(`In ${browserName}`).toEqual("579.00");
})
);
});
});
});
1 change: 1 addition & 0 deletions test/pdfs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -529,3 +529,4 @@
!bug1724918.pdf
!issue15053.pdf
!bug1675139.pdf
!issue15092.pdf
Binary file added test/pdfs/issue15092.pdf
Binary file not shown.

0 comments on commit a334a21

Please sign in to comment.