Я пытался создать динамический штамп PDF-XChange с 4 динамическими текстовыми полями (Text1, Text2, Text3 и Text4) на штампе, который пользователь может редактировать в диалоговом окне до размещения штампа. Я хочу, чтобы пользователь выбрал штамп и всплывающее диалоговое окно, чтобы открыть 4 поля ввода пользователя:
- Статус RMA - пользователь для добавления статуса (с именем RMAS)
- Свободное текстовое поле, в которое пользователь может ввести что угодно (названное БЕСПЛАТНО)
- Имя пользователя и бизнес-команда, взятые из идентификационной информации пользователя (с именем TEAM).
- Сегодняшняя дата, редактируемая, если они что-то штампуют постфактум (название ДАТА)
У меня это работало, когда 4 раза появлялось диалоговое окно, задающее пользователю каждый вопрос подряд, но было запрошено одно диалоговое окно с 4 текстовыми полями. Я просто не могу понять, как мой код ниже должен измениться, чтобы работать, но я очень новичок в этом.
В настоящее время он открывает только последний из вопросов (дата), не заполненный моим кодом даты JavaScript непосредственно перед активацией диалога, ни один из других вопросов. Если я удалю элемент даты, он задаст вопрос перед ним (имя и бизнес-подразделение), но не отобразит диалоговое окно со всеми 4 вопросами, предварительно заполненными с использованием данных, обработанных в конце кода, который был протестирован отдельно и работает.
Мой код прокомментирован ниже. Если кто-нибудь может помочь мне открыть диалоговое окно с предварительно заполненными 4 текстовыми полями, я хотел бы увидеть, где я ошибся. И если вы можете помочь мне добавить данные в поля Text1 to Text4 штампа, я был бы на седьмом небе от счастья!
// Dialog Definition
var oDlg = {
RMAStatus: "",
FreeText: "",
NameAndUnit: "",
TodaysDate: "",
description:
{
name: "Stamp details",
elements:
[
{
type: "view",
elements:
[
{
type: "view",
elements:
[
{
item_id: "lbl1",
type: "static_text",
name: "&RMA Stage",
},
{
width: 200,
height: 22,
type: "edit_text",
item_id: "rmas",
}
],
type: "view",
elements:
[
{
item_id: "lbl1",
type: "static_text",
name: "&Free text field",
},
{
width: 200,
height: 88,
type: "edit_text",
item_id: "free",
}
],
type: "view",
elements:
[
{
item_id: "lbl1",
type: "static_text",
name: "&Your name and team",
},
{
width: 200,
height: 22,
type: "edit_text",
item_id: "team",
}
],
type: "view",
elements:
[
{
item_id: "lbl1",
type: "static_text",
name: "&Stamp date",
},
{
width: 200,
height: 22,
type: "edit_text",
item_id: "date",
}
]
},
{
type: "ok_cancel",
}
]
}
]
},
initialize: function(dialog) { // where the data in dialog elements is set when the dialog is first activated
dialog.load({
"rmas":this.RMAStage,
"free":this.FreeText,
"team":this.CorrectName,
"date":this.todaysDate,
});
},
commit: function(dialog) { // where element data is acquired when the user presses the OK button
var data = dialog.store();
this.RMAStage = data["rmas"];
this.FreeText = data["free"];
this.CorrectName = data["team"];
this.todaysDate = data["date"];
}
};
/*
* Pre-fill the dialog text fields with the data below
*/
/* RMA STAGE (for RMAS to be populated) */
oDlg.RMAStage = "RMA Stage";
/* FREE TEXT FIELD (for FREE to be populated) */
oDlg.FreeText = "";
/* NAME AND UNIT (for TEAM to be populated) */
var IdentityName, IdentityNameSplit, Unit;
/* Set Organisation Unit */
Unit = "Parks & Landscapes Team"; // Unlikely to change
/* Find correctly formatted username from Identity info */
if((identity.name != null) && !/^\s*$/.test(identity.name))
IdentityName = identity.name;
else
IdentityName = identity.loginName.replace(/\./g," ").replace(/\./g," ").replace(/\b(\w)/g,function(Word,cFst){return cFst.toUpperCase()});
if (IdentityName.indexOf(', ') > -1) { // If the result is "Surname, Firstname" swap the names to make "Firstname Surname"
IdentityNameSplit = IdentityName.split(', ');
oDlg.NameAndUnit = IdentityNameSplit[1] + " " + IdentityNameSplit[0] + ", " + Unit;
}
else
oDlg.NameAndUnit = IdentityName + ", " + Unit;
/* FORMATTED DATE FIELD (for DATE to be populated) */
var stampDate;
stampDate = new Date();
oDlg.TodaysDate = util.printd("dd mmmm, yyyy", stampDate);
// Start dialog function
app.execDialog (oDlg);