Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-35818

Developer sees a interstitial when tab data is being displayed

    • 1.0-m7

      • White thin progress bar at the top of page for loading the data
        • We should provide a facility for this on all pages when XHRs are executing
      • The content that is shown is a placeholder for the real content to come (pattern stolen from Facebook)
      • When the data is fetched successfully the content is replaced without refresh
      • It doesn't have to look exactly like the mockup but we want the placeholders to be tailored so that it looks nice when the real content finally arrives
        • Size of the bars in the table header should match the same width + height of the actual table header text
        • add a few rows (no less than 5) and the cells should be slightly smaller than the max column size

          [JENKINS-35818] Developer sees a interstitial when tab data is being displayed

          Cliff Meyers added a comment -

          jdumay do we expect this institial UI pattern to show up on most views? I know I've seen this ticket and UX-299 as well, suspect maybe there are others.

          If we want these interstitials to match the real views fairly accurately, it seems like we need to take an approach of having our components be put into an "interstitial mode." The other obvious approach would be using a totally separate component that renders a fairly static interstitial which is then swapped out for the real component once data is available. What I see as problematic with the latter approach is that there have to be some effort to keep the two in sync as the "real" component's layout is updated. I think that would be a real maintenance issue.

          So thinking out loud a bit more here, I wonder if we ought to consider providing a series of more fundamental UI components that support an interstitial mode which can easily be controlled via a parent or ancestor component. So instead of something like this:

          <tr>
              <td>{artifactName}</td>
              <td>{artifactSize}</td>
          </tr>
          

          It's something more like

          <tr>
              <td><Label text={artifactName} /></td>
              <td><Label text={artifactSize} /></td>
          </tr>
          

          The Label is made aware from its Owner as to whether it's in interstitial mode and it will render itself with a line/fill.

          The more I think about this, the more it has some similarities with problems posed by UX-215. Our components don't have any sense now whether their data is 1. loading (needed for this ticket), or 2. not available (due to error, needed for UX-215) - they only really know that they have data or don't, and up until now "don't" has been assumed to be loading.

          We could probably make some enhancements to the Redux plumbing to inform our components more concretely whether they are in state 1, 2, 3.

          I've been making some progress on the design doc for UX-215, although I might need to do a little mini-poc experiment on my own before I submit anything. Should I expand the scope of that to include this?

          Cliff Meyers added a comment - jdumay do we expect this institial UI pattern to show up on most views? I know I've seen this ticket and UX-299 as well, suspect maybe there are others. If we want these interstitials to match the real views fairly accurately, it seems like we need to take an approach of having our components be put into an "interstitial mode." The other obvious approach would be using a totally separate component that renders a fairly static interstitial which is then swapped out for the real component once data is available. What I see as problematic with the latter approach is that there have to be some effort to keep the two in sync as the "real" component's layout is updated. I think that would be a real maintenance issue. So thinking out loud a bit more here, I wonder if we ought to consider providing a series of more fundamental UI components that support an interstitial mode which can easily be controlled via a parent or ancestor component. So instead of something like this: <tr> <td>{artifactName}</td> <td>{artifactSize}</td> </tr> It's something more like <tr> <td><Label text={artifactName} /></td> <td><Label text={artifactSize} /></td> </tr> The Label is made aware from its Owner as to whether it's in interstitial mode and it will render itself with a line/fill. The more I think about this, the more it has some similarities with problems posed by UX-215 . Our components don't have any sense now whether their data is 1. loading (needed for this ticket), or 2. not available (due to error, needed for UX-215 ) - they only really know that they have data or don't, and up until now "don't" has been assumed to be loading. We could probably make some enhancements to the Redux plumbing to inform our components more concretely whether they are in state 1, 2, 3. I've been making some progress on the design doc for UX-215 , although I might need to do a little mini-poc experiment on my own before I submit anything. Should I expand the scope of that to include this?

          James Dumay added a comment -

          If you think it's relevant to expand the scope I'm happy for you to do so.
          On Sat, 21 May 2016 at 4:05 AM, Cliff Meyers (JIRA) <


          James Dumay
          Product Manager
          CloudBees, Inc.
          Skype: ap_myskype Twitter: i386

          James Dumay added a comment - If you think it's relevant to expand the scope I'm happy for you to do so. On Sat, 21 May 2016 at 4:05 AM, Cliff Meyers (JIRA) < – James Dumay Product Manager CloudBees, Inc. Skype: ap_myskype Twitter: i386

          Cliff Meyers added a comment -

          Cliff Meyers added a comment - Mini design doc: https://docs.google.com/document/d/1DMuhbLlq7vJYOjory4AQWnSolhhK23Wu6DbExRDkgTY

            Unassigned Unassigned
            jamesdumay James Dumay
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: