Progress Bar - Classes and Pupils - Global Estimates

by nevkatz

HTML

<div id="counter">
<div id="meter"></div>
</div>
<div id="output">

</div>
<div id="pupil_stats">

</div>
<div id="class_stats">

</div>

CSS

body {
  font-family: 'Calibri';
}
#counter {
  width: 300px;
  height: 20px;
  background-color: #ccc;
}
#meter {
  width: 100%;
  background-color: green;
  height: 20px;
}

JavaScript

var sleep = ms => new Promise(r => setTimeout(r, ms));

/* kickoff function */
function init() {
  let num_teachers = 20;
  let est_num_classes_per = data_download_storage.get_estimated('classes');
  data_download_set_expected(num_teachers);
  run_thru_progress(num_teachers);
}

/* use this! */
function data_download_set_expected(num_teachers) {

    let est_num_classes_per = data_download_storage.get_estimated('classes');
    let pupils_per_class = data_download_storage.get_estimated('pupils');
    let tests_per_class = data_download_storage.get_estimated('assessments');
    
    let est_num_classes = num_teachers*est_num_classes_per;
    let est_num_pupils = est_num_classes * pupils_per_class;
    let est_num_tests= est_num_classes * tests_per_class;
    
    // change to 2 for assessments
    let total = num_teachers + est_num_classes + est_num_pupils + est_num_tests;

    status_output_counter.set_expected(total);
}

// runs a progress bar simulation
async function run_thru_progress(num_teachers) {

  // get the variables established
  let est_p = data_download_storage.get_estimated('pupils');
  let est_a = data_download_storage.get_estimated('assessments');

  let est_c = data_download_storage.get_estimated('classes');
     
  for (var i = 0; i < num_teachers; ++i) {
    
    // pauses for progress bar animation
    let z = await sleep(5);
    update_progress_bar();
    
    // increment for the teacher
    status_output_counter.increment_actual();
    
    // randomly genereate number of classes
    let num_classes = Math.round(Math.random()*10);
    
    // handle zero classes case; if so, increase by your original estimates
    if (num_classes == 0) {
      data_download_zero_classes();
    }
    data_download_storage.set_expected('classes',num_classes);
    
    // iterate through classes of this teacher
    for (var j = 0; j < num_classes; ++j) {

        // augment classes
        data_download_augment('classes');
    
       ...