Ward directory generator

Discussions about the Directory Tool on lds.org. Questions about the Directory on the classic site should be posted in the LUWS forum.
russross
New Member
Posts: 14
Joined: Mon Mar 26, 2012 5:16 pm

Postby russross » Thu Mar 29, 2012 1:04 pm

jdlessley wrote:The first is that the font size was quite small to display all the data on a two sided single sheet. Whenever the font is smaller that 10 points those with vision issues may not be able to see the text. I believe my test data was printed in something close to 7 points or even smaller. I know that reducing the font is necessary to get all the data onto a single two-sided sheet. But I think this need unnecessarily restricts the output to an unreasonably small font. Large wards are going to have extremely small font sizes that even those with good vision are going to have difficulty using.


For really large wards, fitting it on two pages just isn't practical. You either need to reduce the information included, or increase the number of pages. With my own ward, I was surprised how much difference it made to remove the city, state, and zip and clean up the addresses. I went from 7 or 8 points up to about 10 points, which I agree is a much nicer size. Part of that was cleaning up the records. I spent a lot of time verifying member addresses and fixing everything to the canonical spellings given by the post office. This abbreviates Street to St, Court to Ct, North to N, etc. With a clean data set, it is pretty easy to condense the listing data, which boosts the font size. Still, with a big enough ward even this won't do it, and more pages are necessary. I can't really see a way around that. For such wards, this tool may not be of much use.

jdlessley wrote:When going through the steps on the web site to generate an output, the customizing information came after the generation of the page. There was no mention that customization would even be necessary. It became obvious after the first run that some customization was necessary. But what exactly was the minimum customization needed for an acceptable output was not obvious. I would expect a page setup default that would permit generation of the directory without any customization.

My first generated directory had placeholder data. The most obvious was the display of "Your Ward Name Goes Here". Some instruction regarding customization needs to be included in the process description ahead of the generation button if there is not going to be a usable default without placeholders. People will be come frustrated if they have to make multiple tries to get what they thought they were going to get on the first try.


Most of the customization is a one-off process, and will probably require someone with reasonable technical know-how (especially using regular expressions). The generate button is at the top so that every time after that it is easy to kick out an updated version. As you can probably tell, I'm not great with the UI side of things. This really started as a project for my ward and those of my brothers, who are also quite technical. Then a colleague wanted to use it, and so on, so I tried to make it accessible. I don't see this as usable by an average person, at least not with my limited UI skills. I'll probably have another go at it at some point.

jdlessley wrote:We have already addressed the disclaimer in previous posts. I would prefer the disclaimer to have the minimum as a default and not editable by the user - at least not allow removing the minimum as provided on the LDS.ORG directory printout. Having that much print in the header is clumsy. I would prefer the disclaimer to be in the footer similar to how it is done in the LDS.ORG printout.


I agree. The current setup was a quick patch since I had omitted that text entirely at first.

jdlessley wrote:As you can tell from my post in post #3 there is confusion just as to what will be saved when the "Save" button is clicked. An explanation as to what will be saved is needed.


Another good point. I've thought about pulling all of the buttons into a sidebar or a floating button bar or something and clarifying what each does.

The biggest thing I need to address is making it downloadable so people don't have to transmit the CSV file to a server. I'm worried that if the issues you've mentioned confuse people, downloading a package will be far too much for an average user to handle (I doubt anyone reading this is of "average" technical ability--you are probably far more tech savvy even than average clerks). Hopefully I'll be able to find time to address all of these issues before too long. The end of the semester is approaching and getting anything done before summer gets harder and harder.

natet
Member
Posts: 64
Joined: Fri Oct 24, 2008 4:09 pm
Location: Richland, Washington, USA

Postby natet » Sun Apr 01, 2012 11:02 am

Our stake has used a perl script for several years to generate a printed stake directory. It takes the export data from MLS for each ward and generates pdf files using latex. I've posted a few pictures to show the output from this system.

stakedir1
stakedir2
stakedir3

Unlike the OP, we have at least 4 zip codes in our stake, and almost all wards span 2 or 3 zip codes. We have encoded the zip codes in a pretty simple way. There are 2 zip codes in Richland, so R2 is 99352, and R4 is 99354. One nice feature that this software has is an alphabetic directory of all the members in the stake. This alphabetic list simply shows which ward a person is in, so you can search by name to find the ward, then go to the ward page to get their contact information.

I didn't even know that they had added printing to the online directory until this thread, so I'll be looking at this for our next directory.

