Fletch Posted March 15, 2022 Share Posted March 15, 2022 (edited) I picked this rule in a post from 2013. What am I missing? The Labels (Office, Direct, Cell) still appear when the cell is empty. I should also add that I need to labels for each a particular font and color, and the actual phone numbers a separate font and color. I'll upload my csv file and a jpg image to show. var numbers = ["Office: " + Field("Office"),"Direct: " + Field("Direct"),"Cell: " + Field("cell")]; return numbers.filter(function(s){return s.length>4;}).join(" "); Edited March 15, 2022 by Fletch Quote Link to comment Share on other sites More sharing options...
Fletch Posted March 15, 2022 Author Share Posted March 15, 2022 It will not let me attach the xlsx or csv file. Quote Link to comment Share on other sites More sharing options...
ThomasLewis Posted March 15, 2022 Share Posted March 15, 2022 (edited) It's not working because you are filtering on the length being greater than 4. Your shortest length is "Cell: " which is 6. Anyways, that wont work with the formatting you want. Give this a shot: function format_phone(prefix, phone_num) { if (phone_num) return '<span color="Red">' + prefix + ": " + '</span><span color="Blue">' + phone_num + '</span>'; else return false; } var numbers = [format_phone("Office", Field("Office")), format_phone("Direct", Field("Direct")), format_phone("Cell", Field("Cell"))]; return numbers.filter(Boolean).join(" "); Edit: The forums turned my "& # 32;" into a space (without the spaces between them). You will need to use that entity instead of a literal space character in the join(" ") Edited March 15, 2022 by ThomasLewis Quote Link to comment Share on other sites More sharing options...
Fletch Posted March 16, 2022 Author Share Posted March 16, 2022 That worked like a charm. I tweaked it a bit for the proper colors and to add a space between the numbers. I also duped a section to add a extension to the Office number. I need the 'ext' to be black as well as the actual extension number, and a '.' after the ext instead of a ':' colon. Can that be done? (Code below) function format_phone(prefix, phone_num) { if (phone_num) return '<span color="PANTONE BLUE 072 U">' + prefix + ": " + '</span><span color="Black">' + phone_num + '</span>'; else return false; } var numbers = [format_phone("<b> Office</b>", Field("Office")), format_phone("<b> ext</b>", Field("Ext")), format_phone("<b> Direct</b>", Field("Direct")), format_phone("<b> Cell</b>", Field("Cell"))]; return numbers.filter(Boolean).join(" "); Quote Link to comment Share on other sites More sharing options...
Dan Korn Posted March 16, 2022 Share Posted March 16, 2022 I need the 'ext' to be black as well as the actual extension number, and a '.' after the ext instead of a ':' colon. Can that be done? This should work: function format_phone(prefix, phone_num) { if (!Field(phone_num)) return ""; var endsWithDot = prefix.match(/\.$/); var result = '<span bold=true'; if (!endsWithDot) result += ' color="PANTONE BLUE 072 U"'; result +='>' + prefix; if (!endsWithDot) result += ":"; result += " " + '</span>' + Field(phone_num); return result; } var numbers = { Office: "Office", "ext.": "Ext", Direct: "Direct", Cell: "Cell" }; var result = []; for (var label in numbers) result.push(format_phone(label, numbers[label])); return result.filter(String).join(" \n"); I've reduced the code a bit by having just the minimal data in the numbers object (which is now an object with a map of properties and values instead of an array), and calling the format_phone function in a loop, which includes the calls to Field. There's a little bit of Regular Expression magic to detect whether the prefix (label) ends with a dot, which is what we use to determine whether to change the color and append the colon. I also put the bold change into the span tag, and removed the code to set the color to Black, which is not needed if the variable for this rule is inserted in Black in the Text Editor, since the ending </span> tag restores the original color. Quote Link to comment Share on other sites More sharing options...
Fletch Posted March 17, 2022 Author Share Posted March 17, 2022 That codes works perfectly! I do need one adjustment. I need the 'ext.' to be not bold. Quote Link to comment Share on other sites More sharing options...
Dan Korn Posted March 17, 2022 Share Posted March 17, 2022 That codes works perfectly! I do need one adjustment. I need the 'ext.' to be not bold. Sure, a minor change: function format_phone(prefix, phone_num) { if (!Field(phone_num)) return ""; var endsWithDot = prefix.match(/\.$/); var result = '<span'; if (!endsWithDot) result += ' bold=true color="PANTONE BLUE 072 U"'; result +='>' + prefix; if (!endsWithDot) result += ":"; result += " " + '</span>' + Field(phone_num); return result; } var numbers = { Office: "Office", "ext.": "Ext", Direct: "Direct", Cell: "Cell" }; var result = []; for (var label in numbers) result.push(format_phone(label, numbers[label])); return result.filter(String).join(" \n"); Quote Link to comment Share on other sites More sharing options...
Fletch Posted March 18, 2022 Author Share Posted March 18, 2022 Dan, thanks a million. I truly am grateful. For some reason, the 'ext.' is still Bold. I've examined the code to see if I could possibly figure it out and it's not really jumping out at me. So sorry. Can you adjust the code for the 'ext.' to not be bold? Quote Link to comment Share on other sites More sharing options...
Dan Korn Posted March 18, 2022 Share Posted March 18, 2022 Dan, thanks a million. I truly am grateful. For some reason, the 'ext.' is still Bold. I've examined the code to see if I could possibly figure it out and it's not really jumping out at me. So sorry. Can you adjust the code for the 'ext.' to not be bold? Hmm, it works for me. Though I don't have your job files, so I had to change the field names and use a different test job. Are you sure you have the exact code I posted? Anyway, there's nothing I can do to diagnose what's happening in your specific job without the files. Quote Link to comment Share on other sites More sharing options...
Fletch Posted March 21, 2022 Author Share Posted March 21, 2022 I found my mistake. I had duped the original Rule you sent, to create the second Rule, but forgot to swap the Rules in the Text Frame. It works perfectly. Again, many thanks. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.