Merge pull request #16563 from calixteman/bug1838855
Guess that a checkbox belongs to a group in using its T value (bug 1838855)
This commit is contained in:
commit
a5c10b6d89
@ -1530,6 +1530,17 @@ class WidgetAnnotation extends Annotation {
|
|||||||
if (data.fieldName === undefined) {
|
if (data.fieldName === undefined) {
|
||||||
data.fieldName = this._constructFieldName(dict);
|
data.fieldName = this._constructFieldName(dict);
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
data.fieldName &&
|
||||||
|
/\[\d+\]$/.test(data.fieldName) &&
|
||||||
|
!dict.has("Kids")
|
||||||
|
) {
|
||||||
|
data.baseFieldName = data.fieldName.substring(
|
||||||
|
0,
|
||||||
|
data.fieldName.lastIndexOf("[")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (data.actions === undefined) {
|
if (data.actions === undefined) {
|
||||||
data.actions = collectActions(xref, dict, AnnotationActionEventType);
|
data.actions = collectActions(xref, dict, AnnotationActionEventType);
|
||||||
}
|
}
|
||||||
|
@ -1674,6 +1674,11 @@ class PDFDocument {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!field.has("Kids") && /\[\d+\]$/.test(name)) {
|
||||||
|
// We've a terminal node: strip the index.
|
||||||
|
name = name.substring(0, name.lastIndexOf("["));
|
||||||
|
}
|
||||||
|
|
||||||
if (!promises.has(name)) {
|
if (!promises.has(name)) {
|
||||||
promises.set(name, []);
|
promises.set(name, []);
|
||||||
}
|
}
|
||||||
|
@ -1106,7 +1106,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
|
|||||||
element.setAttribute("data-element-id", id);
|
element.setAttribute("data-element-id", id);
|
||||||
|
|
||||||
element.disabled = this.data.readOnly;
|
element.disabled = this.data.readOnly;
|
||||||
element.name = this.data.fieldName;
|
element.name = this.data.baseFieldName || this.data.fieldName;
|
||||||
element.tabIndex = DEFAULT_TAB_INDEX;
|
element.tabIndex = DEFAULT_TAB_INDEX;
|
||||||
|
|
||||||
this._setRequired(element, this.data.required);
|
this._setRequired(element, this.data.required);
|
||||||
@ -1408,7 +1408,7 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
|
|||||||
element.disabled = data.readOnly;
|
element.disabled = data.readOnly;
|
||||||
this._setRequired(element, this.data.required);
|
this._setRequired(element, this.data.required);
|
||||||
element.type = "checkbox";
|
element.type = "checkbox";
|
||||||
element.name = data.fieldName;
|
element.name = data.baseFieldName || data.fieldName;
|
||||||
if (value) {
|
if (value) {
|
||||||
element.setAttribute("checked", true);
|
element.setAttribute("checked", true);
|
||||||
}
|
}
|
||||||
@ -1493,7 +1493,7 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
|
|||||||
element.disabled = data.readOnly;
|
element.disabled = data.readOnly;
|
||||||
this._setRequired(element, this.data.required);
|
this._setRequired(element, this.data.required);
|
||||||
element.type = "radio";
|
element.type = "radio";
|
||||||
element.name = data.fieldName;
|
element.name = data.baseFieldName || data.fieldName;
|
||||||
if (value) {
|
if (value) {
|
||||||
element.setAttribute("checked", true);
|
element.setAttribute("checked", true);
|
||||||
}
|
}
|
||||||
@ -1606,7 +1606,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
|
|||||||
|
|
||||||
selectElement.disabled = this.data.readOnly;
|
selectElement.disabled = this.data.readOnly;
|
||||||
this._setRequired(selectElement, this.data.required);
|
this._setRequired(selectElement, this.data.required);
|
||||||
selectElement.name = this.data.fieldName;
|
selectElement.name = this.data.baseFieldName || this.data.fieldName;
|
||||||
selectElement.tabIndex = DEFAULT_TAB_INDEX;
|
selectElement.tabIndex = DEFAULT_TAB_INDEX;
|
||||||
|
|
||||||
let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;
|
let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;
|
||||||
|
@ -120,6 +120,46 @@ describe("Checkbox annotation", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("f1040_2022.pdf", () => {
|
||||||
|
let pages;
|
||||||
|
|
||||||
|
beforeAll(async () => {
|
||||||
|
pages = await loadAndWait(
|
||||||
|
"f1040_2022.pdf",
|
||||||
|
"[data-annotation-id='1566R']"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterAll(async () => {
|
||||||
|
await closePages(pages);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("must check the checkbox", async () => {
|
||||||
|
await Promise.all(
|
||||||
|
pages.map(async ([_browserName, page]) => {
|
||||||
|
const selectors = [1566, 1568, 1569, 1570, 1571].map(
|
||||||
|
id => `[data-annotation-id='${id}R']`
|
||||||
|
);
|
||||||
|
for (const selector of selectors) {
|
||||||
|
await page.click(selector);
|
||||||
|
for (const otherSelector of selectors) {
|
||||||
|
if (otherSelector === selector) {
|
||||||
|
await page.waitForFunction(
|
||||||
|
`document.querySelector("${selector} > :first-child").checked`
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
await page.waitForFunction(
|
||||||
|
`!document.querySelector("${otherSelector} > :first-child").checked`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
page.waitForTimeout(10);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("Text widget", () => {
|
describe("Text widget", () => {
|
||||||
|
@ -1491,6 +1491,22 @@ describe("api", function () {
|
|||||||
await loadingTask.destroy();
|
await loadingTask.destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("check field object for group of buttons", async function () {
|
||||||
|
if (isNodeJS) {
|
||||||
|
pending("Linked test-cases are not supported in Node.js.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const loadingTask = getDocument(buildGetDocumentParams("f1040_2022.pdf"));
|
||||||
|
const pdfDoc = await loadingTask.promise;
|
||||||
|
const fieldObjects = await pdfDoc.getFieldObjects();
|
||||||
|
|
||||||
|
expect(
|
||||||
|
fieldObjects["topmostSubform[0].Page1[0].c1_01"].map(o => o.id)
|
||||||
|
).toEqual(["1566R", "1568R", "1569R", "1570R", "1571R"]);
|
||||||
|
|
||||||
|
await loadingTask.destroy();
|
||||||
|
});
|
||||||
|
|
||||||
it("gets non-existent calculationOrder", async function () {
|
it("gets non-existent calculationOrder", async function () {
|
||||||
const calculationOrder = await pdfDocument.getCalculationOrderIds();
|
const calculationOrder = await pdfDocument.getCalculationOrderIds();
|
||||||
expect(calculationOrder).toEqual(null);
|
expect(calculationOrder).toEqual(null);
|
||||||
|
Loading…
Reference in New Issue
Block a user