UNPKG

bmi-calculator

Version:

Bmi calculator for jQuery

2 lines 3.45 kB
/*! bmi-calculator-plugin 2016-03-11 */ !function(a){"use strict";var b=function(){var b=18.5,c=25,d=function(b){var c={};return a.each(b,function(b,d){c[d]=a("input[name="+d+"]").val()}),c},e=function(a,b){if("object"==typeof b)for(var c in b){var d=b[c];if(d===a)return!0}else for(var e=0;e<b.length;e++)if(b[e]===a)return!0},f=function(b,c,d){d?a(b).css({transition:"background-color "+d+"s ease","background-color":c}):a(b).css({"background-color":c})},g=function(a,b){return b/Math.pow(a,2)},h=function(a,b){return 14*b+a},i=function(a,b){return 12*a+b},j=function(a,b){return b+a/100};return{IDEAL_BMI_LOWER:b,IDEAL_BMI_UPPER:c,getInput:d,calculateBmi:g,imperialHeight:i,customaryWeight:h,metricHeight:j,setBackground:f,search:e}}(),c={colors:{underweight:"orange",idealweight:"green",overweight:"red"},ajax:{dataType:"JSON",dataUrl:!1},debug:!1,colorTransition:"0.5",decimal:2};a.fn.bmi=function(d){var e=a(this).selector,f=a.extend({},c,d),g={classes:[" .bmi-metric"," .bmi-imperial"," .bmi-customary"],items:[],origin:[],score:a(e+" .bmi-score h1"),scoreContainer:a(e+" .bmi-score"),onReady:function(){g.origin.name=a(e+" select").val(),g.isVisible(g.classes),a(e+" select").on("change",function(){g.reset(),g.origin.name=a(this).val(),g.toggle(),g.isVisible(g.classes)}),a("#bmi-form input").on("keyup",function(){g.update(g.calculate(g.items))}),a("#bmi-form").submit(function(c){c.preventDefault();var d=g.calculate(g.items).toFixed(f.decimal);if(a.isNumeric(d)){var e=b.getInput(g.items);e.bmi=d,g.ajax(e)}})},isVisible:function(b){a(b).each(function(){"none"!==a(e+this).css("display")&&a(e+this+" input[name]").each(function(a,b){g.items.push(b.name)})})},toggle:function(){switch(g.origin.name){case"customary":a(".bmi-metric").hide(),a(".bmi-imperial").hide(),a(".bmi-customary").show();break;case"imperial":a(".bmi-metric").hide(),a(".bmi-imperial").show(),a(".bmi-customary").hide();break;case"metric":a(".bmi-metric").show(),a(".bmi-imperial").hide(),a(".bmi-customary").hide()}},update:function(b){g.result(g.scoreContainer,b),a.isNumeric(b)?g.score.html(b.toFixed(f.decimal)):g.reset("score")},calculate:function(c){var d=b.getInput(c);if(a.each(d,function(a,b){""!==b&&(b=parseInt(b)),d[a]=b}),b.search("",d)){if(b.search("",d))return f.debug&&console.log(d),!1}else switch(g.origin.name){case"customary":return b.calculateBmi(b.imperialHeight(d.custFt,d.custInch),703*b.customaryWeight(d.custLb,d.custSt));case"imperial":return b.calculateBmi(b.imperialHeight(d.impFt,d.impInch),703*d.impLb);case"metric":return b.calculateBmi(b.metricHeight(d.cm,d.m),d.kg)}},reset:function(b){switch(b){case"score":g.score.html("BMI"),g.scoreContainer.css({"background-color":"white"});break;default:g.items=[],g.origin=[],a(e+" input[type=number").val(""),g.score.html("BMI"),g.scoreContainer.css({"background-color":"white"})}},ajax:function(b){a.ajax({type:"POST",url:f.ajax.dataUrl,data:a.param(b),dataType:f.ajax.dataType,success:function(a){f.debug&&console.log(a)},error:function(a,b,c){return f.debug?(console.log(this.data),void console.log(a.responseText)):!1}})},result:function(a,c){c<b.IDEAL_BMI_LOWER?b.setBackground(a,f.colors.underweight,f.colorTransition):c>b.IDEAL_BMI_UPPER?b.setBackground(a,f.colors.overweight,f.colorTransition):c>=b.IDEAL_BMI_LOWER&&c<=b.IDEAL_BMI_UPPER?b.setBackground(a,f.colors.idealweight,f.colorTransition):b.setBackground(a,"white",f.colorTransition)}};a(document).ready(g.onReady)}}(jQuery);