RossEvans
Senior Member
Posts: 1346
Joined: Wed Jun 11, 2008 8:52 pm
Location: Austin TX
Contact:

Postby RossEvans » Sun Apr 01, 2012 12:59 pm

aebrown wrote:There are no "directories printed from MLS for ward distribution." There are directories that can be printed from MLS, but nothing in MLS says that they are for distribution. Thus the "For Church use only" warning that is printed from MLS is adequate. But in Handbook 2, Section 21.1.15, we read that an additional disclaimer is required on ""published" directories: "The beginning of each directory should include a statement that it is to be used only for Church purposes and should not be copied without permission of the bishop or stake president." (emphasis added). The directory printed from LDS.org follows that directive, and all directories distributed by the ward or stake should do so as well.


Publishing a directory -- as distinct from merely viewing it online or printing it -- also entails several more stringent requirements according to that same handbook provision:

Directories

Stake and ward directories may be published according to the following instructions:

Names, addresses, and phone numbers may be included in a directory only if they are listed in a commercial telephone directory or, if they are unlisted, if the member gives permission. E-mail addresses may be included only with the member’s permission. ...
Just because the "Names, addresses, and phone numbers" appear in the online directory, and printouts thereof, such condition does not satisfy those explicit requirements for being "published" in a directory. In fact, the new online directory now includes names of non-member spouses without permission from from anyone -- names that do not even appear in MLS directories without entering special records that require even more permission from the non-members themselves.

So regardless of the software used to format the directory to be published, it appears that there would have to be some process to research commercial telephone directories, and sometimes to ask someone for permission for opt-in. The software tool would have to be able to omit certain names that appear in the CSV download. Manual editing of the CSV seems error-prone.

russross
New Member
Posts: 14
Joined: Mon Mar 26, 2012 5:16 pm

Postby russross » Mon Apr 02, 2012 9:09 pm

To comply with the no-third-party-server rule, I have packaged it all up into a downloadable program. It gives you a .zip file (for Windows) or a .tar.gz file (for Linux), which unpacks into a single executable file. No additional installation is required. Just run the program, then point your browser at it and it should work like it did before, only now everything is running on your local machine. Everything is embedded in the executable: once installed it does not require an internet connection at all.

I have only tested it under Linux, since that is the only kind of machine I have. The Windows executables were generated with a cross compiler. If anyone is willing to test them and see if they work, I'd very much appreciate it.

I have also incorporated some more of the feedback I've received. The "Save" option is gone--saving settings is now automatic. Downloading and uploading have been renamed "Export settings" and "Import settings" respectively, and pushed to the bottom of the page. I hope it is somewhat clearer now than it used to be.

Once again, thanks for all of the feedback, and especially for alerting me to the rule about third-party servers.

nathangg
Member
Posts: 249
Joined: Tue Dec 21, 2010 12:36 pm

Postby nathangg » Tue Apr 03, 2012 11:40 am

Wow!

You've put a lot of work into this, thank you! (And thank you for making it run as a local service instead of sending data across the internet).

