1800
start
autosave
553
reset
x SD lines
*histogram ( blend:
)
bin width
0.5
S
bin offset
0.0
S
regression guess
residuals: vertical
residuals: perpendicular
*regression: y~x
residuals: vertical
*regression: Deming
residuals: perpendicular
*smooth: y~x
smooth points
7
S
jog last
stop jog
sweep last
suppress edits
reset
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
switches: {
    // chart settings and signalsheld in a reactive set
    showXSDLines: { init: "FALSE" },
    showHistogram: { init: "FALSE" },
    showHistBlended: { init: "FALSE" },
    showGuess: { init: "FALSE" },
    showVResiduals: { init: "FALSE" },
    showPResiduals: { init: "FALSE" },
    showLM: { init: "FALSE" },
    showLMResiduals: { init: "FALSE" },
    showDeming: { init: "FALSE" },
    showDemingResiduals: { init: "FALSE" },
    showPopup: { init: "FALSE"rebuild: [ "plot3" ] },
    showDeming: { init: "FALSE" },
    showSmooth: { init: "FALSE" },
    xProp: { init: "NULL" },
    yProp: { init: "NULL" },
    suppressEdits: { init: "FALSE" },
    runProfile: { init: "FALSE" }
},
defaultSettings: {
    // user-driven variables used to control charts
    workingDataEdits: "list()",
    workingDataRanges: "list()",
    guessMList: "list()",
    binwidth: "0.5",
    binoffset: "0",
    smoothpoints: "7"
},
sweepSettings: {
    workingDataEdits: "list()",
    workingDataRanges: "list()",
    guessMList: "list()",
    binwidth: "list()",
    binoffset: "list()",
    smoothpoints: "list()"
},
statics: {
    // values from which we don't expect to be hanging reactive 
observers
    plot1Sources: "c('sweep_scatter', 'default_axisSpec', 'default_x
SDLines', 'default_rangeControls', 'default_rangeLines', 'sweep_rang
eLines', 'default_extendedGuessLine', 'sweep_extendedGuessLine', 
'default_vResiduals', 'default_pResiduals', 'default_lmLine', 
'sweep_lmLine', 'default_lmResiduals', 'default_demingLine', 
'sweep_demingLine', 'default_demingResiduals', 'default_bins', 
'sweep_bins')",
    plot2Sources: "c('default_annotatedTableData')",
    plot3Sources: "c('default_popup', 'sweep_popup')",
    invalid_build_sources: "list()",
    invalid_refresh_sources: "list()",
    waiting_for_refresh: "FALSE",  // cf reactive waiting_for_build
    chartDataQueue: "list()",
    maxX: "NA",
    maxY: "NA",
    popupYRange: "NA",
    standardBin: "NA",
    rebuildplot1: "TRUE",
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Initialise
Run
Stop
Clear
use local R
Workspace
X

Menu
LivelyR is a mashup of
 * R, with packages from RStudio:
    ggvis, shiny, evaluate, httpuv
 * Javascript, with libraries:
    Vega, d3, Lively Web
LivelyR is a work-in-progress by 
Aran Lunzer, guided and assisted by 
(among others)
  Amelia McNamara
  Dan Ingalls
  Robert Krahn
  Bret Victor
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Workspace
X

Menu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sessionInfo()
memory.profile()
getwd()
exists("ggvis")
getOption("shiny.withlively")
library(devtools)
install_github("gigvis","aranlunzer")
install_github("shiny","aranlunzer")
install_github("lively-R-evaluate","rksm")
install.packages("Rcpp")
install.packages("httpuv")
install_github("httpuv","rstudio") # as per instructions at 
https://github.com/rstudio/httpuv
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ObjectEditor
X

