On the search page, when you manually change a date, such as the start date, to a time that is greater than the end date, it will give an error and the bars won't move, but the date that was entered stays the same and doesn't reset to what it was before
Currently the code expects to find properties called "sysStart", "sysEnd", "valStart", and "valEnd". Modify the search code so that it uses the range indexes specified for the axis creation for the specific temporal collection.
setupXAxis() in bitemp_graph.js specifies a range of sysStart through sysStart + 10 years. setupYAxis() specifies valStart through valStart + 5 years. Most likely this is because some of the End years are infinity (year 9999). Fix this so that the range is sysStart through sysEnd, excluding any infinity dates. Fall back on sysStart + 10 years if all sysEnd dates are infinity. Apply the fix to the X and Y axes.
On the search page, we can drag bars on the graph to represent the system and value times we want to query. Currently it is possible to drag the start-time bar past the end-time bar, and vice versa. This results in an error, because the times are expected to be in order.
Modify the bar dragging such that it does not allow the user to drag a bar past its companion bar.
Provide the ability for the user to create a new temporal document (ie, a document with a new URI, not just editing an existing document). This functionality will be on index.html.
present the list of available temporal collections to the user
user selects a temporal collection
identify the axes required for documents in that collection
provide an input box for the document URI
provide a textarea for document content
pre-populate the text area with the appropriate axis JSON properties or XML elements (sysStart, sysEnd, valStart, valEnd)
provide Save and Cancel buttons
after successful Save, update the display to show this new logical document
after a failed Save, display an error message to the user
Before beginning work, present your ideas for the UI to Dave.
For any system or valid time where the value is 9999-12-31T23:59:59.99Z, display the dateTime as "Infinity" in the search results. This applies to search.html.
To keep the UI responsive, avoid making synchronous AJAX calls. In other words, restructure code so that we can remove "async: false". The way to do this is to have any work that depends on the AJAX call done (or called) by the success function.
Currently, our project is hard-coded to take the specific JSON properties "sysEnd", "valStart" etc.
Modify our code to work (in both XML and JSON) with timestamp property/element names such as "mySystemStart", "startValTime", "myTemporalValidEndTime" etc.
We can do this by making requests to the Management API (ask for the the axes on the current collection; ask for the properties of each axis) or by making an extension to get these in a single request.
cts.search(cts.orQuery((cts.notQuery(cts.collectionQuery("myTemporal")),// not in temporal collectioncts.collectionQuery("latest")))// in latest collection);
cts.orQuery's parameter should be in brackets (an array) rather than parentheses.
On the logical document visualization, each box has a label based on the value of the physical document's JSON property "data". Allow the user to specify what single JSON property or XML element of the physical documents will be displayed in the boxes.
Add a text input, label ("Document Property"), and "Display" button
On button click, update the display to show the values of the specified document property.
If the property/element is not found, show a "No such property/element" message.
By default, index.html shows addr.json. Based on #5, the user can type a URL and see that logical document displayed. Add code to drive that functionality from a URL parameter, as "/?collection=foo.json". This will allow the search page (#8) to set up links to logical documents.
#7 is complete for the user interface and works correctly on the Mac. However, the Node.js middle tier is not passing along the body of the PUT request when running on Windows or Linux. This results in a MarkLogic-level error:
Status 500: XDMP-NOMATCH: No matches for cts:element-reference(fn:QName("","sysStart"),("type=dateTime")) in document{}
Words with Definitions: Bitemporal, URI, Valid Time, System Time, Temporal Collection, Logical Document and Physical Document (when you hover over the names of each one in the bullet list)
After a document is deleted and then it is selected to view or edit, the web page gives has a lot of alert windows specifying to select a doc first even though one has been selected. I will look into this.
In the graph on index.html, provide a visual indication after selecting a physical document. Display the URI of the document above the Edit/View/Delete buttons, with a label that says, "Selected URI:".
Clicking a document should also cause the outline of that document to have thicker lines. (I haven't checked whether d3 allows that, but it probably does.)
The current implementation uses a Node.js middle tier. For this visualization, we don't need that. Remove the Node layer and have the client-side JavaScript call the MarkLogic REST API directly.
use .min versions for jQuery, jQuery UI, d3, moment
currently loading both jquery.min.js and jquery-1.10.2.js. Eliminate one of these and retest. (jquery.min.js is version 2.1.1, so we should probably keep that one)