button from template string

by Berat Emre Nebioğlu

HTML

<script id="myTemplate" type="text/x-handlebars-template">
  <div class="buttonscounters">
    <div class="counters">
      <button class="counterClass redCounter">
        <div class="number"> 0 </div>
      </button>
      <button class="counterClass orangeCounter">
        <div class="number"> 0 </div>
      </button>
      <button class="counterClass grayCounter">
        <div class="number"> 0 </div>
      </button>
    </div>
    <div class="buttons">
      <button class="buttonClass">
        <div class="buttonText">
        </div>
      </button>
      </div>
    </div>
  
   
   
</script>

CSS

.counterClass {
  position: relative;
  width: 3%;
  margin-left: 10px;
  height: 0;
  padding: 10px;
  border-radius: 50%;
  border: none;
  outline: none;
}

.counterClass .number {
  position: absolute;
  margin-top: -7px;
  margin-left: -3px;
}

.redCounter {
  box-shadow: 0 0 1em rgba(204, 0, 0, 0.9);
  /*box-shadow: 0 0 1em red;*/
  background-color: #FF9999;
}

.redCounter:hover {
  background-color: transparent;
}

.orangeCounter {
  box-shadow: 0 0 1em rgba(204, 102, 0, 0.9);
  background-color: #FFCC99;
}

.orangeCounter:hover {
  background-color: transparent;
}

.grayCounter {
  box-shadow: 0 0 1em rgba(64, 64, 64, 0.9);
  background-color: #E0E0E0;
}

.grayCounter:hover {
  background-color: transparent;
}

.buttonClass {
  padding: 5px;
}

.buttonscounters {
 
  position: relative;
 /* height:175px;*/
 
  margin-top:20px;
  
}

.buttonscounters .counters {
  position: absolute;
  margin-left: -3px;
  margin-top: -18px;
  z-index: 2;
}

.buttonscounters .buttons {
 /* position: absolute;*/
  margin-top: 0;
}

.buttonscounters .buttons .buttonClass {
  
  font-size: 12px;
  border: none;
  outline: none;
  width: 100px;
  object-fit:fit;
}

.buttonscounters .buttons .buttonClass .buttonText {

  text-align: middle;
  /*white-space: nowrap;*/
  word-break:break-all;
/*  overflow: hidden;*/
 /* text-overflow: ellipsis;*/
}
.emptyDiv
{
   background-color:white;
 
   min-height:50px;  

}

JavaScript

var products = [{
  "project_name": "ECourse",
  "environment": "Prod",
  "frontend": "Monitor",
  "button_name": "Prod: Ecourse"
}, {
  "project_name": "NewsSite",
  "environment": "Prod",
  "frontend": "Monitor",
  "button_name": "Prod : NewsSite"
}, {
  "project_name": "Question",
  "environment": "Prod",
  "frontend": "Monitor",
  "button_name": "Prod : Question1Question2Question3Question1Question2Question3Question1Question2Question3Question1Question2Question3"
}, {
  "project_name": "SearchEngine",
  "environment": "Prod",
  "frontend": "Monitor",
  "button_name": "Prod : SearchEngineSearchEngineSearchEngineSearchEngineSearchEngineSearchEngineSearchEngineSearchEngineSearchEngineSearchEngineSearchEngineSearchEngine"
}, {
  "project_name": "University",
  "environment": "Prod",
  "frontend": "Monitor",
  "button_name": "Prod: University"
}];

$(function() {

  var usingTemplateforCreatingInstance = function() {
    var template = $($.parseHTML($('#myTemplate').html()));
			 /*var emptyDiv = $('<div>');
      emptyDiv.attr('class', 'emptyDiv');
      template.append(emptyDiv);*/
		
    $('body').append($.map(products, function(product) {
     
      var row = template.clone();
      row.find('.buttonText').text(product.button_name);
     
      var collectionStr = JSON.stringify(Object.keys(product).reduce(function(collection, key) {
        if (key !== "button_name") {
          collection[key] = product[key];
        }
        return collection;
      }, {}));
      row.find('.buttonClass').data('jsonparameter', collectionStr);
      return row[1];
    }));
  }
  usingTemplateforCreatingInstance();

  $('.buttonClass').on('click', function() {
       alert($(this).data('jsonparameter'));
  });
  $('.buttonClass').each(function(index, element){
  		/*$('.buttonscounters').css('height', $(element).outerHeight() + 27);*/
      console.log($(element).outerHeight());
  });


});