Jump to content

Feature request

Recommended Posts

A nice feature to have in VDP Creator would be the ability to easily re-map data fields when assigning a new data source. For example, instead of just getting a warning that the names of the data fields do not match and having to keep the old or use the new, we could be presented with an option of comparing the old to the new and re-map as necessary. Just a thought.
Link to comment
Share on other sites

One way of handling this scenario is to assign your data fields to variables that are set in the OnRecordStart callback rule and referencing the new variables in your rules/text frames rather than the actual field names. That way re-mapping your variables is as easy as opening the OnRecordStart rule and re-assigning the field names to the variables without having to edit every specific rule or text box that references that field name. For example if I have a data file with fields "Name", "Phone" and "Address", my OnRecordStart callback would look like this:

FusionPro.Composition.AddVariable("temp_name", Field("Name"));
FusionPro.Composition.AddVariable("temp_phone", Field("Phone"));
FusionPro.Composition.AddVariable("temp_address", Field("Address"));

I prefixed "temp_" to names to distinguish between the variables I assigned and the variables that are in the data. Then in your rules you'd reference Field("temp_name") instead of Field("Name").


If you want to use the variable you created in a text rule, simply type "temp_name" in the "variable" selector of the Text Editor and click "Insert".


I know that's not as elegant as a GUI pop-up that remaps the variables for you but depending on how much time you spend re-mapping variables in your template, it might still end up saving you some time.

Link to comment
Share on other sites

That's not a bad idea. But the devil is in the details.


What specifically do you intend that this "re-mapping" feature would do? It's probably fine to replace variable call-outs in text, where a variable is inserted into the Variable Text Editor dialog, similar to how Font Replacement works. But there are some problems with this approach, since data fields are also used in rules. Automatically replacing field names in Drag-and-Drop rules, XML Template rules, and Switch Wizard rules could work, but things can get tricky in JavaScript.


For instance, would you expect that such "re-mapping" would search through JavaScript rules and replace calls to the Field function? What if the Field name was itself specified in a JavaScript variable, such as in this example?

var fieldName = (Field("Gender") == "M") ? "MalePhoto" : "FemalePhoto";
return CreateResource(Field(fieldName));

Or what if a rule iterates through multiple fields, like so?

var r = [];
for (var i = 1; i <= 10; i++)
   r.push(Field("Item " + i));
return r.join("\n");

Another common thing is to create a rule with the same name as a data field, to override the field's value, such as:

// Rule "State"
return ToUpper(Field(State));

Other scenarios include using the data file as an ExternalDataFileEx to aggregate data field values from multiple records together, calling alternative functions such as FieldChanged, TaggedDataField, and OptionalRuleOrField, and lots of other specialized functionality.


It would be almost impossible for any kind of "field mapper" to account for all of these kinds of ways that fields can be used in rules, so something that merely replaced field names in text could lead to jobs where those are mismatched from what rules are doing.

Link to comment
Share on other sites



I completely understand the conundrum with Javascript rules. What I run in to at times is having to pick up an old job where the client required us to delete the old data, so I can not compare the field names of the new data to the old. Yet, the Fusion file would have the old names remembered. Having a list pop up comparing the names would at least provide a shortcut to see what is the same, and what has changed without the trial and error of using the new names and seeing what breaks. Maybe a way to handle the fields used in javascript would be to have a .def file editor. I know, I can just keep dreaming!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...