Menu
// changed at Wed Jan 22 2014 22:53:45 GMT-0800 (PST) by undefined  
this.addScript(function setUpRange(range) {
    if (window.Shiny && window.Shiny.shinyapp) {
        var self = this;
        var trackerFn = function(valStr) { self.silentlySetValue(valStr) };
        Shiny.setUpParameterRangeOnChartNamed("plot1", "binoffset", range, "r_default_bi
ns", trackerFn);
    }
}).tag([]);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<lively.morphic.Slider#AFA84... - sliderO>
Tag:
run
save
Tests

-- ALL --
endDrag
inverseScaledNumber
scaledString
setUpRange
silentlySetValue
startDrag
tweak
Scripts
-
+
-
Connections
+
-- ALL --
value,AttributeConnection(<lively.morphic.Slider#AFA84... - sliderO>.value --> <lively.morphic.Slider#AFA84... - sliderO>.adjustSliderParts)
value,AttributeConnection(<lively.morphic.Slider#AFA84... - sliderO>.value --> <lively.morphic.Slider#AFA84... - sliderO>.tweak)
scaledValue,AttributeConnection(<lively.morphic.Slider#AFA84... - sliderO>.scaledValue --> <lively.morphic.Text#5AD67... - readout>.textString)
scaledValue,AttributeConnection(<lively.morphic.Slider#AFA84... - sliderO>.scaledValue --> <lively.morphic.Morph#F9B76... - LivelyRHistory>.recordParmValue)
all
ObjectEditor
X

Menu
ObjectEditor
X

Menu
// changed at Wed Mar 26 2014 15:18:21 GMT-0700 (PDT) by undefined  
this.addScript(function wrapRSpec() {
    // this.wrapRSpec()
    function fillTemplate(template,data){
        return template.replace(/%(\w*)%/g,function(m,key){return data.hasOwnProperty
(key)?data[key]:"";});
    }
    var editor = this.get("CodePanel");
    var codeString = editor.getTextString();
    var rawFillers = eval("({"+codeString+"})");
    var fillers = {}
    fillers.remOp = "%%"  // hack
    fillers.intDivOp = "%/%"
    fillers.inOp = "%in%"
    fillers.gvSwitches = ($.map(rawFillers.switches, function( settings, key ) {
        return key+"="+settings.init })).join(", ");
    fillers.gvDefault = ($.map(rawFillers.defaultSettings, function( val, key ) {
        return key+"="+val })).join(", ");
    fillers.gvSweep = ($.map(rawFillers.sweepSettings, function( val, key ) {
        return key+"="+val })).join(", ");
    fillers.initStatics = ($.map(rawFillers.statics, function( val, key ) {
        return fillTemplate("update_static('%k%', %v%)", { k: key, v: val })})).join("
; ");
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<lively.morphic.HtmlWrapperMorph#BA219... - ShinyGigvisMorph1>
Tag:
run
save
Tests

haltShinyAppThenDo
initialise
isRReady
killR
loadExpressionParser
loadOMeta
loadVegaAndShinyThenDo
onLoad
popupChartMorph
reset
resetWorldHand
runCode
runRCode
startShiny
wrapRSpec
Scripts
-
+
-
Connections
+
-- ALL --
_Rotation,AttributeConnection(<lively.morphic.HtmlWrapperMorph#BA219... - ShinyGigvisMorph1>._Rotation --> <lively.morphic.Morph#1038F...>.setRotation)
rotation,AttributeConnection(<lively.morphic.HtmlWrapperMorph#BA219... - ShinyGigvisMorph1>.rotation --> <lively.morphic.Morph#1038F...>.setRotation)
_Scale,AttributeConnection(<lively.morphic.HtmlWrapperMorph#BA219... - ShinyGigvisMorph1>._Scale --> <lively.morphic.Morph#1038F...>.setScale)
scale,AttributeConnection(<lively.morphic.HtmlWrapperMorph#BA219... - ShinyGigvisMorph1>.scale --> <lively.morphic.Morph#1038F...>.setScale)
all
Workspace
X

Menu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/****
this world (gigvis-expt23a) was saved from localhost expt23 on 26 
mar 2014, before rehashing range settings.
this.world().saveWorldAs(
    URL.create("http://lively-web.org/users/AranLunzer/gigvis
-expt23a.html"),
    false,
    URL.create("http://lively-web.org/core/lively/bootstrap.js"))
****/
// lively.net.SessionTracker.closeSessions()
$grep("inspect")
$grep("Journal")
boundsInWorld
mm = new lively.morphic.Morph().openInWorld()
Object.inspect
mm.setExtent(pt(100,100))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX