diff --git a/dist/bundle.js b/dist/bundle.js index 3fb904e..8c3f4c9 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -9150,16 +9150,19 @@ SOCR - Statistical Online Computational Resource /* @method: createDotPlot @description: Dot plot tab in the accordion is populated by this call. - Call invoked when "infer" button pressed in the controller tile. + "infer" button pressed in the controller tile -> appController -> appModel -> publishes "setInferenceSettingComplete". @return : {boolean} */ createDotplot: function(setting) { - var binNo, datum, dotplot, e, end, err, flag, index, lSide, pvalue, rSide, start, stop, temp, total, values; + var binNo, datum, dotplot, e, end, err, flag, index, lSide, pvalue, rSide, start, stop, temp, total, values, __accordionDOMSelector__, __dotPlotDOMSelector__; + __dotPlotDOMSelector__ = "#dotplot"; + __accordionDOMSelector__ = "#accordion"; + $(__dotPlotDOMSelector__).html(""); if (setting.variable == null) { throw new Error("invalid arguments: settings"); } _currentVariable = setting.variable; - $("#accordion").accordion("activate", 2); + $(__accordionDOMSelector__).accordion("activate", 2); Array.max = function(array) { return Math.max.apply(Math, array); }; @@ -9251,9 +9254,12 @@ SOCR - Statistical Online Computational Resource } binNo = ($("input[name=\"binno\"]").val() !== "" ? $("input[name=\"binno\"]").val() : 10); _currentValues = values; + datum = Math.round(datum * Math.pow(10, setting.precision)) / Math.pow(10, setting.precision); + lSide = Math.round(lSide * Math.pow(10, setting.precision)) / Math.pow(10, setting.precision); + rSide = Math.round(rSide * Math.pow(10, setting.precision)) / Math.pow(10, setting.precision); try { dotplot = socr.vis.generate({ - parent: "#dotplot", + parent: __dotPlotDOMSelector__, data: values, height: 390, range: [start, stop], @@ -9261,8 +9267,7 @@ SOCR - Statistical Online Computational Resource bins: binNo, variable: setting.variable, pl: lSide, - pr: rSide, - precision: setting.precision + pr: rSide }); } catch (_error) { e = _error; @@ -9459,7 +9464,18 @@ SOCR - Statistical Online Computational Resource (function() { socr.controller = function(model, view) { - var MIN_SAMPLE_GENERATION_STEP_COUNT, MIN_SAMPLE_GENERATION_STEP_TIME, _currentMode, _generate, _id, _noOfSteps, _runCount, _runsElapsed, _this; + var MIN_SAMPLE_GENERATION_STEP_COUNT, MIN_SAMPLE_GENERATION_STEP_TIME, __accordionDOMSelector__, __controllerBackBtnDOMSelector__, __inferBtnDOMSelector__, __inferenceAnalysisDOMSelector__, __inferenceDatasetIndexDOMSelector__, __inferencePrecisionDOMSelector__, __inferenceVariableDOMSelector__, __resetBtnDOMSelector__, __runBtnDOMSelector__, __stepBtnDOMSelector__, __stopBtnDOMSelector__, _currentMode, _generate, _id, _noOfSteps, _runCount, _runsElapsed, _this; + __accordionDOMSelector__ = "#accordion"; + __controllerBackBtnDOMSelector__ = ".controller-back"; + __runBtnDOMSelector__ = "#runButton"; + __stepBtnDOMSelector__ = "#stepButton"; + __stopBtnDOMSelector__ = "#stopButton"; + __resetBtnDOMSelector__ = "#resetButton"; + __inferBtnDOMSelector__ = "#infer"; + __inferenceDatasetIndexDOMSelector__ = "#index"; + __inferenceVariableDOMSelector__ = "#variable"; + __inferenceAnalysisDOMSelector__ = "#analysis"; + __inferencePrecisionDOMSelector__ = '#result-precision'; _id = 0; _runsElapsed = 0; _runCount = 0; @@ -9570,7 +9586,7 @@ SOCR - Statistical Online Computational Resource var e; model.setK(); $(".tooltips").tooltip(); - $(".controller-back").on("click", function(e) { + $(__controllerBackBtnDOMSelector__).on("click", function(e) { var err; e.preventDefault(); try { @@ -9584,28 +9600,28 @@ SOCR - Statistical Online Computational Resource console.log(err.message); } }); - $("#runButton").on("click", function(e) { + $(__runBtnDOMSelector__).on("click", function(e) { e.preventDefault(); console.log("Run Started"); setTimeout(socr.controller.run, 500); }); - $("#stepButton").on("click", function(e) { + $(__stepBtnDOMSelector__).on("click", function(e) { e.preventDefault(); console.log("Step pressed "); socr.controller.step(); }); - $("#stopButton").on("click", function(e) { + $(__stopBtnDOMSelector__).on("click", function(e) { e.preventDefault(); console.log("Stop Pressed "); socr.controller.stop(); PubSub.publish("randomSampleGenerationInterrupted", {}); }); - $("#resetButton").on("click", function(e) { + $(__resetBtnDOMSelector__).on("click", function(e) { e.preventDefault(); console.log("Reset pressed"); socr.controller.reset(); }); - $("#infer").on("click", function(e) { + $(__inferBtnDOMSelector__).on("click", function(e) { e.preventDefault(); if (model.getSample(1) === false) { view.handleResponse("
Precision to 3 decimal places.
+Precision to decimal places.
The goal of this project is to design a modern and portable SOCR web-app that demonstrates the concepts of statistical analysis such as resampling, randomization and probabilistic simulation and runs seamlessly across varied devices.
-Current Version: 0.1.2
+Current Version: 0.3.2
Created by SOCR @ UMich . Code available under MIT Licence at Github
Please send an email to selvam.palanimalai@gmail.com to report bugs.
diff --git a/src/appController.coffee b/src/appController.coffee index 4574329..d9fb904 100644 --- a/src/appController.coffee +++ b/src/appController.coffee @@ -7,7 +7,19 @@ ### socr.controller = (model, view) -> - # PRIVATE PROPERTIES + # PRIVATE PROPERTIES + __accordionDOMSelector__ = "#accordion" + __controllerBackBtnDOMSelector__ = ".controller-back" + __runBtnDOMSelector__ = "#runButton" + __stepBtnDOMSelector__ = "#stepButton" + __stopBtnDOMSelector__ = "#stopButton" + __resetBtnDOMSelector__ = "#resetButton" + __inferBtnDOMSelector__ = "#infer" + + __inferenceDatasetIndexDOMSelector__ = "#index" + __inferenceVariableDOMSelector__ = "#variable" + __inferenceAnalysisDOMSelector__ = "#analysis" + __inferencePrecisionDOMSelector__ = '#result-precision' _id = 0 # Stores the id for setInterval in run mode _runsElapsed = 0 # Keeps count of number of resamples generated @@ -154,7 +166,7 @@ socr.controller = (model, view) -> model.setK() $(".tooltips").tooltip() - $(".controller-back").on "click", (e) -> + $(__controllerBackBtnDOMSelector__).on "click", (e) -> e.preventDefault() try model.reset() @@ -166,32 +178,32 @@ socr.controller = (model, view) -> console.log err.message return - $("#runButton").on "click", (e) -> + $(__runBtnDOMSelector__).on "click", (e) -> e.preventDefault() console.log "Run Started" setTimeout socr.controller.run, 500 return - $("#stepButton").on "click", (e) -> + $(__stepBtnDOMSelector__).on "click", (e) -> e.preventDefault() console.log "Step pressed " socr.controller.step() return - $("#stopButton").on "click", (e) -> + $(__stopBtnDOMSelector__).on "click", (e) -> e.preventDefault() console.log "Stop Pressed " socr.controller.stop() PubSub.publish "randomSampleGenerationInterrupted", {} return - $("#resetButton").on "click", (e) -> + $(__resetBtnDOMSelector__).on "click", (e) -> e.preventDefault() console.log "Reset pressed" socr.controller.reset() return - $("#infer").on "click", (e) -> + $(__inferBtnDOMSelector__).on "click", (e) -> e.preventDefault() if model.getSample(1) is false @@ -203,21 +215,21 @@ socr.controller = (model, view) -> return - $("#variable").on "change", -> + $(__inferenceVariableDOMSelector__).on "change", -> if $(this).val() is "Mean" or $(this).val() is "Count" - $("#index").attr "disabled", false + $(__inferenceDatasetIndexDOMSelector__).attr "disabled", false else - $("#index").attr "disabled", true + $(__inferenceDatasetIndexDOMSelector__).attr "disabled", true return - $("#analysis").on "change", -> + $(__inferenceAnalysisDOMSelector__).on "change", -> if socr.analysis[$(this).val()] isnt "undefined" el = "" $.each socr.analysis[$(this).val()]["variables"], (key, value) -> el += "" return - $("#variable").html el + $(__inferenceVariableDOMSelector__).html el return $(".update").on "click", -> @@ -242,7 +254,7 @@ socr.controller = (model, view) -> @dependencies: view.animate() ### step: -> - $("#accordion").accordion "activate", 1 + $(__accordionDOMSelector__).accordion "activate", 1 #socr.view.toggleControllerHandle("hide"); view.disableButtons() #disabling buttons @@ -354,18 +366,20 @@ socr.controller = (model, view) -> return - setDotplot: (precision)-> - $("#dotplot").html "" - index = parseInt($("#index").val()) - precision = $('#result-precision').attr('checked') - if precision is "checked" - precision = 3 - console.log "setdotplot started", "variable:" + $("#variable").val() + ### + @description : When user clicks "infer" button, setDotplot is triggered. + ### + setDotplot: (precision)-> + inferenceDatasetIndex = parseInt($(__inferenceDatasetIndexDOMSelector__).val()) + inferencePrecision = $(__inferencePrecisionDOMSelector__).val() || 4 + + console.log "setdotplot started", "variable:" + $(__inferenceVariableDOMSelector__).val() + model.setInferenceSettings - analysis: $("#analysis").val() - variable: $("#variable").val() - precision: precision - index: index + analysis: $(__inferenceAnalysisDOMSelector__).val() + variable: $(__inferenceVariableDOMSelector__).val() + precision: inferencePrecision + index: inferenceDatasetIndex return ### diff --git a/src/appView.coffee b/src/appView.coffee index 4f855b5..9a8a12d 100644 --- a/src/appView.coffee +++ b/src/appView.coffee @@ -605,25 +605,28 @@ socr.view = (model) -> ### @method: createDotPlot @description: Dot plot tab in the accordion is populated by this call. - Call invoked when "infer" button pressed in the controller tile. + "infer" button pressed in the controller tile -> appController -> appModel -> publishes "setInferenceSettingComplete". @return : {boolean} ### createDotplot: (setting) -> + __dotPlotDOMSelector__ = "#dotplot" + __accordionDOMSelector__ = "#accordion" + + $(__dotPlotDOMSelector__).html "" throw new Error("invalid arguments: settings") unless setting.variable? _currentVariable = setting.variable - $("#accordion").accordion "activate", 2 + $(__accordionDOMSelector__).accordion "activate", 2 # Function to get the Max value in Array Array.max = (array) -> Math.max.apply Math, array - # Function to get the Min value in Array Array.min = (array) -> Math.min.apply Math, array setting.index--; - #setting.variable; + switch setting.variable when "Mean" values = model.getMean(setting.index) #Mean values of all the generated random samples @@ -723,9 +726,14 @@ socr.view = (model) -> #datum = Math.floor(datum*100) / 100; _currentValues = values + # fixing the precision + datum = Math.round( datum * Math.pow(10, setting.precision) ) / Math.pow(10, setting.precision) + lSide = Math.round( lSide * Math.pow(10, setting.precision) ) / Math.pow(10, setting.precision) + rSide = Math.round( rSide * Math.pow(10, setting.precision) ) / Math.pow(10, setting.precision) + try dotplot = socr.vis.generate( - parent: "#dotplot" + parent: __dotPlotDOMSelector__ data: values height: 390 range: [ @@ -737,7 +745,6 @@ socr.view = (model) -> variable: setting.variable pl: lSide pr: rSide - precision:setting.precision ) # nature: 'continuous' diff --git a/src/partials/controller.tmpl b/src/partials/controller.tmpl index 2600e71..21bcb33 100644 --- a/src/partials/controller.tmpl +++ b/src/partials/controller.tmpl @@ -79,7 +79,7 @@ -Precision to 3 decimal places.
+Precision to decimal places.