Saturday, February 18, 2017

Framework7 - Progress Bar

Description

The progress bars can be used to show loading of assets or progress of a task to the users. You can specify the progress bar by using the progressbar class. When user doesn't know how long the loading process will be there for the request, you can use progressbar-infinite class.

Progress Bar JavaScript API

The progress bar can be used along with the JavaScript API to specify show, hide and progress properties by using the following methods:
S.N.MethodsDescription & Parameters
1 myApp.setProgressbar(container, progress, speed) It sets progress bar for the progress of a task.
  • container: It is string or HTML element that defines the container of progress bar element.
  • progress: It represents in integer format that defines the progress of a task.
  • speed: It represents in integer format that specifies the duration of the progress of a task.
2 myApp.hideProgressbar(container) It hides the progress bar.
  • container: It is string or HTML element that defines the container of progress bar element.
3 myApp.showProgressbar(container, progress, color) It displays the progress bar.
  • container: It is string or HTML element that defines the container of progress bar element.
  • progress: It represents in integer format that defines the progress of a task.
  • speed: It represents in integer format that specifies the duration of the progress of a task.

Example

The below example displays animated determinate and indeterminate progress bars to indicate activity in the Framework7:
<!DOCTYPE html>
<html>
   <head>
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
      <meta name="apple-mobile-web-app-capable" content="yes">
      <meta name="apple-mobile-web-app-status-bar-style" content="black">
      <title>Progress Bar</title>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.material.min.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.material.colors.min.css">
   </head>
   <body>
      <div class="views">
         <div class="view view-main">
            <div class="pages">
               <div data-page="home" class="page navbar-fixed">
                  <div class="navbar">
                     <div class="navbar-inner">
                        <div class="center">Progress Bar</div>
                     </div>
                  </div>
                  <div class="page-content">
                     <div class="content-block-title">Determinate Progress Bar</div>
                     <div class="content-block">
                        <div class="content-block-inner">
                           <p>Inline determinate progress bar:</p>
                           <div class="progressbar-inline">
                              <p><span data-progress="10" class="progressbar"></span></p>
                              <p class="buttons-row">
                                 <a href="#" data-progress="25" class="button button-raised">25%</a><a href="#" data-progress="50" class="button button-raised">50%</a><a href="#" data-progress="75" class="button button-raised">75%</a><a href="#" data-progress="100" class="button button-raised">100%</a>
                              </p>
                           </div>
                           <p>Loads and hides the determinate progress bar:</p>
                           <div class="progressbar-load-hide">
                              <p><a href="#" class="button button-raised">Start Loading</a></p>
                           </div>
                           <p>Displays the determinate progress bar on top:</p>
                           <p class="progressbar-overlay"><a href="#" class="button button-raised">Start Loading</a></p>
                        </div>
                     </div>
                     <div class="content-block-title">Infinite Progress Bar</div>
                     <div class="content-block">
                        <div class="content-block-inner">
                           <p>Inline infinite progress bar:</p>
                           <p><span class="progressbar-infinite"></span></p>
                           <p>Displays the infinite progress bar in multiple colors:</p>
                           <p><span class="progressbar-infinite color-multi"></span></p>
                           <p>Displays the infinite progress bar on top:</p>
                           <p class="progressbar-infinite-overlay"><a href="#" class="button button-raised">Start Loading</a></p>
                           <p>Displays the infinite progress bar in multiple colors on top:</p>
                           <p class="progressbar-infinite-multi-overlay"><a href="#" class="button button-raised">Start Loading</a></p>
                        </div>
                     </div>
                     <div class="content-block-title">Different types of colored progress bars:</div>
                     <div class="list-block">
                        <ul>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="5" class="progressbar color-red"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="10" class="progressbar color-pink"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="20" class="progressbar color-deeppurple"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="30" class="progressbar color-blue"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="40" class="progressbar color-cyan"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="50" class="progressbar color-green"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="60" class="progressbar color-lime"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="70" class="progressbar color-amber"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="80" class="progressbar color-deeporange"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="90" class="progressbar color-gray"></div>
                              </div>
                           </li>
                           <li class="item-content">
                              <div class="item-inner">
                                 <div data-progress="100" class="progressbar color-black"></div>
                              </div>
                           </li>
                        </ul>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      <script>
         var myApp = new Framework7({
           material: true
         });
         var $$ = Dom7;

         $$('.progressbar-inline .button').on('click', function () {
             var progress = $$(this).attr('data-progress');
             var progressbar = $$('.progressbar-inline .progressbar');
             myApp.setProgressbar(progressbar, progress);
         });
         $$('.progressbar-load-hide .button').on('click', function () {
             var container = $$('.progressbar-load-hide p:first-child');
             //it doesn't load if another progresbar is loading
             if (container.children('.progressbar').length) return;

             myApp.showProgressbar(container, 0);

             var progress = 0;
             function simulateLoading() {
                 setTimeout(function () {
                     var progressBefore = progress;
                     progress += Math.random() * 20;
                     myApp.setProgressbar(container, progress);
                     if (progressBefore < 100) {
                         simulateLoading();
                     }
                     else myApp.hideProgressbar(container);
                 }, Math.random() * 200 + 200);
             }
             simulateLoading();
         });
         $$('.progressbar-overlay .button').on('click', function () {

             var container = $$('body');
             if (container.children('.progressbar, .progressbar-infinite').length) return;

             myApp.showProgressbar(container, 0, 'orange');

             var progress = 0;
             function simulateLoading() {
                 setTimeout(function () {
                     var progressBefore = progress;
                     progress += Math.random() * 20;
                     myApp.setProgressbar(container, progress);
                     if (progressBefore < 100) {
                         simulateLoading();
                     }
                     //hides the progressbar
                     else myApp.hideProgressbar(container);
                 }, Math.random() * 200 + 200);
             }
             simulateLoading();
         });
         $$('.progressbar-infinite-overlay .button').on('click', function () {
             var container = $$('body');
             if (container.children('.progressbar, .progressbar-infinite').length) return;
             myApp.showProgressbar(container, 'yellow');
             setTimeout(function () {
                 myApp.hideProgressbar();
             }, 3000);
         });
         $$('.progressbar-infinite-multi-overlay .button').on('click', function () {
             var container = $$('body');
             if (container.children('.progressbar, .progressbar-infinite').length) return;
             myApp.showProgressbar(container, 'multi');
             setTimeout(function () {
                 myApp.hideProgressbar();
             }, 3000);
         });
      </script>
   </body>
</html>

Output

Let's carry out the following steps to see how above code works:
  • Save above HTML code as progress_bar.html file in your server root folder.
  • Open this HTML file as http://localhost/progress_bar.html and output as below gets displayed.
  • The example displays the progress bar which indicates how long an operation will take to complete the process and displays the different types of progress bars to indicate activity.

No comments:

Post a Comment