|
Vaclav, you want that, but I don't Olivier, I just wanted to suggest that it could be a pity to implement a partial functionality instead of a more complete and useful one. Example:
Regarding the difficulty of implementation:
All these operations could be performed the same way as with ordinary dates except the presentation which requires displaying words like "around". There would be just a separate attribute indicating that the date is approximate. More complicated fuzzy date type is "between" but the essential type is "around" or "circa" as in MBS-2954. (Thank you nikki.) Also the problem with century / decade etc. from So my point is why to implement a partial functionality when a much better alternative exists? Setting due date based on when this task was moved to 12mo bucket. In what was pretty much a duplicate of this, navap proposed to "Add 'dead/disbanded' column to artist table". That could work - we could display "unknown" in the UI, as in "Member: Foo Bar (1954 - unknown)" and "Dead: unknown" The point of this is being able to say that a person is dead / a band has disbanded, or that a person is no longer a member of a band, even if the exact dates are not known. We could add a checkbox to the "Add/Edit artist" and "Add/Edit (member of) relationship" that says, respectively, "This (person is dead)/(band has split), but I don't have a date" and "This artist is no longer a member, but I don't have an end date" (wording can definitely be improved). The same structure used for "member of" could be used for "married", although that's clearly less important for MB. All the artists with an entered end date should be marked as "dead/disbanded" automatically. All member relationships with an entered end date should be marked as such automatically (in the way we decide to mark it). This ticket is under consideration for the May 15h schema change release. However, it is under specified at this point in time. In order to keep this ticket in consideration for the release, please do the following:
Database changes: I think simply adding that boolean is not enough. For example, what happens with end dates? If we have an end date, does that imply finished should also be true? If so, we need a trigger that helps us ensure this invariant - when the end date changes from empty to non-empty, then finished should be true. But also, what happens the other way? If we go from a non-empty end date to an empty one, should finished change? If we have an end date, finished should be true, yes (and in the UI, it would block the "finished" checkbox as marked). If the editor removes the end date, I guess we should by default unblock + unmark the checkbox in the UI, and let the editor decide whether to submit it like that (thus unsetting it) or mark it again (thus making no changes in "finished"). Now, how to exactly put this into tables, I don't know. After discussing this with Nicolás on IRC, we are in agreement that we need a way to ensure the following:
As for leaving this state, (going from non-empty to empty), there's nothing to do at the database level but the user interface should suggest unchecking the finished boolean. This ticket is in danger of being rejected from the upcoming schema change release. Please provide UI mock-ups today. I think the changes were pretty obvious as per the comments, but well, there, mockups attached. The UI discussions so far only discuss how the editing looks, but does not show how the data should be displayed later. Also, this will have implications in the web service, which shows relationships - how should this data be presented in the web service? The most normal way I've seen this kind of thing displayed is with ???? in the end date, implying there is one but it is unknown. I'd be happy displaying that (in the "dissolved", "dead", and relationship dates sections). For the web service, it doesn't really change existing stuff, only adds new stuff, doesn't it? So I would expect just adding it is enough. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OK, but there should be a more general and sophisticated way for expressing multiple kinds of uncertain dates like: