Fixed endless scroll, both up and down. It now models the Jenkins behavior. If live events are happening, it captures and displays them, always auto-scrolling down. If user srolls up, live events continue to be captured but auto-scrolling is suspended. If user scrolls all the way back down to bottom, auto-scrolling resumes.
Added dialog for viewing host results and a bunch of formatting. Linked host summary to job_host_summaries page (yes, that still exists). Host results now shows 'skipped' hosts with a blue icon rather than green.
Removed well and index from primary list pages. Job detail page cleanup. Fixed status filter on host summary list. Incresed # rows kept in memory for each list to 100. Showing unreachable host count on the play, mostly to help debugging.
Re-enabling a count of the possible hosts that should report status on each task. As live events happen increment a count stored on the play. Only increment when hosts are reporting for the first task of the play, and only increment if the host status is in: successful, changed, skipped or failed. Added the total to the plays list as 'Reporting Hosts'.
Fixed drop-down account menu so that it no longer behaves like a drop-down when the menu collapses on small viewports. On large screens added a right margin to the drop-down menu. Moved Logout to the bottom of the submenu. On large screens the drop-down now includes a divider above the logout option.
Fixed collapsed menu on small viewports. On a small viewport the web socket beacon now displays to the left of the menu button. On large screens it appears as part of the menu.
Fixed auto-resize. The page now differentiates between plays, tasks and host results when allocating space. The play list gets the least amount of space. Tasks receives slightly less than it used to but more than plays. Host results gets the most space at nearly 2x what it received previously.
Restyled status information using horizontal form layout with overrides to make not look like a form. Added a more/less link to hide or show additional details (i.e. job template, project, inventory). Added proper labels for finsished and elapsed. Looking much better.
Right justified Account menu. Modified bootstrap menu collapse setting to force collapse at 1075px so that we never show the menu on multiple lines. Started changing styles on job detail page so that we auto-resize behavior can be restored.
When live event processing is happening (job is not in a completed state) infinite scroll is now disabled. This keeps the programmatic scroll to bottom from tripping an API call.
Things being added to the DOM were passed by reference and not value. Fixed that using json stringify/parse. Now the DOM does not update in real time. Added in updated of summary list and graph. Performing updates every 5 sec.
First pass at aggregating all incoming events without any DOM updates. Lets see if we can just perform simple aggregration in memory without a CPU meltdown.
Reverting attempt to use _.throttle and _.defer. They assume we actually want to process every event. We need to stop all processing if the job has finished.
Making sure we never call the endless scroll queries when programmatically scrolling to the bottom of a list. Eliminate repeated calls to lookup credential names.
Improved handling of scrollbar refresh. Handling on via scope.$emit rather than inside the http response. Fixed pie chart drawing at job completion so that totaling of stats on playbook_on_stats event matches the way we're counting hosts during event processing.
Reverting attempt to use _.throttle and _.defer. They assume we actually want to process every event. We need to stop all processing if the job has finished.
Making sure we never call the endless scroll queries when programmatically scrolling to the bottom of a list. Eliminate repeated calls to lookup credential names.
Improved handling of scrollbar refresh. Handling on via scope.$emit rather than inside the http response. Fixed pie chart drawing at job completion so that totaling of stats on playbook_on_stats event matches the way we're counting hosts during event processing.
Started applying new styles starting with removal of tabs. Brought in new breadcrumb format and blended with inventory edit group breadcrumbs. Rather than attempting to override bootstrap styles after the fact, copied boostrap less file and started modifying those to create ansible-boostrap.css, as described in the boostrap documentation.
Added custom scrollbar to task list and made it do the endless scroll thing. Switched tasks and plays from objects back to arrays, in support of endless scroll. Still need to apply scrollbar to play list and enable endless scroll. Modified calls to job_tasks endpoint to use the 'paginated' structure. Will need to do the same to plays. None of this is tested yet.
Started applying new styles starting with removal of tabs. Brought in new breadcrumb format and blended with inventory edit group breadcrumbs. Rather than attempting to override bootstrap styles after the fact, copied boostrap less file and started modifying those to create ansible-boostrap.css, as described in the boostrap documentation.
Removed need to sort hostResults and hosts arrays. Drawing graph on start of a new task, rather than start of new play. Now listening for job status events. If a status event indicates the job is completed, stop processing event and reload the job from the API.
Safari's DOMParser object does not support parsing HTML. When the app initializes we now detect the browser type and define $rootScope.browser accordingly. If the browser is Safari, then we do some ugly looping and regex'ing to separate out the html and style sheet from the stdout API response.
Added custom scrollbar to task list and made it do the endless scroll thing. Switched tasks and plays from objects back to arrays, in support of endless scroll. Still need to apply scrollbar to play list and enable endless scroll. Modified calls to job_tasks endpoint to use the 'paginated' structure. Will need to do the same to plays. None of this is tested yet.
Removed need to sort hostResults and hosts arrays. Drawing graph on start of a new task, rather than start of new play. Now listening for job status events. If a status event indicates the job is completed, stop processing event and reload the job from the API.
Safari's DOMParser object does not support parsing HTML. When the app initializes we now detect the browser type and define $rootScope.browser accordingly. If the browser is Safari, then we do some ugly looping and regex'ing to separate out the html and style sheet from the stdout API response.
Since we're not refreshing the list of projects after submission of an update request, the UI does not have the most recent update ID in memory. Before launching the log viewer dialog it now requests the latest project record from the API and initializes with the correct ID.
Now the dialog only appears on job template save when the host config key or URL actually change. Before the dialog always appeared when allow callbacks was enabled.
If playbook submission fails, check for a 400 status and parse the key/value pairs returned by the API. This occurs on an attempt to submit a job template that is no longer valid. Fixed JS compile errors from prior commit.
Reload the list of tasks whenever a play is selected. Fixed search cancel. Streamlined initial load process so that it shares as much of the event processing code as possible.