- Ce sujet contient 11 réponses, 3 participants et a été mis à jour pour la dernière fois par , le il y a 2 années et 6 mois.
-
Sujet
-
Bonjour,
je cherche à créer un tampon dynamique avec un pop-up qui s’ouvre au moment de l’utilisation de la date. Je voulais m’inspirer de celui-existant sur pdf-x-change en utilisant le même code qui est ci-dessous :
var DateDlg =
{
result: "cancel",
DoDialog: function () { return app.execDialog(this); },
//
strDefFmt: "dd-mm-yyyy",
strFmt: "dd/mm/yyyy",
vDate: new Date,
strDate: "",
//
SetListSel: function (list, path) {
if (path.length == 0) return;
eval("list[\"" + ((path.join != "function") ? path : path.join("\"][\"")) + "\"] = 1");
},
GetListSel: function (oLstResult) {
for (var item in oLstResult) {
if ((typeof oLstResult[item] == "number") && (oLstResult[item] > 0))
return item;
}
return "";
},
formatDate: function (d, f) {
return util.printd(f, d);
},
//
initialize: function (dialog) {
var fmt_list =
{
"dd/mm/yyyy": -1,
"dd.mm.yyyy": -1,
"mm-dd-yyyy": -1,
"mm/dd/yyyy": -1,
"mmm dd, yyyy": -1,
"mmmm dd, yyyy": -1,
"yyyy-mm-dd": -1,
"ddd, mmmm d, yyyy": -1,
"m/d/yyyy": -1,
"dd.mm.yyyy HH:MM:ss": -1,
"mm-dd-yyyy hh:MM:ss tt": -1,
"HH:MM:ss": -1,
"H:MM:ss": -1,
"hh:MM:ss tt": -1,
"h:MM:ss tt": -1,
};
this.SetListSel(fmt_list, this.strFmt);
this.strDate = this.formatDate(this.vDate, this.strDefFmt);
//
var dlgInit =
{
"fmt1": fmt_list,
"date": this.strDate,
"prev": this.formatDate(this.vDate, this.strFmt),
};
dialog.load(dlgInit);
},
commit: function (dialog) {
var oRslt = dialog.store();
var path = new Array();
this.strFmt = this.GetListSel(oRslt["fmt1"]);
var d = oRslt["date"];
if (typeof d == "string")
d = util.scand(this.strDefFmt, d);
if (d != null)
{
var cur = new Date;
d = new Date(d.getFullYear(), d.getMonth(), d.getDate(), cur.getHours(), cur.getMinutes(), cur.getSeconds());
}
this.vDate = d;
this.strDate = oRslt["date"];
},
// handlers
"date": function (dialog) {
this["fmt1"](dialog);
},
"fmt1": function (dialog) {
var rslts = dialog.store();
var sel = this.GetListSel(rslts["fmt1"]);
this.strFmt = sel;
var prev = "";
var d = rslts["date"];
if (typeof d == "string")
d = util.scand(this.strDefFmt, d);
if (d != null)
{
var cur = new Date;
var dd = new Date(d.getFullYear(), d.getMonth(), d.getDate(), cur.getHours(), cur.getMinutes(), cur.getSeconds());
prev = this.formatDate(dd, this.strFmt);
}
var l =
{
"prev": prev,
};
dialog.load(l);
},
//
description:
{
name: "Specify Date",
elements:
[
{
type: "view",
elements:
[
{
type: "cluster",
name: "Title",
elements:
[
{
type: "view",
//align_children: "align_row",
elements:
[
{
item_id: "lbl1",
name: "&Date (mm-dd-yyyy):",
type: "static_text",
},
{
item_id: "date",
type: "edit_text",
width: 150,
DateEdit: true,
},
]
},
{
type: "view",
// align_children: "align_row",
elements:
[
{
item_id: "lbl1",
name: "&Format:",
type: "static_text",
},
{
item_id: "fmt1",
type: "popup",
width: 150,
}
]
},
]
},
{
type: "cluster",
name: "Result Preview",
elements:
[
{
item_id: "prev",
name: "",
alignment: "align_center",
type: "static_text",
char_width: 25,
}
]
},
{
type: "ok_cancel",
},
]
}
]
}
};
if (event.source.forReal && (event.source.stampName == "#gFArg3CUa7QIU6ELF48e51"))
{
if (DateDlg.DoDialog() == "ok")
{
var d = DateDlg.vDate;
event.value = util.printd(DateDlg.strFmt, d);
}
else
{
event.value = "Canceled!";
}
}
else
{
var d = DateDlg.vDate;
event.value = util.printd(DateDlg.strFmt, d);
}
Lorsque je lance la console il me dit qu’il y a un soucis avec la ligne suivante :
if (event.source.forReal && (event.source.stampName == “#gFArg3CUa7QIU6ELF48e51”))
j’imagine bien que c’est en rapport avec le nom du tampon mais je ne comprend pas trop comment faire pour le modifier et avoir un nom correct qui ferait que cela fonctionne correctement.
Le but étant de mettre le champ dans un tampon créer pour l’occasion (ça j’arrive à faire par contre ^^)
Merci d’avance pour l’aide que vous pourriez apporter à ce soucis.
P.S : je précise que j’ai fait une recherche sur le forum ici et d’autres forums mais sans succès quand à une ébauche d’idée.
- Vous devez être connecté pour répondre à ce sujet.