Post by Uncle Buddy on Feb 9, 2020 8:09:16 GMT -8
For no reason whatsoever, genieware tends to limit the ways dates can be input while giving the user the option of displaying dates in ways that will be ambiguous to some other users who try to read their output. This is exactly backwards.
Dates can be input in a great variety of ways without causing anyone a problem as long as the code is written to provide this flexibility. Users should not have to think about which date entry style they have to use. Any date entry style should be recognized and if any particular input is not recognizable, a simple dialog can pop up for clarification of that input only.
But when it comes to displaying dates, certain formats should not be an option. Especially the ambiguous alternates "10-12-1884" and "12-10-1884" which each have opposite meanings to Americans who put the month first and Europeans who put the day first. ISO format puts the largest time period first so it's always year-month-day, as in "1884-10-12" which is unambiguously "Oct. 12, 1884". So ISO format is allowed for output.
The only other unambiguous date display formats are the ones that spell out all or part of the month.
In regards to date input, the user should be told that if he spells the month out or spells out the unique first letters of the month, or if he uses the ISO format, he will never see a confirmation dialog. The software should recognize the months as soon as the user has typed anything from this list: "ja, f, mar, ap, may, jun, jul, au, s, o, n, d". There's no reason to make the user type any more than that. Also if the user mis-spells the month but gets the first part right, the month should be recognized with no further ado. For example, you should be able to type "apricot" or "autumn" and have these strings recognized as April or August. This final feature came accidentally in Python and I decided to keep it in case it's helpful when it comes time to translate Treebard into other languages. Also, I enjoy typing "ogre" and seeing it display as "October".
Treebard will allow the user to enter date parts in any order whatsoever, including prefixes and suffixes such as "est, abt, AD, BC" etc., while making it impossible to enter a bad date into the database. The user wants to keep his mind on genealogy, not on the software he's trying to use. All dates will be stored in ISO format no matter what input or output format is used. The key to this system is to treat input, storage, and output formats completely separately, with a different set of rules for each. Input date format is very free, storage is always ISO, and output is restricted to unambiguous formats.
The most restrictive aspect of date entry will be that the same separator has to be used throughout any given date entry. For example, "est 14 12 1850 ad" will be recognized but "est 14-12-1850" will not. To keep from bloating the code, the line has to be drawn somewhere on the user's freedom to enter dates in any conceivable way. The entry "12*abt*14*ad*1850" is allowed and will be stored in ISO format and then displayed in whatever format the user chooses. The next date can be typed with slashes or dashes or spaces for a delimiter as long as any given date uses only one character as a delimiter.
Date parts can be separated from each other with any character from this list: "dot, slash, dash, space, asterisk".
Dates can be input in a great variety of ways without causing anyone a problem as long as the code is written to provide this flexibility. Users should not have to think about which date entry style they have to use. Any date entry style should be recognized and if any particular input is not recognizable, a simple dialog can pop up for clarification of that input only.
But when it comes to displaying dates, certain formats should not be an option. Especially the ambiguous alternates "10-12-1884" and "12-10-1884" which each have opposite meanings to Americans who put the month first and Europeans who put the day first. ISO format puts the largest time period first so it's always year-month-day, as in "1884-10-12" which is unambiguously "Oct. 12, 1884". So ISO format is allowed for output.
The only other unambiguous date display formats are the ones that spell out all or part of the month.
In regards to date input, the user should be told that if he spells the month out or spells out the unique first letters of the month, or if he uses the ISO format, he will never see a confirmation dialog. The software should recognize the months as soon as the user has typed anything from this list: "ja, f, mar, ap, may, jun, jul, au, s, o, n, d". There's no reason to make the user type any more than that. Also if the user mis-spells the month but gets the first part right, the month should be recognized with no further ado. For example, you should be able to type "apricot" or "autumn" and have these strings recognized as April or August. This final feature came accidentally in Python and I decided to keep it in case it's helpful when it comes time to translate Treebard into other languages. Also, I enjoy typing "ogre" and seeing it display as "October".
Treebard will allow the user to enter date parts in any order whatsoever, including prefixes and suffixes such as "est, abt, AD, BC" etc., while making it impossible to enter a bad date into the database. The user wants to keep his mind on genealogy, not on the software he's trying to use. All dates will be stored in ISO format no matter what input or output format is used. The key to this system is to treat input, storage, and output formats completely separately, with a different set of rules for each. Input date format is very free, storage is always ISO, and output is restricted to unambiguous formats.
The most restrictive aspect of date entry will be that the same separator has to be used throughout any given date entry. For example, "est 14 12 1850 ad" will be recognized but "est 14-12-1850" will not. To keep from bloating the code, the line has to be drawn somewhere on the user's freedom to enter dates in any conceivable way. The entry "12*abt*14*ad*1850" is allowed and will be stored in ISO format and then displayed in whatever format the user chooses. The next date can be typed with slashes or dashes or spaces for a delimiter as long as any given date uses only one character as a delimiter.
Date parts can be separated from each other with any character from this list: "dot, slash, dash, space, asterisk".