Something I used to do regularly was build a 2 sided PDF directory for our members using the downloaded CSV and some Excel formulas (you can see an idea of what the output looked like here (here is my .xlsx download).

Unfortunately with my setup, it required that people have MS Office and time to format it to print.

So your option seems great! I just tested with Windows 7 64bit (I downloaded the 64 bit version).

However, the one thing that I'm running into is I'm used to having names in our ward directory print with this format:

Last, First (ind. phone) & SpouseFirst (Ind. Phone), abbreviated street address

If any fields don't exist, I don't show them, for example:

Smith, Joseph (555-888-1212) & Emma, 123 Market Street

Unfortunately I can't get individual numbers to show with your program unless I show ALL family members.

Is there a way I could modify the code that is running on my local machine so I could change the logic that would allow me to show individual phone numbers even though I'm hiding all family members except the head of household and spouse?

Thanks~

nathangg
Member
Posts: 249
Joined: Tue Dec 21, 2010 12:36 pm

Postby nathangg » Tue Apr 03, 2012 11:53 am

Also, I just figured out substitution pairs, but I can't figure out how to delete a substitution pair if I accidentally added too many.

russross
New Member
Posts: 14
Joined: Mon Mar 26, 2012 5:16 pm

Postby russross » Tue Apr 03, 2012 5:52 pm

nathangg wrote:However, the one thing that I'm running into is I'm used to having names in our ward directory print with this format:

Last, First (ind. phone) & SpouseFirst (Ind. Phone), abbreviated street address

If any fields don't exist, I don't show them, for example:

Smith, Joseph (555-888-1212) & Emma, 123 Market Street

Unfortunately I can't get individual numbers to show with your program unless I show ALL family members.

Is there a way I could modify the code that is running on my local machine so I could change the logic that would allow me to show individual phone numbers even though I'm hiding all family members except the head of household and spouse?


The source code is written in the language Go. The full source is available here:

http://github.com/russross/warddirectory/

You are welcome to download it and customize it however you like. A warning is in order: this is the product of a fairly rapid development cycle, and the code is a bit messy in places. Full information about the Go language is available here:

http://golang.org/

It is an open source language that can be downloaded and used freely. Once you have the environment installed, the directory generator should build without any special effort.

The code you would be interested in is in families.go (you can browse it from the github site). In particular, ParseFamilies runs through the CSV data and extracts each family into a Family object (defined at the top of that same file), which includes a list of Person objects. ParseFamilies extracts exactly the data that is to be included. Then FormatFamilies processes the list of Family objects and formats it for printing.

To do what you described, you would need to limit the family members included to those found in the Couples field. The CSV data lists family members, but does not mark which ones are heads of household (unlike the MLS export data), so you'd have to work that out.

nathangg wrote:Also, I just figured out substitution pairs, but I can't figure out how to delete a substitution pair if I accidentally added too many.


Just leave it blank and it will be deleted. It won't "disappear" until your refresh the page, but any entry with a blank "Search for" part is ignored when the settings are saved.

nathangg
Member
Posts: 249
Joined: Tue Dec 21, 2010 12:36 pm

Postby nathangg » Tue Apr 03, 2012 7:24 pm

Thanks! I'll have to take a look.

russross wrote:To do what you described, you would need to limit the family members included to those found in the Couples field. The CSV data lists family members, but does not mark which ones are heads of household (unlike the MLS export data), so you'd have to work that out.


Hmmm, I'm not sure about this... my CSV output has the following columns:


Family Name
Couple Name
Family Phone
Family Email
Family Address
Head Of House Name
Head Of House Phone
Head Of House Email
Spouse Name
Spouse Phone
Spouse Email

and then repeating:
Child Name
Child Phone
Child Email

So I think for my formatting to work, I'd just want to do the following:

[Family Name]
[Family Phone]
Right([Head of House Name],Len([Head of House Name]) - Instr(",",[Head of House Name]))
if [Head of House Phone] <> "" then [Head of House Phone] end if
if [Spouse Name] <> "" then
Right([Spouse Name],Len([Spouse Name]) - Instr(",",[Spouse Name]))
if [Spouse Phone] <> "" then [Spouse Phone] end if
end if

I'll dig into the code tomorrow (I actually worked on http://wardphotodirectory.codeplex.com/ written in C# and converted it to work with the new CSV output... although that project is now somewhat defunct and doesn't work on Windows 7 last time I checked).

THANK YOU~!

russross
New Member
Posts: 14
Joined: Mon Mar 26, 2012 5:16 pm

Postby russross » Wed Apr 04, 2012 8:49 pm

nathangg wrote:Hmmm, I'm not sure about this... my CSV output has the following columns:

(snip)

I'll dig into the code tomorrow (I actually worked on http://wardphotodirectory.codeplex.com/ written in C# and converted it to work with the new CSV output... although that project is now somewhat defunct and doesn't work on Windows 7 last time I checked).


You are right! I treat all of the family members the same, and eventually forgot that the heads of household are explicitly listed. That means the change you propose would be pretty easy. Instead of looping through all potential family members when processing the CSV file, set the loop to stop before the 11th field (where the first Child Name begins). That behavior could replace what is currently done, i.e., getting the HOHs from the Couple Name field.

It's a great suggestion, and an easy one to implement (the best kind!). I'll probably do it myself when I get a chance.

Thanks for pointing that out!

russross
New Member
Posts: 14
Joined: Mon Mar 26, 2012 5:16 pm

Postby russross » Fri Apr 06, 2012 3:20 pm

I've updated it to allow personal phone numbers and emails for the HOH couple. Unticking that box now simply omits the kids in the family.

Also, since it is no longer an online app, I have moved it off Google App Engine. Please note the new URL:

http://russross.github.com/warddirectory/

The old location just points to the new one, but it will disappear eventually.

Thanks.


Return to “Directory”

Who is online

Users browsing this forum: No registered users and 1 guest