
www.flow.js.flow.js Maven / Gradle / Ivy
"use strict";(function(){ var lodash = window._; window.Flow={}; window.H2O={};(function () {
var checkSparklingWater;
checkSparklingWater = function (context) {
context.onSparklingWater = false;
return $.ajax({
url: '/3/Metadata/endpoints',
type: 'GET',
dataType: 'json',
success: function (response) {
var route, _i, _len, _ref, _results;
_ref = response.routes;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
route = _ref[_i];
if (route.url_pattern === '/3/scalaint') {
_results.push(context.onSparklingWater = true);
} else {
_results.push(void 0);
}
}
return _results;
},
async: false
});
};
if ((typeof window !== 'undefined' && window !== null ? window.$ : void 0) != null) {
$(function () {
var context;
context = {};
checkSparklingWater(context);
window.flow = Flow.Application(context, H2O.Routines);
H2O.Application(context);
ko.applyBindings(window.flow);
context.ready();
return context.initialized();
});
}
}.call(this));
(function () {
Flow.Version = '0.4.38';
Flow.About = function (_) {
var _properties;
_properties = Flow.Dataflow.signals([]);
Flow.Dataflow.link(_.ready, function () {
if (Flow.BuildProperties) {
return _properties(Flow.BuildProperties);
} else {
return _.requestAbout(function (error, response) {
var name, properties, value, _i, _len, _ref, _ref1;
properties = [];
if (!error) {
_ref = response.entries;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
_ref1 = _ref[_i], name = _ref1.name, value = _ref1.value;
properties.push({
caption: 'H2O ' + name,
value: value
});
}
}
properties.push({
caption: 'Flow version',
value: Flow.Version
});
return _properties(Flow.BuildProperties = properties);
});
}
});
return { properties: _properties };
};
}.call(this));
(function () {
Flow.AlertDialog = function (_, _message, _opts, _go) {
var accept;
if (_opts == null) {
_opts = {};
}
lodash.defaults(_opts, {
title: 'Alert',
acceptCaption: 'OK'
});
accept = function () {
return _go(true);
};
return {
title: _opts.title,
acceptCaption: _opts.acceptCaption,
message: Flow.Util.multilineTextToHTML(_message),
accept: accept,
template: 'alert-dialog'
};
};
}.call(this));
(function () {
Flow.Browser = function (_) {
var createNotebookView, loadNotebooks, _docs, _hasDocs, _sortedDocs;
_docs = Flow.Dataflow.signals([]);
_sortedDocs = Flow.Dataflow.lift(_docs, function (docs) {
return lodash.sortBy(docs, function (doc) {
return -doc.date().getTime();
});
});
_hasDocs = Flow.Dataflow.lift(_docs, function (docs) {
return docs.length > 0;
});
createNotebookView = function (notebook) {
var load, purge, self, _date, _fromNow, _name;
_name = notebook.name;
_date = Flow.Dataflow.signal(new Date(notebook.timestamp_millis));
_fromNow = Flow.Dataflow.lift(_date, Flow.Util.fromNow);
load = function () {
return _.confirm('This action will replace your active notebook.\nAre you sure you want to continue?', {
acceptCaption: 'Load Notebook',
declineCaption: 'Cancel'
}, function (accept) {
if (accept) {
return _.load(_name);
}
});
};
purge = function () {
return _.confirm('Are you sure you want to delete this notebook?\n"' + _name + '"', {
acceptCaption: 'Delete',
declineCaption: 'Keep'
}, function (accept) {
if (accept) {
return _.requestDeleteObject('notebook', _name, function (error) {
var _ref;
if (error) {
return _alert((_ref = error.message) != null ? _ref : error);
} else {
_docs.remove(self);
return _.growl('Notebook deleted.');
}
});
}
});
};
return self = {
name: _name,
date: _date,
fromNow: _fromNow,
load: load,
purge: purge
};
};
loadNotebooks = function () {
return _.requestObjects('notebook', function (error, notebooks) {
if (error) {
return console.debug(error);
} else {
return _docs(lodash.map(notebooks, function (notebook) {
return createNotebookView(notebook);
}));
}
});
};
Flow.Dataflow.link(_.ready, function () {
loadNotebooks();
Flow.Dataflow.link(_.saved, function () {
return loadNotebooks();
});
return Flow.Dataflow.link(_.loaded, function () {
return loadNotebooks();
});
});
return {
docs: _sortedDocs,
hasDocs: _hasDocs,
loadNotebooks: loadNotebooks
};
};
}.call(this));
(function () {
Flow.Cell = function (_, _renderers, type, input) {
var activate, clear, clip, execute, navigate, select, self, toggleInput, toggleOutput, _actions, _errors, _guid, _hasError, _hasInput, _hasOutput, _input, _isActive, _isBusy, _isCode, _isInputVisible, _isOutputHidden, _isReady, _isSelected, _outputs, _render, _result, _time, _type;
if (type == null) {
type = 'cs';
}
if (input == null) {
input = '';
}
_guid = lodash.uniqueId();
_type = Flow.Dataflow.signal(type);
_render = Flow.Dataflow.lift(_type, function (type) {
return _renderers[type](_guid);
});
_isCode = Flow.Dataflow.lift(_render, function (render) {
return render.isCode;
});
_isSelected = Flow.Dataflow.signal(false);
_isActive = Flow.Dataflow.signal(false);
_hasError = Flow.Dataflow.signal(false);
_isBusy = Flow.Dataflow.signal(false);
_isReady = Flow.Dataflow.lift(_isBusy, function (isBusy) {
return !isBusy;
});
_time = Flow.Dataflow.signal('');
_hasInput = Flow.Dataflow.signal(true);
_input = Flow.Dataflow.signal(input);
_outputs = Flow.Dataflow.signals([]);
_errors = [];
_result = Flow.Dataflow.signal(null);
_hasOutput = Flow.Dataflow.lift(_outputs, function (outputs) {
return outputs.length > 0;
});
_isInputVisible = Flow.Dataflow.signal(true);
_isOutputHidden = Flow.Dataflow.signal(false);
_actions = {};
Flow.Dataflow.act(_isActive, function (isActive) {
if (isActive) {
_.selectCell(self);
_hasInput(true);
if (!_isCode()) {
_outputs([]);
}
}
});
Flow.Dataflow.act(_isSelected, function (isSelected) {
if (!isSelected) {
return _isActive(false);
}
});
select = function () {
_.selectCell(self, false);
return true;
};
navigate = function () {
_.selectCell(self);
return true;
};
activate = function () {
return _isActive(true);
};
clip = function () {
return _.saveClip('user', _type(), _input());
};
toggleInput = function () {
return _isInputVisible(!_isInputVisible());
};
toggleOutput = function () {
return _isOutputHidden(!_isOutputHidden());
};
clear = function () {
_result(null);
_outputs([]);
_errors.length = 0;
_hasError(false);
if (!_isCode()) {
return _hasInput(true);
}
};
execute = function (go) {
var render, startTime;
startTime = Date.now();
_time('Started at ' + Flow.Util.formatClockTime(startTime));
input = _input().trim();
if (!input) {
if (go) {
return go(null);
} else {
return void 0;
}
}
render = _render();
_isBusy(true);
clear();
if (_type() === 'sca') {
input = input.replace(/\\/g, '\\\\');
input = input.replace(/'/g, '\\\'');
input = input.replace(/\n/g, '\\n');
input = 'runScalaCode ' + _.scalaIntpId() + ', \'' + input + '\'';
}
render(input, {
data: function (result) {
return _outputs.push(result);
},
close: function (result) {
return _result(result);
},
error: function (error) {
_hasError(true);
if (error.name === 'FlowError') {
_outputs.push(Flow.Failure(_, error));
} else {
_outputs.push({
text: JSON.stringify(error, null, 2),
template: 'flow-raw'
});
}
return _errors.push(error);
},
end: function () {
_hasInput(_isCode());
_isBusy(false);
_time(Flow.Util.formatElapsedTime(Date.now() - startTime));
if (go) {
go(_hasError() ? _errors.slice(0) : null);
}
}
});
return _isActive(false);
};
return self = {
guid: _guid,
type: _type,
isCode: _isCode,
isSelected: _isSelected,
isActive: _isActive,
hasError: _hasError,
isBusy: _isBusy,
isReady: _isReady,
time: _time,
input: _input,
hasInput: _hasInput,
outputs: _outputs,
result: _result,
hasOutput: _hasOutput,
isInputVisible: _isInputVisible,
toggleInput: toggleInput,
isOutputHidden: _isOutputHidden,
toggleOutput: toggleOutput,
select: select,
navigate: navigate,
activate: activate,
execute: execute,
clear: clear,
clip: clip,
_actions: _actions,
getCursorPosition: function () {
return _actions.getCursorPosition();
},
autoResize: function () {
return _actions.autoResize();
},
scrollIntoView: function (immediate) {
return _actions.scrollIntoView(immediate);
},
templateOf: function (view) {
return view.template;
},
template: 'flow-cell'
};
};
}.call(this));
(function () {
var SystemClips;
SystemClips = [
'assist',
'importFiles',
'getFrames',
'getModels',
'getPredictions',
'getJobs',
'buildModel',
'predict'
];
Flow.Clipboard = function (_) {
var addClip, createClip, emptyTrash, initialize, lengthOf, loadUserClips, removeClip, saveUserClips, serializeUserClips, _hasTrashClips, _hasUserClips, _systemClipCount, _systemClips, _trashClipCount, _trashClips, _userClipCount, _userClips;
lengthOf = function (array) {
if (array.length) {
return '(' + array.length + ')';
} else {
return '';
}
};
_systemClips = Flow.Dataflow.signals([]);
_systemClipCount = Flow.Dataflow.lift(_systemClips, lengthOf);
_userClips = Flow.Dataflow.signals([]);
_userClipCount = Flow.Dataflow.lift(_userClips, lengthOf);
_hasUserClips = Flow.Dataflow.lift(_userClips, function (clips) {
return clips.length > 0;
});
_trashClips = Flow.Dataflow.signals([]);
_trashClipCount = Flow.Dataflow.lift(_trashClips, lengthOf);
_hasTrashClips = Flow.Dataflow.lift(_trashClips, function (clips) {
return clips.length > 0;
});
createClip = function (_list, _type, _input, _canRemove) {
var execute, insert, self;
if (_canRemove == null) {
_canRemove = true;
}
execute = function () {
return _.insertAndExecuteCell(_type, _input);
};
insert = function () {
return _.insertCell(_type, _input);
};
Flow.Prelude.remove = function () {
if (_canRemove) {
return removeClip(_list, self);
}
};
return self = {
type: _type,
input: _input,
execute: execute,
insert: insert,
remove: Flow.Prelude.remove,
canRemove: _canRemove
};
};
addClip = function (list, type, input) {
return list.push(createClip(list, type, input));
};
removeClip = function (list, clip) {
if (list === _userClips) {
_userClips.remove(clip);
saveUserClips();
return _trashClips.push(createClip(_trashClips, clip.type, clip.input));
} else {
return _trashClips.remove(clip);
}
};
emptyTrash = function () {
return _trashClips.removeAll();
};
loadUserClips = function () {
return _.requestObjectExists('environment', 'clips', function (error, exists) {
if (exists) {
return _.requestObject('environment', 'clips', function (error, doc) {
if (!error) {
return _userClips(lodash.map(doc.clips, function (clip) {
return createClip(_userClips, clip.type, clip.input);
}));
}
});
}
});
};
serializeUserClips = function () {
return {
version: '1.0.0',
clips: lodash.map(_userClips(), function (clip) {
return {
type: clip.type,
input: clip.input
};
})
};
};
saveUserClips = function () {
return _.requestPutObject('environment', 'clips', serializeUserClips(), function (error) {
if (error) {
_.alert('Error saving clips: ' + error.message);
}
});
};
initialize = function () {
_systemClips(lodash.map(SystemClips, function (input) {
return createClip(_systemClips, 'cs', input, false);
}));
return Flow.Dataflow.link(_.ready, function () {
loadUserClips();
return Flow.Dataflow.link(_.saveClip, function (category, type, input) {
input = input.trim();
if (input) {
if (category === 'user') {
addClip(_userClips, type, input);
return saveUserClips();
} else {
return addClip(_trashClips, type, input);
}
}
});
});
};
initialize();
return {
systemClips: _systemClips,
systemClipCount: _systemClipCount,
userClips: _userClips,
hasUserClips: _hasUserClips,
userClipCount: _userClipCount,
trashClips: _trashClips,
trashClipCount: _trashClipCount,
hasTrashClips: _hasTrashClips,
emptyTrash: emptyTrash
};
};
}.call(this));
(function () {
Flow.Coffeescript = function (_, guid, sandbox) {
var isRoutine, print, render, _kernel;
_kernel = Flow.CoffeescriptKernel;
print = function (arg) {
if (arg !== print) {
sandbox.results[guid].outputs(arg);
}
return print;
};
isRoutine = function (f) {
var name, routine, _ref;
_ref = sandbox.routines;
for (name in _ref) {
routine = _ref[name];
if (f === routine) {
return true;
}
}
return false;
};
render = function (input, output) {
var cellResult, evaluate, outputBuffer, tasks;
sandbox.results[guid] = cellResult = {
result: Flow.Dataflow.signal(null),
outputs: outputBuffer = Flow.Async.createBuffer([])
};
evaluate = function (ft) {
if (ft != null ? ft.isFuture : void 0) {
return ft(function (error, result) {
var _ref;
if (error) {
output.error(new Flow.Error('Error evaluating cell', error));
return output.end();
} else {
if (result != null ? (_ref = result._flow_) != null ? _ref.render : void 0 : void 0) {
return output.data(result._flow_.render(function () {
return output.end();
}));
} else {
return output.data(Flow.ObjectBrowser(_, function () {
return output.end();
}('output', result)));
}
}
});
} else {
return output.data(Flow.ObjectBrowser(_, function () {
return output.end();
}, 'output', ft));
}
};
outputBuffer.subscribe(evaluate);
tasks = [
_kernel.safetyWrapCoffeescript(guid),
_kernel.compileCoffeescript,
_kernel.parseJavascript,
_kernel.createRootScope(sandbox),
_kernel.removeHoistedDeclarations,
_kernel.rewriteJavascript(sandbox),
_kernel.generateJavascript,
_kernel.compileJavascript,
_kernel.executeJavascript(sandbox, print)
];
return Flow.Async.pipe(tasks)(input, function (error) {
var result;
if (error) {
output.error(error);
}
result = cellResult.result();
if (lodash.isFunction(result)) {
if (isRoutine(result)) {
return print(result());
} else {
return evaluate(result);
}
} else {
return output.close(Flow.ObjectBrowser(_, function () {
return output.end();
}, 'result', result));
}
});
};
render.isCode = true;
return render;
};
}.call(this));
(function () {
Flow.ConfirmDialog = function (_, _message, _opts, _go) {
var accept, decline;
if (_opts == null) {
_opts = {};
}
lodash.defaults(_opts, {
title: 'Confirm',
acceptCaption: 'Yes',
declineCaption: 'No'
});
accept = function () {
return _go(true);
};
decline = function () {
return _go(false);
};
return {
title: _opts.title,
acceptCaption: _opts.acceptCaption,
declineCaption: _opts.declineCaption,
message: Flow.Util.multilineTextToHTML(_message),
accept: accept,
decline: decline,
template: 'confirm-dialog'
};
};
}.call(this));
(function () {
}.call(this));
(function () {
var traceCauses;
traceCauses = function (error, causes) {
causes.push(error.message);
if (error.cause) {
traceCauses(error.cause, causes);
}
return causes;
};
Flow.Failure = function (_, error) {
var causes, message, toggleStack, _isStackVisible;
causes = traceCauses(error, []);
message = causes.shift();
_isStackVisible = Flow.Dataflow.signal(false);
toggleStack = function () {
return _isStackVisible(!_isStackVisible());
};
_.trackException(message + '; ' + causes.join('; '));
return {
message: message,
stack: error.stack,
causes: causes,
isStackVisible: _isStackVisible,
toggleStack: toggleStack,
template: 'flow-failure'
};
};
}.call(this));
(function () {
Flow.Form = function (_, _form, _go) {
lodash.defer(_go);
return {
form: _form,
template: 'flow-form',
templateOf: function (control) {
return control.template;
}
};
};
}.call(this));
(function () {
Flow.Heading = function (_, level) {
var render;
render = function (input, output) {
output.data({
text: input.trim() || '(Untitled)',
template: 'flow-' + level
});
return output.end();
};
render.isCode = false;
return render;
};
}.call(this));
(function () {
var _catalog, _homeContent, _homeMarkdown, _index;
_catalog = null;
_index = {};
_homeContent = null;
_homeMarkdown = '\nUsing Flow for the first time?\n
\n\n \n\n
\n\nOr, view example Flows to explore and learn H2O.\n\n###### Star H2O on Github!\n\n\n\n###### General\n\n%HELP_TOPICS%\n\n###### Examples\n\nFlow packs are a great way to explore and learn H2O. Try out these Flows and run them in your browser.
Browse installed packs...\n\n###### H2O REST API\n\n- Routes\n- Schemas\n';
Flow.Help = function (_) {
var buildToc, buildTopics, displayEndpoint, displayEndpoints, displayFlows, displayHtml, displayPacks, displaySchema, displaySchemas, fixImageSources, goBack, goForward, goHome, goTo, initialize, performAction, _canGoBack, _canGoForward, _content, _history, _historyIndex;
_content = Flow.Dataflow.signal(null);
_history = [];
_historyIndex = -1;
_canGoBack = Flow.Dataflow.signal(false);
_canGoForward = Flow.Dataflow.signal(false);
goTo = function (index) {
var content;
content = _history[_historyIndex = index];
$('a, button', $(content)).each(function (i) {
var $a, action;
$a = $(this);
if (action = $a.attr('data-action')) {
return $a.click(function () {
return performAction(action, $a);
});
}
});
_content(content);
_canGoForward(_historyIndex < _history.length - 1);
_canGoBack(_historyIndex > 0);
};
goBack = function () {
if (_historyIndex > 0) {
return goTo(_historyIndex - 1);
}
};
goForward = function () {
if (_historyIndex < _history.length - 1) {
return goTo(_historyIndex + 1);
}
};
displayHtml = function (content) {
if (_historyIndex < _history.length - 1) {
_history.splice(_historyIndex + 1, _history.length - (_historyIndex + 1), content);
} else {
_history.push(content);
}
return goTo(_history.length - 1);
};
fixImageSources = function (html) {
return html.replace(/\s+src\s*\=\s*\"images\//g, ' src="help/images/');
};
performAction = function (action, $el) {
var packName, routeIndex, schemaName, topic;
switch (action) {
case 'help':
topic = _index[$el.attr('data-topic')];
_.requestHelpContent(topic.name, function (error, html) {
var contents, div, h5, h6, mark, _ref;
_ref = Flow.HTML.template('div', 'mark', 'h5', 'h6'), div = _ref[0], mark = _ref[1], h5 = _ref[2], h6 = _ref[3];
contents = [
mark('Help'),
h5(topic.title),
fixImageSources(div(html))
];
if (topic.children.length) {
contents.push(h6('Topics'));
contents.push(buildToc(topic.children));
}
return displayHtml(Flow.HTML.render('div', div(contents)));
});
break;
case 'assist':
_.insertAndExecuteCell('cs', 'assist');
break;
case 'get-packs':
_.requestPacks(function (error, packNames) {
if (!error) {
return displayPacks(lodash.filter(packNames, function (packName) {
return packName !== 'test';
}));
}
});
break;
case 'get-pack':
packName = $el.attr('data-pack-name');
_.requestPack(packName, function (error, flowNames) {
if (!error) {
return displayFlows(packName, flowNames);
}
});
break;
case 'get-flow':
_.confirm('This action will replace your active notebook.\nAre you sure you want to continue?', {
acceptCaption: 'Load Notebook',
declineCaption: 'Cancel'
}, function (accept) {
var flowName;
if (accept) {
packName = $el.attr('data-pack-name');
flowName = $el.attr('data-flow-name');
if (H2O.Util.validateFileExtension(flowName, '.flow')) {
return _.requestFlow(packName, flowName, function (error, flow) {
if (!error) {
return _.open(H2O.Util.getFileBaseName(flowName, '.flow'), flow);
}
});
}
}
});
break;
case 'endpoints':
_.requestEndpoints(function (error, response) {
if (!error) {
return displayEndpoints(response.routes);
}
});
break;
case 'endpoint':
routeIndex = $el.attr('data-index');
_.requestEndpoint(routeIndex, function (error, response) {
if (!error) {
return displayEndpoint(lodash.head(response.routes));
}
});
break;
case 'schemas':
_.requestSchemas(function (error, response) {
if (!error) {
return displaySchemas(lodash.sortBy(response.schemas, function (schema) {
return schema.name;
}));
}
});
break;
case 'schema':
schemaName = $el.attr('data-schema');
_.requestSchema(schemaName, function (error, response) {
if (!error) {
return displaySchema(lodash.head(response.schemas));
}
});
}
};
buildToc = function (nodes) {
var a, li, ul, _ref;
_ref = Flow.HTML.template('ul', 'li', 'a href=\'#\' data-action=\'help\' data-topic=\'$1\''), ul = _ref[0], li = _ref[1], a = _ref[2];
return ul(lodash.map(nodes, function (node) {
return li(a(node.title, node.name));
}));
};
buildTopics = function (index, topics) {
var topic, _i, _len;
for (_i = 0, _len = topics.length; _i < _len; _i++) {
topic = topics[_i];
index[topic.name] = topic;
if (topic.children.length) {
buildTopics(index, topic.children);
}
}
};
displayPacks = function (packNames) {
var a, div, h5, i, mark, p, _ref;
_ref = Flow.HTML.template('div', 'mark', 'h5', 'p', 'i.fa.fa-folder-o', 'a href=\'#\' data-action=\'get-pack\' data-pack-name=\'$1\''), div = _ref[0], mark = _ref[1], h5 = _ref[2], p = _ref[3], i = _ref[4], a = _ref[5];
displayHtml(Flow.HTML.render('div', div([
mark('Packs'),
h5('Installed Packs'),
div(lodash.map(packNames, function (packName) {
return p([
i(),
a(packName, packName)
]);
}))
])));
};
displayFlows = function (packName, flowNames) {
var a, div, h5, i, mark, p, _ref;
_ref = Flow.HTML.template('div', 'mark', 'h5', 'p', 'i.fa.fa-file-text-o', 'a href=\'#\' data-action=\'get-flow\' data-pack-name=\'' + packName + '\' data-flow-name=\'$1\''), div = _ref[0], mark = _ref[1], h5 = _ref[2], p = _ref[3], i = _ref[4], a = _ref[5];
displayHtml(Flow.HTML.render('div', div([
mark('Pack'),
h5(packName),
div(lodash.map(flowNames, function (flowName) {
return p([
i(),
a(flowName, flowName)
]);
}))
])));
};
displayEndpoints = function (routes) {
var action, code, div, els, h5, mark, p, route, routeIndex, _i, _len, _ref;
_ref = Flow.HTML.template('div', 'mark', 'h5', 'p', 'a href=\'#\' data-action=\'endpoint\' data-index=\'$1\'', 'code'), div = _ref[0], mark = _ref[1], h5 = _ref[2], p = _ref[3], action = _ref[4], code = _ref[5];
els = [
mark('API'),
h5('List of Routes')
];
for (routeIndex = _i = 0, _len = routes.length; _i < _len; routeIndex = ++_i) {
route = routes[routeIndex];
els.push(p(action(code(route.http_method + ' ' + route.url_pattern), routeIndex) + '
' + route.summary));
}
displayHtml(Flow.HTML.render('div', div(els)));
};
goHome = function () {
return displayHtml(Flow.HTML.render('div', _homeContent));
};
displayEndpoint = function (route) {
var action, code, div, h5, h6, mark, p, _ref, _ref1;
_ref = Flow.HTML.template('div', 'mark', 'h5', 'h6', 'p', 'a href=\'#\' data-action=\'schema\' data-schema=\'$1\'', 'code'), div = _ref[0], mark = _ref[1], h5 = _ref[2], h6 = _ref[3], p = _ref[4], action = _ref[5], code = _ref[6];
return displayHtml(Flow.HTML.render('div', div([
mark('Route'),
h5(route.url_pattern),
h6('Method'),
p(code(route.http_method)),
h6('Summary'),
p(route.summary),
h6('Parameters'),
p(((_ref1 = route.path_params) != null ? _ref1.length : void 0) ? route.path_params.join(', ') : '-'),
h6('Input Schema'),
p(action(code(route.input_schema), route.input_schema)),
h6('Output Schema'),
p(action(code(route.output_schema), route.output_schema))
])));
};
displaySchemas = function (schemas) {
var action, code, div, els, h5, li, mark, schema, ul, variable, _ref;
_ref = Flow.HTML.template('div', 'h5', 'ul', 'li', 'var', 'mark', 'code', 'a href=\'#\' data-action=\'schema\' data-schema=\'$1\''), div = _ref[0], h5 = _ref[1], ul = _ref[2], li = _ref[3], variable = _ref[4], mark = _ref[5], code = _ref[6], action = _ref[7];
els = [
mark('API'),
h5('List of Schemas'),
ul(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = schemas.length; _i < _len; _i++) {
schema = schemas[_i];
_results.push(li('' + action(code(schema.name), schema.name) + ' ' + variable(lodash.escape(schema.type))));
}
return _results;
}())
];
return displayHtml(Flow.HTML.render('div', div(els)));
};
displaySchema = function (schema) {
var code, content, div, field, h5, h6, mark, p, small, variable, _i, _len, _ref, _ref1;
_ref = Flow.HTML.template('div', 'mark', 'h5', 'h6', 'p', 'code', 'var', 'small'), div = _ref[0], mark = _ref[1], h5 = _ref[2], h6 = _ref[3], p = _ref[4], code = _ref[5], variable = _ref[6], small = _ref[7];
content = [
mark('Schema'),
h5('' + schema.name + ' (' + lodash.escape(schema.type) + ')'),
h6('Fields')
];
_ref1 = schema.fields;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
field = _ref1[_i];
if (field.name !== '__meta') {
content.push(p('' + variable(field.name) + (field.required ? '*' : '') + ' ' + code(lodash.escape(field.type)) + '
' + small(field.help)));
}
}
return displayHtml(Flow.HTML.render('div', div(content)));
};
initialize = function (catalog) {
_catalog = catalog;
buildTopics(_index, _catalog);
_homeContent = marked(_homeMarkdown).replace('%HELP_TOPICS%', buildToc(_catalog));
return goHome();
};
Flow.Dataflow.link(_.ready, function () {
return _.requestHelpIndex(function (error, catalog) {
if (!error) {
return initialize(catalog);
}
});
});
return {
content: _content,
goHome: goHome,
goBack: goBack,
canGoBack: _canGoBack,
goForward: goForward,
canGoForward: _canGoForward
};
};
}.call(this));
(function () {
Flow.Markdown = function (_) {
var render;
render = function (input, output) {
var error;
try {
return output.data({
html: marked(input.trim() || '(No content)'),
template: 'flow-html'
});
} catch (_error) {
error = _error;
return output.error(error);
} finally {
output.end();
}
};
render.isCode = false;
return render;
};
}.call(this));
(function () {
var __slice = [].slice;
Flow.Renderers = function (_, _sandbox) {
return {
h1: function () {
return Flow.Heading(_, 'h1');
},
h2: function () {
return Flow.Heading(_, 'h2');
},
h3: function () {
return Flow.Heading(_, 'h3');
},
h4: function () {
return Flow.Heading(_, 'h4');
},
h5: function () {
return Flow.Heading(_, 'h5');
},
h6: function () {
return Flow.Heading(_, 'h6');
},
md: function () {
return Flow.Markdown(_);
},
cs: function (guid) {
return Flow.Coffeescript(_, guid, _sandbox);
},
sca: function (guid) {
return Flow.Coffeescript(_, guid, _sandbox);
},
raw: function () {
return Flow.Raw(_);
}
};
};
Flow.Notebook = function (_, _renderers) {
var appendCell, appendCellAndRun, checkConsistency, checkIfNameIsInUse, clearAllCells, clearCell, cloneCell, continueRunningAllCells, convertCellToCode, convertCellToHeading, convertCellToMarkdown, convertCellToRaw, convertCellToScala, copyCell, createCell, createMenu, createMenuHeader, createMenuItem, createNotebook, createShortcutHint, createTool, cutCell, deleteCell, deserialize, displayAbout, displayDocumentation, displayFAQ, displayKeyboardShortcuts, duplicateNotebook, editModeKeyboardShortcuts, editModeKeyboardShortcutsHelp, editName, executeAllCells, executeCommand, exportNotebook, findBuildProperty, getBuildProperties, goToUrl, initialize, initializeMenus, insertAbove, insertBelow, insertCell, insertCellAbove, insertCellAboveAndRun, insertCellBelow, insertCellBelowAndRun, insertNewCellAbove, insertNewCellBelow, insertNewScalaCellAbove, insertNewScalaCellBelow, loadNotebook, menuCell, menuCellSW, menuDivider, mergeCellAbove, mergeCellBelow, moveCellDown, moveCellUp, normalModeKeyboardShortcuts, normalModeKeyboardShortcutsHelp, notImplemented, openNotebook, pasteCellAbove, pasteCellBelow, pasteCellandReplace, promptForNotebook, removeCell, runAllCells, runCell, runCellAndInsertBelow, runCellAndSelectBelow, saveName, saveNotebook, selectCell, selectNextCell, selectPreviousCell, serialize, setupKeyboardHandling, setupMenus, showBrowser, showClipboard, showHelp, showOutline, shutdown, splitCell, startTour, stopRunningAll, storeNotebook, switchToCommandMode, switchToEditMode, toKeyboardHelp, toggleAllInputs, toggleAllOutputs, toggleInput, toggleOutput, toggleSidebar, undoLastDelete, uploadFile, _about, _areInputsHidden, _areOutputsHidden, _cells, _clipboardCell, _dialogs, _initializeInterpreter, _isEditingName, _isRunningAll, _isSidebarHidden, _lastDeletedCell, _localName, _menus, _remoteName, _runningCaption, _runningCellInput, _runningPercent, _selectedCell, _selectedCellIndex, _sidebar, _status, _toolbar;
_localName = Flow.Dataflow.signal('Untitled Flow');
Flow.Dataflow.react(_localName, function (name) {
return document.title = 'H2O' + (name && name.trim() ? '- ' + name : '');
});
_remoteName = Flow.Dataflow.signal(null);
_isEditingName = Flow.Dataflow.signal(false);
editName = function () {
return _isEditingName(true);
};
saveName = function () {
return _isEditingName(false);
};
_cells = Flow.Dataflow.signals([]);
_selectedCell = null;
_selectedCellIndex = -1;
_clipboardCell = null;
_lastDeletedCell = null;
_areInputsHidden = Flow.Dataflow.signal(false);
_areOutputsHidden = Flow.Dataflow.signal(false);
_isSidebarHidden = Flow.Dataflow.signal(false);
_isRunningAll = Flow.Dataflow.signal(false);
_runningCaption = Flow.Dataflow.signal('Running');
_runningPercent = Flow.Dataflow.signal('0%');
_runningCellInput = Flow.Dataflow.signal('');
_status = Flow.Status(_);
_sidebar = Flow.Sidebar(_, _cells);
_about = Flow.About(_);
_dialogs = Flow.Dialogs(_);
_initializeInterpreter = function () {
return _.requestScalaIntp(function (error, response) {
if (error) {
return _.scalaIntpId(-1);
} else {
return _.scalaIntpId(response.session_id);
}
});
};
serialize = function () {
var cell, cells;
cells = function () {
var _i, _len, _ref, _results;
_ref = _cells();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cell = _ref[_i];
_results.push({
type: cell.type(),
input: cell.input()
});
}
return _results;
}();
return {
version: '1.0.0',
cells: cells
};
};
deserialize = function (localName, remoteName, doc) {
var cell, cells, _i, _len, _ref;
_localName(localName);
_remoteName(remoteName);
cells = function () {
var _i, _len, _ref, _results;
_ref = doc.cells;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cell = _ref[_i];
_results.push(createCell(cell.type, cell.input));
}
return _results;
}();
_cells(cells);
selectCell(lodash.head(cells));
_ref = _cells();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cell = _ref[_i];
if (!cell.isCode()) {
cell.execute();
}
}
};
createCell = function (type, input) {
if (type == null) {
type = 'cs';
}
if (input == null) {
input = '';
}
return Flow.Cell(_, _renderers, type, input);
};
checkConsistency = function () {
var cell, i, selectionCount, _i, _len, _ref;
selectionCount = 0;
_ref = _cells();
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
cell = _ref[i];
if (!cell) {
error('index ' + i + ' is empty');
} else {
if (cell.isSelected()) {
selectionCount++;
}
}
}
if (selectionCount !== 1) {
error('selected cell count = ' + selectionCount);
}
};
selectCell = function (target, scrollIntoView, scrollImmediately) {
if (scrollIntoView == null) {
scrollIntoView = true;
}
if (scrollImmediately == null) {
scrollImmediately = false;
}
if (_selectedCell === target) {
return;
}
if (_selectedCell) {
_selectedCell.isSelected(false);
}
_selectedCell = target;
_selectedCell.isSelected(true);
_selectedCellIndex = _cells.indexOf(_selectedCell);
checkConsistency();
if (scrollIntoView) {
lodash.defer(function () {
return _selectedCell.scrollIntoView(scrollImmediately);
});
}
return _selectedCell;
};
cloneCell = function (cell) {
return createCell(cell.type(), cell.input());
};
switchToCommandMode = function () {
return _selectedCell.isActive(false);
};
switchToEditMode = function () {
_selectedCell.isActive(true);
return false;
};
convertCellToCode = function () {
return _selectedCell.type('cs');
};
convertCellToHeading = function (level) {
return function () {
_selectedCell.type('h' + level);
return _selectedCell.execute();
};
};
convertCellToMarkdown = function () {
_selectedCell.type('md');
return _selectedCell.execute();
};
convertCellToRaw = function () {
_selectedCell.type('raw');
return _selectedCell.execute();
};
convertCellToScala = function () {
return _selectedCell.type('sca');
};
copyCell = function () {
return _clipboardCell = _selectedCell;
};
cutCell = function () {
copyCell();
return removeCell();
};
deleteCell = function () {
_lastDeletedCell = _selectedCell;
return removeCell();
};
removeCell = function () {
var cells, removedCell;
cells = _cells();
if (cells.length > 1) {
if (_selectedCellIndex === cells.length - 1) {
removedCell = lodash.head(_cells.splice(_selectedCellIndex, 1));
selectCell(cells[_selectedCellIndex - 1]);
} else {
removedCell = lodash.head(_cells.splice(_selectedCellIndex, 1));
selectCell(cells[_selectedCellIndex]);
}
if (removedCell) {
_.saveClip('trash', removedCell.type(), removedCell.input());
}
}
};
insertCell = function (index, cell) {
_cells.splice(index, 0, cell);
selectCell(cell);
return cell;
};
insertAbove = function (cell) {
return insertCell(_selectedCellIndex, cell);
};
insertBelow = function (cell) {
return insertCell(_selectedCellIndex + 1, cell);
};
appendCell = function (cell) {
return insertCell(_cells().length, cell);
};
insertCellAbove = function (type, input) {
return insertAbove(createCell(type, input));
};
insertCellBelow = function (type, input) {
return insertBelow(createCell(type, input));
};
insertNewCellAbove = function () {
return insertAbove(createCell('cs'));
};
insertNewCellBelow = function () {
return insertBelow(createCell('cs'));
};
insertNewScalaCellAbove = function () {
return insertAbove(createCell('sca'));
};
insertNewScalaCellBelow = function () {
return insertBelow(createCell('sca'));
};
insertCellAboveAndRun = function (type, input) {
var cell;
cell = insertAbove(createCell(type, input));
cell.execute();
return cell;
};
insertCellBelowAndRun = function (type, input) {
var cell;
cell = insertBelow(createCell(type, input));
cell.execute();
return cell;
};
appendCellAndRun = function (type, input) {
var cell;
cell = appendCell(createCell(type, input));
cell.execute();
return cell;
};
moveCellDown = function () {
var cells;
cells = _cells();
if (_selectedCellIndex !== cells.length - 1) {
_cells.splice(_selectedCellIndex, 1);
_selectedCellIndex++;
_cells.splice(_selectedCellIndex, 0, _selectedCell);
}
};
moveCellUp = function () {
var cells;
if (_selectedCellIndex !== 0) {
cells = _cells();
_cells.splice(_selectedCellIndex, 1);
_selectedCellIndex--;
_cells.splice(_selectedCellIndex, 0, _selectedCell);
}
};
mergeCellBelow = function () {
var cells, nextCell;
cells = _cells();
if (_selectedCellIndex !== cells.length - 1) {
nextCell = cells[_selectedCellIndex + 1];
if (_selectedCell.type() === nextCell.type()) {
nextCell.input(_selectedCell.input() + '\n' + nextCell.input());
removeCell();
}
}
};
splitCell = function () {
var cursorPosition, input, left, right;
if (_selectedCell.isActive()) {
input = _selectedCell.input();
if (input.length > 1) {
cursorPosition = _selectedCell.getCursorPosition();
if (0 < cursorPosition && cursorPosition < input.length - 1) {
left = input.substr(0, cursorPosition);
right = input.substr(cursorPosition);
_selectedCell.input(left);
insertCell(_selectedCellIndex + 1, createCell('cs', right));
_selectedCell.isActive(true);
}
}
}
};
pasteCellAbove = function () {
if (_clipboardCell) {
return insertCell(_selectedCellIndex, cloneCell(_clipboardCell));
}
};
pasteCellBelow = function () {
if (_clipboardCell) {
return insertCell(_selectedCellIndex + 1, cloneCell(_clipboardCell));
}
};
undoLastDelete = function () {
if (_lastDeletedCell) {
insertCell(_selectedCellIndex + 1, _lastDeletedCell);
}
return _lastDeletedCell = null;
};
runCell = function () {
_selectedCell.execute();
return false;
};
runCellAndInsertBelow = function () {
_selectedCell.execute(function () {
return insertNewCellBelow();
});
return false;
};
runCellAndSelectBelow = function () {
_selectedCell.execute(function () {
return selectNextCell();
});
return false;
};
checkIfNameIsInUse = function (name, go) {
return _.requestObjectExists('notebook', name, function (error, exists) {
return go(exists);
});
};
storeNotebook = function (localName, remoteName) {
return _.requestPutObject('notebook', localName, serialize(), function (error) {
if (error) {
return _.alert('Error saving notebook: ' + error.message);
} else {
_remoteName(localName);
_localName(localName);
if (remoteName !== localName) {
return _.requestDeleteObject('notebook', remoteName, function (error) {
if (error) {
_.alert('Error deleting remote notebook [' + remoteName + ']: ' + error.message);
}
return _.saved();
});
} else {
return _.saved();
}
}
});
};
saveNotebook = function () {
var localName, remoteName;
localName = Flow.Util.sanitizeName(_localName());
if (localName === '') {
return _.alert('Invalid notebook name.');
}
remoteName = _remoteName();
if (remoteName) {
storeNotebook(localName, remoteName);
} else {
checkIfNameIsInUse(localName, function (isNameInUse) {
if (isNameInUse) {
return _.confirm('A notebook with that name already exists.\nDo you want to replace it with the one you\'re saving?', {
acceptCaption: 'Replace',
declineCaption: 'Cancel'
}, function (accept) {
if (accept) {
return storeNotebook(localName, remoteName);
}
});
} else {
return storeNotebook(localName, remoteName);
}
});
}
};
promptForNotebook = function () {
return _.dialog(Flow.FileOpenDialog, function (result) {
var error, filename, _ref;
if (result) {
error = result.error, filename = result.filename;
if (error) {
return _.growl((_ref = error.message) != null ? _ref : error);
} else {
loadNotebook(filename);
return _.loaded();
}
}
});
};
uploadFile = function () {
return _.dialog(Flow.FileUploadDialog, function (result) {
var error, _ref;
if (result) {
error = result.error;
if (error) {
return _.growl((_ref = error.message) != null ? _ref : error);
} else {
_.growl('File uploaded successfully!');
return _.insertAndExecuteCell('cs', 'setupParse source_frames: [ ' + Flow.Prelude.stringify(result.result.destination_frame) + ']');
}
}
});
};
toggleInput = function () {
return _selectedCell.toggleInput();
};
toggleOutput = function () {
return _selectedCell.toggleOutput();
};
toggleAllInputs = function () {
var cell, wereHidden, _i, _len, _ref;
wereHidden = _areInputsHidden();
_areInputsHidden(!wereHidden);
if (wereHidden) {
_ref = _cells();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cell = _ref[_i];
cell.autoResize();
}
}
};
toggleAllOutputs = function () {
return _areOutputsHidden(!_areOutputsHidden());
};
toggleSidebar = function () {
return _isSidebarHidden(!_isSidebarHidden());
};
showBrowser = function () {
_isSidebarHidden(false);
return _.showBrowser();
};
showOutline = function () {
_isSidebarHidden(false);
return _.showOutline();
};
showClipboard = function () {
_isSidebarHidden(false);
return _.showClipboard();
};
selectNextCell = function () {
var cells;
cells = _cells();
if (_selectedCellIndex !== cells.length - 1) {
selectCell(cells[_selectedCellIndex + 1]);
}
return false;
};
selectPreviousCell = function () {
var cells;
if (_selectedCellIndex !== 0) {
cells = _cells();
selectCell(cells[_selectedCellIndex - 1]);
}
return false;
};
displayKeyboardShortcuts = function () {
return $('#keyboardHelpDialog').modal();
};
findBuildProperty = function (caption) {
var entry;
if (Flow.BuildProperties) {
if (entry = lodash.find(Flow.BuildProperties, function (entry) {
return entry.caption === caption;
})) {
return entry.value;
} else {
return void 0;
}
} else {
return void 0;
}
};
getBuildProperties = function () {
var projectVersion;
projectVersion = findBuildProperty('H2O Build project version');
return [
findBuildProperty('H2O Build git branch'),
projectVersion,
projectVersion ? lodash.last(projectVersion.split('.')) : void 0,
findBuildProperty('H2O Build git hash') || 'master'
];
};
displayDocumentation = function () {
var buildVersion, gitBranch, gitHash, projectVersion, _ref;
_ref = getBuildProperties(), gitBranch = _ref[0], projectVersion = _ref[1], buildVersion = _ref[2], gitHash = _ref[3];
if (buildVersion && buildVersion !== '99999') {
return window.open('http://h2o-release.s3.amazonaws.com/h2o/' + gitBranch + '/' + buildVersion + '/docs-website/h2o-docs/index.html', '_blank');
} else {
return window.open('https://github.com/h2oai/h2o-3/blob/' + gitHash + '/h2o-docs/src/product/flow/README.md', '_blank');
}
};
displayFAQ = function () {
var buildVersion, gitBranch, gitHash, projectVersion, _ref;
_ref = getBuildProperties(), gitBranch = _ref[0], projectVersion = _ref[1], buildVersion = _ref[2], gitHash = _ref[3];
if (buildVersion && buildVersion !== '99999') {
return window.open('http://h2o-release.s3.amazonaws.com/h2o/' + gitBranch + '/' + buildVersion + '/docs-website/h2o-docs/index.html', '_blank');
} else {
return window.open('https://github.com/h2oai/h2o-3/blob/' + gitHash + '/h2o-docs/src/product/howto/FAQ.md', '_blank');
}
};
executeCommand = function (command) {
return function () {
return _.insertAndExecuteCell('cs', command);
};
};
displayAbout = function () {
return $('#aboutDialog').modal();
};
shutdown = function () {
return _.requestShutdown(function (error, result) {
if (error) {
return _.growl('Shutdown failed: ' + error.message, 'danger');
} else {
return _.growl('Shutdown complete!', 'warning');
}
});
};
showHelp = function () {
_isSidebarHidden(false);
return _.showHelp();
};
createNotebook = function () {
return _.confirm('This action will replace your active notebook.\nAre you sure you want to continue?', {
acceptCaption: 'Create New Notebook',
declineCaption: 'Cancel'
}, function (accept) {
var currentTime;
if (accept) {
currentTime = new Date().getTime();
return deserialize('Untitled Flow', null, {
cells: [{
type: 'cs',
input: ''
}]
});
}
});
};
duplicateNotebook = function () {
return deserialize('Copy of ' + _localName(), null, serialize());
};
openNotebook = function (name, doc) {
return deserialize(name, null, doc);
};
loadNotebook = function (name) {
return _.requestObject('notebook', name, function (error, doc) {
var _ref;
if (error) {
return _.alert((_ref = error.message) != null ? _ref : error);
} else {
return deserialize(name, name, doc);
}
});
};
exportNotebook = function () {
var remoteName;
if (remoteName = _remoteName()) {
return window.open('/3/NodePersistentStorage.bin/notebook/' + remoteName, '_blank');
} else {
return _.alert('Please save this notebook before exporting.');
}
};
goToUrl = function (url) {
return function () {
return window.open(url, '_blank');
};
};
executeAllCells = function (fromBeginning, go) {
var cellCount, cellIndex, cells, executeNextCell;
_isRunningAll(true);
cells = _cells().slice(0);
cellCount = cells.length;
cellIndex = 0;
if (!fromBeginning) {
cells = cells.slice(_selectedCellIndex);
cellIndex = _selectedCellIndex;
}
executeNextCell = function () {
var cell;
if (_isRunningAll()) {
cell = cells.shift();
if (cell) {
cell.scrollIntoView(true);
cellIndex++;
_runningCaption('Running cell ' + cellIndex + ' of ' + cellCount);
_runningPercent('' + Math.floor(100 * cellIndex / cellCount) + '%');
_runningCellInput(cell.input());
return cell.execute(function (errors) {
if (errors) {
return go('failed', errors);
} else {
return executeNextCell();
}
});
} else {
return go('done');
}
} else {
return go('aborted');
}
};
return executeNextCell();
};
runAllCells = function (fromBeginning) {
if (fromBeginning == null) {
fromBeginning = true;
}
return executeAllCells(fromBeginning, function (status) {
_isRunningAll(false);
switch (status) {
case 'aborted':
return _.growl('Stopped running your flow.', 'warning');
case 'failed':
return _.growl('Failed running your flow.', 'danger');
default:
return _.growl('Finished running your flow!', 'success');
}
});
};
continueRunningAllCells = function () {
return runAllCells(false);
};
stopRunningAll = function () {
return _isRunningAll(false);
};
clearCell = function () {
_selectedCell.clear();
return _selectedCell.autoResize();
};
clearAllCells = function () {
var cell, _i, _len, _ref;
_ref = _cells();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
cell = _ref[_i];
cell.clear();
cell.autoResize();
}
};
notImplemented = function () {
};
pasteCellandReplace = notImplemented;
mergeCellAbove = notImplemented;
startTour = notImplemented;
createMenu = function (label, items) {
return {
label: label,
items: items
};
};
createMenuHeader = function (label) {
return {
label: label,
action: null
};
};
createShortcutHint = function (shortcut) {
return '' + lodash.map(shortcut, function (key) {
return '' + key + '';
}).join(' ') + '';
};
createMenuItem = function (label, action, shortcut) {
var kbds;
kbds = shortcut ? createShortcutHint(shortcut) : '';
return {
label: '' + lodash.escape(label) + kbds,
action: action
};
};
menuDivider = {
label: null,
action: null
};
_menus = Flow.Dataflow.signal(null);
menuCell = [
createMenuItem('Run Cell', runCell, [
'ctrl',
'enter'
]),
menuDivider,
createMenuItem('Cut Cell', cutCell, ['x']),
createMenuItem('Copy Cell', copyCell, ['c']),
createMenuItem('Paste Cell Above', pasteCellAbove, [
'shift',
'v'
]),
createMenuItem('Paste Cell Below', pasteCellBelow, ['v']),
createMenuItem('Delete Cell', deleteCell, [
'd',
'd'
]),
createMenuItem('Undo Delete Cell', undoLastDelete, ['z']),
menuDivider,
createMenuItem('Move Cell Up', moveCellUp, [
'ctrl',
'k'
]),
createMenuItem('Move Cell Down', moveCellDown, [
'ctrl',
'j'
]),
menuDivider,
createMenuItem('Insert Cell Above', insertNewCellAbove, ['a']),
createMenuItem('Insert Cell Below', insertNewCellBelow, ['b']),
menuDivider,
createMenuItem('Toggle Cell Input', toggleInput),
createMenuItem('Toggle Cell Output', toggleOutput, ['o']),
createMenuItem('Clear Cell Output', clearCell)
];
menuCellSW = [
menuDivider,
createMenuItem('Insert Scala Cell Above', insertNewScalaCellAbove),
createMenuItem('Insert Scala Cell Below', insertNewScalaCellBelow)
];
if (_.onSparklingWater) {
menuCell = __slice.call(menuCell).concat(__slice.call(menuCellSW));
}
initializeMenus = function (builder) {
var modelMenuItems;
modelMenuItems = lodash.map(builder, function (builder) {
return createMenuItem('' + builder.algo_full_name + '...', executeCommand('buildModel ' + Flow.Prelude.stringify(builder.algo)));
}).concat([
menuDivider,
createMenuItem('List All Models', executeCommand('getModels')),
createMenuItem('List Grid Search Results', executeCommand('getGrids')),
createMenuItem('Import Model...', executeCommand('importModel')),
createMenuItem('Export Model...', executeCommand('exportModel'))
]);
return [
createMenu('Flow', [
createMenuItem('New Flow', createNotebook),
createMenuItem('Open Flow...', promptForNotebook),
createMenuItem('Save Flow', saveNotebook, ['s']),
createMenuItem('Make a Copy...', duplicateNotebook),
menuDivider,
createMenuItem('Run All Cells', runAllCells),
createMenuItem('Run All Cells Below', continueRunningAllCells),
menuDivider,
createMenuItem('Toggle All Cell Inputs', toggleAllInputs),
createMenuItem('Toggle All Cell Outputs', toggleAllOutputs),
createMenuItem('Clear All Cell Outputs', clearAllCells),
menuDivider,
createMenuItem('Download this Flow...', exportNotebook)
]),
createMenu('Cell', menuCell),
createMenu('Data', [
createMenuItem('Import Files...', executeCommand('importFiles')),
createMenuItem('Upload File...', uploadFile),
createMenuItem('Split Frame...', executeCommand('splitFrame')),
menuDivider,
createMenuItem('List All Frames', executeCommand('getFrames')),
menuDivider,
createMenuItem('Impute...', executeCommand('imputeColumn'))
]),
createMenu('Model', modelMenuItems),
createMenu('Score', [
createMenuItem('Predict...', executeCommand('predict')),
menuDivider,
createMenuItem('List All Predictions', executeCommand('getPredictions'))
]),
createMenu('Admin', [
createMenuItem('Jobs', executeCommand('getJobs')),
createMenuItem('Cluster Status', executeCommand('getCloud')),
createMenuItem('Water Meter (CPU meter)', goToUrl('/perfbar.html')),
menuDivider,
createMenuHeader('Inspect Log'),
createMenuItem('View Log', executeCommand('getLogFile')),
createMenuItem('Download Logs', goToUrl('/Logs/download')),
menuDivider,
createMenuHeader('Advanced'),
createMenuItem('Create Synthetic Frame...', executeCommand('createFrame')),
createMenuItem('Stack Trace', executeCommand('getStackTrace')),
createMenuItem('Network Test', executeCommand('testNetwork')),
createMenuItem('Profiler', executeCommand('getProfile depth: 10')),
createMenuItem('Timeline', executeCommand('getTimeline')),
createMenuItem('Shut Down', shutdown)
]),
createMenu('Help', [
createMenuItem('Assist Me', executeCommand('assist')),
menuDivider,
createMenuItem('Contents', showHelp),
createMenuItem('Keyboard Shortcuts', displayKeyboardShortcuts, ['h']),
menuDivider,
createMenuItem('Documentation', displayDocumentation),
createMenuItem('FAQ', displayFAQ),
createMenuItem('H2O.ai', goToUrl('http://h2o.ai/')),
createMenuItem('H2O on Github', goToUrl('https://github.com/h2oai/h2o-3')),
createMenuItem('Report an issue', goToUrl('http://jira.h2o.ai')),
createMenuItem('Forum / Ask a question', goToUrl('https://groups.google.com/d/forum/h2ostream')),
menuDivider,
createMenuItem('About', displayAbout)
])
];
};
setupMenus = function () {
return _.requestModelBuilders(function (error, builders) {
return _menus(initializeMenus(error ? [] : builders));
});
};
createTool = function (icon, label, action, isDisabled) {
if (isDisabled == null) {
isDisabled = false;
}
return {
label: label,
action: action,
isDisabled: isDisabled,
icon: 'fa fa-' + icon
};
};
_toolbar = [
[
createTool('file-o', 'New', createNotebook),
createTool('folder-open-o', 'Open', promptForNotebook),
createTool('save', 'Save (s)', saveNotebook)
],
[
createTool('plus', 'Insert Cell Below (b)', insertNewCellBelow),
createTool('arrow-up', 'Move Cell Up (ctrl+k)', moveCellUp),
createTool('arrow-down', 'Move Cell Down (ctrl+j)', moveCellDown)
],
[
createTool('cut', 'Cut Cell (x)', cutCell),
createTool('copy', 'Copy Cell (c)', copyCell),
createTool('paste', 'Paste Cell Below (v)', pasteCellBelow),
createTool('eraser', 'Clear Cell', clearCell),
createTool('trash-o', 'Delete Cell (d d)', deleteCell)
],
[
createTool('step-forward', 'Run and Select Below', runCellAndSelectBelow),
createTool('play', 'Run (ctrl+enter)', runCell),
createTool('forward', 'Run All', runAllCells)
],
[createTool('question-circle', 'Assist Me', executeCommand('assist'))]
];
normalModeKeyboardShortcuts = [
[
'enter',
'edit mode',
switchToEditMode
],
[
'y',
'to code',
convertCellToCode
],
[
'm',
'to markdown',
convertCellToMarkdown
],
[
'r',
'to raw',
convertCellToRaw
],
[
'1',
'to heading 1',
convertCellToHeading(1)
],
[
'2',
'to heading 2',
convertCellToHeading(2)
],
[
'3',
'to heading 3',
convertCellToHeading(3)
],
[
'4',
'to heading 4',
convertCellToHeading(4)
],
[
'5',
'to heading 5',
convertCellToHeading(5)
],
[
'6',
'to heading 6',
convertCellToHeading(6)
],
[
'up',
'select previous cell',
selectPreviousCell
],
[
'down',
'select next cell',
selectNextCell
],
[
'k',
'select previous cell',
selectPreviousCell
],
[
'j',
'select next cell',
selectNextCell
],
[
'ctrl+k',
'move cell up',
moveCellUp
],
[
'ctrl+j',
'move cell down',
moveCellDown
],
[
'a',
'insert cell above',
insertNewCellAbove
],
[
'b',
'insert cell below',
insertNewCellBelow
],
[
'x',
'cut cell',
cutCell
],
[
'c',
'copy cell',
copyCell
],
[
'shift+v',
'paste cell above',
pasteCellAbove
],
[
'v',
'paste cell below',
pasteCellBelow
],
[
'z',
'undo last delete',
undoLastDelete
],
[
'd d',
'delete cell (press twice)',
deleteCell
],
[
'shift+m',
'merge cell below',
mergeCellBelow
],
[
's',
'save notebook',
saveNotebook
],
[
'o',
'toggle output',
toggleOutput
],
[
'h',
'keyboard shortcuts',
displayKeyboardShortcuts
]
];
if (_.onSparklingWater) {
normalModeKeyboardShortcuts.push([
'q',
'to Scala',
convertCellToScala
]);
}
editModeKeyboardShortcuts = [
[
'esc',
'command mode',
switchToCommandMode
],
[
'ctrl+m',
'command mode',
switchToCommandMode
],
[
'shift+enter',
'run cell, select below',
runCellAndSelectBelow
],
[
'ctrl+enter',
'run cell',
runCell
],
[
'alt+enter',
'run cell, insert below',
runCellAndInsertBelow
],
[
'ctrl+shift+-',
'split cell',
splitCell
],
[
'mod+s',
'save notebook',
saveNotebook
]
];
toKeyboardHelp = function (shortcut) {
var caption, keystrokes, seq;
seq = shortcut[0], caption = shortcut[1];
keystrokes = lodash.map(seq.split(/\+/g), function (key) {
return '' + key + '';
}).join(' ');
return {
keystrokes: keystrokes,
caption: caption
};
};
normalModeKeyboardShortcutsHelp = lodash.map(normalModeKeyboardShortcuts, toKeyboardHelp);
editModeKeyboardShortcutsHelp = lodash.map(editModeKeyboardShortcuts, toKeyboardHelp);
setupKeyboardHandling = function (mode) {
var caption, f, shortcut, _i, _j, _len, _len1, _ref, _ref1;
for (_i = 0, _len = normalModeKeyboardShortcuts.length; _i < _len; _i++) {
_ref = normalModeKeyboardShortcuts[_i], shortcut = _ref[0], caption = _ref[1], f = _ref[2];
Mousetrap.bind(shortcut, f);
}
for (_j = 0, _len1 = editModeKeyboardShortcuts.length; _j < _len1; _j++) {
_ref1 = editModeKeyboardShortcuts[_j], shortcut = _ref1[0], caption = _ref1[1], f = _ref1[2];
Mousetrap.bindGlobal(shortcut, f);
}
};
initialize = function () {
setupKeyboardHandling('normal');
setupMenus();
Flow.Dataflow.link(_.load, loadNotebook);
Flow.Dataflow.link(_.open, openNotebook);
Flow.Dataflow.link(_.selectCell, selectCell);
Flow.Dataflow.link(_.executeAllCells, executeAllCells);
Flow.Dataflow.link(_.insertAndExecuteCell, function (type, input) {
return lodash.defer(appendCellAndRun, type, input);
});
Flow.Dataflow.link(_.insertCell, function (type, input) {
return lodash.defer(insertCellBelow, type, input);
});
Flow.Dataflow.link(_.saved, function () {
return _.growl('Notebook saved.');
});
Flow.Dataflow.link(_.loaded, function () {
return _.growl('Notebook loaded.');
});
executeCommand('assist')();
_.setDirty();
if (_.onSparklingWater) {
return _initializeInterpreter();
}
};
Flow.Dataflow.link(_.ready, initialize);
return {
name: _localName,
isEditingName: _isEditingName,
editName: editName,
saveName: saveName,
menus: _menus,
sidebar: _sidebar,
status: _status,
toolbar: _toolbar,
cells: _cells,
areInputsHidden: _areInputsHidden,
areOutputsHidden: _areOutputsHidden,
isSidebarHidden: _isSidebarHidden,
isRunningAll: _isRunningAll,
runningCaption: _runningCaption,
runningPercent: _runningPercent,
runningCellInput: _runningCellInput,
stopRunningAll: stopRunningAll,
toggleSidebar: toggleSidebar,
shortcutsHelp: {
normalMode: normalModeKeyboardShortcutsHelp,
editMode: editModeKeyboardShortcutsHelp
},
about: _about,
dialogs: _dialogs,
templateOf: function (view) {
return view.template;
}
};
};
}.call(this));
(function () {
var isExpandable, preview, previewArray, previewObject;
isExpandable = function (type) {
switch (type) {
case 'null':
case 'undefined':
case 'Boolean':
case 'String':
case 'Number':
case 'Date':
case 'RegExp':
case 'Arguments':
case 'Function':
return false;
default:
return true;
}
};
previewArray = function (array) {
var element, ellipsis, previews;
ellipsis = array.length > 5 ? ', ...' : '';
previews = function () {
var _i, _len, _ref, _results;
_ref = lodash.head(array, 5);
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
element = _ref[_i];
_results.push(preview(element));
}
return _results;
}();
return '[' + previews.join(', ') + ellipsis + ']';
};
previewObject = function (object) {
var count, ellipsis, key, previews, value;
count = 0;
previews = [];
ellipsis = '';
for (key in object) {
value = object[key];
if (!(key !== '_flow_')) {
continue;
}
previews.push('' + key + ': ' + preview(value));
if (++count === 5) {
ellipsis = ', ...';
break;
}
}
return '{' + previews.join(', ') + ellipsis + '}';
};
preview = function (element, recurse) {
var type;
if (recurse == null) {
recurse = false;
}
type = Flow.Prelude.typeOf(element);
switch (type) {
case 'Boolean':
case 'String':
case 'Number':
case 'Date':
case 'RegExp':
return element;
case 'undefined':
case 'null':
case 'Function':
case 'Arguments':
return type;
case 'Array':
if (recurse) {
return previewArray(element);
} else {
return type;
}
break;
default:
if (recurse) {
return previewObject(element);
} else {
return type;
}
}
};
Flow.ObjectBrowserElement = function (key, object) {
var toggle, _canExpand, _expansions, _isExpanded, _type;
_expansions = Flow.Dataflow.signal(null);
_isExpanded = Flow.Dataflow.signal(false);
_type = Flow.Prelude.typeOf(object);
_canExpand = isExpandable(_type);
toggle = function () {
var expansions, value;
if (!_canExpand) {
return;
}
if (_expansions() === null) {
expansions = [];
for (key in object) {
value = object[key];
if (key !== '_flow_') {
expansions.push(Flow.ObjectBrowserElement(key, value));
}
}
_expansions(expansions);
}
return _isExpanded(!_isExpanded());
};
return {
key: key,
preview: preview(object, true),
toggle: toggle,
expansions: _expansions,
isExpanded: _isExpanded,
canExpand: _canExpand
};
};
Flow.ObjectBrowser = function (_, _go, key, object) {
lodash.defer(_go);
return {
object: Flow.ObjectBrowserElement(key, object),
template: 'flow-object'
};
};
}.call(this));
(function () {
Flow.Outline = function (_, _cells) {
return { cells: _cells };
};
}.call(this));
(function () {
Flow.Raw = function (_) {
var render;
render = function (input, output) {
output.data({
text: input,
template: 'flow-raw'
});
return output.end();
};
render.isCode = false;
return render;
};
}.call(this));
(function () {
Flow.Sidebar = function (_, cells) {
var switchToBrowser, switchToClipboard, switchToHelp, switchToOutline, _browser, _clipboard, _help, _isBrowserMode, _isClipboardMode, _isHelpMode, _isOutlineMode, _mode, _outline;
_mode = Flow.Dataflow.signal('help');
_outline = Flow.Outline(_, cells);
_isOutlineMode = Flow.Dataflow.lift(_mode, function (mode) {
return mode === 'outline';
});
switchToOutline = function () {
return _mode('outline');
};
_browser = Flow.Browser(_);
_isBrowserMode = Flow.Dataflow.lift(_mode, function (mode) {
return mode === 'browser';
});
switchToBrowser = function () {
return _mode('browser');
};
_clipboard = Flow.Clipboard(_);
_isClipboardMode = Flow.Dataflow.lift(_mode, function (mode) {
return mode === 'clipboard';
});
switchToClipboard = function () {
return _mode('clipboard');
};
_help = Flow.Help(_);
_isHelpMode = Flow.Dataflow.lift(_mode, function (mode) {
return mode === 'help';
});
switchToHelp = function () {
return _mode('help');
};
Flow.Dataflow.link(_.ready, function () {
Flow.Dataflow.link(_.showHelp, function () {
return switchToHelp();
});
Flow.Dataflow.link(_.showClipboard, function () {
return switchToClipboard();
});
Flow.Dataflow.link(_.showBrowser, function () {
return switchToBrowser();
});
return Flow.Dataflow.link(_.showOutline, function () {
return switchToOutline();
});
});
return {
outline: _outline,
isOutlineMode: _isOutlineMode,
switchToOutline: switchToOutline,
browser: _browser,
isBrowserMode: _isBrowserMode,
switchToBrowser: switchToBrowser,
clipboard: _clipboard,
isClipboardMode: _isClipboardMode,
switchToClipboard: switchToClipboard,
help: _help,
isHelpMode: _isHelpMode,
switchToHelp: switchToHelp
};
};
}.call(this));
(function () {
Flow.Status = function (_) {
var defaultMessage, onStatus, _connections, _isBusy, _message;
defaultMessage = 'Ready';
_message = Flow.Dataflow.signal(defaultMessage);
_connections = Flow.Dataflow.signal(0);
_isBusy = Flow.Dataflow.lift(_connections, function (connections) {
return connections > 0;
});
onStatus = function (category, type, data) {
var connections;
console.debug('Status:', category, type, data);
switch (category) {
case 'server':
switch (type) {
case 'request':
_connections(_connections() + 1);
return lodash.defer(_message, 'Requesting ' + data);
case 'response':
case 'error':
_connections(connections = _connections() - 1);
if (connections) {
return lodash.defer(_message, 'Waiting for ' + connections + ' responses...');
} else {
return lodash.defer(_message, defaultMessage);
}
}
}
};
Flow.Dataflow.link(_.ready, function () {
return Flow.Dataflow.link(_.status, onStatus);
});
return {
message: _message,
connections: _connections,
isBusy: _isBusy
};
};
}.call(this));
(function () {
Flow.Analytics = function (_) {
Flow.Dataflow.link(_.trackEvent, function (category, action, label, value) {
return lodash.defer(function () {
return window.ga('send', 'event', category, action, label, value);
});
});
return Flow.Dataflow.link(_.trackException, function (description) {
return lodash.defer(function () {
_.requestEcho('FLOW: ' + description, function () {
});
return window.ga('send', 'exception', {
exDescription: description,
exFatal: false,
appName: 'Flow',
appVersion: Flow.Version
});
});
});
};
}.call(this));
(function () {
Flow.ApplicationContext = function (_) {
_.ready = Flow.Dataflow.slots();
_.initialized = Flow.Dataflow.slots();
_.open = Flow.Dataflow.slot();
_.load = Flow.Dataflow.slot();
_.saved = Flow.Dataflow.slots();
_.loaded = Flow.Dataflow.slots();
_.setDirty = Flow.Dataflow.slots();
_.setPristine = Flow.Dataflow.slots();
_.status = Flow.Dataflow.slot();
_.trackEvent = Flow.Dataflow.slot();
_.trackException = Flow.Dataflow.slot();
_.selectCell = Flow.Dataflow.slot();
_.insertCell = Flow.Dataflow.slot();
_.insertAndExecuteCell = Flow.Dataflow.slot();
_.executeAllCells = Flow.Dataflow.slot();
_.showHelp = Flow.Dataflow.slot();
_.showOutline = Flow.Dataflow.slot();
_.showBrowser = Flow.Dataflow.slot();
_.showClipboard = Flow.Dataflow.slot();
_.saveClip = Flow.Dataflow.slot();
_.growl = Flow.Dataflow.slot();
_.confirm = Flow.Dataflow.slot();
_.alert = Flow.Dataflow.slot();
return _.dialog = Flow.Dataflow.slot();
};
}.call(this));
(function () {
Flow.Application = function (_, routines) {
var _notebook, _renderers, _sandbox;
Flow.ApplicationContext(_);
_sandbox = Flow.Sandbox(_, routines(_));
_renderers = Flow.Renderers(_, _sandbox);
Flow.Analytics(_);
Flow.Growl(_);
Flow.Autosave(_);
_notebook = Flow.Notebook(_, _renderers);
return {
context: _,
sandbox: _sandbox,
view: _notebook
};
};
}.call(this));
(function () {
var createBuffer, iterate, pipe, _applicate, _async, _find, _find$2, _find$3, _fork, _get, _isFuture, _join, _noop, __slice = [].slice;
createBuffer = function (array) {
var buffer, _array, _go;
_array = array || [];
_go = null;
buffer = function (element) {
if (element === void 0) {
return _array;
} else {
_array.push(element);
if (_go) {
_go(element);
}
return element;
}
};
buffer.subscribe = function (go) {
return _go = go;
};
buffer.buffer = _array;
buffer.isBuffer = true;
return buffer;
};
_noop = function (go) {
return go(null);
};
_applicate = function (go) {
return function (error, args) {
if (lodash.isFunction(go)) {
return go.apply(null, [error].concat(args));
}
};
};
_fork = function (f, args) {
var self;
if (!lodash.isFunction(f)) {
throw new Error('Not a function.');
}
self = function (go) {
var canGo;
canGo = lodash.isFunction(go);
if (self.settled) {
if (self.rejected) {
if (canGo) {
return go(self.error);
}
} else {
if (canGo) {
return go(null, self.result);
}
}
} else {
return _join(args, function (error, args) {
if (error) {
self.error = error;
self.fulfilled = false;
self.rejected = true;
if (canGo) {
return go(error);
}
} else {
return f.apply(null, args.concat(function (error, result) {
if (error) {
self.error = error;
self.fulfilled = false;
self.rejected = true;
if (canGo) {
go(error);
}
} else {
self.result = result;
self.fulfilled = true;
self.rejected = false;
if (canGo) {
go(null, result);
}
}
self.settled = true;
return self.pending = false;
}));
}
});
}
};
self.method = f;
self.args = args;
self.fulfilled = false;
self.rejected = false;
self.settled = false;
self.pending = true;
self.isFuture = true;
return self;
};
_isFuture = function (a) {
if (a != null ? a.isFuture : void 0) {
return true;
} else {
return false;
}
};
_join = function (args, go) {
var arg, i, _actual, _i, _len, _results, _settled, _tasks;
if (args.length === 0) {
return go(null, []);
}
_tasks = [];
_results = [];
for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) {
arg = args[i];
if (arg != null ? arg.isFuture : void 0) {
_tasks.push({
future: arg,
resultIndex: i
});
} else {
_results[i] = arg;
}
}
if (_tasks.length === 0) {
return go(null, _results);
}
_actual = 0;
_settled = false;
lodash.forEach(_tasks, function (task) {
return task.future.call(null, function (error, result) {
if (_settled) {
return;
}
if (error) {
_settled = true;
go(new Flow.Error('Error evaluating future[' + task.resultIndex + ']', error));
} else {
_results[task.resultIndex] = result;
_actual++;
if (_actual === _tasks.length) {
_settled = true;
go(null, _results);
}
}
});
});
};
pipe = function (tasks) {
var next, _tasks;
_tasks = tasks.slice(0);
next = function (args, go) {
var task;
task = _tasks.shift();
if (task) {
return task.apply(null, args.concat(function () {
var error, results;
error = arguments[0], results = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (error) {
return go(error);
} else {
return next(results, go);
}
}));
} else {
return go.apply(null, [null].concat(args));
}
};
return function () {
var args, go, _i;
args = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), go = arguments[_i++];
return next(args, go);
};
};
iterate = function (tasks) {
var next, _results, _tasks;
_tasks = tasks.slice(0);
_results = [];
next = function (go) {
var task;
task = _tasks.shift();
if (task) {
return task(function (error, result) {
if (error) {
return go(error);
} else {
_results.push(result);
}
return next(go);
});
} else {
return go(null, _results);
}
};
return function (go) {
return next(go);
};
};
_async = function () {
var args, f, later;
f = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
later = function () {
var args, error, go, result, _i;
args = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), go = arguments[_i++];
try {
result = f.apply(null, args);
return go(null, result);
} catch (_error) {
error = _error;
return go(error);
}
};
return _fork(later, args);
};
_find$3 = function (attr, prop, obj) {
var v, _i, _len;
if (_isFuture(obj)) {
return _async(_find$3, attr, prop, obj);
} else if (lodash.isArray(obj)) {
for (_i = 0, _len = obj.length; _i < _len; _i++) {
v = obj[_i];
if (v[attr] === prop) {
return v;
}
}
return;
}
};
_find$2 = function (attr, obj) {
if (_isFuture(obj)) {
return _async(_find$2, attr, obj);
} else if (lodash.isString(attr)) {
if (lodash.isArray(obj)) {
return _find$3('name', attr, obj);
} else {
return obj[attr];
}
}
};
_find = function () {
var a, args, b, c, ta, tb, tc;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
switch (args.length) {
case 3:
a = args[0], b = args[1], c = args[2];
ta = Flow.Prelude.typeOf(a);
tb = Flow.Prelude.typeOf(b);
tc = Flow.Prelude.typeOf(c);
if (ta === 'Array' && tb === 'String') {
return _find$3(b, c, a);
} else if (ta === 'String' && (tc = 'Array')) {
return _find$3(a, b, c);
}
break;
case 2:
a = args[0], b = args[1];
if (!a) {
return;
}
if (!b) {
return;
}
if (lodash.isString(b)) {
return _find$2(b, a);
} else if (lodash.isString(a)) {
return _find$2(a, b);
}
}
};
_get = function (attr, obj) {
if (_isFuture(obj)) {
return _async(_get, attr, obj);
} else if (lodash.isString(attr)) {
if (lodash.isArray(obj)) {
return _find$3('name', attr, obj);
} else {
return obj[attr];
}
}
};
Flow.Async = {
createBuffer: createBuffer,
noop: _noop,
applicate: _applicate,
isFuture: _isFuture,
fork: _fork,
join: _join,
pipe: pipe,
iterate: iterate,
async: _async,
find: _find,
get: _get
};
}.call(this));
(function () {
Flow.Autosave = function (_) {
var setDirty, setPristine, warnOnExit;
warnOnExit = function (e) {
var message;
message = 'Warning: you are about to exit Flow.';
if (e = e != null ? e : window.event) {
e.returnValue = message;
}
return message;
};
setDirty = function () {
return window.onbeforeunload = warnOnExit;
};
setPristine = function () {
return window.onbeforeunload = null;
};
return Flow.Dataflow.link(_.ready, function () {
Flow.Dataflow.link(_.setDirty, setDirty);
return Flow.Dataflow.link(_.setPristine, setPristine);
});
};
}.call(this));
(function () {
Flow.CoffeescriptKernel = function () {
var coalesceScopes, compileCoffeescript, compileJavascript, createGlobalScope, createLocalScope, createRootScope, deleteAstNode, executeJavascript, generateJavascript, identifyDeclarations, parseDeclarations, parseJavascript, removeHoistedDeclarations, rewriteJavascript, safetyWrapCoffeescript, traverseJavascript, traverseJavascriptScoped;
safetyWrapCoffeescript = function (guid) {
return function (cs, go) {
var block, lines;
lines = cs.replace(/[\n\r]/g, '\n').split('\n');
block = lodash.map(lines, function (line) {
return ' ' + line;
});
block.unshift('_h2o_results_[\'' + guid + '\'].result do ->');
return go(null, block.join('\n'));
};
};
compileCoffeescript = function (cs, go) {
var error;
try {
return go(null, CoffeeScript.compile(cs, { bare: true }));
} catch (_error) {
error = _error;
return go(new Flow.Error('Error compiling coffee-script', error));
}
};
parseJavascript = function (js, go) {
var error;
try {
return go(null, esprima.parse(js));
} catch (_error) {
error = _error;
return go(new Flow.Error('Error parsing javascript expression', error));
}
};
identifyDeclarations = function (node) {
var declaration;
if (!node) {
return null;
}
switch (node.type) {
case 'VariableDeclaration':
return function () {
var _i, _len, _ref, _results;
_ref = node.declarations;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
declaration = _ref[_i];
if (declaration.type === 'VariableDeclarator' && declaration.id.type === 'Identifier') {
_results.push({
name: declaration.id.name,
object: '_h2o_context_'
});
}
}
return _results;
}();
case 'FunctionDeclaration':
if (node.id.type === 'Identifier') {
return [{
name: node.id.name,
object: '_h2o_context_'
}];
}
break;
case 'ForStatement':
return identifyDeclarations(node.init);
case 'ForInStatement':
case 'ForOfStatement':
return identifyDeclarations(node.left);
}
return null;
};
parseDeclarations = function (block) {
var declaration, declarations, identifiers, node, _i, _j, _len, _len1, _ref;
identifiers = [];
_ref = block.body;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
node = _ref[_i];
if (declarations = identifyDeclarations(node)) {
for (_j = 0, _len1 = declarations.length; _j < _len1; _j++) {
declaration = declarations[_j];
identifiers.push(declaration);
}
}
}
return lodash.indexBy(identifiers, function (identifier) {
return identifier.name;
});
};
traverseJavascript = function (parent, key, node, f) {
var child, i;
if (lodash.isArray(node)) {
i = node.length;
while (i--) {
child = node[i];
if (lodash.isObject(child)) {
traverseJavascript(node, i, child, f);
f(node, i, child);
}
}
} else {
for (i in node) {
child = node[i];
if (lodash.isObject(child)) {
traverseJavascript(node, i, child, f);
f(node, i, child);
}
}
}
};
deleteAstNode = function (parent, i) {
if (_.isArray(parent)) {
return parent.splice(i, 1);
} else if (lodash.isObject(parent)) {
return delete parent[i];
}
};
createLocalScope = function (node) {
var localScope, param, _i, _len, _ref;
localScope = parseDeclarations(node.body);
_ref = node.params;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
param = _ref[_i];
if (param.type === 'Identifier') {
localScope[param.name] = {
name: param.name,
object: 'local'
};
}
}
return localScope;
};
coalesceScopes = function (scopes) {
var currentScope, i, identifier, name, scope, _i, _len;
currentScope = {};
for (i = _i = 0, _len = scopes.length; _i < _len; i = ++_i) {
scope = scopes[i];
if (i === 0) {
for (name in scope) {
identifier = scope[name];
currentScope[name] = identifier;
}
} else {
for (name in scope) {
identifier = scope[name];
currentScope[name] = null;
}
}
}
return currentScope;
};
traverseJavascriptScoped = function (scopes, parentScope, parent, key, node, f) {
var child, currentScope, isNewScope;
isNewScope = node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration';
if (isNewScope) {
scopes.push(createLocalScope(node));
currentScope = coalesceScopes(scopes);
} else {
currentScope = parentScope;
}
for (key in node) {
child = node[key];
if (lodash.isObject(child)) {
traverseJavascriptScoped(scopes, currentScope, node, key, child, f);
f(currentScope, node, key, child);
}
}
if (isNewScope) {
scopes.pop();
}
};
createRootScope = function (sandbox) {
return function (program, go) {
var error, name, rootScope;
try {
rootScope = parseDeclarations(program.body[0].expression['arguments'][0].callee.body);
for (name in sandbox.context) {
rootScope[name] = {
name: name,
object: '_h2o_context_'
};
}
return go(null, rootScope, program);
} catch (_error) {
error = _error;
return go(new Flow.Error('Error parsing root scope', error));
}
};
};
removeHoistedDeclarations = function (rootScope, program, go) {
var error;
try {
traverseJavascript(null, null, program, function (parent, key, node) {
var declarations;
if (node.type === 'VariableDeclaration') {
declarations = node.declarations.filter(function (declaration) {
return declaration.type === 'VariableDeclarator' && declaration.id.type === 'Identifier' && !rootScope[declaration.id.name];
});
if (declarations.length === 0) {
return deleteAstNode(parent, key);
} else {
return node.declarations = declarations;
}
}
});
return go(null, rootScope, program);
} catch (_error) {
error = _error;
return go(new Flow.Error('Error rewriting javascript', error));
}
};
createGlobalScope = function (rootScope, routines) {
var globalScope, identifier, name;
globalScope = {};
for (name in rootScope) {
identifier = rootScope[name];
globalScope[name] = identifier;
}
for (name in routines) {
globalScope[name] = {
name: name,
object: 'h2o'
};
}
return globalScope;
};
rewriteJavascript = function (sandbox) {
return function (rootScope, program, go) {
var error, globalScope;
globalScope = createGlobalScope(rootScope, sandbox.routines);
try {
traverseJavascriptScoped([globalScope], globalScope, null, null, program, function (globalScope, parent, key, node) {
var identifier;
if (node.type === 'Identifier') {
if (parent.type === 'VariableDeclarator' && key === 'id') {
return;
}
if (key === 'property') {
return;
}
if (!(identifier = globalScope[node.name])) {
return;
}
return parent[key] = {
type: 'MemberExpression',
computed: false,
object: {
type: 'Identifier',
name: identifier.object
},
property: {
type: 'Identifier',
name: identifier.name
}
};
}
});
return go(null, program);
} catch (_error) {
error = _error;
return go(new Flow.Error('Error rewriting javascript', error));
}
};
};
generateJavascript = function (program, go) {
var error;
try {
return go(null, escodegen.generate(program));
} catch (_error) {
error = _error;
return go(new Flow.Error('Error generating javascript', error));
}
};
compileJavascript = function (js, go) {
var closure, error;
try {
closure = new Function('h2o', '_h2o_context_', '_h2o_results_', 'print', js);
return go(null, closure);
} catch (_error) {
error = _error;
return go(new Flow.Error('Error compiling javascript', error));
}
};
executeJavascript = function (sandbox, print) {
return function (closure, go) {
var error;
try {
return go(null, closure(sandbox.routines, sandbox.context, sandbox.results, print));
} catch (_error) {
error = _error;
return go(new Flow.Error('Error executing javascript', error));
}
};
};
return {
safetyWrapCoffeescript: safetyWrapCoffeescript,
compileCoffeescript: compileCoffeescript,
parseJavascript: parseJavascript,
createRootScope: createRootScope,
removeHoistedDeclarations: removeHoistedDeclarations,
rewriteJavascript: rewriteJavascript,
generateJavascript: generateJavascript,
compileJavascript: compileJavascript,
executeJavascript: executeJavascript
};
}();
}.call(this));
(function () {
var combineRanges, computeRange, createAbstractVariable, createCompiledPrototype, createFactor, createNumericVariable, createRecordConstructor, createTable, createVariable, factor, includeZeroInRange, nextPrototypeName, permute, _prototypeCache, _prototypeId, __slice = [].slice;
_prototypeId = 0;
nextPrototypeName = function () {
return 'Map' + ++_prototypeId;
};
_prototypeCache = {};
createCompiledPrototype = function (attrs) {
var attr, cacheKey, i, inits, params, proto, prototypeName;
cacheKey = attrs.join('\0');
if (proto = _prototypeCache[cacheKey]) {
return proto;
}
params = function () {
var _i, _ref, _results;
_results = [];
for (i = _i = 0, _ref = attrs.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
_results.push('a' + i);
}
return _results;
}();
inits = function () {
var _i, _len, _results;
_results = [];
for (i = _i = 0, _len = attrs.length; _i < _len; i = ++_i) {
attr = attrs[i];
_results.push('this[' + JSON.stringify(attr) + ']=a' + i + ';');
}
return _results;
}();
prototypeName = nextPrototypeName();
return _prototypeCache[cacheKey] = new Function('function ' + prototypeName + '(' + params.join(',') + '){' + inits.join('') + '} return ' + prototypeName + ';')();
};
createRecordConstructor = function (variables) {
var variable;
return createCompiledPrototype(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = variables.length; _i < _len; _i++) {
variable = variables[_i];
_results.push(variable.label);
}
return _results;
}());
};
createTable = function (opts) {
var description, expand, fill, label, meta, rows, schema, variable, variables, _i, _len;
label = opts.label, description = opts.description, variables = opts.variables, rows = opts.rows, meta = opts.meta;
if (!description) {
description = 'No description available.';
}
schema = {};
for (_i = 0, _len = variables.length; _i < _len; _i++) {
variable = variables[_i];
schema[variable.label] = variable;
}
fill = function (i, go) {
_fill(i, function (error, result) {
var index, startIndex, value, _j, _len1;
if (error) {
return go(error);
} else {
startIndex = result.index, lodash.values = result.values;
for (index = _j = 0, _len1 = lodash.values.length; _j < _len1; index = ++_j) {
value = lodash.values[index];
rows[startIndex + index] = lodash.values[index];
}
return go(null);
}
});
};
expand = function () {
var type, types, _j, _len1, _results;
types = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
_results = [];
for (_j = 0, _len1 = types.length; _j < _len1; _j++) {
type = types[_j];
label = lodash.uniqueId('__flow_variable_');
_results.push(schema[label] = createNumericVariable(label));
}
return _results;
};
return {
label: label,
description: description,
schema: schema,
variables: variables,
rows: rows,
meta: meta,
fill: fill,
expand: expand,
_is_table_: true
};
};
includeZeroInRange = function (range) {
var hi, lo;
lo = range[0], hi = range[1];
if (lo > 0 && hi > 0) {
return [
0,
hi
];
} else if (lo < 0 && hi < 0) {
return [
lo,
0
];
} else {
return range;
}
};
combineRanges = function () {
var hi, lo, range, ranges, value, _i, _len;
ranges = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
lo = Number.POSITIVE_INFINITY;
hi = Number.NEGATIVE_INFINITY;
for (_i = 0, _len = ranges.length; _i < _len; _i++) {
range = ranges[_i];
if (lo > (value = range[0])) {
lo = value;
}
if (hi < (value = range[1])) {
hi = value;
}
}
return [
lo,
hi
];
};
computeRange = function (rows, attr) {
var hi, lo, row, value, _i, _len;
if (rows.length) {
lo = Number.POSITIVE_INFINITY;
hi = Number.NEGATIVE_INFINITY;
for (_i = 0, _len = rows.length; _i < _len; _i++) {
row = rows[_i];
value = row[attr];
if (value < lo) {
lo = value;
}
if (value > hi) {
hi = value;
}
}
return [
lo,
hi
];
} else {
return [
-1,
1
];
}
};
permute = function (array, indices) {
var i, index, permuted, _i, _len;
permuted = new Array(array.length);
for (i = _i = 0, _len = indices.length; _i < _len; i = ++_i) {
index = indices[i];
permuted[i] = array[index];
}
return permuted;
};
createAbstractVariable = function (_label, _type, _domain, _format, _read) {
return {
label: _label,
type: _type,
domain: _domain || [],
format: _format || lodash.identity,
read: _read
};
};
createNumericVariable = function (_label, _domain, _format, _read) {
var self;
self = createAbstractVariable(_label, Flow.TNumber, _domain || [
Number.POSITIVE_INFINITY,
Number.NEGATIVE_INFINITY
], _format, _read);
if (!self.read) {
self.read = function (datum) {
if (datum < self.domain[0]) {
self.domain[0] = datum;
}
if (datum > self.domain[1]) {
self.domain[1] = datum;
}
return datum;
};
}
return self;
};
createVariable = function (_label, _type, _domain, _format, _read) {
if (_type === Flow.TNumber) {
return createNumericVariable(_label, _domain, _format, _read);
} else {
return createAbstractVariable(_label, _type, _domain, _format, _read);
}
};
createFactor = function (_label, _domain, _format, _read) {
var level, self, _i, _id, _len, _levels, _ref;
self = createAbstractVariable(_label, Flow.TFactor, _domain || [], _format, _read);
_id = 0;
_levels = {};
if (self.domain.length) {
_ref = self.domain;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
level = _ref[_i];
_levels[level] = _id++;
}
}
if (!self.read) {
self.read = function (datum) {
var id;
level = datum === void 0 || datum === null ? 'null' : datum;
if (void 0 === (id = _levels[level])) {
_levels[level] = id = _id++;
self.domain.push(level);
}
return id;
};
}
return self;
};
factor = function (array) {
var data, domain, i, id, level, levels, _i, _id, _len;
_id = 0;
levels = {};
domain = [];
data = new Array(array.length);
for (i = _i = 0, _len = array.length; _i < _len; i = ++_i) {
level = array[i];
if (void 0 === (id = levels[level])) {
levels[level] = id = _id++;
domain.push(level);
}
data[i] = id;
}
return [
domain,
data
];
};
Flow.Data = {
Table: createTable,
Variable: createVariable,
Factor: createFactor,
computeColumnInterpretation: function (type) {
if (type === Flow.TNumber) {
return 'c';
} else if (type === Flow.TFactor) {
return 'd';
} else {
return 't';
}
},
Record: createRecordConstructor,
computeRange: computeRange,
combineRanges: combineRanges,
includeZeroInRange: includeZeroInRange,
factor: factor,
permute: permute
};
}.call(this));
(function () {
var __slice = [].slice;
Flow.Dataflow = function () {
var createObservable, createObservableArray, createSignal, createSignals, createSlot, createSlots, isObservable, _act, _apply, _isSignal, _lift, _link, _merge, _react, _unlink;
createSlot = function () {
var arrow, self;
arrow = null;
self = function () {
var args;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
if (arrow) {
return arrow.func.apply(null, args);
} else {
return void 0;
}
};
self.subscribe = function (func) {
console.assert(lodash.isFunction(func));
if (arrow) {
throw new Error('Cannot re-attach slot');
} else {
return arrow = {
func: func,
dispose: function () {
return arrow = null;
}
};
}
};
self.dispose = function () {
if (arrow) {
return arrow.dispose();
}
};
return self;
};
createSlots = function () {
var arrows, self;
arrows = [];
self = function () {
var args;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
return lodash.map(arrows, function (arrow) {
return arrow.func.apply(null, args);
});
};
self.subscribe = function (func) {
var arrow;
console.assert(lodash.isFunction(func));
arrows.push(arrow = {
func: func,
dispose: function () {
return Flow.Prelude.remove(arrows, arrow);
}
});
return arrow;
};
self.dispose = function () {
return lodash.forEach(Flow.Prelude.copy(arrows), function (arrow) {
return arrow.dispose();
});
};
return self;
};
if (typeof ko !== 'undefined' && ko !== null) {
createObservable = ko.observable;
createObservableArray = ko.observableArray;
isObservable = ko.isObservable;
} else {
createObservable = function (initialValue) {
var arrows, currentValue, notifySubscribers, self;
arrows = [];
currentValue = initialValue;
notifySubscribers = function (arrows, newValue) {
var arrow, _i, _len;
for (_i = 0, _len = arrows.length; _i < _len; _i++) {
arrow = arrows[_i];
arrow.func(newValue);
}
};
self = function (newValue) {
var unchanged;
if (arguments.length === 0) {
return currentValue;
} else {
unchanged = self.equalityComparer ? self.equalityComparer(currentValue, newValue) : currentValue === newValue;
if (!unchanged) {
currentValue = newValue;
return notifySubscribers(arrows, newValue);
}
}
};
self.subscribe = function (func) {
var arrow;
console.assert(lodash.isFunction(func));
arrows.push(arrow = {
func: func,
dispose: function () {
return Flow.Prelude.remove(arrows, arrow);
}
});
return arrow;
};
self.__observable__ = true;
return self;
};
createObservableArray = createObservable;
isObservable = function (obj) {
if (obj.__observable__) {
return true;
} else {
return false;
}
};
}
createSignal = function (value, equalityComparer) {
var observable;
if (arguments.length === 0) {
return createSignal(void 0, Flow.Prelude.never);
} else {
observable = createObservable(value);
if (lodash.isFunction(equalityComparer)) {
observable.equalityComparer = equalityComparer;
}
return observable;
}
};
_isSignal = isObservable;
createSignals = function (array) {
return createObservableArray(array || []);
};
_link = function (source, func) {
console.assert(lodash.isFunction(source, '[signal] is not a function'));
console.assert(lodash.isFunction(source.subscribe, '[signal] does not have a [dispose] method'));
console.assert(lodash.isFunction(func, '[func] is not a function'));
return source.subscribe(func);
};
_unlink = function (arrows) {
var arrow, _i, _len, _results;
if (lodash.isArray(arrows)) {
_results = [];
for (_i = 0, _len = arrows.length; _i < _len; _i++) {
arrow = arrows[_i];
console.assert(lodash.isFunction(arrow.dispose, '[arrow] does not have a [dispose] method'));
_results.push(arrow.dispose());
}
return _results;
} else {
console.assert(lodash.isFunction(arrows.dispose, '[arrow] does not have a [dispose] method'));
return arrows.dispose();
}
};
_apply = function (sources, func) {
return func.apply(null, lodash.map(sources, function (source) {
return source();
}));
};
_act = function () {
var func, sources, _i;
sources = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), func = arguments[_i++];
_apply(sources, func);
return lodash.map(sources, function (source) {
return _link(source, function () {
return _apply(sources, func);
});
});
};
_react = function () {
var func, sources, _i;
sources = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), func = arguments[_i++];
return lodash.map(sources, function (source) {
return _link(source, function () {
return _apply(sources, func);
});
});
};
_lift = function () {
var evaluate, func, sources, target, _i;
sources = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), func = arguments[_i++];
evaluate = function () {
return _apply(sources, func);
};
target = createSignal(evaluate());
lodash.map(sources, function (source) {
return _link(source, function () {
return target(evaluate());
});
});
return target;
};
_merge = function () {
var evaluate, func, sources, target, _i;
sources = 3 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 2) : (_i = 0, []), target = arguments[_i++], func = arguments[_i++];
evaluate = function () {
return _apply(sources, func);
};
target(evaluate());
return lodash.map(sources, function (source) {
return _link(source, function () {
return target(evaluate());
});
});
};
return {
slot: createSlot,
slots: createSlots,
signal: createSignal,
signals: createSignals,
isSignal: _isSignal,
link: _link,
unlink: _unlink,
act: _act,
react: _react,
lift: _lift,
merge: _merge
};
}();
}.call(this));
(function () {
var __slice = [].slice;
Flow.Dialogs = function (_) {
var showDialog, _dialog;
_dialog = Flow.Dataflow.signal(null);
showDialog = function (ctor, args, _go) {
var $dialog, dialog, go, responded;
responded = false;
go = function (response) {
if (!responded) {
responded = true;
$dialog.modal('hide');
if (_go) {
return _go(response);
}
}
};
_dialog(dialog = ctor.apply(null, [_].concat(args).concat(go)));
$dialog = $('#' + dialog.template);
$dialog.modal();
$dialog.on('hidden.bs.modal', function (e) {
if (!responded) {
responded = true;
_dialog(null);
if (_go) {
return _go(null);
}
}
});
};
Flow.Dataflow.link(_.dialog, function () {
var args, ctor, go, _i;
ctor = arguments[0], args = 3 <= arguments.length ? __slice.call(arguments, 1, _i = arguments.length - 1) : (_i = 1, []), go = arguments[_i++];
return showDialog(ctor, args, go);
});
Flow.Dataflow.link(_.confirm, function (message, opts, go) {
return showDialog(Flow.ConfirmDialog, [
message,
opts
], go);
});
Flow.Dataflow.link(_.alert, function (message, opts, go) {
return showDialog(Flow.AlertDialog, [
message,
opts
], go);
});
return {
dialog: _dialog,
template: function (dialog) {
return 'flow-' + dialog.template;
}
};
};
}.call(this));
(function () {
var FlowError, __hasProp = {}.hasOwnProperty, __extends = function (child, parent) {
for (var key in parent) {
if (__hasProp.call(parent, key))
child[key] = parent[key];
}
function ctor() {
this.constructor = child;
}
ctor.prototype = parent.prototype;
child.prototype = new ctor();
child.__super__ = parent.prototype;
return child;
};
FlowError = function (_super) {
__extends(FlowError, _super);
function FlowError(message, cause) {
var error, _ref;
this.message = message;
this.cause = cause;
this.name = 'FlowError';
if ((_ref = this.cause) != null ? _ref.stack : void 0) {
this.stack = this.cause.stack;
} else {
error = new Error();
if (error.stack) {
this.stack = error.stack;
} else {
this.stack = printStackTrace();
}
}
}
return FlowError;
}(Error);
Flow.Error = FlowError;
}.call(this));
(function () {
var Digits, formatDate, formatReal, formatTime, significantDigitsBeforeDecimal, __formatReal;
significantDigitsBeforeDecimal = function (value) {
return 1 + Math.floor(Math.log(Math.abs(value)) / Math.LN10);
};
Digits = function (digits, value) {
var magnitude, sd;
if (value === 0) {
return 0;
} else {
sd = significantDigitsBeforeDecimal(value);
if (sd >= digits) {
return value.toFixed(0);
} else {
magnitude = Math.pow(10, digits - sd);
return Math.round(value * magnitude) / magnitude;
}
}
};
if (typeof exports === 'undefined' || exports === null) {
formatTime = d3.time.format('%Y-%m-%d %H:%M:%S');
}
formatDate = function (time) {
if (time) {
return formatTime(new Date(time));
} else {
return '-';
}
};
__formatReal = {};
formatReal = function (precision) {
var cached, format;
format = (cached = __formatReal[precision]) ? cached : __formatReal[precision] = precision === -1 ? lodash.identity : d3.format('.' + precision + 'f');
return function (value) {
return format(value);
};
};
Flow.Format = {
Digits: Digits,
Real: formatReal,
Date: formatDate,
Time: formatTime
};
}.call(this));
(function () {
Flow.Growl = function (_) {
return Flow.Dataflow.link(_.growl, function (message, type) {
if (type) {
return $.bootstrapGrowl(message, { type: type });
} else {
return $.bootstrapGrowl(message);
}
});
};
}.call(this));
(function () {
var button, checkbox, content, control, dropdown, html, listbox, markdown, text, textarea, textbox, wrapArray, wrapValue;
wrapValue = function (value, init) {
if (value === void 0) {
return Flow.Dataflow.signal(init);
} else {
if (Flow.Dataflow.isSignal(value)) {
return value;
} else {
return Flow.Dataflow.signal(value);
}
}
};
wrapArray = function (elements) {
var element;
if (elements) {
if (Flow.Dataflow.isSignal(elements)) {
element = elements();
if (lodash.isArray(element)) {
return elements;
} else {
return Flow.Dataflow.signal([element]);
}
} else {
return Flow.Dataflow.signals(lodash.isArray(elements) ? elements : [elements]);
}
} else {
return Flow.Dataflow.signals([]);
}
};
control = function (type, opts) {
var guid;
if (!opts) {
opts = {};
}
guid = 'gui_' + lodash.uniqueId();
return {
type: type,
id: opts.id || guid,
label: Flow.Dataflow.signal(opts.label || ' '),
description: Flow.Dataflow.signal(opts.description || ' '),
visible: Flow.Dataflow.signal(opts.visible === false ? false : true),
disable: Flow.Dataflow.signal(opts.disable === true ? true : false),
template: 'flow-form-' + type,
templateOf: function (control) {
return control.template;
}
};
};
content = function (type, opts) {
var self;
self = control(type, opts);
self.value = wrapValue(opts.value, '');
return self;
};
text = function (opts) {
return content('text', opts);
};
html = function (opts) {
return content('html', opts);
};
markdown = function (opts) {
return content('markdown', opts);
};
checkbox = function (opts) {
var self;
self = control('checkbox', opts);
self.value = wrapValue(opts.value, opts.value ? true : false);
return self;
};
dropdown = function (opts) {
var self;
self = control('dropdown', opts);
self.options = opts.options || [];
self.value = wrapValue(opts.value);
self.caption = opts.caption || 'Choose...';
return self;
};
listbox = function (opts) {
var self;
self = control('listbox', opts);
self.options = opts.options || [];
self.values = wrapArray(opts.values);
return self;
};
textbox = function (opts) {
var self;
self = control('textbox', opts);
self.value = wrapValue(opts.value, '');
self.event = lodash.isString(opts.event) ? opts.event : null;
return self;
};
textarea = function (opts) {
var self;
self = control('textarea', opts);
self.value = wrapValue(opts.value, '');
self.event = lodash.isString(opts.event) ? opts.event : null;
self.rows = lodash.isNumber(opts.rows) ? opts.rows : 5;
return self;
};
button = function (opts) {
var self;
self = control('button', opts);
self.click = lodash.isFunction(opts.click) ? opts.click : lodash.noop;
return self;
};
Flow.Gui = {
text: text,
html: html,
markdown: markdown,
checkbox: checkbox,
dropdown: dropdown,
listbox: listbox,
textbox: textbox,
textarea: textarea,
button: button
};
}.call(this));
(function () {
if ((typeof window !== 'undefined' && window !== null ? window.diecut : void 0) == null) {
return;
}
Flow.HTML = {
template: diecut,
render: function (name, html) {
var el;
el = document.createElement(name);
if (html) {
if (lodash.isString(html)) {
el.innerHTML = html;
} else {
el.appendChild(html);
}
}
return el;
}
};
}.call(this));
(function () {
if ((typeof window !== 'undefined' && window !== null ? window.ko : void 0) == null) {
return;
}
ko.bindingHandlers.raw = {
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $element, arg;
arg = ko.unwrap(valueAccessor());
if (arg) {
$element = $(element);
$element.empty();
$element.append(arg);
}
}
};
ko.bindingHandlers.markdown = {
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var data, error, html;
data = ko.unwrap(valueAccessor());
try {
html = marked(data || '');
} catch (_error) {
error = _error;
html = error.message || 'Error rendering markdown.';
}
return $(element).html(html);
}
};
ko.bindingHandlers.stringify = {
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var data;
data = ko.unwrap(valueAccessor());
return $(element).text(JSON.stringify(data, null, 2));
}
};
ko.bindingHandlers.enterKey = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $element, action;
if (action = ko.unwrap(valueAccessor())) {
if (lodash.isFunction(action)) {
$element = $(element);
$element.keydown(function (e) {
if (e.which === 13) {
action(viewModel);
}
});
} else {
throw 'Enter key action is not a function';
}
}
}
};
ko.bindingHandlers.typeahead = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $element, action;
if (action = ko.unwrap(valueAccessor())) {
if (lodash.isFunction(action)) {
$element = $(element);
$element.typeahead(null, {
displayKey: 'value',
source: action
});
} else {
throw 'Typeahead action is not a function';
}
}
}
};
ko.bindingHandlers.cursorPosition = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var arg;
if (arg = ko.unwrap(valueAccessor())) {
arg.getCursorPosition = function () {
return $(element).textrange('get', 'position');
};
}
}
};
ko.bindingHandlers.autoResize = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $el, arg, resize;
if (arg = ko.unwrap(valueAccessor())) {
arg.autoResize = resize = function () {
return lodash.defer(function () {
return $el.css('height', 'auto').height(element.scrollHeight);
});
};
$el = $(element).on('input', resize);
resize();
}
}
};
ko.bindingHandlers.scrollIntoView = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $el, $viewport, arg;
if (arg = ko.unwrap(valueAccessor())) {
$el = $(element);
$viewport = $el.closest('.flow-box-notebook');
arg.scrollIntoView = function (immediate) {
var height, position, top;
if (immediate == null) {
immediate = false;
}
position = $viewport.scrollTop();
top = $el.position().top + position;
height = $viewport.height();
if (top - 20 < position || top + 20 > position + height) {
if (immediate) {
return $viewport.scrollTop(top);
} else {
return $viewport.animate({ scrollTop: top }, 'fast');
}
}
};
}
}
};
ko.bindingHandlers.collapse = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $caretEl, $el, $nextEl, caretDown, caretEl, caretRight, isCollapsed, toggle;
caretDown = 'fa-caret-down';
caretRight = 'fa-caret-right';
isCollapsed = ko.unwrap(valueAccessor());
caretEl = document.createElement('i');
caretEl.className = 'fa';
caretEl.style.marginRight = '3px';
element.insertBefore(caretEl, element.firstChild);
$el = $(element);
$nextEl = $el.next();
if (!$nextEl.length) {
throw new Error('No collapsible sibling found');
}
$caretEl = $(caretEl);
toggle = function () {
if (isCollapsed) {
$caretEl.removeClass(caretDown).addClass(caretRight);
$nextEl.hide();
} else {
$caretEl.removeClass(caretRight).addClass(caretDown);
$nextEl.show();
}
return isCollapsed = !isCollapsed;
};
$el.css('cursor', 'pointer');
$el.attr('title', 'Click to expand/collapse');
$el.on('click', toggle);
toggle();
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
return $el.off('click');
});
}
};
ko.bindingHandlers.dom = {
update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $element, arg;
arg = ko.unwrap(valueAccessor());
if (arg) {
$element = $(element);
$element.empty();
$element.append(arg);
}
}
};
ko.bindingHandlers.dump = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var object;
return object = ko.unwrap(valueAccessor());
}
};
ko.bindingHandlers.element = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
return valueAccessor()(element);
}
};
ko.bindingHandlers.file = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var $file, file;
file = valueAccessor();
if (file) {
$file = $(element);
$file.change(function () {
return file(this.files[0]);
});
}
}
};
ko.bindingHandlers.codemirror = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
var editor, internalTextArea, options;
options = ko.unwrap(valueAccessor());
editor = CodeMirror.fromTextArea(element, options);
editor.on('change', function (cm) {
return allBindings().value(cm.getValue());
});
element.editor = editor;
if (allBindings().value()) {
editor.setValue(allBindings().value());
}
internalTextArea = $(editor.getWrapperElement()).find('div textarea');
internalTextArea.attr('rows', '1');
internalTextArea.attr('spellcheck', 'false');
internalTextArea.removeAttr('wrap');
return editor.refresh();
},
update: function (element, valueAccessor) {
if (element.editor) {
return element.editor.refresh();
}
}
};
}.call(this));
(function () {
var keyOf, list, purge, purgeAll, read, write, _ls;
if (!(typeof window !== 'undefined' && window !== null ? window.localStorage : void 0)) {
return;
}
_ls = window.localStorage;
keyOf = function (type, id) {
return '' + type + ':' + id;
};
list = function (type) {
var i, id, key, objs, t, _i, _ref, _ref1;
objs = [];
for (i = _i = 0, _ref = _ls.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
key = _ls.key(i);
_ref1 = key.split(':'), t = _ref1[0], id = _ref1[1];
if (type === t) {
objs.push([
type,
id,
JSON.parse(_ls.getItem(key))
]);
}
}
return objs;
};
read = function (type, id) {
var raw;
if (raw = _ls.getobj(keyOf(type, id))) {
return JSON.parse(raw);
} else {
return null;
}
};
write = function (type, id, obj) {
return _ls.setItem(keyOf(type, id), JSON.stringify(obj));
};
purge = function (type, id) {
if (id) {
return _ls.removeItem(keyOf(type, id));
} else {
return purgeAll(type);
}
};
purgeAll = function (type) {
var allKeys, i, key, _i, _len;
allKeys = function () {
var _i, _ref, _results;
_results = [];
for (i = _i = 0, _ref = _ls.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
_results.push(_ls.key(i));
}
return _results;
}();
for (_i = 0, _len = allKeys.length; _i < _len; _i++) {
key = allKeys[_i];
if (type === lodash.head(key.split(':'))) {
_ls.removeItem(key);
}
}
};
Flow.LocalStorage = {
list: list,
read: read,
write: write,
purge: purge
};
}.call(this));
(function () {
if ((typeof window !== 'undefined' && window !== null ? window.marked : void 0) == null) {
return;
}
marked.setOptions({
smartypants: true,
highlight: function (code, lang) {
if (window.hljs) {
return window.hljs.highlightAuto(code, [lang]).value;
} else {
return code;
}
}
});
}.call(this));
(function () {
Flow.Prelude = function () {
var _always, _copy, _deepClone, _isDefined, _isFalsy, _isTruthy, _negative, _never, _remove, _repeat, _typeOf, _words;
_isDefined = function (value) {
return !lodash.isUndefined(value);
};
_isTruthy = function (value) {
if (value) {
return true;
} else {
return false;
}
};
_isFalsy = function (value) {
if (value) {
return false;
} else {
return true;
}
};
_negative = function (value) {
return !value;
};
_always = function () {
return true;
};
_never = function () {
return false;
};
_copy = function (array) {
return array.slice(0);
};
_remove = function (array, element) {
var index;
if (-1 < (index = lodash.indexOf(array, element))) {
return lodash.head(array.splice(index, 1));
} else {
return void 0;
}
};
_words = function (text) {
return text.split(/\s+/);
};
_repeat = function (count, value) {
var array, i, _i;
array = [];
for (i = _i = 0; 0 <= count ? _i < count : _i > count; i = 0 <= count ? ++_i : --_i) {
array.push(value);
}
return array;
};
_typeOf = function (a) {
var type;
type = Object.prototype.toString.call(a);
if (a === null) {
return Flow.TNull;
} else if (a === void 0) {
return Flow.TUndefined;
} else if (a === true || a === false || type === '[object Boolean]') {
return Flow.TBoolean;
} else {
switch (type) {
case '[object String]':
return Flow.TString;
case '[object Number]':
return Flow.TNumber;
case '[object Function]':
return Flow.TFunction;
case '[object Object]':
return Flow.TObject;
case '[object Array]':
return Flow.TArray;
case '[object Arguments]':
return Flow.TArguments;
case '[object Date]':
return Flow.TDate;
case '[object RegExp]':
return Flow.TRegExp;
case '[object Error]':
return Flow.TError;
default:
return type;
}
}
};
_deepClone = function (obj) {
return JSON.parse(JSON.stringify(obj));
};
return {
isDefined: _isDefined,
isTruthy: _isTruthy,
isFalsy: _isFalsy,
negative: _negative,
always: _always,
never: _never,
copy: _copy,
remove: _remove,
words: _words,
repeat: _repeat,
typeOf: _typeOf,
deepClone: _deepClone,
stringify: JSON.stringify
};
}();
}.call(this));
(function () {
Flow.Sandbox = function (_, routines) {
return {
routines: routines,
context: {},
results: {}
};
};
}.call(this));
(function () {
Flow.TUndefined = 'undefined';
Flow.TNull = 'null';
Flow.TBoolean = 'Boolean';
Flow.TString = 'String';
Flow.TNumber = 'Number';
Flow.TFunction = 'Function';
Flow.TObject = 'Object';
Flow.TArray = 'Array';
Flow.TArguments = 'Arguments';
Flow.TDate = 'Date';
Flow.TRegExp = 'RegExp';
Flow.TError = 'Error';
Flow.TFactor = 'Factor';
}.call(this));
(function () {
var EOL, describeCount, format1d0, formatBytes, formatClockTime, formatElapsedTime, formatMilliseconds, fromNow, highlight, multilineTextToHTML, padTime, sanitizeName, splitTime;
describeCount = function (count, singular, plural) {
if (!plural) {
plural = singular + 's';
}
switch (count) {
case 0:
return 'No ' + plural;
case 1:
return '1 ' + singular;
default:
return '' + count + ' ' + plural;
}
};
fromNow = function (date) {
return moment(date).fromNow();
};
formatBytes = function (bytes) {
var i, sizes;
sizes = [
'Bytes',
'KB',
'MB',
'GB',
'TB'
];
if (bytes === 0) {
return '0 Byte';
}
i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
return Math.round(bytes / Math.pow(1024, i), 2) + sizes[i];
};
padTime = function (n) {
return '' + (n < 10 ? '0' : '') + n;
};
splitTime = function (s) {
var hrs, mins, ms, secs;
ms = s % 1000;
s = (s - ms) / 1000;
secs = s % 60;
s = (s - secs) / 60;
mins = s % 60;
hrs = (s - mins) / 60;
return [
hrs,
mins,
secs,
ms
];
};
formatMilliseconds = function (s) {
var hrs, mins, ms, secs, _ref;
_ref = splitTime(s), hrs = _ref[0], mins = _ref[1], secs = _ref[2], ms = _ref[3];
return '' + padTime(hrs) + ':' + padTime(mins) + ':' + padTime(secs) + '.' + ms;
};
format1d0 = function (n) {
return Math.round(n * 10) / 10;
};
formatElapsedTime = function (s) {
var hrs, mins, ms, secs, _ref;
_ref = splitTime(s), hrs = _ref[0], mins = _ref[1], secs = _ref[2], ms = _ref[3];
if (hrs !== 0) {
return '' + format1d0((hrs * 60 + mins) / 60) + 'h';
} else if (mins !== 0) {
return '' + format1d0((mins * 60 + secs) / 60) + 'm';
} else if (secs !== 0) {
return '' + format1d0((secs * 1000 + ms) / 1000) + 's';
} else {
return '' + ms + 'ms';
}
};
formatClockTime = function (date) {
return moment(date).format('h:mm:ss a');
};
EOL = '\n';
multilineTextToHTML = function (text) {
return lodash.map(text.split(EOL), function (str) {
return lodash.escape(str);
}).join('
');
};
sanitizeName = function (name) {
return name.replace(/[^a-z0-9_ \(\)-]/gi, '-').trim();
};
highlight = function (code, lang) {
if (window.hljs) {
return window.hljs.highlightAuto(code, [lang]).value;
} else {
return code;
}
};
Flow.Util = {
describeCount: describeCount,
fromNow: fromNow,
formatBytes: formatBytes,
formatMilliseconds: formatMilliseconds,
formatElapsedTime: formatElapsedTime,
formatClockTime: formatClockTime,
multilineTextToHTML: multilineTextToHTML,
uuid: (typeof window !== 'undefined' && window !== null ? window.uuid : void 0) ? window.uuid : null,
sanitizeName: sanitizeName,
highlight: highlight
};
}.call(this));
(function () {
H2O.ApplicationContext = function (_) {
_.requestFileGlob = Flow.Dataflow.slot();
_.requestCreateFrame = Flow.Dataflow.slot();
_.requestSplitFrame = Flow.Dataflow.slot();
_.requestImportFile = Flow.Dataflow.slot();
_.requestImportFiles = Flow.Dataflow.slot();
_.requestParseFiles = Flow.Dataflow.slot();
_.requestInspect = Flow.Dataflow.slot();
_.requestParseSetup = Flow.Dataflow.slot();
_.requestParseSetupPreview = Flow.Dataflow.slot();
_.requestFrames = Flow.Dataflow.slot();
_.requestFrame = Flow.Dataflow.slot();
_.requestFrameSlice = Flow.Dataflow.slot();
_.requestFrameSummary = Flow.Dataflow.slot();
_.requestFrameDataE = Flow.Dataflow.slot();
_.requestFrameSummarySlice = Flow.Dataflow.slot();
_.requestFrameSummarySliceE = Flow.Dataflow.slot();
_.requestFrameSummaryWithoutData = Flow.Dataflow.slot();
_.requestDeleteFrame = Flow.Dataflow.slot();
_.requestExportFrame = Flow.Dataflow.slot();
_.requestColumnSummary = Flow.Dataflow.slot();
_.requestModelBuilder = Flow.Dataflow.slot();
_.requestModelBuilders = Flow.Dataflow.slot();
_.requestModelBuild = Flow.Dataflow.slot();
_.requestModelInputValidation = Flow.Dataflow.slot();
_.requestPredict = Flow.Dataflow.slot();
_.requestPrediction = Flow.Dataflow.slot();
_.requestPredictions = Flow.Dataflow.slot();
_.requestGrids = Flow.Dataflow.slot();
_.requestModels = Flow.Dataflow.slot();
_.requestGrid = Flow.Dataflow.slot();
_.requestModel = Flow.Dataflow.slot();
_.requestPojoPreview = Flow.Dataflow.slot();
_.requestDeleteModel = Flow.Dataflow.slot();
_.requestImportModel = Flow.Dataflow.slot();
_.requestExportModel = Flow.Dataflow.slot();
_.requestJobs = Flow.Dataflow.slot();
_.requestJob = Flow.Dataflow.slot();
_.requestCancelJob = Flow.Dataflow.slot();
_.requestObjects = Flow.Dataflow.slot();
_.requestObject = Flow.Dataflow.slot();
_.requestObjectExists = Flow.Dataflow.slot();
_.requestDeleteObject = Flow.Dataflow.slot();
_.requestPutObject = Flow.Dataflow.slot();
_.requestUploadObject = Flow.Dataflow.slot();
_.requestUploadFile = Flow.Dataflow.slot();
_.requestCloud = Flow.Dataflow.slot();
_.requestTimeline = Flow.Dataflow.slot();
_.requestProfile = Flow.Dataflow.slot();
_.requestStackTrace = Flow.Dataflow.slot();
_.requestRemoveAll = Flow.Dataflow.slot();
_.requestEcho = Flow.Dataflow.slot();
_.requestLogFile = Flow.Dataflow.slot();
_.requestNetworkTest = Flow.Dataflow.slot();
_.requestAbout = Flow.Dataflow.slot();
_.requestShutdown = Flow.Dataflow.slot();
_.requestEndpoints = Flow.Dataflow.slot();
_.requestEndpoint = Flow.Dataflow.slot();
_.requestSchemas = Flow.Dataflow.slot();
_.requestSchema = Flow.Dataflow.slot();
_.requestPacks = Flow.Dataflow.slot();
_.requestPack = Flow.Dataflow.slot();
_.requestFlow = Flow.Dataflow.slot();
_.requestHelpIndex = Flow.Dataflow.slot();
_.requestHelpContent = Flow.Dataflow.slot();
_.requestExec = Flow.Dataflow.slot();
_.ls = Flow.Dataflow.slot();
_.inspect = Flow.Dataflow.slot();
_.plot = Flow.Dataflow.slot();
_.grid = Flow.Dataflow.slot();
_.enumerate = Flow.Dataflow.slot();
_.scalaIntpId = Flow.Dataflow.signal(-1);
_.requestRDDs = Flow.Dataflow.slot();
_.requestDataFrames = Flow.Dataflow.slot();
_.requestScalaIntp = Flow.Dataflow.slot();
_.requestScalaCode = Flow.Dataflow.slot();
_.requestAsH2OFrameFromRDD = Flow.Dataflow.slot();
_.requestAsH2OFrameFromDF = Flow.Dataflow.slot();
return _.requestAsDataFrame = Flow.Dataflow.slot();
};
}.call(this));
(function () {
H2O.Application = function (_) {
H2O.ApplicationContext(_);
return H2O.Proxy(_);
};
}.call(this));
(function () {
H2O.Proxy = function (_) {
var cacheModelBuilders, composePath, doDelete, doGet, doPost, doPut, doUpload, download, encodeArrayForPost, encodeObject, encodeObjectForPost, getGridModelBuilderEndpoint, getLines, getModelBuilderEndpoint, getModelBuilders, http, mapWithKey, optsToString, requestAbout, requestAsDataFrame, requestAsH2OFrameFromDF, requestAsH2OFrameFromRDD, requestCancelJob, requestCloud, requestColumnSummary, requestCreateFrame, requestDataFrames, requestDeleteFrame, requestDeleteModel, requestDeleteObject, requestEcho, requestEndpoint, requestEndpoints, requestExec, requestExportFrame, requestExportModel, requestFileGlob, requestFlow, requestFrame, requestFrameSlice, requestFrameSummary, requestFrameSummarySlice, requestFrameSummaryWithoutData, requestFrames, requestGrid, requestGrids, requestHelpContent, requestHelpIndex, requestImportFile, requestImportFiles, requestImportModel, requestInspect, requestIsStorageConfigured, requestJob, requestJobs, requestLogFile, requestModel, requestModelBuild, requestModelBuilder, requestModelBuilders, requestModelBuildersVisibility, requestModelInputValidation, requestModels, requestNetworkTest, requestObject, requestObjectExists, requestObjects, requestPack, requestPacks, requestParseFiles, requestParseSetup, requestParseSetupPreview, requestPojoPreview, requestPredict, requestPrediction, requestPredictions, requestProfile, requestPutObject, requestRDDs, requestRemoveAll, requestScalaCode, requestScalaIntp, requestSchema, requestSchemas, requestShutdown, requestSplitFrame, requestStackTrace, requestTimeline, requestUploadFile, requestUploadObject, requestWithOpts, trackPath, unwrap, __gridModelBuilderEndpoints, __modelBuilderEndpoints, __modelBuilders, _storageConfiguration;
download = function (type, url, go) {
return $.ajax({
dataType: type,
url: url,
success: function (data, status, xhr) {
return go(null, data);
},
error: function (xhr, status, error) {
return go(new Flow.Error(error));
}
});
};
optsToString = function (opts) {
var str;
if (opts != null) {
str = ' with opts ' + JSON.stringify(opts);
if (str.length > 50) {
return '' + str.substr(0, 50) + '...';
} else {
return str;
}
} else {
return '';
}
};
http = function (method, path, opts, go) {
var req;
_.status('server', 'request', path);
trackPath(path);
req = function () {
switch (method) {
case 'GET':
return $.getJSON(path);
case 'POST':
return $.post(path, opts);
case 'PUT':
return $.ajax({
url: path,
type: method,
data: opts
});
case 'DELETE':
return $.ajax({
url: path,
type: method
});
case 'UPLOAD':
return $.ajax({
url: path,
type: 'POST',
data: opts,
cache: false,
contentType: false,
processData: false
});
}
}();
req.done(function (data, status, xhr) {
var error;
_.status('server', 'response', path);
try {
return go(null, data);
} catch (_error) {
error = _error;
return go(new Flow.Error('Error processing ' + method + ' ' + path, error));
}
});
return req.fail(function (xhr, status, error) {
var cause, meta, response, serverError;
_.status('server', 'error', path);
response = xhr.responseJSON;
cause = (meta = response != null ? response.__meta : void 0) && (meta.schema_type === 'H2OError' || meta.schema_type === 'H2OModelBuilderError') ? (serverError = new Flow.Error(response.exception_msg), serverError.stack = '' + response.dev_msg + ' (' + response.exception_type + ')' + '\n ' + response.stacktrace.join('\n '), serverError) : (error != null ? error.message : void 0) ? new Flow.Error(error.message) : status === 'error' && xhr.status === 0 ? new Flow.Error('Could not connect to H2O. Your H2O cloud is currently unresponsive.') : new Flow.Error('HTTP connection failure: status=' + status + ', code=' + xhr.status + ', error=' + (error || '?'));
return go(new Flow.Error('Error calling ' + method + ' ' + path + optsToString(opts), cause));
});
};
doGet = function (path, go) {
return http('GET', path, null, go);
};
doPost = function (path, opts, go) {
return http('POST', path, opts, go);
};
doPut = function (path, opts, go) {
return http('PUT', path, opts, go);
};
doUpload = function (path, formData, go) {
return http('UPLOAD', path, formData, go);
};
doDelete = function (path, go) {
return http('DELETE', path, null, go);
};
trackPath = function (path) {
var base, e, name, other, root, version, _ref, _ref1;
try {
_ref = path.split('/'), root = _ref[0], version = _ref[1], name = _ref[2];
_ref1 = name.split('?'), base = _ref1[0], other = _ref1[1];
if (base !== 'Typeahead' && base !== 'Jobs') {
_.trackEvent('api', base, version);
}
} catch (_error) {
e = _error;
}
};
mapWithKey = function (obj, f) {
var key, result, value;
result = [];
for (key in obj) {
value = obj[key];
result.push(f(value, key));
}
return result;
};
composePath = function (path, opts) {
var params;
if (opts) {
params = mapWithKey(opts, function (v, k) {
return '' + k + '=' + v;
});
return path + '?' + params.join('&');
} else {
return path;
}
};
requestWithOpts = function (path, opts, go) {
return doGet(composePath(path, opts), go);
};
encodeArrayForPost = function (array) {
if (array) {
if (array.length === 0) {
return null;
} else {
return '[' + lodash.map(array, function (element) {
if (lodash.isNumber(element)) {
return element;
} else {
return '"' + element + '"';
}
}).join(',') + ']';
}
} else {
return null;
}
};
encodeObject = function (source) {
var k, target, v;
target = {};
for (k in source) {
v = source[k];
target[k] = encodeURIComponent(v);
}
return target;
};
encodeObjectForPost = function (source) {
var k, target, v;
target = {};
for (k in source) {
v = source[k];
target[k] = lodash.isArray(v) ? encodeArrayForPost(v) : v;
}
return target;
};
unwrap = function (go, transform) {
return function (error, result) {
if (error) {
return go(error);
} else {
return go(null, transform(result));
}
};
};
requestExec = function (ast, go) {
return doPost('/99/Rapids', { ast: ast }, function (error, result) {
if (error) {
return go(error);
} else {
if (result.error) {
return go(new Flow.Error(result.error));
} else {
return go(null, result);
}
}
});
};
requestInspect = function (key, go) {
var opts;
opts = { key: encodeURIComponent(key) };
return requestWithOpts('/3/Inspect', opts, go);
};
requestCreateFrame = function (opts, go) {
return doPost('/3/CreateFrame', opts, go);
};
requestSplitFrame = function (frameKey, splitRatios, splitKeys, go) {
var opts;
opts = {
dataset: frameKey,
ratios: encodeArrayForPost(splitRatios),
dest_keys: encodeArrayForPost(splitKeys)
};
return doPost('/3/SplitFrame', opts, go);
};
requestFrames = function (go) {
return doGet('/3/Frames', function (error, result) {
if (error) {
return go(error);
} else {
return go(null, result.frames);
}
});
};
requestFrame = function (key, go) {
return doGet('/3/Frames/' + encodeURIComponent(key), unwrap(go, function (result) {
return lodash.head(result.frames);
}));
};
requestFrameSlice = function (key, searchTerm, offset, count, go) {
return doGet('/3/Frames/' + encodeURIComponent(key) + '?column_offset=' + offset + '&column_count=' + count, unwrap(go, function (result) {
return lodash.head(result.frames);
}));
};
requestFrameSummary = function (key, go) {
return doGet('/3/Frames/' + encodeURIComponent(key) + '/summary', unwrap(go, function (result) {
return lodash.head(result.frames);
}));
};
requestFrameSummarySlice = function (key, searchTerm, offset, count, go) {
return doGet('/3/Frames/' + encodeURIComponent(key) + '/summary?column_offset=' + offset + '&column_count=' + count + '&_exclude_fields=frames/columns/data,frames/columns/domain,frames/columns/histogram_bins,frames/columns/percentiles', unwrap(go, function (result) {
return lodash.head(result.frames);
}));
};
requestFrameSummaryWithoutData = function (key, go) {
return doGet('/3/Frames/' + encodeURIComponent(key) + '/summary?_exclude_fields=frames/chunk_summary,frames/distribution_summary,frames/columns/data,frames/columns/domain,frames/columns/histogram_bins,frames/columns/percentiles', function (error, result) {
if (error) {
return go(error);
} else {
return go(null, lodash.head(result.frames));
}
});
};
requestDeleteFrame = function (key, go) {
return doDelete('/3/Frames/' + encodeURIComponent(key), go);
};
requestExportFrame = function (key, path, overwrite, go) {
var params;
params = {
path: path,
force: overwrite ? 'true' : 'false'
};
return doPost('/3/Frames/' + encodeURIComponent(key) + '/export', params, go);
};
requestColumnSummary = function (frameKey, column, go) {
return doGet('/3/Frames/' + encodeURIComponent(frameKey) + '/columns/' + encodeURIComponent(column) + '/summary', unwrap(go, function (result) {
return lodash.head(result.frames);
}));
};
requestJobs = function (go) {
return doGet('/3/Jobs', function (error, result) {
if (error) {
return go(new Flow.Error('Error fetching jobs', error));
} else {
return go(null, result.jobs);
}
});
};
requestJob = function (key, go) {
return doGet('/3/Jobs/' + encodeURIComponent(key), function (error, result) {
if (error) {
return go(new Flow.Error('Error fetching job \'' + key + '\'', error));
} else {
return go(null, lodash.head(result.jobs));
}
});
};
requestCancelJob = function (key, go) {
return doPost('/3/Jobs/' + encodeURIComponent(key) + '/cancel', {}, function (error, result) {
if (error) {
return go(new Flow.Error('Error canceling job \'' + key + '\'', error));
} else {
return go(null);
}
});
};
requestFileGlob = function (path, limit, go) {
var opts;
opts = {
src: encodeURIComponent(path),
limit: limit
};
return requestWithOpts('/3/Typeahead/files', opts, go);
};
requestImportFiles = function (paths, go) {
var tasks;
tasks = lodash.map(paths, function (path) {
return function (go) {
return requestImportFile(path, go);
};
});
return Flow.Async.iterate(tasks)(go);
};
requestImportFile = function (path, go) {
var opts;
opts = { path: encodeURIComponent(path) };
return requestWithOpts('/3/ImportFiles', opts, go);
};
requestParseSetup = function (sourceKeys, go) {
var opts;
opts = { source_frames: encodeArrayForPost(sourceKeys) };
return doPost('/3/ParseSetup', opts, go);
};
requestParseSetupPreview = function (sourceKeys, parseType, separator, useSingleQuotes, checkHeader, columnTypes, go) {
var opts;
opts = {
source_frames: encodeArrayForPost(sourceKeys),
parse_type: parseType,
separator: separator,
single_quotes: useSingleQuotes,
check_header: checkHeader,
column_types: encodeArrayForPost(columnTypes)
};
return doPost('/3/ParseSetup', opts, go);
};
requestParseFiles = function (sourceKeys, destinationKey, parseType, separator, columnCount, useSingleQuotes, columnNames, columnTypes, deleteOnDone, checkHeader, chunkSize, go) {
var opts;
opts = {
destination_frame: destinationKey,
source_frames: encodeArrayForPost(sourceKeys),
parse_type: parseType,
separator: separator,
number_columns: columnCount,
single_quotes: useSingleQuotes,
column_names: encodeArrayForPost(columnNames),
column_types: encodeArrayForPost(columnTypes),
check_header: checkHeader,
delete_on_done: deleteOnDone,
chunk_size: chunkSize
};
return doPost('/3/Parse', opts, go);
};
requestGrids = function (go, opts) {
return doGet('/99/Grids', function (error, result) {
if (error) {
return go(error, result);
} else {
return go(error, result.grids);
}
});
};
requestModels = function (go, opts) {
return requestWithOpts('/3/Models', opts, function (error, result) {
if (error) {
return go(error, result);
} else {
return go(error, result.models);
}
});
};
requestGrid = function (key, opts, go) {
var params;
params = void 0;
if (opts) {
params = {};
if (opts.sort_by) {
params.sort_by = encodeURIComponent(opts.sort_by);
}
if (opts.decreasing === true || opts.decreasing === false) {
params.decreasing = opts.decreasing;
}
}
return doGet(composePath('/99/Grids/' + encodeURIComponent(key), params), go);
};
requestModel = function (key, go) {
return doGet('/3/Models/' + encodeURIComponent(key), function (error, result) {
if (error) {
return go(error, result);
} else {
return go(error, lodash.head(result.models));
}
});
};
requestPojoPreview = function (key, go) {
return download('text', '/3/Models.java/' + encodeURIComponent(key) + '/preview', go);
};
requestDeleteModel = function (key, go) {
return doDelete('/3/Models/' + encodeURIComponent(key), go);
};
requestImportModel = function (path, overwrite, go) {
var opts;
opts = {
dir: path,
force: overwrite
};
return doPost('/99/Models.bin/not_in_use', opts, go);
};
requestExportModel = function (key, path, overwrite, go) {
return doGet('/99/Models.bin/' + encodeURIComponent(key) + '?dir=' + encodeURIComponent(path) + '&force=' + overwrite, go);
};
requestModelBuildersVisibility = function (go) {
return doGet('/3/Configuration/ModelBuilders/visibility', unwrap(go, function (result) {
return result.value;
}));
};
__modelBuilders = null;
__modelBuilderEndpoints = null;
__gridModelBuilderEndpoints = null;
cacheModelBuilders = function (modelBuilders) {
var gridModelBuilderEndpoints, modelBuilder, modelBuilderEndpoints, _i, _len;
modelBuilderEndpoints = {};
gridModelBuilderEndpoints = {};
for (_i = 0, _len = modelBuilders.length; _i < _len; _i++) {
modelBuilder = modelBuilders[_i];
modelBuilderEndpoints[modelBuilder.algo] = '/' + modelBuilder.__meta.schema_version + '/ModelBuilders/' + modelBuilder.algo;
gridModelBuilderEndpoints[modelBuilder.algo] = '/99/Grid/' + modelBuilder.algo;
}
__modelBuilderEndpoints = modelBuilderEndpoints;
__gridModelBuilderEndpoints = gridModelBuilderEndpoints;
return __modelBuilders = modelBuilders;
};
getModelBuilders = function () {
return __modelBuilders;
};
getModelBuilderEndpoint = function (algo) {
return __modelBuilderEndpoints[algo];
};
getGridModelBuilderEndpoint = function (algo) {
return __gridModelBuilderEndpoints[algo];
};
requestModelBuilders = function (go) {
var modelBuilders, visibility;
if (modelBuilders = getModelBuilders()) {
return go(null, modelBuilders);
} else {
visibility = 'Stable';
return doGet('/3/ModelBuilders', unwrap(go, function (result) {
var algo, availableBuilders, builder, builders;
builders = function () {
var _ref, _results;
_ref = result.model_builders;
_results = [];
for (algo in _ref) {
builder = _ref[algo];
_results.push(builder);
}
return _results;
}();
availableBuilders = function () {
var _i, _j, _len, _len1, _results, _results1;
switch (visibility) {
case 'Stable':
_results = [];
for (_i = 0, _len = builders.length; _i < _len; _i++) {
builder = builders[_i];
if (builder.visibility === visibility) {
_results.push(builder);
}
}
return _results;
break;
case 'Beta':
_results1 = [];
for (_j = 0, _len1 = builders.length; _j < _len1; _j++) {
builder = builders[_j];
if (builder.visibility === visibility || builder.visibility === 'Stable') {
_results1.push(builder);
}
}
return _results1;
break;
default:
return builders;
}
}();
return cacheModelBuilders(availableBuilders);
}));
}
};
requestModelBuilder = function (algo, go) {
return doGet(getModelBuilderEndpoint(algo), go);
};
requestModelInputValidation = function (algo, parameters, go) {
return doPost('' + getModelBuilderEndpoint(algo) + '/parameters', encodeObjectForPost(parameters), go);
};
requestModelBuild = function (algo, parameters, go) {
_.trackEvent('model', algo);
if (parameters.hyper_parameters) {
parameters.hyper_parameters = Flow.Prelude.stringify(parameters.hyper_parameters);
if (parameters.search_criteria) {
parameters.search_criteria = Flow.Prelude.stringify(parameters.search_criteria);
}
return doPost(getGridModelBuilderEndpoint(algo), encodeObjectForPost(parameters), go);
} else {
return doPost(getModelBuilderEndpoint(algo), encodeObjectForPost(parameters), go);
}
};
requestPredict = function (destinationKey, modelKey, frameKey, options, go) {
var opt, opts;
opts = {};
if (destinationKey) {
opts.predictions_frame = destinationKey;
}
if (void 0 !== (opt = options.reconstruction_error)) {
opts.reconstruction_error = opt;
}
if (void 0 !== (opt = options.deep_features_hidden_layer)) {
opts.deep_features_hidden_layer = opt;
}
if (void 0 !== (opt = options.leaf_node_assignment)) {
opts.leaf_node_assignment = opt;
}
if (void 0 !== (opt = options.exemplar_index)) {
opts.exemplar_index = opt;
}
return doPost('/3/Predictions/models/' + encodeURIComponent(modelKey) + '/frames/' + encodeURIComponent(frameKey), opts, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, result);
}
});
};
requestPrediction = function (modelKey, frameKey, go) {
return doGet('/3/ModelMetrics/models/' + encodeURIComponent(modelKey) + '/frames/' + encodeURIComponent(frameKey), function (error, result) {
if (error) {
return go(error);
} else {
return go(null, result);
}
});
};
requestPredictions = function (modelKey, frameKey, _go) {
var go;
go = function (error, result) {
var prediction, predictions;
if (error) {
return _go(error);
} else {
predictions = function () {
var _i, _len, _ref, _results;
_ref = result.model_metrics;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
prediction = _ref[_i];
if (modelKey && prediction.model.name !== modelKey) {
_results.push(null);
} else if (frameKey && prediction.frame.name !== frameKey) {
_results.push(null);
} else {
_results.push(prediction);
}
}
return _results;
}();
return _go(null, function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = predictions.length; _i < _len; _i++) {
prediction = predictions[_i];
if (prediction) {
_results.push(prediction);
}
}
return _results;
}());
}
};
if (modelKey && frameKey) {
return doGet('/3/ModelMetrics/models/' + encodeURIComponent(modelKey) + '/frames/' + encodeURIComponent(frameKey), go);
} else if (modelKey) {
return doGet('/3/ModelMetrics/models/' + encodeURIComponent(modelKey), go);
} else if (frameKey) {
return doGet('/3/ModelMetrics/frames/' + encodeURIComponent(frameKey), go);
} else {
return doGet('/3/ModelMetrics', go);
}
};
_storageConfiguration = null;
requestIsStorageConfigured = function (go) {
if (_storageConfiguration) {
return go(null, _storageConfiguration.isConfigured);
} else {
return doGet('/3/NodePersistentStorage/configured', function (error, result) {
_storageConfiguration = { isConfigured: error ? false : result.configured };
return go(null, _storageConfiguration.isConfigured);
});
}
};
requestObjects = function (type, go) {
return doGet('/3/NodePersistentStorage/' + encodeURIComponent(type), unwrap(go, function (result) {
return result.entries;
}));
};
requestObjectExists = function (type, name, go) {
return doGet('/3/NodePersistentStorage/categories/' + encodeURIComponent(type) + '/names/' + encodeURIComponent(name) + '/exists', function (error, result) {
return go(null, error ? false : result.exists);
});
};
requestObject = function (type, name, go) {
return doGet('/3/NodePersistentStorage/' + encodeURIComponent(type) + '/' + encodeURIComponent(name), unwrap(go, function (result) {
return JSON.parse(result.value);
}));
};
requestDeleteObject = function (type, name, go) {
return doDelete('/3/NodePersistentStorage/' + encodeURIComponent(type) + '/' + encodeURIComponent(name), go);
};
requestPutObject = function (type, name, value, go) {
var uri;
uri = '/3/NodePersistentStorage/' + encodeURIComponent(type);
if (name) {
uri += '/' + encodeURIComponent(name);
}
return doPost(uri, { value: JSON.stringify(value, null, 2) }, unwrap(go, function (result) {
return result.name;
}));
};
requestUploadObject = function (type, name, formData, go) {
var uri;
uri = '/3/NodePersistentStorage.bin/' + encodeURIComponent(type);
if (name) {
uri += '/' + encodeURIComponent(name);
}
return doUpload(uri, formData, unwrap(go, function (result) {
return result.name;
}));
};
requestUploadFile = function (key, formData, go) {
return doUpload('/3/PostFile?destination_frame=' + encodeURIComponent(key), formData, go);
};
requestCloud = function (go) {
return doGet('/3/Cloud', go);
};
requestTimeline = function (go) {
return doGet('/3/Timeline', go);
};
requestProfile = function (depth, go) {
return doGet('/3/Profiler?depth=' + depth, go);
};
requestStackTrace = function (go) {
return doGet('/3/JStack', go);
};
requestRemoveAll = function (go) {
return doDelete('/3/DKV', go);
};
requestEcho = function (message, go) {
return doPost('/3/LogAndEcho', { message: message }, go);
};
requestLogFile = function (nodeIndex, fileType, go) {
return doGet('/3/Logs/nodes/' + nodeIndex + '/files/' + fileType, go);
};
requestNetworkTest = function (go) {
return doGet('/3/NetworkTest', go);
};
requestAbout = function (go) {
return doGet('/3/About', go);
};
requestShutdown = function (go) {
return doPost('/3/Shutdown', {}, go);
};
requestEndpoints = function (go) {
return doGet('/3/Metadata/endpoints', go);
};
requestEndpoint = function (index, go) {
return doGet('/3/Metadata/endpoints/' + index, go);
};
requestSchemas = function (go) {
return doGet('/3/Metadata/schemas', go);
};
requestSchema = function (name, go) {
return doGet('/3/Metadata/schemas/' + encodeURIComponent(name), go);
};
getLines = function (data) {
return lodash.filter(data.split('\n'), function (line) {
if (line.trim()) {
return true;
} else {
return false;
}
});
};
requestPacks = function (go) {
return download('text', '/flow/packs/index.list', unwrap(go, getLines));
};
requestPack = function (packName, go) {
return download('text', '/flow/packs/' + encodeURIComponent(packName) + '/index.list', unwrap(go, getLines));
};
requestFlow = function (packName, flowName, go) {
return download('json', '/flow/packs/' + encodeURIComponent(packName) + '/' + encodeURIComponent(flowName), go);
};
requestHelpIndex = function (go) {
return download('json', '/flow/help/catalog.json', go);
};
requestHelpContent = function (name, go) {
return download('text', '/flow/help/' + name + '.html', go);
};
requestRDDs = function (go) {
return doGet('/3/RDDs', go);
};
requestDataFrames = function (go) {
return doGet('/3/dataframes', go);
};
requestScalaIntp = function (go) {
return doPost('/3/scalaint', {}, go);
};
requestScalaCode = function (session_id, code, go) {
return doPost('/3/scalaint/' + session_id, { code: code }, go);
};
requestAsH2OFrameFromRDD = function (rdd_id, name, go) {
if (name === void 0) {
return doPost('/3/RDDs/' + rdd_id + '/h2oframe', {}, go);
} else {
return doPost('/3/RDDs/' + rdd_id + '/h2oframe', { h2oframe_id: name }, go);
}
};
requestAsH2OFrameFromDF = function (df_id, name, go) {
if (name === void 0) {
return doPost('/3/dataframes/' + df_id + '/h2oframe', {}, go);
} else {
return doPost('/3/dataframes/' + df_id + '/h2oframe', { h2oframe_id: name }, go);
}
};
requestAsDataFrame = function (hf_id, name, go) {
if (name === void 0) {
return doPost('/3/h2oframes/' + hf_id + '/dataframe', {}, go);
} else {
return doPost('/3/h2oframes/' + hf_id + '/dataframe', { dataframe_id: name }, go);
}
};
Flow.Dataflow.link(_.requestInspect, requestInspect);
Flow.Dataflow.link(_.requestCreateFrame, requestCreateFrame);
Flow.Dataflow.link(_.requestSplitFrame, requestSplitFrame);
Flow.Dataflow.link(_.requestFrames, requestFrames);
Flow.Dataflow.link(_.requestFrame, requestFrame);
Flow.Dataflow.link(_.requestFrameSlice, requestFrameSlice);
Flow.Dataflow.link(_.requestFrameSummary, requestFrameSummary);
Flow.Dataflow.link(_.requestFrameSummaryWithoutData, requestFrameSummaryWithoutData);
Flow.Dataflow.link(_.requestFrameSummarySlice, requestFrameSummarySlice);
Flow.Dataflow.link(_.requestDeleteFrame, requestDeleteFrame);
Flow.Dataflow.link(_.requestExportFrame, requestExportFrame);
Flow.Dataflow.link(_.requestColumnSummary, requestColumnSummary);
Flow.Dataflow.link(_.requestJobs, requestJobs);
Flow.Dataflow.link(_.requestJob, requestJob);
Flow.Dataflow.link(_.requestCancelJob, requestCancelJob);
Flow.Dataflow.link(_.requestFileGlob, requestFileGlob);
Flow.Dataflow.link(_.requestImportFiles, requestImportFiles);
Flow.Dataflow.link(_.requestImportFile, requestImportFile);
Flow.Dataflow.link(_.requestParseSetup, requestParseSetup);
Flow.Dataflow.link(_.requestParseSetupPreview, requestParseSetupPreview);
Flow.Dataflow.link(_.requestParseFiles, requestParseFiles);
Flow.Dataflow.link(_.requestGrids, requestGrids);
Flow.Dataflow.link(_.requestModels, requestModels);
Flow.Dataflow.link(_.requestGrid, requestGrid);
Flow.Dataflow.link(_.requestModel, requestModel);
Flow.Dataflow.link(_.requestPojoPreview, requestPojoPreview);
Flow.Dataflow.link(_.requestDeleteModel, requestDeleteModel);
Flow.Dataflow.link(_.requestImportModel, requestImportModel);
Flow.Dataflow.link(_.requestExportModel, requestExportModel);
Flow.Dataflow.link(_.requestModelBuilder, requestModelBuilder);
Flow.Dataflow.link(_.requestModelBuilders, requestModelBuilders);
Flow.Dataflow.link(_.requestModelBuild, requestModelBuild);
Flow.Dataflow.link(_.requestModelInputValidation, requestModelInputValidation);
Flow.Dataflow.link(_.requestPredict, requestPredict);
Flow.Dataflow.link(_.requestPrediction, requestPrediction);
Flow.Dataflow.link(_.requestPredictions, requestPredictions);
Flow.Dataflow.link(_.requestObjects, requestObjects);
Flow.Dataflow.link(_.requestObject, requestObject);
Flow.Dataflow.link(_.requestObjectExists, requestObjectExists);
Flow.Dataflow.link(_.requestDeleteObject, requestDeleteObject);
Flow.Dataflow.link(_.requestPutObject, requestPutObject);
Flow.Dataflow.link(_.requestUploadObject, requestUploadObject);
Flow.Dataflow.link(_.requestUploadFile, requestUploadFile);
Flow.Dataflow.link(_.requestCloud, requestCloud);
Flow.Dataflow.link(_.requestTimeline, requestTimeline);
Flow.Dataflow.link(_.requestProfile, requestProfile);
Flow.Dataflow.link(_.requestStackTrace, requestStackTrace);
Flow.Dataflow.link(_.requestRemoveAll, requestRemoveAll);
Flow.Dataflow.link(_.requestEcho, requestEcho);
Flow.Dataflow.link(_.requestLogFile, requestLogFile);
Flow.Dataflow.link(_.requestNetworkTest, requestNetworkTest);
Flow.Dataflow.link(_.requestAbout, requestAbout);
Flow.Dataflow.link(_.requestShutdown, requestShutdown);
Flow.Dataflow.link(_.requestEndpoints, requestEndpoints);
Flow.Dataflow.link(_.requestEndpoint, requestEndpoint);
Flow.Dataflow.link(_.requestSchemas, requestSchemas);
Flow.Dataflow.link(_.requestSchema, requestSchema);
Flow.Dataflow.link(_.requestPacks, requestPacks);
Flow.Dataflow.link(_.requestPack, requestPack);
Flow.Dataflow.link(_.requestFlow, requestFlow);
Flow.Dataflow.link(_.requestHelpIndex, requestHelpIndex);
Flow.Dataflow.link(_.requestHelpContent, requestHelpContent);
Flow.Dataflow.link(_.requestExec, requestExec);
Flow.Dataflow.link(_.requestRDDs, requestRDDs);
Flow.Dataflow.link(_.requestDataFrames, requestDataFrames);
Flow.Dataflow.link(_.requestScalaIntp, requestScalaIntp);
Flow.Dataflow.link(_.requestScalaCode, requestScalaCode);
Flow.Dataflow.link(_.requestAsH2OFrameFromDF, requestAsH2OFrameFromDF);
Flow.Dataflow.link(_.requestAsH2OFrameFromRDD, requestAsH2OFrameFromRDD);
return Flow.Dataflow.link(_.requestAsDataFrame, requestAsDataFrame);
};
}.call(this));
(function () {
var combineTables, computeFalsePositiveRate, computeTruePositiveRate, concatArrays, convertColumnToVector, convertTableToFrame, createArrays, createDataframe, createFactor, createList, createTempKey, createVector, format4f, format6fi, formatConfusionMatrix, formulateGetPredictionsOrigin, getTwoDimData, lightning, parseAndFormatArray, parseAndFormatObjectArray, parseNaNs, parseNulls, parseNumbers, repeatValues, _assistance, __slice = [].slice;
lightning = (typeof window !== 'undefined' && window !== null ? window.plot : void 0) != null ? window.plot : {};
if (lightning.settings) {
lightning.settings.axisLabelFont = '11px "Source Code Pro", monospace';
lightning.settings.axisTitleFont = 'bold 11px "Source Code Pro", monospace';
}
createTempKey = function () {
return 'flow_' + Flow.Util.uuid().replace(/\-/g, '');
};
createVector = lightning.createVector;
createFactor = lightning.createFactor;
createList = lightning.createList;
createDataframe = lightning.createFrame;
_assistance = {
importFiles: {
description: 'Import file(s) into H2O',
icon: 'files-o'
},
getFrames: {
description: 'Get a list of frames in H2O',
icon: 'table'
},
splitFrame: {
description: 'Split a frame into two or more frames',
icon: 'scissors'
},
getModels: {
description: 'Get a list of models in H2O',
icon: 'cubes'
},
getGrids: {
description: 'Get a list of grid search results in H2O',
icon: 'th'
},
getPredictions: {
description: 'Get a list of predictions in H2O',
icon: 'bolt'
},
getJobs: {
description: 'Get a list of jobs running in H2O',
icon: 'tasks'
},
buildModel: {
description: 'Build a model',
icon: 'cube'
},
importModel: {
description: 'Import a saved model',
icon: 'cube'
},
predict: {
description: 'Make a prediction',
icon: 'bolt'
}
};
parseNumbers = function (source) {
var i, target, value, _i, _len;
target = new Array(source.length);
for (i = _i = 0, _len = source.length; _i < _len; i = ++_i) {
value = source[i];
target[i] = value === 'NaN' ? void 0 : value === 'Infinity' ? Number.POSITIVE_INFINITY : value === '-Infinity' ? Number.NEGATIVE_INFINITY : value;
}
return target;
};
convertColumnToVector = function (column, data) {
switch (column.type) {
case 'byte':
case 'short':
case 'int':
case 'integer':
case 'long':
return createVector(column.name, Flow.TNumber, parseNumbers(data));
case 'float':
case 'double':
return createVector(column.name, Flow.TNumber, parseNumbers(data), format4f);
case 'string':
return createFactor(column.name, Flow.TString, data);
case 'matrix':
return createList(column.name, data, formatConfusionMatrix);
default:
return createList(column.name, data);
}
};
convertTableToFrame = function (table, tableName, metadata) {
var column, i, vectors;
vectors = function () {
var _i, _len, _ref, _results;
_ref = table.columns;
_results = [];
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
column = _ref[i];
_results.push(convertColumnToVector(column, table.data[i]));
}
return _results;
}();
return createDataframe(tableName, vectors, lodash.range(table.rowcount), null, metadata);
};
getTwoDimData = function (table, columnName) {
var columnIndex;
columnIndex = lodash.findIndex(table.columns, function (column) {
return column.name === columnName;
});
if (columnIndex >= 0) {
return table.data[columnIndex];
} else {
return void 0;
}
};
format4f = function (number) {
if (number) {
if (number === 'NaN') {
return void 0;
} else {
return number.toFixed(4).replace(/\.0+$/, '.0');
}
} else {
return number;
}
};
format6fi = function (number) {
if (number) {
if (number === 'NaN') {
return void 0;
} else {
return number.toFixed(6).replace(/\.0+$/, '');
}
} else {
return number;
}
};
combineTables = function (tables) {
var columnCount, columnData, data, element, i, index, leader, rowCount, table, _i, _j, _k, _l, _len, _len1, _len2, _ref;
leader = lodash.head(tables);
rowCount = 0;
columnCount = leader.data.length;
data = new Array(columnCount);
for (_i = 0, _len = tables.length; _i < _len; _i++) {
table = tables[_i];
rowCount += table.rowcount;
}
for (i = _j = 0; 0 <= columnCount ? _j < columnCount : _j > columnCount; i = 0 <= columnCount ? ++_j : --_j) {
data[i] = columnData = new Array(rowCount);
index = 0;
for (_k = 0, _len1 = tables.length; _k < _len1; _k++) {
table = tables[_k];
_ref = table.data[i];
for (_l = 0, _len2 = _ref.length; _l < _len2; _l++) {
element = _ref[_l];
columnData[index++] = element;
}
}
}
return {
name: leader.name,
columns: leader.columns,
data: data,
rowcount: rowCount
};
};
createArrays = function (count, length) {
var i, _i, _results;
_results = [];
for (i = _i = 0; 0 <= count ? _i < count : _i > count; i = 0 <= count ? ++_i : --_i) {
_results.push(new Array(length));
}
return _results;
};
parseNaNs = function (source) {
var element, i, target, _i, _len;
target = new Array(source.length);
for (i = _i = 0, _len = source.length; _i < _len; i = ++_i) {
element = source[i];
target[i] = element === 'NaN' ? void 0 : element;
}
return target;
};
parseNulls = function (source) {
var element, i, target, _i, _len;
target = new Array(source.length);
for (i = _i = 0, _len = source.length; _i < _len; i = ++_i) {
element = source[i];
target[i] = element != null ? element : void 0;
}
return target;
};
parseAndFormatArray = function (source) {
var element, i, target, _i, _len;
target = new Array(source.length);
for (i = _i = 0, _len = source.length; _i < _len; i = ++_i) {
element = source[i];
target[i] = element != null ? lodash.isNumber(element) ? format6fi(element) : element : void 0;
}
return target;
};
parseAndFormatObjectArray = function (source) {
var element, i, target, _i, _len, _ref, _ref1;
target = new Array(source.length);
for (i = _i = 0, _len = source.length; _i < _len; i = ++_i) {
element = source[i];
target[i] = element != null ? ((_ref = element.__meta) != null ? _ref.schema_type : void 0) === 'Key' ? '' + lodash.escape(element.name) + '' : ((_ref1 = element.__meta) != null ? _ref1.schema_type : void 0) === 'Key' ? '' + lodash.escape(element.name) + '' : element : void 0;
}
return target;
};
repeatValues = function (count, value) {
var i, target, _i;
target = new Array(count);
for (i = _i = 0; 0 <= count ? _i < count : _i > count; i = 0 <= count ? ++_i : --_i) {
target[i] = value;
}
return target;
};
concatArrays = function (arrays) {
var a;
switch (arrays.length) {
case 0:
return [];
case 1:
return lodash.head(arrays);
default:
a = lodash.head(arrays);
return a.concat.apply(a, lodash.tail(arrays));
}
};
computeTruePositiveRate = function (cm) {
var fn, fp, tn, tp, _ref, _ref1;
(_ref = cm[0], tn = _ref[0], fp = _ref[1]), (_ref1 = cm[1], fn = _ref1[0], tp = _ref1[1]);
return tp / (tp + fn);
};
computeFalsePositiveRate = function (cm) {
var fn, fp, tn, tp, _ref, _ref1;
(_ref = cm[0], tn = _ref[0], fp = _ref[1]), (_ref1 = cm[1], fn = _ref1[0], tp = _ref1[1]);
return fp / (fp + tn);
};
formatConfusionMatrix = function (cm) {
var domain, fn, fnr, fp, fpr, normal, strong, table, tbody, tn, tp, tr, yellow, _ref, _ref1, _ref2, _ref3;
_ref = cm.matrix, (_ref1 = _ref[0], tn = _ref1[0], fp = _ref1[1]), (_ref2 = _ref[1], fn = _ref2[0], tp = _ref2[1]);
fnr = fn / (tp + fn);
fpr = fp / (fp + tn);
domain = cm.domain;
_ref3 = Flow.HTML.template('table.flow-matrix', 'tbody', 'tr', 'td.strong.flow-center', 'td', 'td.bg-yellow'), table = _ref3[0], tbody = _ref3[1], tr = _ref3[2], strong = _ref3[3], normal = _ref3[4], yellow = _ref3[5];
return table([tbody([
tr([
strong('Actual/Predicted'),
strong(domain[0]),
strong(domain[1]),
strong('Error'),
strong('Rate')
]),
tr([
strong(domain[0]),
yellow(tn),
normal(fp),
normal(format4f(fpr)),
normal(fp + ' / ' + (fp + tn))
]),
tr([
strong(domain[1]),
normal(fn),
yellow(tp),
normal(format4f(fnr)),
normal(fn + ' / ' + (tp + fn))
]),
tr([
strong('Total'),
strong(tn + fn),
strong(tp + fp),
strong(format4f((fn + fp) / (fp + tn + tp + fn))),
strong(fn + fp + ' / ' + (fp + tn + tp + fn))
])
])]);
};
formulateGetPredictionsOrigin = function (opts) {
var frameKey, modelKey, opt, sanitizedOpt, sanitizedOpts;
if (lodash.isArray(opts)) {
sanitizedOpts = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = opts.length; _i < _len; _i++) {
opt = opts[_i];
sanitizedOpt = {};
if (opt.model) {
sanitizedOpt.model = opt.model;
}
if (opt.frame) {
sanitizedOpt.frame = opt.frame;
}
_results.push(sanitizedOpt);
}
return _results;
}();
return 'getPredictions ' + Flow.Prelude.stringify(sanitizedOpts);
} else {
modelKey = opts.model, frameKey = opts.frame;
if (modelKey && frameKey) {
return 'getPredictions model: ' + Flow.Prelude.stringify(modelKey) + ', frame: ' + Flow.Prelude.stringify(frameKey);
} else if (modelKey) {
return 'getPredictions model: ' + Flow.Prelude.stringify(modelKey);
} else if (frameKey) {
return 'getPredictions frame: ' + Flow.Prelude.stringify(frameKey);
} else {
return 'getPredictions()';
}
}
};
H2O.Routines = function (_) {
var asDataFrame, asH2OFrameFromDF, asH2OFrameFromRDD, assist, attrname, bindFrames, blacklistedAttributesBySchema, buildModel, cancelJob, changeColumnType, computeSplits, createFrame, createGui, createPlot, deleteAll, deleteFrame, deleteFrames, deleteModel, deleteModels, dump, dumpFuture, exportFrame, exportModel, extendAsDataFrame, extendAsH2OFrame, extendBindFrames, extendCancelJob, extendCloud, extendColumnSummary, extendDataFrames, extendDeletedKeys, extendExportFrame, extendExportModel, extendFrame, extendFrameData, extendFrameSummary, extendFrames, extendGrid, extendGrids, extendGuiForm, extendImportModel, extendImportResults, extendJob, extendJobs, extendLogFile, extendModel, extendModels, extendNetworkTest, extendParseResult, extendParseSetupResults, extendPlot, extendPrediction, extendPredictions, extendProfile, extendRDDs, extendScalaCode, extendScalaIntp, extendSplitFrameResult, extendStackTrace, extendTimeline, f, findColumnIndexByColumnLabel, findColumnIndicesByColumnLabels, flow_, getCloud, getColumnSummary, getDataFrames, getFrame, getFrameData, getFrameSummary, getFrames, getGrid, getGrids, getJob, getJobs, getLogFile, getModel, getModelParameterValue, getModels, getPrediction, getPredictions, getProfile, getRDDs, getScalaIntp, getStackTrace, getTimeline, grid, gui, importFiles, importModel, imputeColumn, initAssistanceSparklingWater, inspect, inspect$1, inspect$2, inspectFrameColumns, inspectFrameData, inspectModelParameters, inspectNetworkTestResult, inspectObject, inspectObjectArray_, inspectParametersAcrossModels, inspectRawArray_, inspectRawObject_, inspectTwoDimTable_, inspect_, loadScript, ls, name, parseFiles, plot, predict, proceed, read, render_, requestAsDataFrame, requestAsH2OFrameFromDF, requestAsH2OFrameFromRDD, requestBindFrames, requestCancelJob, requestChangeColumnType, requestCloud, requestColumnSummary, requestCreateFrame, requestDataFrames, requestDeleteFrame, requestDeleteFrames, requestDeleteModel, requestDeleteModels, requestExportFrame, requestExportModel, requestFrame, requestFrameData, requestFrameSummary, requestFrameSummarySlice, requestFrames, requestGrid, requestGrids, requestImportAndParseFiles, requestImportAndParseSetup, requestImportFiles, requestImportModel, requestImputeColumn, requestJob, requestJobs, requestLogFile, requestModel, requestModelBuild, requestModels, requestModelsByKeys, requestNetworkTest, requestParseFiles, requestParseSetup, requestPredict, requestPrediction, requestPredictions, requestPredicts, requestProfile, requestRDDs, requestRemoveAll, requestScalaCode, requestScalaIntp, requestSplitFrame, requestStackTrace, requestTimeline, routines, routinesOnSw, runScalaCode, schemaTransforms, setupParse, splitFrame, testNetwork, transformBinomialMetrics, unwrapPrediction, _apply, _async, _call, _fork, _get, _isFuture, _join, _plot, _ref, _schemaHacks;
_fork = function () {
var args, f;
f = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
return Flow.Async.fork(f, args);
};
_join = function () {
var args, go, _i;
args = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), go = arguments[_i++];
return Flow.Async.join(args, Flow.Async.applicate(go));
};
_call = function () {
var args, go;
go = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
return Flow.Async.join(args, Flow.Async.applicate(go));
};
_apply = function (go, args) {
return Flow.Async.join(args, go);
};
_isFuture = Flow.Async.isFuture;
_async = Flow.Async.async;
_get = Flow.Async.get;
proceed = function (func, args, go) {
return go(null, render_({}, function () {
return func.apply(null, [_].concat(args || []));
}));
};
proceed = function (func, args, go) {
return go(null, render_.apply(null, [
{},
func
].concat(args || [])));
};
extendGuiForm = function (form) {
return render_(form, Flow.Form, form);
};
createGui = function (controls, go) {
return go(null, extendGuiForm(Flow.Dataflow.signals(controls || [])));
};
gui = function (controls) {
return _fork(createGui, controls);
};
_ref = Flow.Gui;
for (name in _ref) {
f = _ref[name];
gui[name] = f;
}
flow_ = function (raw) {
return raw._flow_ || (raw._flow_ = { _cache_: {} });
};
render_ = function (raw, render) {
flow_(raw).render = render;
return raw;
};
render_ = function () {
var args, raw, render;
raw = arguments[0], render = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
flow_(raw).render = function (go) {
return render.apply(null, [
_,
go
].concat(args));
};
return raw;
};
inspect_ = function (raw, inspectors) {
var attr, root;
root = flow_(raw);
if (root.inspect == null) {
root.inspect = {};
}
for (attr in inspectors) {
f = inspectors[attr];
root.inspect[attr] = f;
}
return raw;
};
inspect = function (a, b) {
if (arguments.length === 1) {
return inspect$1(a);
} else {
return inspect$2(a, b);
}
};
inspect$1 = function (obj) {
var attr, inspections, inspectors, _ref1;
if (_isFuture(obj)) {
return _async(inspect, obj);
} else {
if (inspectors = obj != null ? (_ref1 = obj._flow_) != null ? _ref1.inspect : void 0 : void 0) {
inspections = [];
for (attr in inspectors) {
f = inspectors[attr];
inspections.push(inspect$2(attr, obj));
}
render_(inspections, H2O.InspectsOutput, inspections);
return inspections;
} else {
return {};
}
}
};
ls = function (obj) {
var inspectors, _ref1;
if (_isFuture(obj)) {
return _async(ls, obj);
} else {
if (inspectors = obj != null ? (_ref1 = obj._flow_) != null ? _ref1.inspect : void 0 : void 0) {
return lodash.keys(inspectors);
} else {
return [];
}
}
};
inspect$2 = function (attr, obj) {
var cached, inspection, inspectors, key, root;
if (!attr) {
return;
}
if (_isFuture(obj)) {
return _async(inspect, attr, obj);
}
if (!obj) {
return;
}
if (!(root = obj._flow_)) {
return;
}
if (!(inspectors = root.inspect)) {
return;
}
if (cached = root._cache_[key = 'inspect_' + attr]) {
return cached;
}
if (!(f = inspectors[attr])) {
return;
}
if (!lodash.isFunction(f)) {
return;
}
root._cache_[key] = inspection = f();
render_(inspection, H2O.InspectOutput, inspection);
return inspection;
};
_plot = function (render, go) {
return render(function (error, vis) {
if (error) {
return go(new Flow.Error('Error rendering vis.', error));
} else {
return go(null, vis);
}
});
};
extendPlot = function (vis) {
return render_(vis, H2O.PlotOutput, vis.element);
};
createPlot = function (f, go) {
return _plot(f(lightning), function (error, vis) {
if (error) {
return go(error);
} else {
return go(null, extendPlot(vis));
}
});
};
plot = function (f) {
if (_isFuture(f)) {
return _fork(proceed, H2O.PlotInput, f);
} else if (lodash.isFunction(f)) {
return _fork(createPlot, f);
} else {
return assist(plot);
}
};
grid = function (f) {
return plot(function (g) {
return g(g.select(), g.from(f));
});
};
transformBinomialMetrics = function (metrics) {
var cms, domain, fns, fps, i, scores, tns, tp, tps;
if (scores = metrics.thresholds_and_metric_scores) {
domain = metrics.domain;
tps = getTwoDimData(scores, 'tps');
tns = getTwoDimData(scores, 'tns');
fps = getTwoDimData(scores, 'fps');
fns = getTwoDimData(scores, 'fns');
cms = function () {
var _i, _len, _results;
_results = [];
for (i = _i = 0, _len = tps.length; _i < _len; i = ++_i) {
tp = tps[i];
_results.push({
domain: domain,
matrix: [
[
tns[i],
fps[i]
],
[
fns[i],
tp
]
]
});
}
return _results;
}();
scores.columns.push({
name: 'CM',
description: 'CM',
format: 'matrix',
type: 'matrix'
});
scores.data.push(cms);
}
return metrics;
};
extendCloud = function (cloud) {
return render_(cloud, H2O.CloudOutput, cloud);
};
extendTimeline = function (timeline) {
return render_(timeline, H2O.TimelineOutput, timeline);
};
extendStackTrace = function (stackTrace) {
return render_(stackTrace, H2O.StackTraceOutput, stackTrace);
};
extendLogFile = function (cloud, nodeIndex, fileType, logFile) {
return render_(logFile, H2O.LogFileOutput, cloud, nodeIndex, fileType, logFile);
};
inspectNetworkTestResult = function (testResult) {
return function () {
return convertTableToFrame(testResult.table, testResult.table.name, {
description: testResult.table.name,
origin: 'testNetwork'
});
};
};
extendNetworkTest = function (testResult) {
inspect_(testResult, { result: inspectNetworkTestResult(testResult) });
return render_(testResult, H2O.NetworkTestOutput, testResult);
};
extendProfile = function (profile) {
return render_(profile, H2O.ProfileOutput, profile);
};
extendFrames = function (frames) {
render_(frames, H2O.FramesOutput, frames);
return frames;
};
extendSplitFrameResult = function (result) {
render_(result, H2O.SplitFrameOutput, result);
return result;
};
getModelParameterValue = function (type, value) {
switch (type) {
case 'Key':
case 'Key':
if (value != null) {
return value.name;
} else {
return void 0;
}
break;
case 'VecSpecifier':
if (value != null) {
return value.column_name;
} else {
return void 0;
}
break;
default:
if (value != null) {
return value;
} else {
return void 0;
}
}
};
inspectParametersAcrossModels = function (models) {
return function () {
var data, i, leader, model, modelKeys, parameter, vectors;
leader = lodash.head(models);
vectors = function () {
var _i, _len, _ref1, _results;
_ref1 = leader.parameters;
_results = [];
for (i = _i = 0, _len = _ref1.length; _i < _len; i = ++_i) {
parameter = _ref1[i];
data = function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = models.length; _j < _len1; _j++) {
model = models[_j];
_results1.push(getModelParameterValue(parameter.type, model.parameters[i].actual_value));
}
return _results1;
}();
switch (parameter.type) {
case 'enum':
case 'Frame':
case 'string':
_results.push(createFactor(parameter.label, Flow.TString, data));
break;
case 'byte':
case 'short':
case 'int':
case 'long':
case 'float':
case 'double':
_results.push(createVector(parameter.label, Flow.TNumber, data));
break;
case 'string[]':
case 'byte[]':
case 'short[]':
case 'int[]':
case 'long[]':
case 'float[]':
case 'double[]':
_results.push(createList(parameter.label, data, function (a) {
if (a) {
return a;
} else {
return void 0;
}
}));
break;
case 'boolean':
_results.push(createList(parameter.label, data, function (a) {
if (a) {
return 'true';
} else {
return 'false';
}
}));
break;
default:
_results.push(createList(parameter.label, data));
}
}
return _results;
}();
modelKeys = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = models.length; _i < _len; _i++) {
model = models[_i];
_results.push(model.model_id.name);
}
return _results;
}();
return createDataframe('parameters', vectors, lodash.range(models.length), null, {
description: 'Parameters for models ' + modelKeys.join(', '),
origin: 'getModels ' + Flow.Prelude.stringify(modelKeys)
});
};
};
inspectModelParameters = function (model) {
return function () {
var attr, attrs, data, i, parameter, parameters, vectors;
parameters = model.parameters;
attrs = [
'label',
'type',
'level',
'actual_value',
'default_value'
];
vectors = function () {
var _i, _j, _len, _len1, _results;
_results = [];
for (_i = 0, _len = attrs.length; _i < _len; _i++) {
attr = attrs[_i];
data = new Array(parameters.length);
for (i = _j = 0, _len1 = parameters.length; _j < _len1; i = ++_j) {
parameter = parameters[i];
data[i] = attr === 'actual_value' ? getModelParameterValue(parameter.type, parameter[attr]) : parameter[attr];
}
_results.push(createList(attr, data));
}
return _results;
}();
return createDataframe('parameters', vectors, lodash.range(parameters.length), null, {
description: 'Parameters for model \'' + model.model_id.name + '\'',
origin: 'getModel ' + Flow.Prelude.stringify(model.model_id.name)
});
};
};
extendJob = function (job) {
return render_(job, H2O.JobOutput, job);
};
extendJobs = function (jobs) {
var job, _i, _len;
for (_i = 0, _len = jobs.length; _i < _len; _i++) {
job = jobs[_i];
extendJob(job);
}
return render_(jobs, H2O.JobsOutput, jobs);
};
extendCancelJob = function (cancellation) {
return render_(cancellation, H2O.CancelJobOutput, cancellation);
};
extendDeletedKeys = function (keys) {
return render_(keys, H2O.DeleteObjectsOutput, keys);
};
inspectTwoDimTable_ = function (origin, tableName, table) {
return function () {
return convertTableToFrame(table, tableName, {
description: table.description || '',
origin: origin
});
};
};
inspectRawArray_ = function (name, origin, description, array) {
return function () {
return createDataframe(name, [createList(name, parseAndFormatArray(array))], lodash.range(array.length), null, {
description: '',
origin: origin
});
};
};
inspectObjectArray_ = function (name, origin, description, array) {
return function () {
return createDataframe(name, [createList(name, parseAndFormatObjectArray(array))], lodash.range(array.length), null, {
description: '',
origin: origin
});
};
};
inspectRawObject_ = function (name, origin, description, obj) {
return function () {
var k, v, vectors;
vectors = function () {
var _results;
_results = [];
for (k in obj) {
v = obj[k];
_results.push(createList(k, [v === null ? void 0 : lodash.isNumber(v) ? format6fi(v) : v]));
}
return _results;
}();
return createDataframe(name, vectors, lodash.range(1), null, {
description: '',
origin: origin
});
};
};
_schemaHacks = {
KMeansOutput: { fields: 'names domains help' },
GBMOutput: { fields: 'names domains help' },
GLMOutput: { fields: 'names domains help' },
DRFOutput: { fields: 'names domains help' },
DeepLearningModelOutput: { fields: 'names domains help' },
NaiveBayesOutput: { fields: 'names domains help pcond' },
PCAOutput: { fields: 'names domains help' },
ModelMetricsBinomialGLM: {
fields: null,
transform: transformBinomialMetrics
},
ModelMetricsBinomial: {
fields: null,
transform: transformBinomialMetrics
},
ModelMetricsMultinomialGLM: { fields: null },
ModelMetricsMultinomial: { fields: null },
ModelMetricsRegressionGLM: { fields: null },
ModelMetricsRegression: { fields: null },
ModelMetricsClustering: { fields: null },
ModelMetricsAutoEncoder: { fields: null },
ConfusionMatrix: { fields: null }
};
blacklistedAttributesBySchema = function () {
var attrs, dict, dicts, field, schema, _i, _len, _ref1;
dicts = {};
for (schema in _schemaHacks) {
attrs = _schemaHacks[schema];
dicts[schema] = dict = { __meta: true };
if (attrs.fields) {
_ref1 = Flow.Prelude.words(attrs.fields);
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
field = _ref1[_i];
dict[field] = true;
}
}
}
return dicts;
}();
schemaTransforms = function () {
var attrs, schema, transform, transforms;
transforms = {};
for (schema in _schemaHacks) {
attrs = _schemaHacks[schema];
if (transform = attrs.transform) {
transforms[schema] = transform;
}
}
return transforms;
}();
inspectObject = function (inspections, name, origin, obj) {
var attrs, blacklistedAttributes, k, meta, record, schemaType, transform, v, _ref1, _ref2;
schemaType = (_ref1 = obj.__meta) != null ? _ref1.schema_type : void 0;
blacklistedAttributes = schemaType ? (attrs = blacklistedAttributesBySchema[schemaType]) ? attrs : {} : {};
if (transform = schemaTransforms[schemaType]) {
obj = transform(obj);
}
record = {};
inspections[name] = inspectRawObject_(name, origin, name, record);
for (k in obj) {
v = obj[k];
if (!blacklistedAttributes[k]) {
if (v === null) {
record[k] = null;
} else {
if (((_ref2 = v.__meta) != null ? _ref2.schema_type : void 0) === 'TwoDimTable') {
inspections['' + name + ' - ' + v.name] = inspectTwoDimTable_(origin, '' + name + ' - ' + v.name, v);
} else {
if (lodash.isArray(v)) {
if (k === 'cross_validation_models' || k === 'cross_validation_predictions' || name === 'output' && (k === 'weights' || k === 'biases')) {
inspections[k] = inspectObjectArray_(k, origin, k, v);
} else {
inspections[k] = inspectRawArray_(k, origin, k, v);
}
} else if (lodash.isObject(v)) {
if (meta = v.__meta) {
if (meta.schema_type === 'Key') {
record[k] = '' + lodash.escape(v.name) + '';
} else if (meta.schema_type === 'Key') {
record[k] = '' + lodash.escape(v.name) + '';
} else if (meta.schema_type === 'Frame') {
record[k] = '' + lodash.escape(v.frame_id.name) + '';
} else {
inspectObject(inspections, '' + name + ' - ' + k, origin, v);
}
} else {
console.log('WARNING: dropping [' + k + '] from inspection:', v);
}
} else {
record[k] = lodash.isNumber(v) ? format6fi(v) : v;
}
}
}
}
}
};
extendModel = function (model) {
var refresh;
lodash.extend = function (model) {
var inspections, origin, table, tableName, _i, _len, _ref1;
inspections = {};
inspections.parameters = inspectModelParameters(model);
origin = 'getModel ' + Flow.Prelude.stringify(model.model_id.name);
inspectObject(inspections, 'output', origin, model.output);
if (model.__meta.schema_type === 'NaiveBayesModel') {
if (lodash.isArray(model.output.pcond)) {
_ref1 = model.output.pcond;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
table = _ref1[_i];
tableName = 'output - pcond - ' + table.name;
inspections[tableName] = inspectTwoDimTable_(origin, tableName, table);
}
}
}
inspect_(model, inspections);
return model;
};
refresh = function (go) {
return _.requestModel(model.model_id.name, function (error, model) {
if (error) {
return go(error);
} else {
return go(null, lodash.extend(model));
}
});
};
lodash.extend(model);
return render_(model, H2O.ModelOutput, model, refresh);
};
extendGrid = function (grid, opts) {
var inspections, origin;
origin = 'getGrid ' + Flow.Prelude.stringify(grid.grid_id.name);
if (opts) {
origin += ', ' + Flow.Prelude.stringify(opts);
}
inspections = {
summary: inspectTwoDimTable_(origin, 'summary', grid.summary_table),
scoring_history: inspectTwoDimTable_(origin, 'scoring_history', grid.scoring_history)
};
inspect_(grid, inspections);
return render_(grid, H2O.GridOutput, grid);
};
extendGrids = function (grids) {
return render_(grids, H2O.GridsOutput, grids);
};
extendModels = function (models) {
var algos, inspections, model;
inspections = {};
algos = lodash.unique(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = models.length; _i < _len; _i++) {
model = models[_i];
_results.push(model.algo);
}
return _results;
}());
if (algos.length === 1) {
inspections.parameters = inspectParametersAcrossModels(models);
}
inspect_(models, inspections);
return render_(models, H2O.ModelsOutput, models);
};
read = function (value) {
if (value === 'NaN') {
return null;
} else {
return value;
}
};
extendPredictions = function (opts, predictions) {
render_(predictions, H2O.PredictsOutput, opts, predictions);
return predictions;
};
extendPrediction = function (result) {
var frameKey, inspections, modelKey, prediction, predictionFrame, _ref1;
modelKey = result.model.name;
frameKey = (_ref1 = result.frame) != null ? _ref1.name : void 0;
prediction = lodash.head(result.model_metrics);
predictionFrame = result.predictions_frame;
inspections = {};
if (prediction) {
inspectObject(inspections, 'Prediction', 'getPrediction model: ' + Flow.Prelude.stringify(modelKey) + ', frame: ' + Flow.Prelude.stringify(frameKey), prediction);
} else {
prediction = {};
inspectObject(inspections, 'Prediction', 'getPrediction model: ' + Flow.Prelude.stringify(modelKey) + ', frame: ' + Flow.Prelude.stringify(frameKey), { prediction_frame: predictionFrame });
}
inspect_(prediction, inspections);
return render_(prediction, H2O.PredictOutput, prediction);
};
inspectFrameColumns = function (tableLabel, frameKey, frame, frameColumns) {
return function () {
var actionsData, attr, attrs, column, i, labelVector, title, toColumnSummaryLink, toConversionLink, typeVector, vectors;
attrs = [
'label',
'type',
'missing_count|Missing',
'zero_count|Zeros',
'positive_infinity_count|+Inf',
'negative_infinity_count|-Inf',
'min',
'max',
'mean',
'sigma',
'cardinality'
];
toColumnSummaryLink = function (label) {
return '' + lodash.escape(label) + '';
};
toConversionLink = function (value) {
var label, type, _ref1;
_ref1 = value.split('\0'), type = _ref1[0], label = _ref1[1];
switch (type) {
case 'enum':
return 'Convert to numeric';
case 'int':
case 'string':
return 'Convert to enum';
default:
return void 0;
}
};
vectors = function () {
var _i, _len, _ref1, _results;
_results = [];
for (_i = 0, _len = attrs.length; _i < _len; _i++) {
attr = attrs[_i];
_ref1 = attr.split('|'), name = _ref1[0], title = _ref1[1];
title = title != null ? title : name;
switch (name) {
case 'min':
_results.push(createVector(title, Flow.TNumber, function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = frameColumns.length; _j < _len1; _j++) {
column = frameColumns[_j];
_results1.push(lodash.head(column.mins));
}
return _results1;
}(), format4f));
break;
case 'max':
_results.push(createVector(title, Flow.TNumber, function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = frameColumns.length; _j < _len1; _j++) {
column = frameColumns[_j];
_results1.push(lodash.head(column.maxs));
}
return _results1;
}(), format4f));
break;
case 'cardinality':
_results.push(createVector(title, Flow.TNumber, function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = frameColumns.length; _j < _len1; _j++) {
column = frameColumns[_j];
_results1.push(column.type === 'enum' ? column.domain_cardinality : void 0);
}
return _results1;
}()));
break;
case 'label':
_results.push(createFactor(title, Flow.TString, function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = frameColumns.length; _j < _len1; _j++) {
column = frameColumns[_j];
_results1.push(column[name]);
}
return _results1;
}(), null, toColumnSummaryLink));
break;
case 'type':
_results.push(createFactor(title, Flow.TString, function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = frameColumns.length; _j < _len1; _j++) {
column = frameColumns[_j];
_results1.push(column[name]);
}
return _results1;
}()));
break;
case 'mean':
case 'sigma':
_results.push(createVector(title, Flow.TNumber, function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = frameColumns.length; _j < _len1; _j++) {
column = frameColumns[_j];
_results1.push(column[name]);
}
return _results1;
}(), format4f));
break;
default:
_results.push(createVector(title, Flow.TNumber, function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = frameColumns.length; _j < _len1; _j++) {
column = frameColumns[_j];
_results1.push(column[name]);
}
return _results1;
}()));
}
}
return _results;
}();
labelVector = vectors[0], typeVector = vectors[1];
actionsData = function () {
var _i, _ref1, _results;
_results = [];
for (i = _i = 0, _ref1 = frameColumns.length; 0 <= _ref1 ? _i < _ref1 : _i > _ref1; i = 0 <= _ref1 ? ++_i : --_i) {
_results.push('' + typeVector.valueAt(i) + '\0' + labelVector.valueAt(i));
}
return _results;
}();
vectors.push(createFactor('Actions', Flow.TString, actionsData, null, toConversionLink));
return createDataframe(tableLabel, vectors, lodash.range(frameColumns.length), null, {
description: 'A list of ' + tableLabel + ' in the H2O Frame.',
origin: 'getFrameSummary ' + Flow.Prelude.stringify(frameKey),
plot: 'plot inspect \'' + tableLabel + '\', getFrameSummary ' + Flow.Prelude.stringify(frameKey)
});
};
};
inspectFrameData = function (frameKey, frame) {
return function () {
var column, domain, frameColumns, index, rowIndex, vectors;
frameColumns = frame.columns;
vectors = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = frameColumns.length; _i < _len; _i++) {
column = frameColumns[_i];
switch (column.type) {
case 'int':
case 'real':
_results.push(createVector(column.label, Flow.TNumber, parseNaNs(column.data), format4f));
break;
case 'enum':
domain = column.domain;
_results.push(createFactor(column.label, Flow.TString, function () {
var _j, _len1, _ref1, _results1;
_ref1 = column.data;
_results1 = [];
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
index = _ref1[_j];
_results1.push(index != null ? domain[index] : void 0);
}
return _results1;
}()));
break;
case 'time':
_results.push(createVector(column.label, Flow.TNumber, parseNaNs(column.data)));
break;
case 'string':
case 'uuid':
_results.push(createList(column.label, parseNulls(column.string_data)));
break;
default:
_results.push(createList(column.label, parseNulls(column.data)));
}
}
return _results;
}();
vectors.unshift(createVector('Row', Flow.TNumber, function () {
var _i, _ref1, _ref2, _results;
_results = [];
for (rowIndex = _i = _ref1 = frame.row_offset, _ref2 = frame.row_count; _ref1 <= _ref2 ? _i < _ref2 : _i > _ref2; rowIndex = _ref1 <= _ref2 ? ++_i : --_i) {
_results.push(rowIndex + 1);
}
return _results;
}()));
return createDataframe('data', vectors, lodash.range(frame.row_count - frame.row_offset), null, {
description: 'A partial list of rows in the H2O Frame.',
origin: 'getFrameData ' + Flow.Prelude.stringify(frameKey)
});
};
};
extendFrameData = function (frameKey, frame) {
var inspections, origin;
inspections = { data: inspectFrameData(frameKey, frame) };
origin = 'getFrameData ' + Flow.Prelude.stringify(frameKey);
inspect_(frame, inspections);
return render_(frame, H2O.FrameDataOutput, frame);
};
extendFrame = function (frameKey, frame) {
var column, enumColumns, inspections, origin;
inspections = {
columns: inspectFrameColumns('columns', frameKey, frame, frame.columns),
data: inspectFrameData(frameKey, frame)
};
enumColumns = function () {
var _i, _len, _ref1, _results;
_ref1 = frame.columns;
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
column = _ref1[_i];
if (column.type === 'enum') {
_results.push(column);
}
}
return _results;
}();
if (enumColumns.length > 0) {
inspections.factors = inspectFrameColumns('factors', frameKey, frame, enumColumns);
}
origin = 'getFrameSummary ' + Flow.Prelude.stringify(frameKey);
inspections[frame.chunk_summary.name] = inspectTwoDimTable_(origin, frame.chunk_summary.name, frame.chunk_summary);
inspections[frame.distribution_summary.name] = inspectTwoDimTable_(origin, frame.distribution_summary.name, frame.distribution_summary);
inspect_(frame, inspections);
return render_(frame, H2O.FrameOutput, frame);
};
extendFrameSummary = function (frameKey, frame) {
var column, enumColumns, inspections, origin;
inspections = { columns: inspectFrameColumns('columns', frameKey, frame, frame.columns) };
enumColumns = function () {
var _i, _len, _ref1, _results;
_ref1 = frame.columns;
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
column = _ref1[_i];
if (column.type === 'enum') {
_results.push(column);
}
}
return _results;
}();
if (enumColumns.length > 0) {
inspections.factors = inspectFrameColumns('factors', frameKey, frame, enumColumns);
}
origin = 'getFrameSummary ' + Flow.Prelude.stringify(frameKey);
inspections[frame.chunk_summary.name] = inspectTwoDimTable_(origin, frame.chunk_summary.name, frame.chunk_summary);
inspections[frame.distribution_summary.name] = inspectTwoDimTable_(origin, frame.distribution_summary.name, frame.distribution_summary);
inspect_(frame, inspections);
return render_(frame, H2O.FrameOutput, frame);
};
extendColumnSummary = function (frameKey, frame, columnName) {
var column, inspectCharacteristics, inspectDistribution, inspectDomain, inspectPercentiles, inspectSummary, inspections, rowCount;
column = lodash.head(frame.columns);
rowCount = frame.rows;
inspectPercentiles = function () {
var vectors;
vectors = [
createVector('percentile', Flow.TNumber, frame.default_percentiles),
createVector('value', Flow.TNumber, column.percentiles)
];
return createDataframe('percentiles', vectors, lodash.range(frame.default_percentiles.length), null, {
description: 'Percentiles for column \'' + column.label + '\' in frame \'' + frameKey + '\'.',
origin: 'getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName)
});
};
inspectDistribution = function () {
var base, binCount, binIndex, bins, count, countData, i, interval, intervalData, m, minBinCount, n, rows, stride, vectors, width, widthData, _i, _j, _k, _l, _len, _ref1;
minBinCount = 32;
base = column.histogram_base, stride = column.histogram_stride, bins = column.histogram_bins;
width = Math.ceil(bins.length / minBinCount);
interval = stride * width;
rows = [];
if (width > 0) {
binCount = minBinCount + (bins.length % width > 0 ? 1 : 0);
intervalData = new Array(binCount);
widthData = new Array(binCount);
countData = new Array(binCount);
for (i = _i = 0; 0 <= binCount ? _i < binCount : _i > binCount; i = 0 <= binCount ? ++_i : --_i) {
m = i * width;
n = m + width;
count = 0;
for (binIndex = _j = m; m <= n ? _j < n : _j > n; binIndex = m <= n ? ++_j : --_j) {
if (binIndex < bins.length) {
count += bins[binIndex];
}
}
intervalData[i] = base + i * interval;
widthData[i] = interval;
countData[i] = count;
}
} else {
binCount = bins.length;
intervalData = new Array(binCount);
widthData = new Array(binCount);
countData = new Array(binCount);
for (i = _k = 0, _len = bins.length; _k < _len; i = ++_k) {
count = bins[i];
intervalData[i] = base + i * stride;
widthData[i] = stride;
countData[i] = count;
}
}
for (i = _l = _ref1 = binCount - 1; _ref1 <= 0 ? _l <= 0 : _l >= 0; i = _ref1 <= 0 ? ++_l : --_l) {
if (countData[i] !== 0) {
binCount = i + 1;
intervalData = intervalData.slice(0, binCount);
widthData = widthData.slice(0, binCount);
countData = countData.slice(0, binCount);
break;
}
}
vectors = [
createFactor('interval', Flow.TString, intervalData),
createVector('width', Flow.TNumber, widthData),
createVector('count', Flow.TNumber, countData)
];
return createDataframe('distribution', vectors, lodash.range(binCount), null, {
description: 'Distribution for column \'' + column.label + '\' in frame \'' + frameKey + '\'.',
origin: 'getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName),
plot: 'plot inspect \'distribution\', getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName)
});
};
inspectCharacteristics = function () {
var characteristicData, count, countData, missing_count, negative_infinity_count, other, percentData, positive_infinity_count, vectors, zero_count;
missing_count = column.missing_count, zero_count = column.zero_count, positive_infinity_count = column.positive_infinity_count, negative_infinity_count = column.negative_infinity_count;
other = rowCount - missing_count - zero_count - positive_infinity_count - negative_infinity_count;
characteristicData = [
'Missing',
'-Inf',
'Zero',
'+Inf',
'Other'
];
countData = [
missing_count,
negative_infinity_count,
zero_count,
positive_infinity_count,
other
];
percentData = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = countData.length; _i < _len; _i++) {
count = countData[_i];
_results.push(100 * count / rowCount);
}
return _results;
}();
vectors = [
createFactor('characteristic', Flow.TString, characteristicData),
createVector('count', Flow.TNumber, countData),
createVector('percent', Flow.TNumber, percentData)
];
return createDataframe('characteristics', vectors, lodash.range(characteristicData.length), null, {
description: 'Characteristics for column \'' + column.label + '\' in frame \'' + frameKey + '\'.',
origin: 'getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName),
plot: 'plot inspect \'characteristics\', getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName)
});
};
inspectSummary = function () {
var defaultPercentiles, maximum, mean, minimum, outliers, percentiles, q1, q2, q3, vectors;
defaultPercentiles = frame.default_percentiles;
percentiles = column.percentiles;
mean = column.mean;
q1 = percentiles[defaultPercentiles.indexOf(0.25)];
q2 = percentiles[defaultPercentiles.indexOf(0.5)];
q3 = percentiles[defaultPercentiles.indexOf(0.75)];
outliers = lodash.unique(column.mins.concat(column.maxs));
minimum = lodash.head(column.mins);
maximum = lodash.head(column.maxs);
vectors = [
createFactor('column', Flow.TString, [columnName]),
createVector('mean', Flow.TNumber, [mean]),
createVector('q1', Flow.TNumber, [q1]),
createVector('q2', Flow.TNumber, [q2]),
createVector('q3', Flow.TNumber, [q3]),
createVector('min', Flow.TNumber, [minimum]),
createVector('max', Flow.TNumber, [maximum])
];
return createDataframe('summary', vectors, lodash.range(1), null, {
description: 'Summary for column \'' + column.label + '\' in frame \'' + frameKey + '\'.',
origin: 'getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName),
plot: 'plot inspect \'summary\', getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName)
});
};
inspectDomain = function () {
var counts, i, labels, level, levels, percents, sortedLevels, vectors, _i, _len, _ref1;
levels = lodash.map(column.histogram_bins, function (count, index) {
return {
count: count,
index: index
};
});
sortedLevels = lodash.sortBy(levels, function (level) {
return -level.count;
});
_ref1 = createArrays(3, sortedLevels.length), labels = _ref1[0], counts = _ref1[1], percents = _ref1[2];
for (i = _i = 0, _len = sortedLevels.length; _i < _len; i = ++_i) {
level = sortedLevels[i];
labels[i] = column.domain[level.index];
counts[i] = level.count;
percents[i] = 100 * level.count / rowCount;
}
vectors = [
createFactor('label', Flow.TString, labels),
createVector('count', Flow.TNumber, counts),
createVector('percent', Flow.TNumber, percents)
];
return createDataframe('domain', vectors, lodash.range(sortedLevels.length), null, {
description: 'Domain for column \'' + column.label + '\' in frame \'' + frameKey + '\'.',
origin: 'getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName),
plot: 'plot inspect \'domain\', getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName)
});
};
inspections = { characteristics: inspectCharacteristics };
switch (column.type) {
case 'int':
case 'real':
if (column.histogram_bins.length) {
inspections.distribution = inspectDistribution;
}
if (!lodash.some(column.percentiles, function (a) {
return a === 'NaN';
})) {
inspections.summary = inspectSummary;
inspections.percentiles = inspectPercentiles;
}
break;
case 'enum':
inspections.domain = inspectDomain;
}
inspect_(frame, inspections);
return render_(frame, H2O.ColumnSummaryOutput, frameKey, frame, columnName);
};
requestFrame = function (frameKey, go) {
return _.requestFrameSlice(frameKey, void 0, 0, 20, function (error, frame) {
if (error) {
return go(error);
} else {
return go(null, extendFrame(frameKey, frame));
}
});
};
requestFrameData = function (frameKey, searchTerm, offset, count, go) {
return _.requestFrameSlice(frameKey, searchTerm, offset, count, function (error, frame) {
if (error) {
return go(error);
} else {
return go(null, extendFrameData(frameKey, frame));
}
});
};
requestFrameSummarySlice = function (frameKey, searchTerm, offset, length, go) {
return _.requestFrameSummarySlice(frameKey, searchTerm, offset, length, function (error, frame) {
if (error) {
return go(error);
} else {
return go(null, extendFrameSummary(frameKey, frame));
}
});
};
requestFrameSummary = function (frameKey, go) {
return _.requestFrameSummarySlice(frameKey, void 0, 0, 20, function (error, frame) {
if (error) {
return go(error);
} else {
return go(null, extendFrameSummary(frameKey, frame));
}
});
};
requestColumnSummary = function (frameKey, columnName, go) {
return _.requestColumnSummary(frameKey, columnName, function (error, frame) {
if (error) {
return go(error);
} else {
return go(null, extendColumnSummary(frameKey, frame, columnName));
}
});
};
requestFrames = function (go) {
return _.requestFrames(function (error, frames) {
if (error) {
return go(error);
} else {
return go(null, extendFrames(frames));
}
});
};
requestCreateFrame = function (opts, go) {
return _.requestCreateFrame(opts, function (error, result) {
if (error) {
return go(error);
} else {
return _.requestJob(result.key.name, function (error, job) {
if (error) {
return go(error);
} else {
return go(null, extendJob(job));
}
});
}
});
};
computeSplits = function (ratios, keys) {
var i, key, part, parts, ratio, splits, sum, _i, _j, _len, _len1, _ref1, _ref2;
parts = [];
sum = 0;
_ref1 = keys.slice(0, ratios.length);
for (i = _i = 0, _len = _ref1.length; _i < _len; i = ++_i) {
key = _ref1[i];
sum += ratio = ratios[i];
parts.push({
key: key,
ratio: ratio
});
}
parts.push({
key: keys[keys.length - 1],
ratio: 1 - sum
});
splits = [];
sum = 0;
_ref2 = lodash.sortBy(parts, function (part) {
return part.ratio;
});
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
part = _ref2[_j];
splits.push({
min: sum,
max: sum + part.ratio,
key: part.key
});
sum += part.ratio;
}
return splits;
};
requestBindFrames = function (key, sourceKeys, go) {
return _.requestExec('(assign ' + key + ' (cbind ' + sourceKeys.join(' ') + '))', function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendBindFrames(key, result));
}
});
};
requestSplitFrame = function (frameKey, splitRatios, splitKeys, seed, go) {
var g, i, l, part, randomVecKey, sliceExpr, splits, statements, _i, _len;
if (splitRatios.length === splitKeys.length - 1) {
splits = computeSplits(splitRatios, splitKeys);
randomVecKey = createTempKey();
statements = [];
statements.push('(tmp= ' + randomVecKey + ' (h2o.runif ' + frameKey + ' ' + seed + '))');
for (i = _i = 0, _len = splits.length; _i < _len; i = ++_i) {
part = splits[i];
g = i !== 0 ? '(>= ' + randomVecKey + ' ' + part.min + ')' : null;
l = i !== splits.length - 1 ? '(< ' + randomVecKey + ' ' + part.max + ')' : null;
sliceExpr = g && l ? '(& ' + g + ' ' + l + ')' : l ? l : g;
statements.push('(assign ' + part.key + ' (rows ' + frameKey + ' ' + sliceExpr + '))');
}
statements.push('(rm ' + randomVecKey + ')');
return _.requestExec('(, ' + statements.join(' ') + ')', function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendSplitFrameResult({
keys: splitKeys,
ratios: splitRatios
}));
}
});
} else {
return go(new Flow.Error('The number of split ratios should be one less than the number of split keys'));
}
};
createFrame = function (opts) {
if (opts) {
return _fork(requestCreateFrame, opts);
} else {
return assist(createFrame);
}
};
splitFrame = function (frameKey, splitRatios, splitKeys, seed) {
if (seed == null) {
seed = -1;
}
if (frameKey && splitRatios && splitKeys) {
return _fork(requestSplitFrame, frameKey, splitRatios, splitKeys, seed);
} else {
return assist(splitFrame);
}
};
getFrames = function () {
return _fork(requestFrames);
};
getFrame = function (frameKey) {
switch (Flow.Prelude.typeOf(frameKey)) {
case 'String':
return _fork(requestFrame, frameKey);
default:
return assist(getFrame);
}
};
bindFrames = function (key, sourceKeys) {
return _fork(requestBindFrames, key, sourceKeys);
};
getFrameSummary = function (frameKey) {
switch (Flow.Prelude.typeOf(frameKey)) {
case 'String':
return _fork(requestFrameSummary, frameKey);
default:
return assist(getFrameSummary);
}
};
getFrameData = function (frameKey) {
switch (Flow.Prelude.typeOf(frameKey)) {
case 'String':
return _fork(requestFrameData, frameKey, void 0, 0, 20);
default:
return assist(getFrameSummary);
}
};
requestDeleteFrame = function (frameKey, go) {
return _.requestDeleteFrame(frameKey, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendDeletedKeys([frameKey]));
}
});
};
deleteFrame = function (frameKey) {
if (frameKey) {
return _fork(requestDeleteFrame, frameKey);
} else {
return assist(deleteFrame);
}
};
extendExportFrame = function (result) {
return render_(result, H2O.ExportFrameOutput, result);
};
extendBindFrames = function (key, result) {
return render_(result, H2O.BindFramesOutput, key, result);
};
requestExportFrame = function (frameKey, path, opts, go) {
return _.requestExportFrame(frameKey, path, opts.overwrite ? true : false, function (error, result) {
if (error) {
return go(error);
} else {
return _.requestJob(result.job.key.name, function (error, job) {
if (error) {
return go(error);
} else {
return go(null, extendJob(job));
}
});
}
});
};
exportFrame = function (frameKey, path, opts) {
if (opts == null) {
opts = {};
}
if (frameKey && path) {
return _fork(requestExportFrame, frameKey, path, opts);
} else {
return assist(exportFrame, frameKey, path, opts);
}
};
requestDeleteFrames = function (frameKeys, go) {
var futures;
futures = lodash.map(frameKeys, function (frameKey) {
return _fork(_.requestDeleteFrame, frameKey);
});
return Flow.Async.join(futures, function (error, results) {
if (error) {
return go(error);
} else {
return go(null, extendDeletedKeys(frameKeys));
}
});
};
deleteFrames = function (frameKeys) {
switch (frameKeys.length) {
case 0:
return assist(deleteFrames);
case 1:
return deleteFrame(lodash.head(frameKeys));
default:
return _fork(requestDeleteFrames, frameKeys);
}
};
getColumnSummary = function (frameKey, columnName) {
return _fork(requestColumnSummary, frameKey, columnName);
};
requestModels = function (go) {
return _.requestModels(function (error, models) {
if (error) {
return go(error);
} else {
return go(null, extendModels(models));
}
});
};
requestModelsByKeys = function (modelKeys, go) {
var futures;
futures = lodash.map(modelKeys, function (key) {
return _fork(_.requestModel, key);
});
return Flow.Async.join(futures, function (error, models) {
if (error) {
return go(error);
} else {
return go(null, extendModels(models));
}
});
};
getModels = function (modelKeys) {
if (lodash.isArray(modelKeys)) {
if (modelKeys.length) {
return _fork(requestModelsByKeys, modelKeys);
} else {
return _fork(requestModels);
}
} else {
return _fork(requestModels);
}
};
requestGrids = function (go) {
return _.requestGrids(function (error, grids) {
if (error) {
return go(error);
} else {
return go(null, extendGrids(grids));
}
});
};
getGrids = function () {
return _fork(requestGrids);
};
requestModel = function (modelKey, go) {
return _.requestModel(modelKey, function (error, model) {
if (error) {
return go(error);
} else {
return go(null, extendModel(model));
}
});
};
getModel = function (modelKey) {
switch (Flow.Prelude.typeOf(modelKey)) {
case 'String':
return _fork(requestModel, modelKey);
default:
return assist(getModel);
}
};
requestGrid = function (gridKey, opts, go) {
return _.requestGrid(gridKey, opts, function (error, grid) {
if (error) {
return go(error);
} else {
return go(null, extendGrid(grid, opts));
}
});
};
getGrid = function (gridKey, opts) {
switch (Flow.Prelude.typeOf(gridKey)) {
case 'String':
return _fork(requestGrid, gridKey, opts);
default:
return assist(getGrid);
}
};
findColumnIndexByColumnLabel = function (frame, columnLabel) {
var column, i, _i, _len, _ref1;
_ref1 = frame.columns;
for (i = _i = 0, _len = _ref1.length; _i < _len; i = ++_i) {
column = _ref1[i];
if (column.label === columnLabel) {
return i;
}
}
throw new Flow.Error('Column [' + columnLabel + '] not found in frame');
};
findColumnIndicesByColumnLabels = function (frame, columnLabels) {
var columnLabel, _i, _len, _results;
_results = [];
for (_i = 0, _len = columnLabels.length; _i < _len; _i++) {
columnLabel = columnLabels[_i];
_results.push(findColumnIndexByColumnLabel(frame, columnLabel));
}
return _results;
};
requestImputeColumn = function (opts, go) {
var column, combineMethod, frame, groupByColumns, method;
frame = opts.frame, column = opts.column, method = opts.method, combineMethod = opts.combineMethod, groupByColumns = opts.groupByColumns;
combineMethod = combineMethod != null ? combineMethod : 'INTERPOLATE';
return _.requestFrameSummaryWithoutData(frame, function (error, result) {
var columnIndex, columnIndicesError, columnKeyError, groupByArg, groupByColumnIndices;
if (error) {
return go(error);
} else {
try {
columnIndex = findColumnIndexByColumnLabel(result, column);
} catch (_error) {
columnKeyError = _error;
return go(columnKeyError);
}
if (groupByColumns && groupByColumns.length) {
try {
groupByColumnIndices = findColumnIndicesByColumnLabels(result, groupByColumns);
} catch (_error) {
columnIndicesError = _error;
return go(columnIndicesError);
}
} else {
groupByColumnIndices = null;
}
groupByArg = groupByColumnIndices ? '[' + groupByColumnIndices.join(' ') + ']' : '[]';
return _.requestExec('(assign ' + frame + ' (h2o.impute ' + frame + ' ' + columnIndex + ' ' + JSON.stringify(method) + ' ' + JSON.stringify(combineMethod) + ' ' + groupByArg + '))', function (error, result) {
if (error) {
return go(error);
} else {
return requestColumnSummary(frame, column, go);
}
});
}
});
};
requestChangeColumnType = function (opts, go) {
var column, frame, method, type;
frame = opts.frame, column = opts.column, type = opts.type;
method = type === 'enum' ? 'as.factor' : 'as.numeric';
return _.requestFrameSummaryWithoutData(frame, function (error, result) {
var columnIndex, columnKeyError;
try {
columnIndex = findColumnIndexByColumnLabel(result, column);
} catch (_error) {
columnKeyError = _error;
return go(columnKeyError);
}
return _.requestExec('(assign ' + frame + ' (:= ' + frame + ' (' + method + ' (cols ' + frame + ' ' + columnIndex + ')) ' + columnIndex + ' [0:' + result.rows + ']))', function (error, result) {
if (error) {
return go(error);
} else {
return requestColumnSummary(frame, column, go);
}
});
});
};
imputeColumn = function (opts) {
if (opts && opts.frame && opts.column && opts.method) {
return _fork(requestImputeColumn, opts);
} else {
return assist(imputeColumn, opts);
}
};
changeColumnType = function (opts) {
if (opts && opts.frame && opts.column && opts.type) {
return _fork(requestChangeColumnType, opts);
} else {
return assist(changeColumnType, opts);
}
};
requestDeleteModel = function (modelKey, go) {
return _.requestDeleteModel(modelKey, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendDeletedKeys([modelKey]));
}
});
};
deleteModel = function (modelKey) {
if (modelKey) {
return _fork(requestDeleteModel, modelKey);
} else {
return assist(deleteModel);
}
};
extendImportModel = function (result) {
return render_(result, H2O.ImportModelOutput, result);
};
requestImportModel = function (path, opts, go) {
return _.requestImportModel(path, opts.overwrite ? true : false, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendImportModel(result));
}
});
};
importModel = function (path, opts) {
if (path && path.length) {
return _fork(requestImportModel, path, opts);
} else {
return assist(importModel, path, opts);
}
};
extendExportModel = function (result) {
return render_(result, H2O.ExportModelOutput, result);
};
requestExportModel = function (modelKey, path, opts, go) {
return _.requestExportModel(modelKey, path, opts.overwrite ? true : false, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendExportModel(result));
}
});
};
exportModel = function (modelKey, path, opts) {
if (modelKey && path) {
return _fork(requestExportModel, modelKey, path, opts);
} else {
return assist(exportModel, modelKey, path, opts);
}
};
requestDeleteModels = function (modelKeys, go) {
var futures;
futures = lodash.map(modelKeys, function (modelKey) {
return _fork(_.requestDeleteModel, modelKey);
});
return Flow.Async.join(futures, function (error, results) {
if (error) {
return go(error);
} else {
return go(null, extendDeletedKeys(modelKeys));
}
});
};
deleteModels = function (modelKeys) {
switch (modelKeys.length) {
case 0:
return assist(deleteModels);
case 1:
return deleteModel(lodash.head(modelKeys));
default:
return _fork(requestDeleteModels, modelKeys);
}
};
requestJob = function (key, go) {
return _.requestJob(key, function (error, job) {
if (error) {
return go(error);
} else {
return go(null, extendJob(job));
}
});
};
requestJobs = function (go) {
return _.requestJobs(function (error, jobs) {
if (error) {
return go(error);
} else {
return go(null, extendJobs(jobs));
}
});
};
getJobs = function () {
return _fork(requestJobs);
};
getJob = function (arg) {
switch (Flow.Prelude.typeOf(arg)) {
case 'String':
return _fork(requestJob, arg);
case 'Object':
if (arg.key != null) {
return getJob(arg.key);
} else {
return assist(getJob);
}
break;
default:
return assist(getJob);
}
};
requestCancelJob = function (key, go) {
return _.requestCancelJob(key, function (error) {
if (error) {
return go(error);
} else {
return go(null, extendCancelJob({}));
}
});
};
cancelJob = function (arg) {
switch (Flow.Prelude.typeOf(arg)) {
case 'String':
return _fork(requestCancelJob, arg);
default:
return assist(cancelJob);
}
};
extendImportResults = function (importResults) {
return render_(importResults, H2O.ImportFilesOutput, importResults);
};
requestImportFiles = function (paths, go) {
return _.requestImportFiles(paths, function (error, importResults) {
if (error) {
return go(error);
} else {
return go(null, extendImportResults(importResults));
}
});
};
importFiles = function (paths) {
switch (Flow.Prelude.typeOf(paths)) {
case 'Array':
return _fork(requestImportFiles, paths);
default:
return assist(importFiles);
}
};
extendParseSetupResults = function (args, parseSetupResults) {
return render_(parseSetupResults, H2O.SetupParseOutput, args, parseSetupResults);
};
requestImportAndParseSetup = function (paths, go) {
return _.requestImportFiles(paths, function (error, importResults) {
var sourceKeys;
if (error) {
return go(error);
} else {
sourceKeys = lodash.flatten(lodash.compact(lodash.map(importResults, function (result) {
return result.destination_frames;
})));
return _.requestParseSetup(sourceKeys, function (error, parseSetupResults) {
if (error) {
return go(error);
} else {
return go(null, extendParseSetupResults({ paths: paths }, parseSetupResults));
}
});
}
});
};
requestParseSetup = function (sourceKeys, go) {
return _.requestParseSetup(sourceKeys, function (error, parseSetupResults) {
if (error) {
return go(error);
} else {
return go(null, extendParseSetupResults({ source_frames: sourceKeys }, parseSetupResults));
}
});
};
setupParse = function (args) {
if (args.paths && lodash.isArray(args.paths)) {
return _fork(requestImportAndParseSetup, args.paths);
} else if (args.source_frames && lodash.isArray(args.source_frames)) {
return _fork(requestParseSetup, args.source_frames);
} else {
return assist(setupParse);
}
};
extendParseResult = function (parseResult) {
return render_(parseResult, H2O.JobOutput, parseResult.job);
};
requestImportAndParseFiles = function (paths, destinationKey, parseType, separator, columnCount, useSingleQuotes, columnNames, columnTypes, deleteOnDone, checkHeader, chunkSize, go) {
return _.requestImportFiles(paths, function (error, importResults) {
var sourceKeys;
if (error) {
return go(error);
} else {
sourceKeys = lodash.flatten(lodash.compact(lodash.map(importResults, function (result) {
return result.destination_frames;
})));
return _.requestParseFiles(sourceKeys, destinationKey, parseType, separator, columnCount, useSingleQuotes, columnNames, columnTypes, deleteOnDone, checkHeader, chunkSize, function (error, parseResult) {
if (error) {
return go(error);
} else {
return go(null, extendParseResult(parseResult));
}
});
}
});
};
requestParseFiles = function (sourceKeys, destinationKey, parseType, separator, columnCount, useSingleQuotes, columnNames, columnTypes, deleteOnDone, checkHeader, chunkSize, go) {
return _.requestParseFiles(sourceKeys, destinationKey, parseType, separator, columnCount, useSingleQuotes, columnNames, columnTypes, deleteOnDone, checkHeader, chunkSize, function (error, parseResult) {
if (error) {
return go(error);
} else {
return go(null, extendParseResult(parseResult));
}
});
};
parseFiles = function (opts) {
var checkHeader, chunkSize, columnCount, columnNames, columnTypes, deleteOnDone, destinationKey, parseType, separator, useSingleQuotes;
destinationKey = opts.destination_frame;
parseType = opts.parse_type;
separator = opts.separator;
columnCount = opts.number_columns;
useSingleQuotes = opts.single_quotes;
columnNames = opts.column_names;
columnTypes = opts.column_types;
deleteOnDone = opts.delete_on_done;
checkHeader = opts.check_header;
chunkSize = opts.chunk_size;
if (opts.paths) {
return _fork(requestImportAndParseFiles, opts.paths, destinationKey, parseType, separator, columnCount, useSingleQuotes, columnNames, columnTypes, deleteOnDone, checkHeader, chunkSize);
} else {
return _fork(requestParseFiles, opts.source_frames, destinationKey, parseType, separator, columnCount, useSingleQuotes, columnNames, columnTypes, deleteOnDone, checkHeader, chunkSize);
}
};
requestModelBuild = function (algo, opts, go) {
return _.requestModelBuild(algo, opts, function (error, result) {
var messages, validation;
if (error) {
return go(error);
} else {
if (result.error_count > 0) {
messages = function () {
var _i, _len, _ref1, _results;
_ref1 = result.messages;
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
validation = _ref1[_i];
_results.push(validation.message);
}
return _results;
}();
return go(new Flow.Error('Model build failure: ' + messages.join('; ')));
} else {
return go(null, extendJob(result.job));
}
}
});
};
buildModel = function (algo, opts) {
if (algo && opts && lodash.keys(opts).length > 1) {
return _fork(requestModelBuild, algo, opts);
} else {
return assist(buildModel, algo, opts);
}
};
unwrapPrediction = function (go) {
return function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendPrediction(result));
}
};
};
requestPredict = function (destinationKey, modelKey, frameKey, options, go) {
return _.requestPredict(destinationKey, modelKey, frameKey, options, unwrapPrediction(go));
};
requestPredicts = function (opts, go) {
var futures;
futures = lodash.map(opts, function (opt) {
var frameKey, modelKey, options;
modelKey = opt.model, frameKey = opt.frame, options = opt.options;
return _fork(_.requestPredict, null, modelKey, frameKey, options || {});
});
return Flow.Async.join(futures, function (error, predictions) {
if (error) {
return go(error);
} else {
return go(null, extendPredictions(opts, predictions));
}
});
};
predict = function (opts) {
var combos, deep_features_hidden_layer, exemplar_index, frame, frames, leaf_node_assignment, model, models, predictions_frame, reconstruction_error, _i, _j, _len, _len1;
if (opts == null) {
opts = {};
}
predictions_frame = opts.predictions_frame, model = opts.model, models = opts.models, frame = opts.frame, frames = opts.frames, reconstruction_error = opts.reconstruction_error, deep_features_hidden_layer = opts.deep_features_hidden_layer, leaf_node_assignment = opts.leaf_node_assignment, exemplar_index = opts.exemplar_index;
if (models || frames) {
if (!models) {
if (model) {
models = [model];
}
}
if (!frames) {
if (frame) {
frames = [frame];
}
}
if (frames && models) {
combos = [];
for (_i = 0, _len = models.length; _i < _len; _i++) {
model = models[_i];
for (_j = 0, _len1 = frames.length; _j < _len1; _j++) {
frame = frames[_j];
combos.push({
model: model,
frame: frame
});
}
}
return _fork(requestPredicts, combos);
} else {
return assist(predict, {
predictions_frame: predictions_frame,
models: models,
frames: frames
});
}
} else {
if (model && frame) {
return _fork(requestPredict, predictions_frame, model, frame, {
reconstruction_error: reconstruction_error,
deep_features_hidden_layer: deep_features_hidden_layer,
leaf_node_assignment: leaf_node_assignment
});
} else if (model && exemplar_index !== void 0) {
return _fork(requestPredict, predictions_frame, model, null, { exemplar_index: exemplar_index });
} else {
return assist(predict, {
predictions_frame: predictions_frame,
model: model,
frame: frame
});
}
}
};
requestPrediction = function (modelKey, frameKey, go) {
return _.requestPrediction(modelKey, frameKey, unwrapPrediction(go));
};
requestPredictions = function (opts, go) {
var frameKey, futures, modelKey;
if (lodash.isArray(opts)) {
futures = lodash.map(opts, function (opt) {
var frameKey, modelKey;
modelKey = opt.model, frameKey = opt.frame;
return _fork(_.requestPredictions, modelKey, frameKey);
});
return Flow.Async.join(futures, function (error, predictions) {
var uniquePredictions;
if (error) {
return go(error);
} else {
uniquePredictions = lodash.values(lodash.indexBy(lodash.flatten(predictions, true), function (prediction) {
return prediction.model.name + prediction.frame.name;
}));
return go(null, extendPredictions(opts, uniquePredictions));
}
});
} else {
modelKey = opts.model, frameKey = opts.frame;
return _.requestPredictions(modelKey, frameKey, function (error, predictions) {
if (error) {
return go(error);
} else {
return go(null, extendPredictions(opts, predictions));
}
});
}
};
getPrediction = function (opts) {
var frame, model, predictions_frame;
if (opts == null) {
opts = {};
}
predictions_frame = opts.predictions_frame, model = opts.model, frame = opts.frame;
if (model && frame) {
return _fork(requestPrediction, model, frame);
} else {
return assist(getPrediction, {
predictions_frame: predictions_frame,
model: model,
frame: frame
});
}
};
getPredictions = function (opts) {
if (opts == null) {
opts = {};
}
return _fork(requestPredictions, opts);
};
requestCloud = function (go) {
return _.requestCloud(function (error, cloud) {
if (error) {
return go(error);
} else {
return go(null, extendCloud(cloud));
}
});
};
getCloud = function () {
return _fork(requestCloud);
};
requestTimeline = function (go) {
return _.requestTimeline(function (error, timeline) {
if (error) {
return go(error);
} else {
return go(null, extendTimeline(timeline));
}
});
};
getTimeline = function () {
return _fork(requestTimeline);
};
requestStackTrace = function (go) {
return _.requestStackTrace(function (error, stackTrace) {
if (error) {
return go(error);
} else {
return go(null, extendStackTrace(stackTrace));
}
});
};
getStackTrace = function () {
return _fork(requestStackTrace);
};
requestLogFile = function (nodeIndex, fileType, go) {
return _.requestCloud(function (error, cloud) {
var NODE_INDEX_SELF;
if (error) {
return go(error);
} else {
if (nodeIndex < 0 || nodeIndex >= cloud.nodes.length) {
NODE_INDEX_SELF = -1;
nodeIndex = NODE_INDEX_SELF;
}
return _.requestLogFile(nodeIndex, fileType, function (error, logFile) {
if (error) {
return go(error);
} else {
return go(null, extendLogFile(cloud, nodeIndex, fileType, logFile));
}
});
}
});
};
getLogFile = function (nodeIndex, fileType) {
if (nodeIndex == null) {
nodeIndex = -1;
}
if (fileType == null) {
fileType = 'info';
}
return _fork(requestLogFile, nodeIndex, fileType);
};
requestNetworkTest = function (go) {
return _.requestNetworkTest(function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendNetworkTest(result));
}
});
};
testNetwork = function () {
return _fork(requestNetworkTest);
};
requestRemoveAll = function (go) {
return _.requestRemoveAll(function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendDeletedKeys([]));
}
});
};
deleteAll = function () {
return _fork(requestRemoveAll);
};
extendRDDs = function (rdds) {
render_(rdds, H2O.RDDsOutput, rdds);
return rdds;
};
requestRDDs = function (go) {
return _.requestRDDs(function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendRDDs(result.rdds));
}
});
};
getRDDs = function () {
return _fork(requestRDDs);
};
extendDataFrames = function (dataframes) {
render_(dataframes, H2O.DataFramesOutput, dataframes);
return dataframes;
};
requestDataFrames = function (go) {
return _.requestDataFrames(function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendDataFrames(result.dataframes));
}
});
};
getDataFrames = function () {
return _fork(requestDataFrames);
};
extendAsH2OFrame = function (result) {
render_(result, H2O.H2OFrameOutput, result);
return result;
};
requestAsH2OFrameFromRDD = function (rdd_id, name, go) {
return _.requestAsH2OFrameFromRDD(rdd_id, name, function (error, h2oframe_id) {
if (error) {
return go(error);
} else {
return go(null, extendAsH2OFrame(h2oframe_id));
}
});
};
asH2OFrameFromRDD = function (rdd_id, name) {
if (name == null) {
name = void 0;
}
return _fork(requestAsH2OFrameFromRDD, rdd_id, name);
};
requestAsH2OFrameFromDF = function (df_id, name, go) {
return _.requestAsH2OFrameFromDF(df_id, name, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendAsH2OFrame(result));
}
});
};
asH2OFrameFromDF = function (df_id, name) {
if (name == null) {
name = void 0;
}
return _fork(requestAsH2OFrameFromDF, df_id, name);
};
extendAsDataFrame = function (result) {
render_(result, H2O.DataFrameOutput, result);
return result;
};
requestAsDataFrame = function (hf_id, name, go) {
return _.requestAsDataFrame(hf_id, name, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendAsDataFrame(result));
}
});
};
asDataFrame = function (hf_id, name) {
if (name == null) {
name = void 0;
}
return _fork(requestAsDataFrame, hf_id, name);
};
requestScalaCode = function (session_id, code, go) {
return _.requestScalaCode(session_id, code, function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendScalaCode(result));
}
});
};
extendScalaCode = function (result) {
render_(result, H2O.ScalaCodeOutput, result);
return result;
};
runScalaCode = function (session_id, code) {
return _fork(requestScalaCode, session_id, code);
};
requestScalaIntp = function (go) {
return _.requestScalaIntp(function (error, result) {
if (error) {
return go(error);
} else {
return go(null, extendScalaIntp(result));
}
});
};
extendScalaIntp = function (result) {
render_(result, H2O.ScalaIntpOutput, result);
return result;
};
getScalaIntp = function () {
return _fork(requestScalaIntp);
};
requestProfile = function (depth, go) {
return _.requestProfile(depth, function (error, profile) {
if (error) {
return go(error);
} else {
return go(null, extendProfile(profile));
}
});
};
getProfile = function (opts) {
if (!opts) {
opts = { depth: 10 };
}
return _fork(requestProfile, opts.depth);
};
loadScript = function (path, go) {
var onDone, onFail;
onDone = function (script, status) {
return go(null, {
script: script,
status: status
});
};
onFail = function (jqxhr, settings, error) {
return go(error);
};
return $.getScript(path).done(onDone).fail(onFail);
};
dumpFuture = function (result, go) {
if (result == null) {
result = {};
}
console.debug(result);
return go(null, render_(result, Flow.ObjectBrowser, 'dump', result));
};
dump = function (f) {
if (f != null ? f.isFuture : void 0) {
return _fork(dumpFuture, f);
} else {
return Flow.Async.async(function () {
return f;
});
}
};
assist = function () {
var args, func;
func = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (func === void 0) {
return _fork(proceed, H2O.Assist, [_assistance]);
} else {
switch (func) {
case importFiles:
return _fork(proceed, H2O.ImportFilesInput, []);
case buildModel:
return _fork(proceed, H2O.ModelInput, args);
case predict:
case getPrediction:
return _fork(proceed, H2O.PredictInput, args);
case createFrame:
return _fork(proceed, H2O.CreateFrameInput, args);
case splitFrame:
return _fork(proceed, H2O.SplitFrameInput, args);
case exportFrame:
return _fork(proceed, H2O.ExportFrameInput, args);
case imputeColumn:
return _fork(proceed, H2O.ImputeInput, args);
case importModel:
return _fork(proceed, H2O.ImportModelInput, args);
case exportModel:
return _fork(proceed, H2O.ExportModelInput, args);
default:
return _fork(proceed, H2O.NoAssist, []);
}
}
};
Flow.Dataflow.link(_.ready, function () {
Flow.Dataflow.link(_.ls, ls);
Flow.Dataflow.link(_.inspect, inspect);
Flow.Dataflow.link(_.plot, function (plot) {
return plot(lightning);
});
Flow.Dataflow.link(_.grid, function (frame) {
return lightning(lightning.select(), lightning.from(frame));
});
Flow.Dataflow.link(_.enumerate, function (frame) {
return lightning(lightning.select(0), lightning.from(frame));
});
Flow.Dataflow.link(_.requestFrameDataE, requestFrameData);
return Flow.Dataflow.link(_.requestFrameSummarySliceE, requestFrameSummarySlice);
});
initAssistanceSparklingWater = function () {
_assistance.getRDDs = {
description: 'Get a list of Spark\'s RDDs',
icon: 'table'
};
return _assistance.getDataFrames = {
description: 'Get a list of Spark\'s data frames',
icon: 'table'
};
};
Flow.Dataflow.link(_.initialized, function () {
if (_.onSparklingWater) {
return initAssistanceSparklingWater();
}
});
routines = {
fork: _fork,
join: _join,
call: _call,
apply: _apply,
isFuture: _isFuture,
signal: Flow.Dataflow.signal,
signals: Flow.Dataflow.signals,
isSignal: Flow.Dataflow.isSignal,
act: Flow.Dataflow.act,
react: Flow.Dataflow.react,
lift: Flow.Dataflow.lift,
merge: Flow.Dataflow.merge,
dump: dump,
inspect: inspect,
plot: plot,
grid: grid,
get: _get,
assist: assist,
gui: gui,
loadScript: loadScript,
getJobs: getJobs,
getJob: getJob,
cancelJob: cancelJob,
importFiles: importFiles,
setupParse: setupParse,
parseFiles: parseFiles,
createFrame: createFrame,
splitFrame: splitFrame,
getFrames: getFrames,
getFrame: getFrame,
bindFrames: bindFrames,
getFrameSummary: getFrameSummary,
getFrameData: getFrameData,
deleteFrames: deleteFrames,
deleteFrame: deleteFrame,
exportFrame: exportFrame,
getColumnSummary: getColumnSummary,
changeColumnType: changeColumnType,
imputeColumn: imputeColumn,
buildModel: buildModel,
getGrids: getGrids,
getModels: getModels,
getModel: getModel,
getGrid: getGrid,
deleteModels: deleteModels,
deleteModel: deleteModel,
importModel: importModel,
exportModel: exportModel,
predict: predict,
getPrediction: getPrediction,
getPredictions: getPredictions,
getCloud: getCloud,
getTimeline: getTimeline,
getProfile: getProfile,
getStackTrace: getStackTrace,
getLogFile: getLogFile,
testNetwork: testNetwork,
deleteAll: deleteAll
};
if (_.onSparklingWater) {
routinesOnSw = {
getDataFrames: getDataFrames,
getRDDs: getRDDs,
getScalaIntp: getScalaIntp,
runScalaCode: runScalaCode,
asH2OFrameFromRDD: asH2OFrameFromRDD,
asH2OFrameFromDF: asH2OFrameFromDF,
asDataFrame: asDataFrame
};
for (attrname in routinesOnSw) {
routines[attrname] = routinesOnSw[attrname];
}
}
return routines;
};
}.call(this));
(function () {
var getFileBaseName, validateFileExtension;
validateFileExtension = function (filename, extension) {
return -1 !== filename.indexOf(extension, filename.length - extension.length);
};
getFileBaseName = function (filename, extension) {
return Flow.Util.sanitizeName(filename.substr(0, filename.length - extension.length));
};
H2O.Util = {
validateFileExtension: validateFileExtension,
getFileBaseName: getFileBaseName
};
}.call(this));
(function () {
H2O.Assist = function (_, _go, _items) {
var createAssistItem, item, name;
createAssistItem = function (name, item) {
return {
name: name,
description: item.description,
icon: 'fa fa-' + item.icon + ' flow-icon',
execute: function () {
return _.insertAndExecuteCell('cs', name);
}
};
};
lodash.defer(_go);
return {
routines: function () {
var _results;
_results = [];
for (name in _items) {
item = _items[name];
_results.push(createAssistItem(name, item));
}
return _results;
}(),
template: 'flow-assist'
};
};
}.call(this));
(function () {
H2O.BindFramesOutput = function (_, _go, key, result) {
var viewFrame;
viewFrame = function () {
return _.insertAndExecuteCell('cs', 'getFrameSummary ' + Flow.Prelude.stringify(key));
};
lodash.defer(_go);
return {
viewFrame: viewFrame,
template: 'flow-bind-frames-output'
};
};
}.call(this));
(function () {
H2O.CancelJobOutput = function (_, _go, _cancellation) {
lodash.defer(_go);
return { template: 'flow-cancel-job-output' };
};
}.call(this));
(function () {
H2O.CloudOutput = function (_, _go, _cloud) {
var avg, createGrid, createNodeRow, createTotalRow, format3f, formatMilliseconds, formatThreads, prettyPrintBytes, refresh, sum, toggleExpansion, toggleRefresh, updateCloud, _exception, _hasConsensus, _headers, _isBusy, _isExpanded, _isHealthy, _isLive, _isLocked, _name, _nodeCounts, _nodes, _size, _sizes, _uptime, _version;
_exception = Flow.Dataflow.signal(null);
_isLive = Flow.Dataflow.signal(false);
_isBusy = Flow.Dataflow.signal(false);
_isExpanded = Flow.Dataflow.signal(false);
_name = Flow.Dataflow.signal();
_size = Flow.Dataflow.signal();
_uptime = Flow.Dataflow.signal();
_version = Flow.Dataflow.signal();
_nodeCounts = Flow.Dataflow.signal();
_hasConsensus = Flow.Dataflow.signal();
_isLocked = Flow.Dataflow.signal();
_isHealthy = Flow.Dataflow.signal();
_nodes = Flow.Dataflow.signals();
formatMilliseconds = function (ms) {
return Flow.Util.fromNow(new Date(new Date().getTime() - ms));
};
format3f = d3.format('.3f');
_sizes = [
'B',
'KB',
'MB',
'GB',
'TB',
'PB',
'EB',
'ZB',
'YB'
];
prettyPrintBytes = function (bytes) {
var i;
if (bytes === 0) {
return '-';
}
i = Math.floor(Math.log(bytes) / Math.log(1024));
return (bytes / Math.pow(1024, i)).toFixed(2) + ' ' + _sizes[i];
};
formatThreads = function (fjs) {
var i, max_lo, s, _i, _j, _k, _ref;
for (max_lo = _i = 120; _i > 0; max_lo = --_i) {
if (fjs[max_lo - 1] !== -1) {
break;
}
}
s = '[';
for (i = _j = 0; 0 <= max_lo ? _j < max_lo : _j > max_lo; i = 0 <= max_lo ? ++_j : --_j) {
s += Math.max(fjs[i], 0);
s += '/';
}
s += '.../';
for (i = _k = 120, _ref = fjs.length - 1; 120 <= _ref ? _k < _ref : _k > _ref; i = 120 <= _ref ? ++_k : --_k) {
s += fjs[i];
s += '/';
}
s += fjs[fjs.length - 1];
s += ']';
return s;
};
sum = function (nodes, attrOf) {
var node, total, _i, _len;
total = 0;
for (_i = 0, _len = nodes.length; _i < _len; _i++) {
node = nodes[_i];
total += attrOf(node);
}
return total;
};
avg = function (nodes, attrOf) {
return sum(nodes, attrOf) / nodes.length;
};
_headers = [
[
' ',
true
],
[
'Name',
true
],
[
'Ping',
true
],
[
'Cores',
true
],
[
'Load',
true
],
[
'My CPU %',
true
],
[
'Sys CPU %',
true
],
[
'GFLOPS',
true
],
[
'Memory Bandwidth',
true
],
[
'Data (Used/Total)',
true
],
[
'Data (% Cached)',
true
],
[
'GC (Free / Total / Max)',
true
],
[
'Disk (Free / Max)',
true
],
[
'Disk (% Free)',
true
],
[
'PID',
false
],
[
'Keys',
false
],
[
'TCP',
false
],
[
'FD',
false
],
[
'RPCs',
false
],
[
'Threads',
false
],
[
'Tasks',
false
]
];
createNodeRow = function (node) {
return [
node.healthy,
node.ip_port,
moment(new Date(node.last_ping)).fromNow(),
node.num_cpus,
format3f(node.sys_load),
node.my_cpu_pct,
node.sys_cpu_pct,
format3f(node.gflops),
'' + prettyPrintBytes(node.mem_bw) + ' / s',
'' + prettyPrintBytes(node.mem_value_size) + ' / ' + prettyPrintBytes(node.total_value_size),
'' + Math.floor(node.mem_value_size * 100 / node.total_value_size) + '%',
'' + prettyPrintBytes(node.free_mem) + ' / ' + prettyPrintBytes(node.tot_mem) + ' / ' + prettyPrintBytes(node.max_mem),
'' + prettyPrintBytes(node.free_disk) + ' / ' + prettyPrintBytes(node.max_disk),
'' + Math.floor(node.free_disk * 100 / node.max_disk) + '%',
node.pid,
node.num_keys,
node.tcps_active,
node.open_fds,
node.rpcs_active,
formatThreads(node.fjthrds),
formatThreads(node.fjqueue)
];
};
createTotalRow = function (cloud) {
var nodes;
nodes = cloud.nodes;
return [
cloud.cloud_healthy,
'TOTAL',
'-',
sum(nodes, function (node) {
return node.num_cpus;
}),
format3f(sum(nodes, function (node) {
return node.sys_load;
})),
'-',
'-',
'' + format3f(sum(nodes, function (node) {
return node.gflops;
})),
'' + prettyPrintBytes(sum(nodes, function (node) {
return node.mem_bw;
})) + ' / s',
'' + prettyPrintBytes(sum(nodes, function (node) {
return node.mem_value_size;
})) + ' / ' + prettyPrintBytes(sum(nodes, function (node) {
return node.total_value_size;
})),
'' + Math.floor(avg(nodes, function (node) {
return node.mem_value_size * 100 / node.total_value_size;
})) + '%',
'' + prettyPrintBytes(sum(nodes, function (node) {
return node.free_mem;
})) + ' / ' + prettyPrintBytes(sum(nodes, function (node) {
return node.tot_mem;
})) + ' / ' + prettyPrintBytes(sum(nodes, function (node) {
return node.max_mem;
})),
'' + prettyPrintBytes(sum(nodes, function (node) {
return node.free_disk;
})) + ' / ' + prettyPrintBytes(sum(nodes, function (node) {
return node.max_disk;
})),
'' + Math.floor(avg(nodes, function (node) {
return node.free_disk * 100 / node.max_disk;
})) + '%',
'-',
sum(nodes, function (node) {
return node.num_keys;
}),
sum(nodes, function (node) {
return node.tcps_active;
}),
sum(nodes, function (node) {
return node.open_fds;
}),
sum(nodes, function (node) {
return node.rpcs_active;
}),
'-',
'-'
];
};
createGrid = function (cloud, isExpanded) {
var caption, cell, danger, grid, i, nodeRows, row, showAlways, success, table, tbody, td, tds, th, thead, ths, tr, trs, _ref;
_ref = Flow.HTML.template('.grid', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'i.fa.fa-check-circle.text-success', 'i.fa.fa-exclamation-circle.text-danger'), grid = _ref[0], table = _ref[1], thead = _ref[2], tbody = _ref[3], tr = _ref[4], th = _ref[5], td = _ref[6], success = _ref[7], danger = _ref[8];
nodeRows = lodash.map(cloud.nodes, createNodeRow);
nodeRows.push(createTotalRow(cloud));
ths = function () {
var _i, _len, _ref1, _results;
_results = [];
for (_i = 0, _len = _headers.length; _i < _len; _i++) {
_ref1 = _headers[_i], caption = _ref1[0], showAlways = _ref1[1];
if (showAlways || isExpanded) {
_results.push(th(caption));
}
}
return _results;
}();
trs = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = nodeRows.length; _i < _len; _i++) {
row = nodeRows[_i];
tds = function () {
var _j, _len1, _results1;
_results1 = [];
for (i = _j = 0, _len1 = row.length; _j < _len1; i = ++_j) {
cell = row[i];
if (_headers[i][1] || isExpanded) {
if (i === 0) {
_results1.push(td(cell ? success() : danger()));
} else {
_results1.push(td(cell));
}
}
}
return _results1;
}();
_results.push(tr(tds));
}
return _results;
}();
return Flow.HTML.render('div', grid([table([
thead(tr(ths)),
tbody(trs)
])]));
};
updateCloud = function (cloud, isExpanded) {
_name(cloud.cloud_name);
_version(cloud.version);
_hasConsensus(cloud.consensus);
_uptime(formatMilliseconds(cloud.cloud_uptime_millis));
_nodeCounts('' + (cloud.cloud_size - cloud.bad_nodes) + ' / ' + cloud.cloud_size);
_isLocked(cloud.locked);
_isHealthy(cloud.cloud_healthy);
return _nodes(createGrid(cloud, isExpanded));
};
toggleRefresh = function () {
return _isLive(!_isLive());
};
refresh = function () {
_isBusy(true);
return _.requestCloud(function (error, cloud) {
_isBusy(false);
if (error) {
_exception(Flow.Failure(_, new Flow.Error('Error fetching cloud status', error)));
return _isLive(false);
} else {
updateCloud(_cloud = cloud, _isExpanded());
if (_isLive()) {
return lodash.delay(refresh, 2000);
}
}
});
};
Flow.Dataflow.act(_isLive, function (isLive) {
if (isLive) {
return refresh();
}
});
toggleExpansion = function () {
return _isExpanded(!_isExpanded());
};
Flow.Dataflow.act(_isExpanded, function (isExpanded) {
return updateCloud(_cloud, isExpanded);
});
updateCloud(_cloud, _isExpanded());
lodash.defer(_go);
return {
name: _name,
size: _size,
uptime: _uptime,
version: _version,
nodeCounts: _nodeCounts,
hasConsensus: _hasConsensus,
isLocked: _isLocked,
isHealthy: _isHealthy,
nodes: _nodes,
isLive: _isLive,
isBusy: _isBusy,
toggleRefresh: toggleRefresh,
refresh: refresh,
isExpanded: _isExpanded,
toggleExpansion: toggleExpansion,
template: 'flow-cloud-output'
};
};
}.call(this));
(function () {
H2O.ColumnSummaryOutput = function (_, _go, frameKey, frame, columnName) {
var column, impute, inspect, renderPlot, table, _characteristicsPlot, _distributionPlot, _domainPlot, _summaryPlot;
column = lodash.head(frame.columns);
_characteristicsPlot = Flow.Dataflow.signal(null);
_summaryPlot = Flow.Dataflow.signal(null);
_distributionPlot = Flow.Dataflow.signal(null);
_domainPlot = Flow.Dataflow.signal(null);
renderPlot = function (target, render) {
return render(function (error, vis) {
if (error) {
return console.debug(error);
} else {
return target(vis.element);
}
});
};
if (table = _.inspect('characteristics', frame)) {
renderPlot(_characteristicsPlot, _.plot(function (g) {
return g(g.rect(g.position(g.stack(g.avg('percent'), 0), 'All'), g.fillColor('characteristic')), g.groupBy(g.factor(g.value('All')), 'characteristic'), g.from(table));
}));
}
if (table = _.inspect('distribution', frame)) {
renderPlot(_distributionPlot, _.plot(function (g) {
return g(g.rect(g.position('interval', 'count'), g.width(g.value(1))), g.from(table));
}));
}
if (table = _.inspect('summary', frame)) {
renderPlot(_summaryPlot, _.plot(function (g) {
return g(g.schema(g.position('min', 'q1', 'q2', 'q3', 'max', 'column')), g.from(table));
}));
}
if (table = _.inspect('domain', frame)) {
renderPlot(_domainPlot, _.plot(function (g) {
return g(g.rect(g.position('count', 'label')), g.from(table), g.limit(1000));
}));
}
impute = function () {
return _.insertAndExecuteCell('cs', 'imputeColumn frame: ' + Flow.Prelude.stringify(frameKey) + ', column: ' + Flow.Prelude.stringify(columnName));
};
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect getColumnSummary ' + Flow.Prelude.stringify(frameKey) + ', ' + Flow.Prelude.stringify(columnName));
};
lodash.defer(_go);
return {
label: column.label,
characteristicsPlot: _characteristicsPlot,
summaryPlot: _summaryPlot,
distributionPlot: _distributionPlot,
domainPlot: _domainPlot,
impute: impute,
inspect: inspect,
template: 'flow-column-summary-output'
};
};
}.call(this));
(function () {
H2O.CreateFrameInput = function (_, _go) {
var createFrame, _binaryFraction, _binaryOnesFraction, _categoricalFraction, _columns, _factors, _hasResponse, _integerFraction, _integerRange, _key, _missingFraction, _randomize, _realRange, _responseFactors, _rows, _seed, _seed_for_column_types, _stringFraction, _timeFraction, _value;
_key = Flow.Dataflow.signal('');
_rows = Flow.Dataflow.signal(10000);
_columns = Flow.Dataflow.signal(100);
_seed = Flow.Dataflow.signal(7595850248774472000);
_seed_for_column_types = Flow.Dataflow.signal(-1);
_randomize = Flow.Dataflow.signal(true);
_value = Flow.Dataflow.signal(0);
_realRange = Flow.Dataflow.signal(100);
_categoricalFraction = Flow.Dataflow.signal(0.1);
_factors = Flow.Dataflow.signal(5);
_integerFraction = Flow.Dataflow.signal(0.5);
_binaryFraction = Flow.Dataflow.signal(0.1);
_binaryOnesFraction = Flow.Dataflow.signal(0.02);
_timeFraction = Flow.Dataflow.signal(0);
_stringFraction = Flow.Dataflow.signal(0);
_integerRange = Flow.Dataflow.signal(1);
_missingFraction = Flow.Dataflow.signal(0.01);
_responseFactors = Flow.Dataflow.signal(2);
_hasResponse = Flow.Dataflow.signal(false);
createFrame = function () {
var opts;
opts = {
dest: _key(),
rows: _rows(),
cols: _columns(),
seed: _seed(),
seed_for_column_types: _seed_for_column_types(),
randomize: _randomize(),
value: _value(),
real_range: _realRange(),
categorical_fraction: _categoricalFraction(),
factors: _factors(),
integer_fraction: _integerFraction(),
binary_fraction: _binaryFraction(),
binary_ones_fraction: _binaryOnesFraction(),
time_fraction: _timeFraction(),
string_fraction: _stringFraction(),
integer_range: _integerRange(),
missing_fraction: _missingFraction(),
response_factors: _responseFactors(),
has_response: _hasResponse()
};
return _.insertAndExecuteCell('cs', 'createFrame ' + Flow.Prelude.stringify(opts));
};
lodash.defer(_go);
return {
key: _key,
rows: _rows,
columns: _columns,
seed: _seed,
seed_for_column_types: _seed_for_column_types,
randomize: _randomize,
value: _value,
realRange: _realRange,
categoricalFraction: _categoricalFraction,
factors: _factors,
integerFraction: _integerFraction,
binaryFraction: _binaryFraction,
binaryOnesFraction: _binaryOnesFraction,
timeFraction: _timeFraction,
stringFraction: _stringFraction,
integerRange: _integerRange,
missingFraction: _missingFraction,
responseFactors: _responseFactors,
hasResponse: _hasResponse,
createFrame: createFrame,
template: 'flow-create-frame-input'
};
};
}.call(this));
(function () {
H2O.DataFrameOutput = function (_, _go, _result) {
var createDataFrameView, _dataFrameView;
_dataFrameView = Flow.Dataflow.signal(null);
createDataFrameView = function (result) {
return { dataframe_id: result.dataframe_id };
};
_dataFrameView(createDataFrameView(_result));
lodash.defer(_go);
return {
dataFrameView: _dataFrameView,
template: 'flow-dataframe-output'
};
};
}.call(this));
(function () {
H2O.DataFramesOutput = function (_, _go, _dataFrames) {
var createDataFrameView, _dataFramesViews;
_dataFramesViews = Flow.Dataflow.signal([]);
createDataFrameView = function (dataFrame) {
return {
dataframe_id: dataFrame.dataframe_id,
partitions: dataFrame.partitions
};
};
_dataFramesViews(lodash.map(_dataFrames, createDataFrameView));
lodash.defer(_go);
return {
dataFrameViews: _dataFramesViews,
hasDataFrames: _dataFrames.length > 0,
template: 'flow-dataframes-output'
};
};
}.call(this));
(function () {
H2O.DeleteObjectsOutput = function (_, _go, _keys) {
lodash.defer(_go);
return {
hasKeys: _keys.length > 0,
keys: _keys,
template: 'flow-delete-objects-output'
};
};
}.call(this));
(function () {
H2O.ExportFrameInput = function (_, _go, frameKey, path, opt) {
var exportFrame, _canExportFrame, _frames, _overwrite, _path, _selectedFrame;
_frames = Flow.Dataflow.signal([]);
_selectedFrame = Flow.Dataflow.signal(frameKey);
_path = Flow.Dataflow.signal(null);
_overwrite = Flow.Dataflow.signal(true);
_canExportFrame = Flow.Dataflow.lift(_selectedFrame, _path, function (frame, path) {
return frame && path;
});
exportFrame = function () {
return _.insertAndExecuteCell('cs', 'exportFrame ' + Flow.Prelude.stringify(_selectedFrame()) + ', ' + Flow.Prelude.stringify(_path()) + ', overwrite: ' + (_overwrite() ? 'true' : 'false'));
};
_.requestFrames(function (error, frames) {
var frame;
if (error) {
} else {
_frames(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = frames.length; _i < _len; _i++) {
frame = frames[_i];
_results.push(frame.frame_id.name);
}
return _results;
}());
return _selectedFrame(frameKey);
}
});
lodash.defer(_go);
return {
frames: _frames,
selectedFrame: _selectedFrame,
path: _path,
overwrite: _overwrite,
canExportFrame: _canExportFrame,
exportFrame: exportFrame,
template: 'flow-export-frame-input'
};
};
}.call(this));
(function () {
H2O.ExportFrameOutput = function (_, _go, result) {
lodash.defer(_go);
return { template: 'flow-export-frame-output' };
};
}.call(this));
(function () {
H2O.ExportModelInput = function (_, _go, modelKey, path, opt) {
var exportModel, _canExportModel, _models, _overwrite, _path, _selectedModelKey;
if (opt == null) {
opt = {};
}
_models = Flow.Dataflow.signal([]);
_selectedModelKey = Flow.Dataflow.signal(null);
_path = Flow.Dataflow.signal(null);
_overwrite = Flow.Dataflow.signal(opt.overwrite ? true : false);
_canExportModel = Flow.Dataflow.lift(_selectedModelKey, _path, function (modelKey, path) {
return modelKey && path;
});
exportModel = function () {
return _.insertAndExecuteCell('cs', 'exportModel ' + Flow.Prelude.stringify(_selectedModelKey()) + ', ' + Flow.Prelude.stringify(_path()) + ', overwrite: ' + (_overwrite() ? 'true' : 'false'));
};
_.requestModels(function (error, models) {
var model;
if (error) {
} else {
_models(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = models.length; _i < _len; _i++) {
model = models[_i];
_results.push(model.model_id.name);
}
return _results;
}());
return _selectedModelKey(modelKey);
}
});
lodash.defer(_go);
return {
models: _models,
selectedModelKey: _selectedModelKey,
path: _path,
overwrite: _overwrite,
canExportModel: _canExportModel,
exportModel: exportModel,
template: 'flow-export-model-input'
};
};
}.call(this));
(function () {
H2O.ExportModelOutput = function (_, _go, result) {
lodash.defer(_go);
return { template: 'flow-export-model-output' };
};
}.call(this));
(function () {
Flow.FileOpenDialog = function (_, _go) {
var accept, checkIfNameIsInUse, decline, uploadFile, _canAccept, _file, _form, _overwrite;
_overwrite = Flow.Dataflow.signal(false);
_form = Flow.Dataflow.signal(null);
_file = Flow.Dataflow.signal(null);
_canAccept = Flow.Dataflow.lift(_file, function (file) {
if (file != null ? file.name : void 0) {
return H2O.Util.validateFileExtension(file.name, '.flow');
} else {
return false;
}
});
checkIfNameIsInUse = function (name, go) {
return _.requestObjectExists('notebook', name, function (error, exists) {
return go(exists);
});
};
uploadFile = function (basename) {
return _.requestUploadObject('notebook', basename, new FormData(_form()), function (error, filename) {
return _go({
error: error,
filename: filename
});
});
};
accept = function () {
var basename, file;
if (file = _file()) {
basename = H2O.Util.getFileBaseName(file.name, '.flow');
if (_overwrite()) {
return uploadFile(basename);
} else {
return checkIfNameIsInUse(basename, function (isNameInUse) {
if (isNameInUse) {
return _overwrite(true);
} else {
return uploadFile(basename);
}
});
}
}
};
decline = function () {
return _go(null);
};
return {
form: _form,
file: _file,
overwrite: _overwrite,
canAccept: _canAccept,
accept: accept,
decline: decline,
template: 'file-open-dialog'
};
};
}.call(this));
(function () {
Flow.FileUploadDialog = function (_, _go) {
var accept, decline, uploadFile, _file, _form;
_form = Flow.Dataflow.signal(null);
_file = Flow.Dataflow.signal(null);
uploadFile = function (key) {
return _.requestUploadFile(key, new FormData(_form()), function (error, result) {
return _go({
error: error,
result: result
});
});
};
accept = function () {
var file;
if (file = _file()) {
return uploadFile(file.name);
}
};
decline = function () {
return _go(null);
};
return {
form: _form,
file: _file,
accept: accept,
decline: decline,
template: 'file-upload-dialog'
};
};
}.call(this));
(function () {
H2O.FrameDataOutput = function (_, _go, _frame) {
var MaxItemsPerPage, goToNextPage, goToPreviousPage, refreshColumns, renderFrame, renderPlot, _canGoToNextPage, _canGoToPreviousPage, _columnNameSearchTerm, _currentPage, _data, _lastUsedSearchTerm, _maxPages;
MaxItemsPerPage = 20;
_data = Flow.Dataflow.signal(null);
_columnNameSearchTerm = Flow.Dataflow.signal(null);
_currentPage = Flow.Dataflow.signal(0);
_maxPages = Flow.Dataflow.signal(Math.ceil(_frame.total_column_count / MaxItemsPerPage));
_canGoToPreviousPage = Flow.Dataflow.lift(_currentPage, function (index) {
return index > 0;
});
_canGoToNextPage = Flow.Dataflow.lift(_maxPages, _currentPage, function (maxPages, index) {
return index < maxPages - 1;
});
renderPlot = function (container, render) {
return render(function (error, vis) {
if (error) {
return console.debug(error);
} else {
return container(vis.element);
}
});
};
renderFrame = function (frame) {
return renderPlot(_data, _.plot(function (g) {
return g(g.select(), g.from(_.inspect('data', frame)));
}));
};
_lastUsedSearchTerm = null;
refreshColumns = function (pageIndex) {
var itemCount, searchTerm, startIndex;
searchTerm = _columnNameSearchTerm();
if (searchTerm !== _lastUsedSearchTerm) {
pageIndex = 0;
}
startIndex = pageIndex * MaxItemsPerPage;
itemCount = startIndex + MaxItemsPerPage < _frame.total_column_count ? MaxItemsPerPage : _frame.total_column_count - startIndex;
return _.requestFrameDataE(_frame.frame_id.name, searchTerm, startIndex, itemCount, function (error, frame) {
if (error) {
} else {
_lastUsedSearchTerm = searchTerm;
_currentPage(pageIndex);
return renderFrame(frame);
}
});
};
goToPreviousPage = function () {
var currentPage;
currentPage = _currentPage();
if (currentPage > 0) {
refreshColumns(currentPage - 1);
}
};
goToNextPage = function () {
var currentPage;
currentPage = _currentPage();
if (currentPage < _maxPages() - 1) {
refreshColumns(currentPage + 1);
}
};
Flow.Dataflow.react(_columnNameSearchTerm, lodash.throttle(refreshColumns, 500));
renderFrame(_frame);
lodash.defer(_go);
return {
key: _frame.frame_id.name,
data: _data,
columnNameSearchTerm: _columnNameSearchTerm,
canGoToPreviousPage: _canGoToPreviousPage,
canGoToNextPage: _canGoToNextPage,
goToPreviousPage: goToPreviousPage,
goToNextPage: goToNextPage,
template: 'flow-frame-data-output'
};
};
}.call(this));
(function () {
H2O.FrameOutput = function (_, _go, _frame) {
var MaxItemsPerPage, createModel, deleteFrame, download, exportFrame, goToNextPage, goToPreviousPage, inspect, inspectData, predict, refreshColumns, renderFrame, renderGrid, renderPlot, splitFrame, _canGoToNextPage, _canGoToPreviousPage, _chunkSummary, _columnNameSearchTerm, _currentPage, _distributionSummary, _grid, _lastUsedSearchTerm, _maxPages;
MaxItemsPerPage = 20;
_grid = Flow.Dataflow.signal(null);
_chunkSummary = Flow.Dataflow.signal(null);
_distributionSummary = Flow.Dataflow.signal(null);
_columnNameSearchTerm = Flow.Dataflow.signal(null);
_currentPage = Flow.Dataflow.signal(0);
_maxPages = Flow.Dataflow.signal(Math.ceil(_frame.total_column_count / MaxItemsPerPage));
_canGoToPreviousPage = Flow.Dataflow.lift(_currentPage, function (index) {
return index > 0;
});
_canGoToNextPage = Flow.Dataflow.lift(_maxPages, _currentPage, function (maxPages, index) {
return index < maxPages - 1;
});
renderPlot = function (container, render) {
return render(function (error, vis) {
if (error) {
return console.debug(error);
} else {
return container(vis.element);
}
});
};
renderGrid = function (render) {
return render(function (error, vis) {
if (error) {
return console.debug(error);
} else {
$('a', vis.element).on('click', function (e) {
var $a;
$a = $(e.target);
switch ($a.attr('data-type')) {
case 'summary-link':
return _.insertAndExecuteCell('cs', 'getColumnSummary ' + Flow.Prelude.stringify(_frame.frame_id.name) + ', ' + Flow.Prelude.stringify($a.attr('data-key')));
case 'as-factor-link':
return _.insertAndExecuteCell('cs', 'changeColumnType frame: ' + Flow.Prelude.stringify(_frame.frame_id.name) + ', column: ' + Flow.Prelude.stringify($a.attr('data-key')) + ', type: \'enum\'');
case 'as-numeric-link':
return _.insertAndExecuteCell('cs', 'changeColumnType frame: ' + Flow.Prelude.stringify(_frame.frame_id.name) + ', column: ' + Flow.Prelude.stringify($a.attr('data-key')) + ', type: \'int\'');
}
});
return _grid(vis.element);
}
});
};
createModel = function () {
return _.insertAndExecuteCell('cs', 'assist buildModel, null, training_frame: ' + Flow.Prelude.stringify(_frame.frame_id.name));
};
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect getFrameSummary ' + Flow.Prelude.stringify(_frame.frame_id.name));
};
inspectData = function () {
return _.insertAndExecuteCell('cs', 'getFrameData ' + Flow.Prelude.stringify(_frame.frame_id.name));
};
splitFrame = function () {
return _.insertAndExecuteCell('cs', 'assist splitFrame, ' + Flow.Prelude.stringify(_frame.frame_id.name));
};
predict = function () {
return _.insertAndExecuteCell('cs', 'predict frame: ' + Flow.Prelude.stringify(_frame.frame_id.name));
};
download = function () {
return window.open('/3/DownloadDataset?frame_id=' + encodeURIComponent(_frame.frame_id.name), '_blank');
};
exportFrame = function () {
return _.insertAndExecuteCell('cs', 'exportFrame ' + Flow.Prelude.stringify(_frame.frame_id.name));
};
deleteFrame = function () {
return _.confirm('Are you sure you want to delete this frame?', {
acceptCaption: 'Delete Frame',
declineCaption: 'Cancel'
}, function (accept) {
if (accept) {
return _.insertAndExecuteCell('cs', 'deleteFrame ' + Flow.Prelude.stringify(_frame.frame_id.name));
}
});
};
renderFrame = function (frame) {
renderGrid(_.plot(function (g) {
return g(g.select(), g.from(_.inspect('columns', frame)));
}));
renderPlot(_chunkSummary, _.plot(function (g) {
return g(g.select(), g.from(_.inspect('Chunk compression summary', frame)));
}));
return renderPlot(_distributionSummary, _.plot(function (g) {
return g(g.select(), g.from(_.inspect('Frame distribution summary', frame)));
}));
};
_lastUsedSearchTerm = null;
refreshColumns = function (pageIndex) {
var itemCount, searchTerm, startIndex;
searchTerm = _columnNameSearchTerm();
if (searchTerm !== _lastUsedSearchTerm) {
pageIndex = 0;
}
startIndex = pageIndex * MaxItemsPerPage;
itemCount = startIndex + MaxItemsPerPage < _frame.total_column_count ? MaxItemsPerPage : _frame.total_column_count - startIndex;
return _.requestFrameSummarySliceE(_frame.frame_id.name, searchTerm, startIndex, itemCount, function (error, frame) {
if (error) {
} else {
_lastUsedSearchTerm = searchTerm;
_currentPage(pageIndex);
return renderFrame(frame);
}
});
};
goToPreviousPage = function () {
var currentPage;
currentPage = _currentPage();
if (currentPage > 0) {
refreshColumns(currentPage - 1);
}
};
goToNextPage = function () {
var currentPage;
currentPage = _currentPage();
if (currentPage < _maxPages() - 1) {
refreshColumns(currentPage + 1);
}
};
Flow.Dataflow.react(_columnNameSearchTerm, lodash.throttle(refreshColumns, 500));
renderFrame(_frame);
lodash.defer(_go);
return {
key: _frame.frame_id.name,
rowCount: _frame.rows,
columnCount: _frame.total_column_count,
size: Flow.Util.formatBytes(_frame.byte_size),
chunkSummary: _chunkSummary,
distributionSummary: _distributionSummary,
columnNameSearchTerm: _columnNameSearchTerm,
grid: _grid,
inspect: inspect,
createModel: createModel,
inspectData: inspectData,
splitFrame: splitFrame,
predict: predict,
download: download,
exportFrame: exportFrame,
canGoToPreviousPage: _canGoToPreviousPage,
canGoToNextPage: _canGoToNextPage,
goToPreviousPage: goToPreviousPage,
goToNextPage: goToNextPage,
deleteFrame: deleteFrame,
template: 'flow-frame-output'
};
};
}.call(this));
(function () {
H2O.FramesOutput = function (_, _go, _frames) {
var collectSelectedKeys, createFrameView, deleteFrames, importFiles, predictOnFrames, _checkAllFrames, _frameViews, _hasSelectedFrames, _isCheckingAll;
_frameViews = Flow.Dataflow.signal([]);
_checkAllFrames = Flow.Dataflow.signal(false);
_hasSelectedFrames = Flow.Dataflow.signal(false);
_isCheckingAll = false;
Flow.Dataflow.react(_checkAllFrames, function (checkAll) {
var view, _i, _len, _ref;
_isCheckingAll = true;
_ref = _frameViews();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
view.isChecked(checkAll);
}
_hasSelectedFrames(checkAll);
_isCheckingAll = false;
});
createFrameView = function (frame) {
var columnLabels, createModel, inspect, predict, view, _isChecked;
_isChecked = Flow.Dataflow.signal(false);
Flow.Dataflow.react(_isChecked, function () {
var checkedViews, view;
if (_isCheckingAll) {
return;
}
checkedViews = function () {
var _i, _len, _ref, _results;
_ref = _frameViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
if (view.isChecked()) {
_results.push(view);
}
}
return _results;
}();
return _hasSelectedFrames(checkedViews.length > 0);
});
columnLabels = lodash.head(lodash.map(frame.columns, function (column) {
return column.label;
}), 15);
view = function () {
if (frame.is_text) {
return _.insertAndExecuteCell('cs', 'setupParse source_frames: [ ' + Flow.Prelude.stringify(frame.frame_id.name) + ' ]');
} else {
return _.insertAndExecuteCell('cs', 'getFrameSummary ' + Flow.Prelude.stringify(frame.frame_id.name));
}
};
predict = function () {
return _.insertAndExecuteCell('cs', 'predict frame: ' + Flow.Prelude.stringify(frame.frame_id.name));
};
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect getFrameSummary ' + Flow.Prelude.stringify(frame.frame_id.name));
};
createModel = function () {
return _.insertAndExecuteCell('cs', 'assist buildModel, null, training_frame: ' + Flow.Prelude.stringify(frame.frame_id.name));
};
return {
key: frame.frame_id.name,
isChecked: _isChecked,
size: Flow.Util.formatBytes(frame.byte_size),
rowCount: frame.rows,
columnCount: frame.columns,
isText: frame.is_text,
view: view,
predict: predict,
inspect: inspect,
createModel: createModel
};
};
importFiles = function () {
return _.insertAndExecuteCell('cs', 'importFiles');
};
collectSelectedKeys = function () {
var view, _i, _len, _ref, _results;
_ref = _frameViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
if (view.isChecked()) {
_results.push(view.key);
}
}
return _results;
};
predictOnFrames = function () {
return _.insertAndExecuteCell('cs', 'predict frames: ' + Flow.Prelude.stringify(collectSelectedKeys()));
};
deleteFrames = function () {
return _.confirm('Are you sure you want to delete these frames?', {
acceptCaption: 'Delete Frames',
declineCaption: 'Cancel'
}, function (accept) {
if (accept) {
return _.insertAndExecuteCell('cs', 'deleteFrames ' + Flow.Prelude.stringify(collectSelectedKeys()));
}
});
};
_frameViews(lodash.map(_frames, createFrameView));
lodash.defer(_go);
return {
frameViews: _frameViews,
hasFrames: _frames.length > 0,
importFiles: importFiles,
predictOnFrames: predictOnFrames,
deleteFrames: deleteFrames,
hasSelectedFrames: _hasSelectedFrames,
checkAllFrames: _checkAllFrames,
template: 'flow-frames-output'
};
};
}.call(this));
(function () {
H2O.GridOutput = function (_, _go, _grid) {
var buildModel, collectSelectedKeys, compareModels, createModelView, deleteModels, initialize, inspect, inspectAll, inspectHistory, predictUsingModels, _canCompareModels, _checkAllModels, _checkedModelCount, _errorViews, _hasErrors, _hasModels, _hasSelectedModels, _isCheckingAll, _modelViews;
_modelViews = Flow.Dataflow.signal([]);
_hasModels = _grid.model_ids.length > 0;
_errorViews = Flow.Dataflow.signal([]);
_hasErrors = _grid.failure_details.length > 0;
_checkAllModels = Flow.Dataflow.signal(false);
_checkedModelCount = Flow.Dataflow.signal(0);
_canCompareModels = Flow.Dataflow.lift(_checkedModelCount, function (count) {
return count > 1;
});
_hasSelectedModels = Flow.Dataflow.lift(_checkedModelCount, function (count) {
return count > 0;
});
_isCheckingAll = false;
Flow.Dataflow.react(_checkAllModels, function (checkAll) {
var view, views, _i, _len;
_isCheckingAll = true;
views = _modelViews();
for (_i = 0, _len = views.length; _i < _len; _i++) {
view = views[_i];
view.isChecked(checkAll);
}
_checkedModelCount(checkAll ? views.length : 0);
_isCheckingAll = false;
});
createModelView = function (model_id) {
var cloneModel, inspect, predict, view, _isChecked;
_isChecked = Flow.Dataflow.signal(false);
Flow.Dataflow.react(_isChecked, function () {
var checkedViews, view;
if (_isCheckingAll) {
return;
}
checkedViews = function () {
var _i, _len, _ref, _results;
_ref = _modelViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
if (view.isChecked()) {
_results.push(view);
}
}
return _results;
}();
return _checkedModelCount(checkedViews.length);
});
predict = function () {
return _.insertAndExecuteCell('cs', 'predict model: ' + Flow.Prelude.stringify(model_id.name));
};
cloneModel = function () {
return alert('Not implemented');
return _.insertAndExecuteCell('cs', 'cloneModel ' + Flow.Prelude.stringify(model_id.name));
};
view = function () {
return _.insertAndExecuteCell('cs', 'getModel ' + Flow.Prelude.stringify(model_id.name));
};
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect getModel ' + Flow.Prelude.stringify(model_id.name));
};
return {
key: model_id.name,
isChecked: _isChecked,
predict: predict,
clone: cloneModel,
inspect: inspect,
view: view
};
};
buildModel = function () {
return _.insertAndExecuteCell('cs', 'buildModel');
};
collectSelectedKeys = function () {
var view, _i, _len, _ref, _results;
_ref = _modelViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
if (view.isChecked()) {
_results.push(view.key);
}
}
return _results;
};
compareModels = function () {
return _.insertAndExecuteCell('cs', 'inspect getModels ' + Flow.Prelude.stringify(collectSelectedKeys()));
};
predictUsingModels = function () {
return _.insertAndExecuteCell('cs', 'predict models: ' + Flow.Prelude.stringify(collectSelectedKeys()));
};
deleteModels = function () {
return _.confirm('Are you sure you want to delete these models?', {
acceptCaption: 'Delete Models',
declineCaption: 'Cancel'
}, function (accept) {
if (accept) {
return _.insertAndExecuteCell('cs', 'deleteModels ' + Flow.Prelude.stringify(collectSelectedKeys()));
}
});
};
inspect = function () {
var summary;
summary = _.inspect('summary', _grid);
return _.insertAndExecuteCell('cs', 'grid inspect \'summary\', ' + summary.metadata.origin);
};
inspectHistory = function () {
var history;
history = _.inspect('scoring_history', _grid);
return _.insertAndExecuteCell('cs', 'grid inspect \'scoring_history\', ' + history.metadata.origin);
};
inspectAll = function () {
var allKeys, view;
allKeys = function () {
var _i, _len, _ref, _results;
_ref = _modelViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
_results.push(view.key);
}
return _results;
}();
return _.insertAndExecuteCell('cs', 'inspect getModels ' + Flow.Prelude.stringify(allKeys));
};
initialize = function (grid) {
var errorViews, i;
_modelViews(lodash.map(grid.model_ids, createModelView));
errorViews = function () {
var _i, _ref, _results;
_results = [];
for (i = _i = 0, _ref = grid.failure_details.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
_results.push({
title: 'Error ' + (i + 1),
detail: grid.failure_details[i],
params: 'Parameters: [ ' + grid.failed_raw_params[i].join(', ') + ' ]',
stacktrace: grid.failure_stack_traces[i]
});
}
return _results;
}();
_errorViews(errorViews);
return lodash.defer(_go);
};
initialize(_grid);
return {
modelViews: _modelViews,
hasModels: _hasModels,
errorViews: _errorViews,
hasErrors: _hasErrors,
buildModel: buildModel,
compareModels: compareModels,
predictUsingModels: predictUsingModels,
deleteModels: deleteModels,
checkedModelCount: _checkedModelCount,
canCompareModels: _canCompareModels,
hasSelectedModels: _hasSelectedModels,
checkAllModels: _checkAllModels,
inspect: inspect,
inspectHistory: inspectHistory,
inspectAll: inspectAll,
template: 'flow-grid-output'
};
};
}.call(this));
(function () {
H2O.GridsOutput = function (_, _go, _grids) {
var buildModel, createGridView, initialize, _gridViews;
_gridViews = Flow.Dataflow.signal([]);
createGridView = function (grid) {
var view;
view = function () {
return _.insertAndExecuteCell('cs', 'getGrid ' + Flow.Prelude.stringify(grid.grid_id.name));
};
return {
key: grid.grid_id.name,
size: grid.model_ids.length,
view: view
};
};
buildModel = function () {
return _.insertAndExecuteCell('cs', 'buildModel');
};
initialize = function (grids) {
_gridViews(lodash.map(grids, createGridView));
return lodash.defer(_go);
};
initialize(_grids);
return {
gridViews: _gridViews,
hasGrids: _grids.length > 0,
buildModel: buildModel,
template: 'flow-grids-output'
};
};
}.call(this));
(function () {
H2O.H2OFrameOutput = function (_, _go, _result) {
var createH2oFrameView, _h2oframeView;
_h2oframeView = Flow.Dataflow.signal(null);
createH2oFrameView = function (result) {
return { h2oframe_id: result.h2oframe_id };
};
_h2oframeView(createH2oFrameView(_result));
lodash.defer(_go);
return {
h2oframeView: _h2oframeView,
template: 'flow-h2oframe-output'
};
};
}.call(this));
(function () {
H2O.ImportFilesInput = function (_, _go) {
var createFileItem, createFileItems, createSelectedFileItem, deselectAllFiles, importFiles, importSelectedFiles, listPathHints, processImportResult, selectAllFiles, tryImportFiles, _exception, _hasErrorMessage, _hasImportedFiles, _hasSelectedFiles, _hasUnselectedFiles, _importedFileCount, _importedFiles, _selectedFileCount, _selectedFiles, _selectedFilesDictionary, _specifiedPath;
_specifiedPath = Flow.Dataflow.signal('');
_exception = Flow.Dataflow.signal('');
_hasErrorMessage = Flow.Dataflow.lift(_exception, function (exception) {
if (exception) {
return true;
} else {
return false;
}
});
tryImportFiles = function () {
var specifiedPath;
specifiedPath = _specifiedPath();
return _.requestFileGlob(specifiedPath, -1, function (error, result) {
if (error) {
return _exception(error.stack);
} else {
_exception('');
return processImportResult(result);
}
});
};
_importedFiles = Flow.Dataflow.signals([]);
_importedFileCount = Flow.Dataflow.lift(_importedFiles, function (files) {
if (files.length) {
return 'Found ' + Flow.Util.describeCount(files.length, 'file') + ':';
} else {
return '';
}
});
_hasImportedFiles = Flow.Dataflow.lift(_importedFiles, function (files) {
return files.length > 0;
});
_hasUnselectedFiles = Flow.Dataflow.lift(_importedFiles, function (files) {
return lodash.some(files, function (file) {
return !file.isSelected();
});
});
_selectedFiles = Flow.Dataflow.signals([]);
_selectedFilesDictionary = Flow.Dataflow.lift(_selectedFiles, function (files) {
var dictionary, file, _i, _len;
dictionary = {};
for (_i = 0, _len = files.length; _i < _len; _i++) {
file = files[_i];
dictionary[file.path] = true;
}
return dictionary;
});
_selectedFileCount = Flow.Dataflow.lift(_selectedFiles, function (files) {
if (files.length) {
return '' + Flow.Util.describeCount(files.length, 'file') + ' selected:';
} else {
return '(No files selected)';
}
});
_hasSelectedFiles = Flow.Dataflow.lift(_selectedFiles, function (files) {
return files.length > 0;
});
importFiles = function (files) {
var paths;
paths = lodash.map(files, function (file) {
return Flow.Prelude.stringify(file.path);
});
return _.insertAndExecuteCell('cs', 'importFiles [ ' + paths.join(',') + ' ]');
};
importSelectedFiles = function () {
return importFiles(_selectedFiles());
};
createSelectedFileItem = function (path) {
var self;
return self = {
path: path,
deselect: function () {
var file, _i, _len, _ref;
_selectedFiles.remove(self);
_ref = _importedFiles();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
file = _ref[_i];
if (file.path === path) {
file.isSelected(false);
}
}
}
};
};
createFileItem = function (path, isSelected) {
var self;
self = {
path: path,
isSelected: Flow.Dataflow.signal(isSelected),
select: function () {
_selectedFiles.push(createSelectedFileItem(self.path));
return self.isSelected(true);
}
};
Flow.Dataflow.act(self.isSelected, function (isSelected) {
return _hasUnselectedFiles(lodash.some(_importedFiles(), function (file) {
return !file.isSelected();
}));
});
return self;
};
createFileItems = function (result) {
return lodash.map(result.matches, function (path) {
return createFileItem(path, _selectedFilesDictionary()[path]);
});
};
listPathHints = function (query, process) {
return _.requestFileGlob(query, 10, function (error, result) {
if (!error) {
return process(lodash.map(result.matches, function (value) {
return { value: value };
}));
}
});
};
selectAllFiles = function () {
var dict, file, _i, _j, _len, _len1, _ref, _ref1;
dict = {};
_ref = _selectedFiles();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
file = _ref[_i];
dict[file.path] = true;
}
_ref1 = _importedFiles();
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
file = _ref1[_j];
if (!dict[file.path]) {
file.select();
}
}
};
deselectAllFiles = function () {
var file, _i, _len, _ref;
_selectedFiles([]);
_ref = _importedFiles();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
file = _ref[_i];
file.isSelected(false);
}
};
processImportResult = function (result) {
var files;
files = createFileItems(result);
return _importedFiles(files);
};
lodash.defer(_go);
return {
specifiedPath: _specifiedPath,
hasErrorMessage: _hasErrorMessage,
exception: _exception,
tryImportFiles: tryImportFiles,
listPathHints: lodash.throttle(listPathHints, 100),
hasImportedFiles: _hasImportedFiles,
importedFiles: _importedFiles,
importedFileCount: _importedFileCount,
selectedFiles: _selectedFiles,
selectAllFiles: selectAllFiles,
deselectAllFiles: deselectAllFiles,
hasUnselectedFiles: _hasUnselectedFiles,
hasSelectedFiles: _hasSelectedFiles,
selectedFileCount: _selectedFileCount,
importSelectedFiles: importSelectedFiles,
template: 'flow-import-files'
};
};
}.call(this));
(function () {
H2O.ImportFilesOutput = function (_, _go, _importResults) {
var createImportView, parse, _allPaths, _canParse, _importViews, _title;
_allPaths = lodash.flatten(lodash.compact(lodash.map(_importResults, function (result) {
return result.files;
})));
_canParse = _allPaths.length > 0;
_title = '' + _allPaths.length + ' / ' + _importResults.length + ' files imported.';
createImportView = function (result) {
return {
files: result.files,
template: 'flow-import-file-output'
};
};
_importViews = lodash.map(_importResults, createImportView);
parse = function () {
var paths;
paths = lodash.map(_allPaths, Flow.Prelude.stringify);
return _.insertAndExecuteCell('cs', 'setupParse paths: [ ' + paths.join(',') + ' ]');
};
lodash.defer(_go);
return {
title: _title,
importViews: _importViews,
canParse: _canParse,
parse: parse,
template: 'flow-import-files-output',
templateOf: function (view) {
return view.template;
}
};
};
}.call(this));
(function () {
H2O.ImportModelInput = function (_, _go, path, opt) {
var importModel, _canImportModel, _overwrite, _path;
if (opt == null) {
opt = {};
}
_path = Flow.Dataflow.signal(path);
_overwrite = Flow.Dataflow.signal(opt.overwrite ? true : false);
_canImportModel = Flow.Dataflow.lift(_path, function (path) {
return path && path.length;
});
importModel = function () {
return _.insertAndExecuteCell('cs', 'importModel ' + Flow.Prelude.stringify(_path()) + ', overwrite: ' + (_overwrite() ? 'true' : 'false'));
};
lodash.defer(_go);
return {
path: _path,
overwrite: _overwrite,
canImportModel: _canImportModel,
importModel: importModel,
template: 'flow-import-model-input'
};
};
}.call(this));
(function () {
H2O.ImportModelOutput = function (_, _go, result) {
var viewModel;
viewModel = function () {
return _.insertAndExecuteCell('cs', 'getModel ' + Flow.Prelude.stringify(result.models[0].model_id.name));
};
lodash.defer(_go);
return {
viewModel: viewModel,
template: 'flow-import-model-output'
};
};
}.call(this));
(function () {
var createOptions, _allCombineMethods, _allMethods;
createOptions = function (options) {
var option, _i, _len, _results;
_results = [];
for (_i = 0, _len = options.length; _i < _len; _i++) {
option = options[_i];
_results.push({
caption: option,
value: option.toUpperCase()
});
}
return _results;
};
_allMethods = createOptions([
'Mean',
'Median',
'Mode'
]);
_allCombineMethods = createOptions([
'Interpolate',
'Average',
'Low',
'High'
]);
H2O.ImputeInput = function (_, _go, opts) {
var impute, _canGroupByColumns, _canImpute, _canUseCombineMethod, _column, _columns, _combineMethod, _combineMethods, _frame, _frames, _groupByColumns, _hasFrame, _method, _methods;
if (opts == null) {
opts = {};
}
_frames = Flow.Dataflow.signal([]);
_frame = Flow.Dataflow.signal(null);
_hasFrame = Flow.Dataflow.lift(_frame, function (frame) {
if (frame) {
return true;
} else {
return false;
}
});
_columns = Flow.Dataflow.signal([]);
_column = Flow.Dataflow.signal(null);
_methods = _allMethods;
_method = Flow.Dataflow.signal(_allMethods[0]);
_canUseCombineMethod = Flow.Dataflow.lift(_method, function (method) {
return method.value === 'MEDIAN';
});
_combineMethods = _allCombineMethods;
_combineMethod = Flow.Dataflow.signal(_allCombineMethods[0]);
_canGroupByColumns = Flow.Dataflow.lift(_method, function (method) {
return method.value !== 'MEDIAN';
});
_groupByColumns = Flow.Dataflow.signals([]);
_canImpute = Flow.Dataflow.lift(_frame, _column, function (frame, column) {
return frame && column;
});
impute = function () {
var arg, combineMethod, groupByColumns, method;
method = _method();
arg = {
frame: _frame(),
column: _column(),
method: method.value
};
if (method.value === 'MEDIAN') {
if (combineMethod = _combineMethod()) {
arg.combineMethod = combineMethod.value;
}
} else {
groupByColumns = _groupByColumns();
if (groupByColumns.length) {
arg.groupByColumns = groupByColumns;
}
}
return _.insertAndExecuteCell('cs', 'imputeColumn ' + JSON.stringify(arg));
};
_.requestFrames(function (error, frames) {
var frame;
if (error) {
} else {
_frames(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = frames.length; _i < _len; _i++) {
frame = frames[_i];
if (!frame.is_text) {
_results.push(frame.frame_id.name);
}
}
return _results;
}());
if (opts.frame) {
_frame(opts.frame);
}
}
});
Flow.Dataflow.react(_frame, function (frame) {
if (frame) {
return _.requestFrameSummaryWithoutData(frame, function (error, frame) {
var column;
if (error) {
} else {
_columns(function () {
var _i, _len, _ref, _results;
_ref = frame.columns;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
column = _ref[_i];
_results.push(column.label);
}
return _results;
}());
if (opts.column) {
_column(opts.column);
return delete opts.column;
}
}
});
} else {
return _columns([]);
}
});
lodash.defer(_go);
return {
frames: _frames,
frame: _frame,
hasFrame: _hasFrame,
columns: _columns,
column: _column,
methods: _methods,
method: _method,
canUseCombineMethod: _canUseCombineMethod,
combineMethods: _combineMethods,
combineMethod: _combineMethod,
canGroupByColumns: _canGroupByColumns,
groupByColumns: _groupByColumns,
canImpute: _canImpute,
impute: impute,
template: 'flow-impute-input'
};
};
}.call(this));
(function () {
H2O.InspectOutput = function (_, _go, _frame) {
var plot, view;
view = function () {
return _.insertAndExecuteCell('cs', 'grid inspect ' + Flow.Prelude.stringify(_frame.label) + ', ' + _frame.metadata.origin);
};
plot = function () {
return _.insertAndExecuteCell('cs', _frame.metadata.plot);
};
lodash.defer(_go);
return {
label: _frame.label,
vectors: _frame.vectors,
view: view,
canPlot: _frame.metadata.plot ? true : false,
plot: plot,
template: 'flow-inspect-output'
};
};
}.call(this));
(function () {
H2O.InspectsOutput = function (_, _go, _tables) {
var createTableView;
createTableView = function (table) {
var grid, inspect, plot;
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect ' + Flow.Prelude.stringify(table.label) + ', ' + table.metadata.origin);
};
grid = function () {
return _.insertAndExecuteCell('cs', 'grid inspect ' + Flow.Prelude.stringify(table.label) + ', ' + table.metadata.origin);
};
plot = function () {
return _.insertAndExecuteCell('cs', table.metadata.plot);
};
return {
label: table.label,
description: table.metadata.description,
inspect: inspect,
grid: grid,
canPlot: table.metadata.plot ? true : false,
plot: plot
};
};
lodash.defer(_go);
return {
hasTables: _tables.length > 0,
tables: lodash.map(_tables, createTableView),
template: 'flow-inspects-output'
};
};
}.call(this));
(function () {
var getJobOutputStatusColor, getJobProgressPercent, jobOutputStatusColors;
jobOutputStatusColors = {
failed: '#d9534f',
done: '#ccc',
running: '#f0ad4e'
};
getJobOutputStatusColor = function (status) {
switch (status) {
case 'DONE':
return jobOutputStatusColors.done;
case 'CREATED':
case 'RUNNING':
return jobOutputStatusColors.running;
default:
return jobOutputStatusColors.failed;
}
};
getJobProgressPercent = function (progress) {
return '' + Math.ceil(100 * progress) + '%';
};
H2O.JobOutput = function (_, _go, _job) {
var canView, cancel, initialize, isJobRunning, messageIcons, refresh, updateJob, view, _canCancel, _canView, _description, _destinationKey, _destinationType, _exception, _isBusy, _isLive, _key, _messages, _progress, _progressMessage, _remainingTime, _runTime, _status, _statusColor;
_isBusy = Flow.Dataflow.signal(false);
_isLive = Flow.Dataflow.signal(false);
_key = _job.key.name;
_description = _job.description;
_destinationKey = _job.dest.name;
_destinationType = function () {
switch (_job.dest.type) {
case 'Key':
return 'Frame';
case 'Key':
return 'Model';
case 'Key':
return 'Grid';
case 'Key':
return 'Void';
default:
return 'Unknown';
}
}();
_runTime = Flow.Dataflow.signal(null);
_remainingTime = Flow.Dataflow.signal(null);
_progress = Flow.Dataflow.signal(null);
_progressMessage = Flow.Dataflow.signal(null);
_status = Flow.Dataflow.signal(null);
_statusColor = Flow.Dataflow.signal(null);
_exception = Flow.Dataflow.signal(null);
_messages = Flow.Dataflow.signal(null);
_canView = Flow.Dataflow.signal(false);
_canCancel = Flow.Dataflow.signal(false);
isJobRunning = function (job) {
return job.status === 'CREATED' || job.status === 'RUNNING';
};
messageIcons = {
ERROR: 'fa-times-circle red',
WARN: 'fa-warning orange',
INFO: 'fa-info-circle'
};
canView = function (job) {
switch (_destinationType) {
case 'Model':
case 'Grid':
return job.ready_for_view;
default:
return !isJobRunning(job);
}
};
updateJob = function (job) {
var cause, message, messages;
_runTime(Flow.Util.formatMilliseconds(job.msec));
_progress(getJobProgressPercent(job.progress));
_remainingTime(job.progress ? Flow.Util.formatMilliseconds(Math.round((1 - job.progress) * job.msec / job.progress)) : 'Estimating...');
_progressMessage(job.progress_msg);
_status(job.status);
_statusColor(getJobOutputStatusColor(job.status));
if (job.error_count) {
messages = function () {
var _i, _len, _ref, _results;
_ref = job.messages;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
message = _ref[_i];
if (message.message_type !== 'HIDE') {
_results.push({
icon: messageIcons[message.message_type],
message: '' + message.field_name + ': ' + message.message
});
}
}
return _results;
}();
_messages(messages);
} else if (job.exception) {
cause = new Error(job.exception);
if (job.stacktrace) {
cause.stack = job.stacktrace;
}
_exception(Flow.Failure(_, new Flow.Error('Job failure.', cause)));
}
_canView(canView(job));
return _canCancel(isJobRunning(job));
};
refresh = function () {
_isBusy(true);
return _.requestJob(_key, function (error, job) {
_isBusy(false);
if (error) {
_exception(Flow.Failure(_, new Flow.Error('Error fetching jobs', error)));
return _isLive(false);
} else {
updateJob(job);
if (isJobRunning(job)) {
if (_isLive()) {
return lodash.delay(refresh, 1000);
}
} else {
_isLive(false);
if (_go) {
return lodash.defer(_go);
}
}
}
});
};
Flow.Dataflow.act(_isLive, function (isLive) {
if (isLive) {
return refresh();
}
});
view = function () {
if (!_canView()) {
return;
}
switch (_destinationType) {
case 'Frame':
return _.insertAndExecuteCell('cs', 'getFrameSummary ' + Flow.Prelude.stringify(_destinationKey));
case 'Model':
return _.insertAndExecuteCell('cs', 'getModel ' + Flow.Prelude.stringify(_destinationKey));
case 'Grid':
return _.insertAndExecuteCell('cs', 'getGrid ' + Flow.Prelude.stringify(_destinationKey));
case 'Void':
return alert('This frame was exported to\n' + _job.dest.name);
}
};
cancel = function () {
return _.requestCancelJob(_key, function (error, result) {
if (error) {
return console.debug(error);
} else {
return updateJob(_job);
}
});
};
initialize = function (job) {
updateJob(job);
if (isJobRunning(job)) {
return _isLive(true);
} else {
if (_go) {
return lodash.defer(_go);
}
}
};
initialize(_job);
return {
key: _key,
description: _description,
destinationKey: _destinationKey,
destinationType: _destinationType,
runTime: _runTime,
remainingTime: _remainingTime,
progress: _progress,
progressMessage: _progressMessage,
status: _status,
statusColor: _statusColor,
messages: _messages,
exception: _exception,
isLive: _isLive,
canView: _canView,
canCancel: _canCancel,
cancel: cancel,
view: view,
template: 'flow-job-output'
};
};
}.call(this));
(function () {
H2O.JobsOutput = function (_, _go, jobs) {
var createJobView, initialize, refresh, toggleRefresh, _exception, _hasJobViews, _isBusy, _isLive, _jobViews;
_jobViews = Flow.Dataflow.signals([]);
_hasJobViews = Flow.Dataflow.lift(_jobViews, function (jobViews) {
return jobViews.length > 0;
});
_isLive = Flow.Dataflow.signal(false);
_isBusy = Flow.Dataflow.signal(false);
_exception = Flow.Dataflow.signal(null);
createJobView = function (job) {
var type, view;
view = function () {
return _.insertAndExecuteCell('cs', 'getJob ' + Flow.Prelude.stringify(job.key.name));
};
type = function () {
switch (job.dest.type) {
case 'Key':
return 'Frame';
case 'Key':
return 'Model';
case 'Key':
return 'Grid';
default:
return 'Unknown';
}
}();
return {
destination: job.dest.name,
type: type,
description: job.description,
startTime: Flow.Format.Time(new Date(job.start_time)),
endTime: Flow.Format.Time(new Date(job.start_time + job.msec)),
elapsedTime: Flow.Util.formatMilliseconds(job.msec),
status: job.status,
view: view
};
};
toggleRefresh = function () {
return _isLive(!_isLive());
};
refresh = function () {
_isBusy(true);
return _.requestJobs(function (error, jobs) {
_isBusy(false);
if (error) {
_exception(Flow.Failure(_, new Flow.Error('Error fetching jobs', error)));
return _isLive(false);
} else {
_jobViews(lodash.map(jobs, createJobView));
if (_isLive()) {
return lodash.delay(refresh, 2000);
}
}
});
};
Flow.Dataflow.act(_isLive, function (isLive) {
if (isLive) {
return refresh();
}
});
initialize = function () {
_jobViews(lodash.map(jobs, createJobView));
return lodash.defer(_go);
};
initialize();
return {
jobViews: _jobViews,
hasJobViews: _hasJobViews,
isLive: _isLive,
isBusy: _isBusy,
toggleRefresh: toggleRefresh,
refresh: refresh,
exception: _exception,
template: 'flow-jobs-output'
};
};
}.call(this));
(function () {
H2O.LogFileOutput = function (_, _go, _cloud, _nodeIndex, _fileType, _logFile) {
var createNode, initialize, refresh, refreshActiveView, _activeFileType, _activeNode, _contents, _exception, _fileTypes, _nodes;
_exception = Flow.Dataflow.signal(null);
_contents = Flow.Dataflow.signal('');
_nodes = Flow.Dataflow.signal([]);
_activeNode = Flow.Dataflow.signal(null);
_fileTypes = Flow.Dataflow.signal([
'trace',
'debug',
'info',
'warn',
'error',
'fatal',
'httpd',
'stdout',
'stderr'
]);
_activeFileType = Flow.Dataflow.signal(null);
createNode = function (node, index) {
return {
name: node.ip_port,
index: index
};
};
refreshActiveView = function (node, fileType) {
if (node) {
return _.requestLogFile(node.index, fileType, function (error, logFile) {
if (error) {
return _contents('Error fetching log file: ' + error.message);
} else {
return _contents(logFile.log);
}
});
} else {
return _contents('');
}
};
refresh = function () {
return refreshActiveView(_activeNode(), _activeFileType());
};
initialize = function (cloud, nodeIndex, fileType, logFile) {
var NODE_INDEX_SELF, clientNode, i, n, nodes, _i, _len, _ref;
_activeFileType(fileType);
_contents(logFile.log);
nodes = [];
if (cloud.is_client) {
clientNode = { ip_port: 'driver' };
NODE_INDEX_SELF = -1;
nodes.push(createNode(clientNode, NODE_INDEX_SELF));
}
_ref = cloud.nodes;
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
n = _ref[i];
nodes.push(createNode(n, i));
}
_nodes(nodes);
if (nodeIndex < nodes.length) {
_activeNode(nodes[nodeIndex]);
}
Flow.Dataflow.react(_activeNode, _activeFileType, refreshActiveView);
return lodash.defer(_go);
};
initialize(_cloud, _nodeIndex, _fileType, _logFile);
return {
nodes: _nodes,
activeNode: _activeNode,
fileTypes: _fileTypes,
activeFileType: _activeFileType,
contents: _contents,
refresh: refresh,
template: 'flow-log-file-output'
};
};
}.call(this));
(function () {
var createCheckboxControl, createControl, createControlFromParameter, createDropdownControl, createGridableValues, createListControl, createTextboxControl;
createControl = function (kind, parameter) {
var _hasError, _hasInfo, _hasMessage, _hasWarning, _isGrided, _isNotGrided, _isVisible, _message;
_hasError = Flow.Dataflow.signal(false);
_hasWarning = Flow.Dataflow.signal(false);
_hasInfo = Flow.Dataflow.signal(false);
_message = Flow.Dataflow.signal('');
_hasMessage = Flow.Dataflow.lift(_message, function (message) {
if (message) {
return true;
} else {
return false;
}
});
_isVisible = Flow.Dataflow.signal(true);
_isGrided = Flow.Dataflow.signal(false);
_isNotGrided = Flow.Dataflow.lift(_isGrided, function (value) {
return !value;
});
return {
kind: kind,
name: parameter.name,
label: parameter.label,
description: parameter.help,
isRequired: parameter.required,
hasError: _hasError,
hasWarning: _hasWarning,
hasInfo: _hasInfo,
message: _message,
hasMessage: _hasMessage,
isVisible: _isVisible,
isGridable: parameter.gridable,
isGrided: _isGrided,
isNotGrided: _isNotGrided
};
};
createTextboxControl = function (parameter, type) {
var control, isArrayValued, isInt, isReal, textToValues, _ref, _ref1, _text, _textGrided, _value, _valueGrided;
isArrayValued = isInt = isReal = false;
switch (type) {
case 'byte[]':
case 'short[]':
case 'int[]':
case 'long[]':
isArrayValued = true;
isInt = true;
break;
case 'float[]':
case 'double[]':
isArrayValued = true;
isReal = true;
break;
case 'byte':
case 'short':
case 'int':
case 'long':
isInt = true;
break;
case 'float':
case 'double':
isReal = true;
}
_text = Flow.Dataflow.signal(isArrayValued ? ((_ref = parameter.actual_value) != null ? _ref : []).join(', ') : (_ref1 = parameter.actual_value) != null ? _ref1 : '');
_textGrided = Flow.Dataflow.signal(_text() + ';');
textToValues = function (text) {
var parsed, vals, value, _i, _len, _ref2;
if (isArrayValued) {
vals = [];
_ref2 = text.split(/\s*,\s*/g);
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
value = _ref2[_i];
if (isInt) {
if (!lodash.isNaN(parsed = parseInt(value, 10))) {
vals.push(parsed);
}
} else if (isReal) {
if (!lodash.isNaN(parsed = parseFloat(value))) {
vals.push(parsed);
}
} else {
vals.push(value);
}
}
return vals;
} else {
return text;
}
};
_value = Flow.Dataflow.lift(_text, textToValues);
_valueGrided = Flow.Dataflow.lift(_textGrided, function (text) {
var part, token, _i, _len, _ref2;
lodash.values = [];
_ref2 = ('' + text).split(/\s*;\s*/g);
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
part = _ref2[_i];
if (token = part.trim()) {
lodash.values.push(textToValues(token));
}
}
return lodash.values;
});
control = createControl('textbox', parameter);
control.text = _text;
control.textGrided = _textGrided;
control.value = _value;
control.valueGrided = _valueGrided;
control.isArrayValued = isArrayValued;
return control;
};
createGridableValues = function (values, defaultValue) {
return lodash.map(values, function (value) {
return {
label: value,
value: Flow.Dataflow.signal(true)
};
});
};
createDropdownControl = function (parameter) {
var control, _value;
_value = Flow.Dataflow.signal(parameter.actual_value);
control = createControl('dropdown', parameter);
control.values = Flow.Dataflow.signals(parameter.values);
control.value = _value;
control.gridedValues = Flow.Dataflow.lift(control.values, function (values) {
return createGridableValues(values);
});
return control;
};
createListControl = function (parameter) {
var MaxItemsPerPage, blockSelectionUpdates, changeSelection, control, createEntry, deselectFiltered, filterItems, goToNextPage, goToPreviousPage, incrementSelectionCount, selectFiltered, _canGoToNextPage, _canGoToPreviousPage, _currentPage, _entries, _filteredItems, _hasFilteredItems, _ignoreNATerm, _isUpdatingSelectionCount, _lastUsedIgnoreNaTerm, _lastUsedSearchTerm, _maxPages, _searchCaption, _searchTerm, _selectionCount, _values, _visibleItems;
MaxItemsPerPage = 100;
_searchTerm = Flow.Dataflow.signal('');
_ignoreNATerm = Flow.Dataflow.signal('');
_values = Flow.Dataflow.signal([]);
_selectionCount = Flow.Dataflow.signal(0);
_isUpdatingSelectionCount = false;
blockSelectionUpdates = function (f) {
_isUpdatingSelectionCount = true;
f();
return _isUpdatingSelectionCount = false;
};
incrementSelectionCount = function (amount) {
return _selectionCount(_selectionCount() + amount);
};
createEntry = function (value) {
var isSelected;
isSelected = Flow.Dataflow.signal(false);
Flow.Dataflow.react(isSelected, function (isSelected) {
if (!_isUpdatingSelectionCount) {
if (isSelected) {
incrementSelectionCount(1);
} else {
incrementSelectionCount(-1);
}
}
});
return {
isSelected: isSelected,
value: value.value,
type: value.type,
missingLabel: value.missingLabel,
missingPercent: value.missingPercent
};
};
_entries = Flow.Dataflow.lift(_values, function (values) {
return lodash.map(values, createEntry);
});
_filteredItems = Flow.Dataflow.signal([]);
_visibleItems = Flow.Dataflow.signal([]);
_hasFilteredItems = Flow.Dataflow.lift(_filteredItems, function (entries) {
return entries.length > 0;
});
_currentPage = Flow.Dataflow.signal(0);
_maxPages = Flow.Dataflow.lift(_filteredItems, function (entries) {
return Math.ceil(entries.length / MaxItemsPerPage);
});
_canGoToPreviousPage = Flow.Dataflow.lift(_currentPage, function (index) {
return index > 0;
});
_canGoToNextPage = Flow.Dataflow.lift(_maxPages, _currentPage, function (maxPages, index) {
return index < maxPages - 1;
});
_searchCaption = Flow.Dataflow.lift(_entries, _filteredItems, _selectionCount, _currentPage, _maxPages, function (entries, filteredItems, selectionCount, currentPage, maxPages) {
var caption;
caption = maxPages === 0 ? '' : 'Showing page ' + (currentPage + 1) + ' of ' + maxPages + '.';
if (filteredItems.length !== entries.length) {
caption += ' Filtered ' + filteredItems.length + ' of ' + entries.length + '.';
}
if (selectionCount !== 0) {
caption += ' ' + selectionCount + ' ignored.';
}
return caption;
});
Flow.Dataflow.react(_entries, function () {
return filterItems(true);
});
_lastUsedSearchTerm = null;
_lastUsedIgnoreNaTerm = null;
filterItems = function (force) {
var entry, filteredItems, hide, i, ignoreNATerm, missingPercent, searchTerm, start, _i, _len, _ref;
if (force == null) {
force = false;
}
searchTerm = _searchTerm().trim();
ignoreNATerm = _ignoreNATerm().trim();
if (force || searchTerm !== _lastUsedSearchTerm || ignoreNATerm !== _lastUsedIgnoreNaTerm) {
filteredItems = [];
_ref = _entries();
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
entry = _ref[i];
missingPercent = parseFloat(ignoreNATerm);
hide = false;
if (searchTerm !== '' && -1 === entry.value.toLowerCase().indexOf(searchTerm.toLowerCase())) {
hide = true;
} else if (!lodash.isNaN(missingPercent) && missingPercent !== 0 && entry.missingPercent <= missingPercent) {
hide = true;
}
if (!hide) {
filteredItems.push(entry);
}
}
_lastUsedSearchTerm = searchTerm;
_lastUsedIgnoreNaTerm = ignoreNATerm;
_currentPage(0);
_filteredItems(filteredItems);
}
start = _currentPage() * MaxItemsPerPage;
_visibleItems(_filteredItems().slice(start, start + MaxItemsPerPage));
};
changeSelection = function (source, value) {
var entry, _i, _len;
for (_i = 0, _len = source.length; _i < _len; _i++) {
entry = source[_i];
entry.isSelected(value);
}
};
selectFiltered = function () {
var entries;
entries = _filteredItems();
blockSelectionUpdates(function () {
return changeSelection(entries, true);
});
return _selectionCount(entries.length);
};
deselectFiltered = function () {
blockSelectionUpdates(function () {
return changeSelection(_filteredItems(), false);
});
return _selectionCount(0);
};
goToPreviousPage = function () {
if (_canGoToPreviousPage()) {
_currentPage(_currentPage() - 1);
filterItems();
}
};
goToNextPage = function () {
if (_canGoToNextPage()) {
_currentPage(_currentPage() + 1);
filterItems();
}
};
Flow.Dataflow.react(_searchTerm, lodash.throttle(filterItems, 500));
Flow.Dataflow.react(_ignoreNATerm, lodash.throttle(filterItems, 500));
control = createControl('list', parameter);
control.values = _values;
control.entries = _visibleItems;
control.hasFilteredItems = _hasFilteredItems;
control.searchCaption = _searchCaption;
control.searchTerm = _searchTerm;
control.ignoreNATerm = _ignoreNATerm;
control.value = _entries;
control.selectFiltered = selectFiltered;
control.deselectFiltered = deselectFiltered;
control.goToPreviousPage = goToPreviousPage;
control.goToNextPage = goToNextPage;
control.canGoToPreviousPage = _canGoToPreviousPage;
control.canGoToNextPage = _canGoToNextPage;
return control;
};
createCheckboxControl = function (parameter) {
var control, _value;
_value = Flow.Dataflow.signal(parameter.actual_value);
control = createControl('checkbox', parameter);
control.clientId = lodash.uniqueId();
control.value = _value;
return control;
};
createControlFromParameter = function (parameter) {
switch (parameter.type) {
case 'enum':
case 'Key':
case 'VecSpecifier':
return createDropdownControl(parameter);
case 'string[]':
return createListControl(parameter);
case 'boolean':
return createCheckboxControl(parameter);
case 'Key':
case 'string':
case 'byte':
case 'short':
case 'int':
case 'long':
case 'float':
case 'double':
case 'byte[]':
case 'short[]':
case 'int[]':
case 'long[]':
case 'float[]':
case 'double[]':
return createTextboxControl(parameter, parameter.type);
default:
console.error('Invalid field', JSON.stringify(parameter, null, 2));
return null;
}
};
H2O.ModelBuilderForm = function (_, _algorithm, _parameters) {
var collectParameters, control, createModel, criticalControls, expertControls, findControl, findFormField, parameterTemplateOf, performValidations, revalidate, secondaryControls, _controlGroups, _exception, _form, _gridMaxModels, _gridMaxRuntime, _gridStoppingMetric, _gridStoppingMetrics, _gridStoppingRounds, _gridStoppingTolerance, _gridStrategies, _gridStrategy, _hasValidationFailures, _i, _isGridRandomDiscrete, _isGrided, _j, _k, _len, _len1, _len2, _parametersByLevel, _revalidate, _validationFailureMessage;
_exception = Flow.Dataflow.signal(null);
_validationFailureMessage = Flow.Dataflow.signal('');
_hasValidationFailures = Flow.Dataflow.lift(_validationFailureMessage, Flow.Prelude.isTruthy);
_gridStrategies = [
'Cartesian',
'RandomDiscrete'
];
_isGrided = Flow.Dataflow.signal(false);
_gridStrategy = Flow.Dataflow.signal('Cartesian');
_isGridRandomDiscrete = Flow.Dataflow.lift(_gridStrategy, function (strategy) {
return strategy !== _gridStrategies[0];
});
_gridMaxModels = Flow.Dataflow.signal(1000);
_gridMaxRuntime = Flow.Dataflow.signal(28800);
_gridStoppingRounds = Flow.Dataflow.signal(0);
_gridStoppingMetrics = [
'AUTO',
'deviance',
'logloss',
'MSE',
'AUC',
'lift_top_group',
'r2',
'misclassification'
];
_gridStoppingMetric = Flow.Dataflow.signal(_gridStoppingMetrics[0]);
_gridStoppingTolerance = Flow.Dataflow.signal(0.001);
_parametersByLevel = lodash.groupBy(_parameters, function (parameter) {
return parameter.level;
});
_controlGroups = lodash.map([
'critical',
'secondary',
'expert'
], function (type) {
var controls;
controls = lodash.filter(lodash.map(_parametersByLevel[type], createControlFromParameter), function (a) {
if (a) {
return true;
} else {
return false;
}
});
lodash.forEach(controls, function (control) {
return Flow.Dataflow.react(control.isGrided, function () {
var isGrided, _i, _len;
isGrided = false;
for (_i = 0, _len = controls.length; _i < _len; _i++) {
control = controls[_i];
if (control.isGrided()) {
_isGrided(isGrided = true);
break;
}
}
if (!isGrided) {
return _isGrided(false);
}
});
});
return controls;
});
criticalControls = _controlGroups[0], secondaryControls = _controlGroups[1], expertControls = _controlGroups[2];
_form = [];
if (criticalControls.length) {
_form.push({
kind: 'group',
title: 'Parameters'
});
for (_i = 0, _len = criticalControls.length; _i < _len; _i++) {
control = criticalControls[_i];
_form.push(control);
}
}
if (secondaryControls.length) {
_form.push({
kind: 'group',
title: 'Advanced'
});
for (_j = 0, _len1 = secondaryControls.length; _j < _len1; _j++) {
control = secondaryControls[_j];
_form.push(control);
}
}
if (expertControls.length) {
_form.push({
kind: 'group',
title: 'Expert'
});
for (_k = 0, _len2 = expertControls.length; _k < _len2; _k++) {
control = expertControls[_k];
_form.push(control);
}
}
findControl = function (name) {
var controls, _l, _len3, _len4, _m;
for (_l = 0, _len3 = _controlGroups.length; _l < _len3; _l++) {
controls = _controlGroups[_l];
for (_m = 0, _len4 = controls.length; _m < _len4; _m++) {
control = controls[_m];
if (control.name === name) {
return control;
}
}
}
};
parameterTemplateOf = function (control) {
return 'flow-' + control.kind + '-model-parameter';
};
findFormField = function (name) {
return lodash.find(_form, function (field) {
return field.name === name;
});
};
(function () {
var foldColumnParameter, ignoredColumnsParameter, offsetColumnsParameter, responseColumnParameter, trainingFrameParameter, validationFrameParameter, weightsColumnParameter, _ref;
_ref = lodash.map([
'training_frame',
'validation_frame',
'response_column',
'ignored_columns',
'offset_column',
'weights_column',
'fold_column'
], findFormField), trainingFrameParameter = _ref[0], validationFrameParameter = _ref[1], responseColumnParameter = _ref[2], ignoredColumnsParameter = _ref[3], offsetColumnsParameter = _ref[4], weightsColumnParameter = _ref[5], foldColumnParameter = _ref[6];
if (trainingFrameParameter) {
if (responseColumnParameter || ignoredColumnsParameter) {
return Flow.Dataflow.act(trainingFrameParameter.value, function (frameKey) {
if (frameKey) {
_.requestFrameSummaryWithoutData(frameKey, function (error, frame) {
var columnLabels, columnValues;
if (!error) {
columnValues = lodash.map(frame.columns, function (column) {
return column.label;
});
columnLabels = lodash.map(frame.columns, function (column) {
var missingPercent;
missingPercent = 100 * column.missing_count / frame.rows;
return {
type: column.type === 'enum' ? 'enum(' + column.domain_cardinality + ')' : column.type,
value: column.label,
missingPercent: missingPercent,
missingLabel: missingPercent === 0 ? '' : '' + Math.round(missingPercent) + '% NA'
};
});
if (responseColumnParameter) {
responseColumnParameter.values(columnValues);
}
if (ignoredColumnsParameter) {
ignoredColumnsParameter.values(columnLabels);
}
if (weightsColumnParameter) {
weightsColumnParameter.values(columnValues);
}
if (foldColumnParameter) {
foldColumnParameter.values(columnValues);
}
if (offsetColumnsParameter) {
offsetColumnsParameter.values(columnValues);
}
if (responseColumnParameter && ignoredColumnsParameter) {
return Flow.Dataflow.lift(responseColumnParameter.value, function (responseVariableName) {
});
}
}
});
}
});
}
}
}());
collectParameters = function (includeUnchangedParameters) {
var controls, entry, gridStoppingRounds, hyperParameters, isGrided, item, maxModels, maxRuntime, parameters, searchCriteria, selectedValues, stoppingTolerance, value, _l, _len3, _len4, _len5, _m, _n, _ref;
if (includeUnchangedParameters == null) {
includeUnchangedParameters = false;
}
isGrided = false;
parameters = {};
hyperParameters = {};
for (_l = 0, _len3 = _controlGroups.length; _l < _len3; _l++) {
controls = _controlGroups[_l];
for (_m = 0, _len4 = controls.length; _m < _len4; _m++) {
control = controls[_m];
if (control.isGrided()) {
isGrided = true;
switch (control.kind) {
case 'textbox':
hyperParameters[control.name] = control.valueGrided();
break;
case 'dropdown':
hyperParameters[control.name] = selectedValues = [];
_ref = control.gridedValues();
for (_n = 0, _len5 = _ref.length; _n < _len5; _n++) {
item = _ref[_n];
if (item.value()) {
selectedValues.push(item.label);
}
}
break;
default:
hyperParameters[control.name] = [
true,
false
];
}
} else {
value = control.value();
if (control.isVisible() && (includeUnchangedParameters || control.isRequired || control.defaultValue !== value)) {
switch (control.kind) {
case 'dropdown':
if (value) {
parameters[control.name] = value;
}
break;
case 'list':
if (value.length) {
selectedValues = function () {
var _len6, _o, _results;
_results = [];
for (_o = 0, _len6 = value.length; _o < _len6; _o++) {
entry = value[_o];
if (entry.isSelected()) {
_results.push(entry.value);
}
}
return _results;
}();
parameters[control.name] = selectedValues;
}
break;
default:
parameters[control.name] = value;
}
}
}
}
}
if (isGrided) {
parameters.hyper_parameters = hyperParameters;
searchCriteria = { strategy: _gridStrategy() };
switch (searchCriteria.strategy) {
case 'RandomDiscrete':
if (!lodash.isNaN(maxModels = parseInt(_gridMaxModels(), 10))) {
searchCriteria.max_models = maxModels;
}
if (!lodash.isNaN(maxRuntime = parseInt(_gridMaxRuntime(), 10))) {
searchCriteria.max_runtime_secs = maxRuntime;
}
if (!lodash.isNaN(gridStoppingRounds = parseInt(_gridStoppingRounds(), 10))) {
searchCriteria.stopping_rounds = gridStoppingRounds;
}
if (!lodash.isNaN(stoppingTolerance = parseFloat(_gridStoppingTolerance()))) {
searchCriteria.stopping_tolerance = stoppingTolerance;
}
searchCriteria.stopping_metric = _gridStoppingMetric();
}
parameters.search_criteria = searchCriteria;
}
return parameters;
};
performValidations = function (checkForErrors, go) {
var parameters;
_exception(null);
parameters = collectParameters(true);
if (parameters.hyper_parameters) {
return go();
}
_validationFailureMessage('');
return _.requestModelInputValidation(_algorithm, parameters, function (error, modelBuilder) {
var controls, hasErrors, validation, validations, validationsByControlName, _l, _len3, _len4, _len5, _m, _n;
if (error) {
return _exception(Flow.Failure(_, new Flow.Error('Error fetching initial model builder state', error)));
} else {
hasErrors = false;
if (modelBuilder.messages.length) {
validationsByControlName = lodash.groupBy(modelBuilder.messages, function (validation) {
return validation.field_name;
});
for (_l = 0, _len3 = _controlGroups.length; _l < _len3; _l++) {
controls = _controlGroups[_l];
for (_m = 0, _len4 = controls.length; _m < _len4; _m++) {
control = controls[_m];
if (validations = validationsByControlName[control.name]) {
for (_n = 0, _len5 = validations.length; _n < _len5; _n++) {
validation = validations[_n];
if (validation.message_type === 'TRACE') {
control.isVisible(false);
} else {
control.isVisible(true);
if (checkForErrors) {
switch (validation.message_type) {
case 'INFO':
control.hasInfo(true);
control.message(validation.message);
break;
case 'WARN':
control.hasWarning(true);
control.message(validation.message);
break;
case 'ERRR':
control.hasError(true);
control.message(validation.message);
hasErrors = true;
}
}
}
}
} else {
control.isVisible(true);
control.hasInfo(false);
control.hasWarning(false);
control.hasError(false);
control.message('');
}
}
}
}
if (hasErrors) {
return _validationFailureMessage('Your model parameters have one or more errors. Please fix them and try again.');
} else {
_validationFailureMessage('');
return go();
}
}
});
};
createModel = function () {
_exception(null);
return performValidations(true, function () {
var parameters;
parameters = collectParameters(false);
return _.insertAndExecuteCell('cs', 'buildModel \'' + _algorithm + '\', ' + Flow.Prelude.stringify(parameters));
});
};
_revalidate = function (value) {
if (value !== void 0) {
return performValidations(false, function () {
});
}
};
revalidate = lodash.throttle(_revalidate, 100, { leading: false });
performValidations(false, function () {
var controls, _l, _len3, _len4, _m;
for (_l = 0, _len3 = _controlGroups.length; _l < _len3; _l++) {
controls = _controlGroups[_l];
for (_m = 0, _len4 = controls.length; _m < _len4; _m++) {
control = controls[_m];
Flow.Dataflow.react(control.value, revalidate);
}
}
});
return {
form: _form,
isGrided: _isGrided,
gridStrategy: _gridStrategy,
gridStrategies: _gridStrategies,
isGridRandomDiscrete: _isGridRandomDiscrete,
gridMaxModels: _gridMaxModels,
gridMaxRuntime: _gridMaxRuntime,
gridStoppingRounds: _gridStoppingRounds,
gridStoppingMetrics: _gridStoppingMetrics,
gridStoppingMetric: _gridStoppingMetric,
gridStoppingTolerance: _gridStoppingTolerance,
exception: _exception,
parameterTemplateOf: parameterTemplateOf,
createModel: createModel,
hasValidationFailures: _hasValidationFailures,
validationFailureMessage: _validationFailureMessage
};
};
H2O.ModelInput = function (_, _go, _algo, _opts) {
var createModel, populateFramesAndColumns, _algorithm, _algorithms, _canCreateModel, _exception, _modelForm;
_exception = Flow.Dataflow.signal(null);
_algorithms = Flow.Dataflow.signal([]);
_algorithm = Flow.Dataflow.signal(null);
_canCreateModel = Flow.Dataflow.lift(_algorithm, function (algorithm) {
if (algorithm) {
return true;
} else {
return false;
}
});
_modelForm = Flow.Dataflow.signal(null);
populateFramesAndColumns = function (frameKey, algorithm, parameters, go) {
var classificationParameter, destinationKeyParameter;
destinationKeyParameter = lodash.find(parameters, function (parameter) {
return parameter.name === 'model_id';
});
if (destinationKeyParameter && !destinationKeyParameter.actual_value) {
destinationKeyParameter.actual_value = '' + algorithm + '-' + Flow.Util.uuid();
}
classificationParameter = lodash.find(parameters, function (parameter) {
return parameter.name === 'do_classification';
});
if (classificationParameter) {
classificationParameter.actual_value = true;
}
return _.requestFrames(function (error, frames) {
var frame, frameKeys, frameParameters, parameter, _i, _len;
if (error) {
} else {
frameKeys = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = frames.length; _i < _len; _i++) {
frame = frames[_i];
_results.push(frame.frame_id.name);
}
return _results;
}();
frameParameters = lodash.filter(parameters, function (parameter) {
return parameter.type === 'Key';
});
for (_i = 0, _len = frameParameters.length; _i < _len; _i++) {
parameter = frameParameters[_i];
parameter.values = frameKeys;
if (parameter.name === 'training_frame') {
if (frameKey) {
parameter.actual_value = frameKey;
} else {
frameKey = parameter.actual_value;
}
}
}
return go();
}
});
};
(function () {
return _.requestModelBuilders(function (error, modelBuilders) {
var frameKey;
_algorithms(modelBuilders);
_algorithm(_algo ? lodash.find(modelBuilders, function (builder) {
return builder.algo === _algo;
}) : void 0);
frameKey = _opts != null ? _opts.training_frame : void 0;
return Flow.Dataflow.act(_algorithm, function (builder) {
var algorithm, parameters;
if (builder) {
algorithm = builder.algo;
parameters = Flow.Prelude.deepClone(builder.parameters);
return populateFramesAndColumns(frameKey, algorithm, parameters, function () {
return _modelForm(H2O.ModelBuilderForm(_, algorithm, parameters));
});
} else {
return _modelForm(null);
}
});
});
}());
createModel = function () {
return _modelForm().createModel();
};
lodash.defer(_go);
return {
parentException: _exception,
algorithms: _algorithms,
algorithm: _algorithm,
modelForm: _modelForm,
canCreateModel: _canCreateModel,
createModel: createModel,
template: 'flow-model-input'
};
};
}.call(this));
(function () {
H2O.ModelOutput = function (_, _go, _model, refresh) {
var createOutput, _isLive, _output, _refresh, _toggleRefresh;
_output = Flow.Dataflow.signal(null);
createOutput = function (_model) {
var cloneModel, confusionMatrix, deleteModel, downloadPojo, exportModel, format4f, getAucAsLabel, getThresholdsAndCriteria, inspect, lambdaSearchParameter, output, plotter, predict, previewPojo, renderMultinomialConfusionMatrix, renderPlot, table, tableName, toggle, _i, _inputParameters, _isExpanded, _isPojoLoaded, _len, _plots, _pojoPreview, _ref, _ref1, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17, _ref18, _ref19, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
_isExpanded = Flow.Dataflow.signal(false);
_plots = Flow.Dataflow.signals([]);
_pojoPreview = Flow.Dataflow.signal(null);
_isPojoLoaded = Flow.Dataflow.lift(_pojoPreview, function (preview) {
if (preview) {
return true;
} else {
return false;
}
});
_inputParameters = lodash.map(_model.parameters, function (parameter) {
var actual_value, default_value, help, label, type, value;
type = parameter.type, default_value = parameter.default_value, actual_value = parameter.actual_value, label = parameter.label, help = parameter.help;
value = function () {
switch (type) {
case 'Key':
case 'Key':
if (actual_value) {
return actual_value.name;
} else {
return null;
}
break;
case 'VecSpecifier':
if (actual_value) {
return actual_value.column_name;
} else {
return null;
}
break;
case 'string[]':
case 'byte[]':
case 'short[]':
case 'int[]':
case 'long[]':
case 'float[]':
case 'double[]':
if (actual_value) {
return actual_value.join(', ');
} else {
return null;
}
break;
default:
return actual_value;
}
}();
return {
label: label,
value: value,
help: help,
isModified: default_value === actual_value
};
});
format4f = function (number) {
if (number) {
if (number === 'NaN') {
return void 0;
} else {
return number.toFixed(4).replace(/\.0+$/, '.0');
}
} else {
return number;
}
};
getAucAsLabel = function (model, tableName) {
var metrics;
if (metrics = _.inspect(tableName, model)) {
return ' , AUC = ' + metrics.schema.AUC.at(0);
} else {
return '';
}
};
getThresholdsAndCriteria = function (model, tableName) {
var criteria, criterionTable, i, idxVector, metricVector, thresholdVector, thresholds;
if (criterionTable = _.inspect(tableName, _model)) {
thresholdVector = table.schema.threshold;
thresholds = function () {
var _i, _ref, _results;
_results = [];
for (i = _i = 0, _ref = thresholdVector.count(); 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
_results.push({
index: i,
value: thresholdVector.at(i)
});
}
return _results;
}();
metricVector = criterionTable.schema.metric;
idxVector = criterionTable.schema.idx;
criteria = function () {
var _i, _ref, _results;
_results = [];
for (i = _i = 0, _ref = metricVector.count(); 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
_results.push({
index: idxVector.at(i),
value: metricVector.valueAt(i)
});
}
return _results;
}();
return {
thresholds: thresholds,
criteria: criteria
};
} else {
return void 0;
}
};
renderPlot = function (title, isCollapsed, render, thresholdsAndCriteria) {
var container, linkedFrame, rocPanel;
container = Flow.Dataflow.signal(null);
linkedFrame = Flow.Dataflow.signal(null);
if (thresholdsAndCriteria) {
rocPanel = {
thresholds: Flow.Dataflow.signals(thresholdsAndCriteria.thresholds),
threshold: Flow.Dataflow.signal(null),
criteria: Flow.Dataflow.signals(thresholdsAndCriteria.criteria),
criterion: Flow.Dataflow.signal(null)
};
}
render(function (error, vis) {
var _autoHighlight;
if (error) {
return console.debug(error);
} else {
$('a', vis.element).on('click', function (e) {
var $a;
$a = $(e.target);
switch ($a.attr('data-type')) {
case 'frame':
return _.insertAndExecuteCell('cs', 'getFrameSummary ' + Flow.Prelude.stringify($a.attr('data-key')));
case 'model':
return _.insertAndExecuteCell('cs', 'getModel ' + Flow.Prelude.stringify($a.attr('data-key')));
}
});
container(vis.element);
_autoHighlight = true;
if (vis.subscribe) {
vis.subscribe('markselect', function (_arg) {
var currentCriterion, frame, indices, renderTable, selectedIndex, subframe;
frame = _arg.frame, indices = _arg.indices;
subframe = window.plot.createFrame(frame.label, frame.vectors, indices);
renderTable = function (g) {
return g(indices.length > 1 ? g.select() : g.select(lodash.head(indices)), g.from(subframe));
};
_.plot(renderTable)(function (error, table) {
if (!error) {
return linkedFrame(table.element);
}
});
if (rocPanel) {
if (indices.length === 1) {
selectedIndex = lodash.head(indices);
_autoHighlight = false;
rocPanel.threshold(lodash.find(rocPanel.thresholds(), function (threshold) {
return threshold.index === selectedIndex;
}));
currentCriterion = rocPanel.criterion();
if (!currentCriterion || currentCriterion && currentCriterion.index !== selectedIndex) {
rocPanel.criterion(lodash.find(rocPanel.criteria(), function (criterion) {
return criterion.index === selectedIndex;
}));
}
_autoHighlight = true;
} else {
rocPanel.criterion(null);
rocPanel.threshold(null);
}
}
});
vis.subscribe('markdeselect', function () {
linkedFrame(null);
if (rocPanel) {
rocPanel.criterion(null);
return rocPanel.threshold(null);
}
});
if (rocPanel) {
Flow.Dataflow.react(rocPanel.threshold, function (threshold) {
if (threshold && _autoHighlight) {
return vis.highlight([threshold.index]);
}
});
return Flow.Dataflow.react(rocPanel.criterion, function (criterion) {
if (criterion && _autoHighlight) {
return vis.highlight([criterion.index]);
}
});
}
}
}
});
return _plots.push({
title: title,
plot: container,
frame: linkedFrame,
controls: Flow.Dataflow.signal(rocPanel),
isCollapsed: isCollapsed
});
};
renderMultinomialConfusionMatrix = function (title, cm) {
var bold, cell, cells, column, columnCount, errorColumnIndex, headers, i, normal, rowCount, rowIndex, rows, table, tbody, totalRowIndex, tr, yellow, _i, _ref;
_ref = Flow.HTML.template('table.flow-confusion-matrix', 'tbody', 'tr', 'td', 'td.strong', 'td.bg-yellow'), table = _ref[0], tbody = _ref[1], tr = _ref[2], normal = _ref[3], bold = _ref[4], yellow = _ref[5];
columnCount = cm.columns.length;
rowCount = cm.rowcount;
headers = lodash.map(cm.columns, function (column, i) {
return bold(column.description);
});
headers.unshift(normal(' '));
rows = [tr(headers)];
errorColumnIndex = columnCount - 2;
totalRowIndex = rowCount - 1;
for (rowIndex = _i = 0; 0 <= rowCount ? _i < rowCount : _i > rowCount; rowIndex = 0 <= rowCount ? ++_i : --_i) {
cells = function () {
var _j, _len, _ref1, _results;
_ref1 = cm.data;
_results = [];
for (i = _j = 0, _len = _ref1.length; _j < _len; i = ++_j) {
column = _ref1[i];
cell = i < errorColumnIndex ? i === rowIndex ? yellow : rowIndex < totalRowIndex ? normal : bold : bold;
_results.push(cell(i === errorColumnIndex ? format4f(column[rowIndex]) : column[rowIndex]));
}
return _results;
}();
cells.unshift(bold(rowIndex === rowCount - 1 ? 'Total' : cm.columns[rowIndex].description));
rows.push(tr(cells));
}
return _plots.push({
title: title + (cm.description ? ' ' + cm.description : ''),
plot: Flow.Dataflow.signal(Flow.HTML.render('div', table(tbody(rows)))),
frame: Flow.Dataflow.signal(null),
controls: Flow.Dataflow.signal(null),
isCollapsed: false
});
};
switch (_model.algo) {
case 'kmeans':
if (table = _.inspect('output - Scoring History', _model)) {
renderPlot('Scoring History', false, _.plot(function (g) {
return g(g.path(g.position('number_of_iterations', 'average_within_cluster_sum_of_squares'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('number_of_iterations', 'average_within_cluster_sum_of_squares'), g.strokeColor(g.value('#1f77b4'))), g.from(table));
}));
}
break;
case 'glm':
if (table = _.inspect('output - Scoring History', _model)) {
lambdaSearchParameter = lodash.find(_model.parameters, function (parameter) {
return parameter.name === 'lambda_search';
});
if (lambdaSearchParameter != null ? lambdaSearchParameter.actual_value : void 0) {
renderPlot('Scoring History', false, _.plot(function (g) {
return g(g.path(g.position('lambda', 'explained_deviance_train'), g.strokeColor(g.value('#1f77b4'))), g.path(g.position('lambda', 'explained_deviance_test'), g.strokeColor(g.value('#ff7f0e'))), g.point(g.position('lambda', 'explained_deviance_train'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('lambda', 'explained_deviance_test'), g.strokeColor(g.value('#ff7f0e'))), g.from(table));
}));
} else {
renderPlot('Scoring History', false, _.plot(function (g) {
return g(g.path(g.position('iteration', 'objective'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('iteration', 'objective'), g.strokeColor(g.value('#1f77b4'))), g.from(table));
}));
}
}
if (table = _.inspect('output - training_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Training Metrics' + getAucAsLabel(_model, 'output - training_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - training_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - validation_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Validation Metrics' + getAucAsLabel(_model, 'output - validation_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - validation_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - cross_validation_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Cross Validation Metrics' + getAucAsLabel(_model, 'output - cross_validation_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - cross_validation_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - Standardized Coefficient Magnitudes', _model)) {
renderPlot('Standardized Coefficient Magnitudes', false, _.plot(function (g) {
return g(g.rect(g.position('coefficients', 'names'), g.fillColor('sign')), g.from(table), g.limit(25));
}));
}
if (output = _model.output) {
if (output.model_category === 'Multinomial') {
if (confusionMatrix = (_ref = output.training_metrics) != null ? (_ref1 = _ref.cm) != null ? _ref1.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Training Metrics - Confusion Matrix', confusionMatrix);
}
if (confusionMatrix = (_ref2 = output.validation_metrics) != null ? (_ref3 = _ref2.cm) != null ? _ref3.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Validation Metrics - Confusion Matrix', confusionMatrix);
}
if (confusionMatrix = (_ref4 = output.cross_validation_metrics) != null ? (_ref5 = _ref4.cm) != null ? _ref5.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Cross Validation Metrics - Confusion Matrix', confusionMatrix);
}
}
}
break;
case 'deeplearning':
if (table = _.inspect('output - Scoring History', _model)) {
if (table.schema['validation_logloss'] && table.schema['training_logloss']) {
renderPlot('Scoring History - logloss', false, _.plot(function (g) {
return g(g.path(g.position('epochs', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.path(g.position('epochs', 'validation_logloss'), g.strokeColor(g.value('#ff7f0e'))), g.point(g.position('epochs', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('epochs', 'validation_logloss'), g.strokeColor(g.value('#ff7f0e'))), g.from(table));
}));
} else if (table.schema['training_logloss']) {
renderPlot('Scoring History - logloss', false, _.plot(function (g) {
return g(g.path(g.position('epochs', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('epochs', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.from(table));
}));
}
if (table.schema['training_deviance']) {
if (table.schema['validation_deviance']) {
renderPlot('Scoring History - Deviance', false, _.plot(function (g) {
return g(g.path(g.position('epochs', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.path(g.position('epochs', 'validation_deviance'), g.strokeColor(g.value('#ff7f0e'))), g.point(g.position('epochs', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('epochs', 'validation_deviance'), g.strokeColor(g.value('#ff7f0e'))), g.from(table));
}));
} else {
renderPlot('Scoring History - Deviance', false, _.plot(function (g) {
return g(g.path(g.position('epochs', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('epochs', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.from(table));
}));
}
} else if (table.schema['training_MSE']) {
if (table.schema['validation_MSE']) {
renderPlot('Scoring History - MSE', false, _.plot(function (g) {
return g(g.path(g.position('epochs', 'training_MSE'), g.strokeColor(g.value('#1f77b4'))), g.path(g.position('epochs', 'validation_MSE'), g.strokeColor(g.value('#ff7f0e'))), g.point(g.position('epochs', 'training_MSE'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('epochs', 'validation_MSE'), g.strokeColor(g.value('#ff7f0e'))), g.from(table));
}));
} else {
renderPlot('Scoring History - MSE', false, _.plot(function (g) {
return g(g.path(g.position('epochs', 'training_MSE'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('epochs', 'training_MSE'), g.strokeColor(g.value('#1f77b4'))), g.from(table));
}));
}
}
}
if (table = _.inspect('output - training_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Training Metrics' + getAucAsLabel(_model, 'output - training_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - training_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - validation_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Validation Metrics' + getAucAsLabel(_model, 'output - validation_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - validation_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - cross_validation_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Cross Validation Metrics' + getAucAsLabel(_model, 'output - cross_validation_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - cross_validation_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - Variable Importances', _model)) {
renderPlot('Variable Importances', false, _.plot(function (g) {
return g(g.rect(g.position('scaled_importance', 'variable')), g.from(table), g.limit(25));
}));
}
if (output = _model.output) {
if (output.model_category === 'Multinomial') {
if (confusionMatrix = (_ref6 = output.training_metrics) != null ? (_ref7 = _ref6.cm) != null ? _ref7.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Training Metrics - Confusion Matrix', confusionMatrix);
}
if (confusionMatrix = (_ref8 = output.validation_metrics) != null ? (_ref9 = _ref8.cm) != null ? _ref9.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Validation Metrics - Confusion Matrix', confusionMatrix);
}
if (confusionMatrix = (_ref10 = output.cross_validation_metrics) != null ? (_ref11 = _ref10.cm) != null ? _ref11.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Cross Validation Metrics - Confusion Matrix', confusionMatrix);
}
}
}
break;
case 'gbm':
case 'drf':
if (table = _.inspect('output - Scoring History', _model)) {
if (table.schema['validation_logloss'] && table.schema['training_logloss']) {
renderPlot('Scoring History - logloss', false, _.plot(function (g) {
return g(g.path(g.position('number_of_trees', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.path(g.position('number_of_trees', 'validation_logloss'), g.strokeColor(g.value('#ff7f0e'))), g.point(g.position('number_of_trees', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('number_of_trees', 'validation_logloss'), g.strokeColor(g.value('#ff7f0e'))), g.from(table));
}));
} else if (table.schema['training_logloss']) {
renderPlot('Scoring History - logloss', false, _.plot(function (g) {
return g(g.path(g.position('number_of_trees', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('number_of_trees', 'training_logloss'), g.strokeColor(g.value('#1f77b4'))), g.from(table));
}));
}
if (table.schema['training_deviance']) {
if (table.schema['validation_deviance']) {
renderPlot('Scoring History - Deviance', false, _.plot(function (g) {
return g(g.path(g.position('number_of_trees', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.path(g.position('number_of_trees', 'validation_deviance'), g.strokeColor(g.value('#ff7f0e'))), g.point(g.position('number_of_trees', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('number_of_trees', 'validation_deviance'), g.strokeColor(g.value('#ff7f0e'))), g.from(table));
}));
} else {
renderPlot('Scoring History - Deviance', false, _.plot(function (g) {
return g(g.path(g.position('number_of_trees', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.point(g.position('number_of_trees', 'training_deviance'), g.strokeColor(g.value('#1f77b4'))), g.from(table));
}));
}
}
}
if (table = _.inspect('output - training_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Training Metrics' + getAucAsLabel(_model, 'output - training_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - training_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - validation_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Validation Metrics' + getAucAsLabel(_model, 'output - validation_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - validation_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - cross_validation_metrics - Metrics for Thresholds', _model)) {
plotter = _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
});
renderPlot('ROC Curve - Cross Validation Metrics' + getAucAsLabel(_model, 'output - cross_validation_metrics'), false, plotter, getThresholdsAndCriteria(_model, 'output - cross_validation_metrics - Maximum Metrics'));
}
if (table = _.inspect('output - Variable Importances', _model)) {
renderPlot('Variable Importances', false, _.plot(function (g) {
return g(g.rect(g.position('scaled_importance', 'variable')), g.from(table), g.limit(25));
}));
}
if (output = _model.output) {
if (output.model_category === 'Multinomial') {
if (confusionMatrix = (_ref12 = output.training_metrics) != null ? (_ref13 = _ref12.cm) != null ? _ref13.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Training Metrics - Confusion Matrix', confusionMatrix);
}
if (confusionMatrix = (_ref14 = output.validation_metrics) != null ? (_ref15 = _ref14.cm) != null ? _ref15.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Validation Metrics - Confusion Matrix', confusionMatrix);
}
if (confusionMatrix = (_ref16 = output.cross_validation_metrics) != null ? (_ref17 = _ref16.cm) != null ? _ref17.table : void 0 : void 0) {
renderMultinomialConfusionMatrix('Cross Validation Metrics - Confusion Matrix', confusionMatrix);
}
}
}
}
if (table = _.inspect('output - training_metrics - Gains/Lift Table', _model)) {
renderPlot('Training Metrics - Gains/Lift Table', false, _.plot(function (g) {
return g(g.path(g.position('cumulative_data_fraction', 'cumulative_capture_rate'), g.strokeColor(g.value('black'))), g.path(g.position('cumulative_data_fraction', 'cumulative_lift'), g.strokeColor(g.value('green'))), g.from(table));
}));
}
if (table = _.inspect('output - validation_metrics - Gains/Lift Table', _model)) {
renderPlot('Validation Metrics - Gains/Lift Table', false, _.plot(function (g) {
return g(g.path(g.position('cumulative_data_fraction', 'cumulative_capture_rate'), g.strokeColor(g.value('black'))), g.path(g.position('cumulative_data_fraction', 'cumulative_lift'), g.strokeColor(g.value('green'))), g.from(table));
}));
}
if (table = _.inspect('output - cross_validation_metrics - Gains/Lift Table', _model)) {
renderPlot('Cross Validation Metrics - Gains/Lift Table', false, _.plot(function (g) {
return g(g.path(g.position('cumulative_data_fraction', 'cumulative_capture_rate'), g.strokeColor(g.value('black'))), g.path(g.position('cumulative_data_fraction', 'cumulative_lift'), g.strokeColor(g.value('green'))), g.from(table));
}));
}
_ref18 = _.ls(_model);
for (_i = 0, _len = _ref18.length; _i < _len; _i++) {
tableName = _ref18[_i];
if (!(tableName !== 'parameters')) {
continue;
}
if (output = ((_ref19 = _model.output) != null ? _ref19.model_category : void 0) === 'Multinomial') {
if (0 === tableName.indexOf('output - training_metrics - cm')) {
continue;
} else if (0 === tableName.indexOf('output - validation_metrics - cm')) {
continue;
} else if (0 === tableName.indexOf('output - cross_validation_metrics - cm')) {
continue;
}
}
if (table = _.inspect(tableName, _model)) {
renderPlot(tableName + (table.metadata.description ? ' (' + table.metadata.description + ')' : ''), true, _.plot(function (g) {
return g(table.indices.length > 1 ? g.select() : g.select(0), g.from(table));
}));
}
}
toggle = function () {
return _isExpanded(!_isExpanded());
};
cloneModel = function () {
return alert('Not implemented');
};
predict = function () {
return _.insertAndExecuteCell('cs', 'predict model: ' + Flow.Prelude.stringify(_model.model_id.name));
};
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect getModel ' + Flow.Prelude.stringify(_model.model_id.name));
};
previewPojo = function () {
return _.requestPojoPreview(_model.model_id.name, function (error, result) {
if (error) {
return _pojoPreview('' + lodash.escape(error) + '
');
} else {
return _pojoPreview('' + Flow.Util.highlight(result, 'java') + '
');
}
});
};
downloadPojo = function () {
return window.open('/3/Models.java/' + encodeURIComponent(_model.model_id.name), '_blank');
};
exportModel = function () {
return _.insertAndExecuteCell('cs', 'exportModel ' + Flow.Prelude.stringify(_model.model_id.name));
};
deleteModel = function () {
return _.confirm('Are you sure you want to delete this model?', {
acceptCaption: 'Delete Model',
declineCaption: 'Cancel'
}, function (accept) {
if (accept) {
return _.insertAndExecuteCell('cs', 'deleteModel ' + Flow.Prelude.stringify(_model.model_id.name));
}
});
};
return {
key: _model.model_id,
algo: _model.algo_full_name,
plots: _plots,
inputParameters: _inputParameters,
isExpanded: _isExpanded,
toggle: toggle,
cloneModel: cloneModel,
predict: predict,
inspect: inspect,
previewPojo: previewPojo,
downloadPojo: downloadPojo,
pojoPreview: _pojoPreview,
isPojoLoaded: _isPojoLoaded,
exportModel: exportModel,
deleteModel: deleteModel
};
};
_isLive = Flow.Dataflow.signal(false);
Flow.Dataflow.act(_isLive, function (isLive) {
if (isLive) {
return _refresh();
}
});
_refresh = function () {
return refresh(function (error, model) {
if (!error) {
_output(createOutput(model));
if (_isLive()) {
return lodash.delay(_refresh, 2000);
}
}
});
};
_toggleRefresh = function () {
return _isLive(!_isLive());
};
_output(createOutput(_model));
lodash.defer(_go);
return {
output: _output,
toggleRefresh: _toggleRefresh,
isLive: _isLive,
template: 'flow-model-output'
};
};
}.call(this));
(function () {
H2O.ModelsOutput = function (_, _go, _models) {
var buildModel, collectSelectedKeys, compareModels, createModelView, deleteModels, initialize, inspectAll, predictUsingModels, _canCompareModels, _checkAllModels, _checkedModelCount, _hasSelectedModels, _isCheckingAll, _modelViews;
_modelViews = Flow.Dataflow.signal([]);
_checkAllModels = Flow.Dataflow.signal(false);
_checkedModelCount = Flow.Dataflow.signal(0);
_canCompareModels = Flow.Dataflow.lift(_checkedModelCount, function (count) {
return count > 1;
});
_hasSelectedModels = Flow.Dataflow.lift(_checkedModelCount, function (count) {
return count > 0;
});
_isCheckingAll = false;
Flow.Dataflow.react(_checkAllModels, function (checkAll) {
var view, views, _i, _len;
_isCheckingAll = true;
views = _modelViews();
for (_i = 0, _len = views.length; _i < _len; _i++) {
view = views[_i];
view.isChecked(checkAll);
}
_checkedModelCount(checkAll ? views.length : 0);
_isCheckingAll = false;
});
createModelView = function (model) {
var cloneModel, inspect, predict, view, _isChecked;
_isChecked = Flow.Dataflow.signal(false);
Flow.Dataflow.react(_isChecked, function () {
var checkedViews, view;
if (_isCheckingAll) {
return;
}
checkedViews = function () {
var _i, _len, _ref, _results;
_ref = _modelViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
if (view.isChecked()) {
_results.push(view);
}
}
return _results;
}();
return _checkedModelCount(checkedViews.length);
});
predict = function () {
return _.insertAndExecuteCell('cs', 'predict model: ' + Flow.Prelude.stringify(model.model_id.name));
};
cloneModel = function () {
return alert('Not implemented');
return _.insertAndExecuteCell('cs', 'cloneModel ' + Flow.Prelude.stringify(model.model_id.name));
};
view = function () {
return _.insertAndExecuteCell('cs', 'getModel ' + Flow.Prelude.stringify(model.model_id.name));
};
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect getModel ' + Flow.Prelude.stringify(model.model_id.name));
};
return {
key: model.model_id.name,
algo: model.algo_full_name,
isChecked: _isChecked,
predict: predict,
clone: cloneModel,
inspect: inspect,
view: view
};
};
buildModel = function () {
return _.insertAndExecuteCell('cs', 'buildModel');
};
collectSelectedKeys = function () {
var view, _i, _len, _ref, _results;
_ref = _modelViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
if (view.isChecked()) {
_results.push(view.key);
}
}
return _results;
};
compareModels = function () {
return _.insertAndExecuteCell('cs', 'inspect getModels ' + Flow.Prelude.stringify(collectSelectedKeys()));
};
predictUsingModels = function () {
return _.insertAndExecuteCell('cs', 'predict models: ' + Flow.Prelude.stringify(collectSelectedKeys()));
};
deleteModels = function () {
return _.confirm('Are you sure you want to delete these models?', {
acceptCaption: 'Delete Models',
declineCaption: 'Cancel'
}, function (accept) {
if (accept) {
return _.insertAndExecuteCell('cs', 'deleteModels ' + Flow.Prelude.stringify(collectSelectedKeys()));
}
});
};
inspectAll = function () {
var allKeys, view;
allKeys = function () {
var _i, _len, _ref, _results;
_ref = _modelViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
_results.push(view.key);
}
return _results;
}();
return _.insertAndExecuteCell('cs', 'inspect getModels ' + Flow.Prelude.stringify(allKeys));
};
initialize = function (models) {
_modelViews(lodash.map(models, createModelView));
return lodash.defer(_go);
};
initialize(_models);
return {
modelViews: _modelViews,
hasModels: _models.length > 0,
buildModel: buildModel,
compareModels: compareModels,
predictUsingModels: predictUsingModels,
deleteModels: deleteModels,
checkedModelCount: _checkedModelCount,
canCompareModels: _canCompareModels,
hasSelectedModels: _hasSelectedModels,
checkAllModels: _checkAllModels,
inspect: inspectAll,
template: 'flow-models-output'
};
};
}.call(this));
(function () {
H2O.NetworkTestOutput = function (_, _go, _testResult) {
var render, _result;
_result = Flow.Dataflow.signal(null);
render = _.plot(function (g) {
return g(g.select(), g.from(_.inspect('result', _testResult)));
});
render(function (error, vis) {
if (error) {
return console.debug(error);
} else {
return _result(vis.element);
}
});
lodash.defer(_go);
return {
result: _result,
template: 'flow-network-test-output'
};
};
}.call(this));
(function () {
H2O.NoAssist = function (_, _go) {
lodash.defer(_go);
return {
showAssist: function () {
return _.insertAndExecuteCell('cs', 'assist');
},
template: 'flow-no-assist'
};
};
}.call(this));
(function () {
var MaxItemsPerPage, dataTypes, parseDelimiters, parseTypes;
MaxItemsPerPage = 15;
parseTypes = lodash.map([
'AUTO',
'ARFF',
'XLS',
'XLSX',
'CSV',
'SVMLight',
'ORC',
'AVRO'
], function (type) {
return {
type: type,
caption: type
};
});
parseDelimiters = function () {
var characterDelimiters, createDelimiter, otherDelimiters, whitespaceDelimiters, whitespaceSeparators;
whitespaceSeparators = [
'NULL',
'SOH (start of heading)',
'STX (start of text)',
'ETX (end of text)',
'EOT (end of transmission)',
'ENQ (enquiry)',
'ACK (acknowledge)',
'BEL \'\\a\' (bell)',
'BS \'\\b\' (backspace)',
'HT \'\\t\' (horizontal tab)',
'LF \'\\n\' (new line)',
'VT \'\\v\' (vertical tab)',
'FF \'\\f\' (form feed)',
'CR \'\\r\' (carriage ret)',
'SO (shift out)',
'SI (shift in)',
'DLE (data link escape)',
'DC1 (device control 1) ',
'DC2 (device control 2)',
'DC3 (device control 3)',
'DC4 (device control 4)',
'NAK (negative ack.)',
'SYN (synchronous idle)',
'ETB (end of trans. blk)',
'CAN (cancel)',
'EM (end of medium)',
'SUB (substitute)',
'ESC (escape)',
'FS (file separator)',
'GS (group separator)',
'RS (record separator)',
'US (unit separator)',
'\' \' SPACE'
];
createDelimiter = function (caption, charCode) {
return {
charCode: charCode,
caption: '' + caption + ': \'' + ('00' + charCode).slice(-2) + '\''
};
};
whitespaceDelimiters = lodash.map(whitespaceSeparators, createDelimiter);
characterDelimiters = lodash.times(126 - whitespaceSeparators.length, function (i) {
var charCode;
charCode = i + whitespaceSeparators.length;
return createDelimiter(String.fromCharCode(charCode), charCode);
});
otherDelimiters = [{
charCode: -1,
caption: 'AUTO'
}];
return whitespaceDelimiters.concat(characterDelimiters, otherDelimiters);
}();
dataTypes = [
'Unknown',
'Numeric',
'Enum',
'Time',
'UUID',
'String',
'Invalid'
];
H2O.SetupParseOutput = function (_, _go, _inputs, _result) {
var filterColumns, goToNextPage, goToPreviousPage, makePage, parseFiles, refreshPreview, _activePage, _canGoToNextPage, _canGoToPreviousPage, _canReconfigure, _chunkSize, _columnCount, _columnNameSearchTerm, _columns, _currentPage, _deleteOnDone, _delimiter, _destinationKey, _filteredColumns, _headerOption, _headerOptions, _inputKey, _parseType, _preview, _sourceKeys, _useSingleQuotes, _visibleColumns;
_inputKey = _inputs.paths ? 'paths' : 'source_frames';
_sourceKeys = lodash.map(_result.source_frames, function (src) {
return src.name;
});
_parseType = Flow.Dataflow.signal(lodash.find(parseTypes, function (parseType) {
return parseType.type === _result.parse_type;
}));
_canReconfigure = Flow.Dataflow.lift(_parseType, function (parseType) {
return parseType.type !== 'SVMLight';
});
_delimiter = Flow.Dataflow.signal(lodash.find(parseDelimiters, function (delimiter) {
return delimiter.charCode === _result.separator;
}));
_useSingleQuotes = Flow.Dataflow.signal(_result.single_quotes);
_destinationKey = Flow.Dataflow.signal(_result.destination_frame);
_headerOptions = {
auto: 0,
header: 1,
data: -1
};
_headerOption = Flow.Dataflow.signal(_result.check_header === 0 ? 'auto' : _result.check_header === -1 ? 'data' : 'header');
_deleteOnDone = Flow.Dataflow.signal(true);
_columnNameSearchTerm = Flow.Dataflow.signal('');
_preview = Flow.Dataflow.signal(_result);
_chunkSize = Flow.Dataflow.lift(_preview, function (preview) {
return preview.chunk_size;
});
refreshPreview = function () {
var column, columnTypes;
columnTypes = function () {
var _i, _len, _ref, _results;
_ref = _columns();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
column = _ref[_i];
_results.push(column.type());
}
return _results;
}();
return _.requestParseSetupPreview(_sourceKeys, _parseType().type, _delimiter().charCode, _useSingleQuotes(), _headerOptions[_headerOption()], columnTypes, function (error, result) {
if (!error) {
return _preview(result);
}
});
};
_columns = Flow.Dataflow.lift(_preview, function (preview) {
var columnCount, columnNames, columnTypes, data, i, j, previewData, row, rowCount, rows, _i, _j;
columnTypes = preview.column_types;
columnCount = columnTypes.length;
previewData = preview.data;
rowCount = previewData.length;
columnNames = preview.column_names;
rows = new Array(columnCount);
for (j = _i = 0; 0 <= columnCount ? _i < columnCount : _i > columnCount; j = 0 <= columnCount ? ++_i : --_i) {
data = new Array(rowCount);
for (i = _j = 0; 0 <= rowCount ? _j < rowCount : _j > rowCount; i = 0 <= rowCount ? ++_j : --_j) {
data[i] = previewData[i][j];
}
rows[j] = row = {
index: '' + (j + 1),
name: Flow.Dataflow.signal(columnNames ? columnNames[j] : ''),
type: Flow.Dataflow.signal(columnTypes[j]),
data: data
};
}
return rows;
});
_columnCount = Flow.Dataflow.lift(_columns, function (columns) {
return (columns != null ? columns.length : void 0) || 0;
});
_currentPage = 0;
Flow.Dataflow.act(_columns, function (columns) {
return lodash.forEach(columns, function (column) {
return Flow.Dataflow.react(column.type, function () {
_currentPage = _activePage().index;
return refreshPreview();
});
});
});
Flow.Dataflow.react(_parseType, _delimiter, _useSingleQuotes, _headerOption, function () {
_currentPage = 0;
return refreshPreview();
});
_filteredColumns = Flow.Dataflow.lift(_columns, function (columns) {
return columns;
});
makePage = function (index, columns) {
return {
index: index,
columns: columns
};
};
_activePage = Flow.Dataflow.lift(_columns, function (columns) {
return makePage(_currentPage, columns);
});
filterColumns = function () {
return _activePage(makePage(0, lodash.filter(_columns(), function (column) {
return -1 < column.name().toLowerCase().indexOf(_columnNameSearchTerm().toLowerCase());
})));
};
Flow.Dataflow.react(_columnNameSearchTerm, lodash.throttle(filterColumns, 500));
_visibleColumns = Flow.Dataflow.lift(_activePage, function (currentPage) {
var start;
start = currentPage.index * MaxItemsPerPage;
return currentPage.columns.slice(start, start + MaxItemsPerPage);
});
parseFiles = function () {
var column, columnNames, columnTypes, headerOption;
columnNames = function () {
var _i, _len, _ref, _results;
_ref = _columns();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
column = _ref[_i];
_results.push(column.name());
}
return _results;
}();
headerOption = _headerOptions[_headerOption()];
if (lodash.every(columnNames, function (columnName) {
return columnName.trim() === '';
})) {
columnNames = null;
headerOption = -1;
}
columnTypes = function () {
var _i, _len, _ref, _results;
_ref = _columns();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
column = _ref[_i];
_results.push(column.type());
}
return _results;
}();
return _.insertAndExecuteCell('cs', 'parseFiles\n ' + _inputKey + ': ' + Flow.Prelude.stringify(_inputs[_inputKey]) + '\n destination_frame: ' + Flow.Prelude.stringify(_destinationKey()) + '\n parse_type: ' + Flow.Prelude.stringify(_parseType().type) + '\n separator: ' + _delimiter().charCode + '\n number_columns: ' + _columnCount() + '\n single_quotes: ' + _useSingleQuotes() + '\n ' + (_canReconfigure() ? 'column_names: ' + Flow.Prelude.stringify(columnNames) + '\n ' : '') + (_canReconfigure() ? 'column_types: ' + Flow.Prelude.stringify(columnTypes) + '\n ' : '') + 'delete_on_done: ' + _deleteOnDone() + '\n check_header: ' + headerOption + '\n chunk_size: ' + _chunkSize());
};
_canGoToNextPage = Flow.Dataflow.lift(_activePage, function (currentPage) {
return (currentPage.index + 1) * MaxItemsPerPage < currentPage.columns.length;
});
_canGoToPreviousPage = Flow.Dataflow.lift(_activePage, function (currentPage) {
return currentPage.index > 0;
});
goToNextPage = function () {
var currentPage;
currentPage = _activePage();
return _activePage(makePage(currentPage.index + 1, currentPage.columns));
};
goToPreviousPage = function () {
var currentPage;
currentPage = _activePage();
if (currentPage.index > 0) {
return _activePage(makePage(currentPage.index - 1, currentPage.columns));
}
};
lodash.defer(_go);
return {
sourceKeys: _inputs[_inputKey],
canReconfigure: _canReconfigure,
parseTypes: parseTypes,
dataTypes: dataTypes,
delimiters: parseDelimiters,
parseType: _parseType,
delimiter: _delimiter,
useSingleQuotes: _useSingleQuotes,
destinationKey: _destinationKey,
headerOption: _headerOption,
deleteOnDone: _deleteOnDone,
columns: _visibleColumns,
parseFiles: parseFiles,
columnNameSearchTerm: _columnNameSearchTerm,
canGoToNextPage: _canGoToNextPage,
canGoToPreviousPage: _canGoToPreviousPage,
goToNextPage: goToNextPage,
goToPreviousPage: goToPreviousPage,
template: 'flow-parse-raw-input'
};
};
}.call(this));
(function () {
H2O.PlotInput = function (_, _go, _frame) {
var plot, vector, _canPlot, _color, _type, _types, _vectors, _x, _y;
_types = [
'point',
'path',
'rect'
];
_vectors = function () {
var _i, _len, _ref, _results;
_ref = _frame.vectors;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
vector = _ref[_i];
if (vector.type === Flow.TString || vector.type === Flow.TNumber) {
_results.push(vector.label);
}
}
return _results;
}();
_type = Flow.Dataflow.signal(null);
_x = Flow.Dataflow.signal(null);
_y = Flow.Dataflow.signal(null);
_color = Flow.Dataflow.signal(null);
_canPlot = Flow.Dataflow.lift(_type, _x, _y, function (type, x, y) {
return type && x && y;
});
plot = function () {
var color, command;
command = (color = _color()) ? 'plot (g) -> g(\n g.' + _type() + '(\n g.position ' + Flow.Prelude.stringify(_x()) + ', ' + Flow.Prelude.stringify(_y()) + '\n g.color ' + Flow.Prelude.stringify(color) + '\n )\n g.from inspect ' + Flow.Prelude.stringify(_frame.label) + ', ' + _frame.metadata.origin + '\n)' : 'plot (g) -> g(\n g.' + _type() + '(\n g.position ' + Flow.Prelude.stringify(_x()) + ', ' + Flow.Prelude.stringify(_y()) + '\n )\n g.from inspect ' + Flow.Prelude.stringify(_frame.label) + ', ' + _frame.metadata.origin + '\n)';
return _.insertAndExecuteCell('cs', command);
};
lodash.defer(_go);
return {
types: _types,
type: _type,
vectors: _vectors,
x: _x,
y: _y,
color: _color,
plot: plot,
canPlot: _canPlot,
template: 'flow-plot-input'
};
};
}.call(this));
(function () {
H2O.PlotOutput = function (_, _go, _plot) {
lodash.defer(_go);
return {
plot: _plot,
template: 'flow-plot-output'
};
};
}.call(this));
(function () {
H2O.PredictInput = function (_, _go, opt) {
var predict, _canPredict, _computeDeepFeaturesHiddenLayer, _computeLeafNodeAssignment, _computeReconstructionError, _deepFeaturesHiddenLayer, _deepFeaturesHiddenLayerValue, _destinationKey, _exception, _exemplarIndex, _exemplarIndexValue, _frames, _hasExemplarIndex, _hasFrames, _hasLeafNodeAssignment, _hasModels, _hasReconError, _models, _ref, _selectedFrame, _selectedFrames, _selectedFramesCaption, _selectedModel, _selectedModels, _selectedModelsCaption;
_destinationKey = Flow.Dataflow.signal((_ref = opt.predictions_frame) != null ? _ref : 'prediction-' + Flow.Util.uuid());
_selectedModels = opt.models ? opt.models : opt.model ? [opt.model] : [];
_selectedFrames = opt.frames ? opt.frames : opt.frame ? [opt.frame] : [];
_selectedModelsCaption = _selectedModels.join(', ');
_selectedFramesCaption = _selectedFrames.join(', ');
_exception = Flow.Dataflow.signal(null);
_selectedFrame = Flow.Dataflow.signal(null);
_selectedModel = Flow.Dataflow.signal(null);
_hasFrames = _selectedFrames.length ? true : false;
_hasModels = _selectedModels.length ? true : false;
_frames = Flow.Dataflow.signals([]);
_models = Flow.Dataflow.signals([]);
_hasReconError = Flow.Dataflow.lift(_selectedModel, function (model) {
var parameter, _i, _len, _ref1;
if (model) {
if (model.algo === 'deeplearning') {
_ref1 = model.parameters;
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
parameter = _ref1[_i];
if (parameter.name === 'autoencoder' && parameter.actual_value === true) {
return true;
}
}
}
}
return false;
});
_hasLeafNodeAssignment = Flow.Dataflow.lift(_selectedModel, function (model) {
if (model) {
switch (model.algo) {
case 'gbm':
case 'drf':
return true;
default:
return false;
}
}
});
_hasExemplarIndex = Flow.Dataflow.lift(_selectedModel, function (model) {
if (model) {
switch (model.algo) {
case 'aggregator':
return true;
default:
return false;
}
}
});
_computeReconstructionError = Flow.Dataflow.signal(false);
_computeDeepFeaturesHiddenLayer = Flow.Dataflow.signal(false);
_computeLeafNodeAssignment = Flow.Dataflow.signal(false);
_deepFeaturesHiddenLayer = Flow.Dataflow.signal(0);
_deepFeaturesHiddenLayerValue = Flow.Dataflow.lift(_deepFeaturesHiddenLayer, function (text) {
return parseInt(text, 10);
});
_exemplarIndex = Flow.Dataflow.signal(0);
_exemplarIndexValue = Flow.Dataflow.lift(_exemplarIndex, function (text) {
return parseInt(text, 10);
});
_canPredict = Flow.Dataflow.lift(_selectedFrame, _selectedModel, _hasReconError, _computeReconstructionError, _computeDeepFeaturesHiddenLayer, _deepFeaturesHiddenLayerValue, _exemplarIndexValue, _hasExemplarIndex, function (frame, model, hasReconError, computeReconstructionError, computeDeepFeaturesHiddenLayer, deepFeaturesHiddenLayerValue, exemplarIndexValue, hasExemplarIndex) {
var hasFrameAndModel, hasValidOptions;
hasFrameAndModel = frame && model || _hasFrames && model || _hasModels && frame || _hasModels && hasExemplarIndex;
hasValidOptions = hasReconError ? computeReconstructionError ? true : computeDeepFeaturesHiddenLayer ? !lodash.isNaN(deepFeaturesHiddenLayerValue) : true : true;
return hasFrameAndModel && hasValidOptions;
});
if (!_hasFrames) {
_.requestFrames(function (error, frames) {
var frame;
if (error) {
return _exception(new Flow.Error('Error fetching frame list.', error));
} else {
return _frames(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = frames.length; _i < _len; _i++) {
frame = frames[_i];
if (!frame.is_text) {
_results.push(frame.frame_id.name);
}
}
return _results;
}());
}
});
}
if (!_hasModels) {
_.requestModels(function (error, models) {
var model;
if (error) {
return _exception(new Flow.Error('Error fetching model list.', error));
} else {
return _models(function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = models.length; _i < _len; _i++) {
model = models[_i];
_results.push(model.model_id.name);
}
return _results;
}());
}
});
}
if (!_selectedModel()) {
if (opt.model && lodash.isString(opt.model)) {
_.requestModel(opt.model, function (error, model) {
return _selectedModel(model);
});
}
}
predict = function () {
var cs, destinationKey, frameArg, modelArg;
if (_hasFrames) {
frameArg = _selectedFrames.length > 1 ? _selectedFrames : lodash.head(_selectedFrames);
modelArg = _selectedModel();
} else if (_hasModels) {
modelArg = _selectedModels.length > 1 ? _selectedModels : lodash.head(_selectedModels);
frameArg = _selectedFrame();
} else {
modelArg = _selectedModel();
frameArg = _selectedFrame();
}
destinationKey = _destinationKey();
cs = 'predict model: ' + Flow.Prelude.stringify(modelArg) + ', frame: ' + Flow.Prelude.stringify(frameArg);
if (destinationKey) {
cs += ', predictions_frame: ' + Flow.Prelude.stringify(destinationKey);
}
if (_hasReconError()) {
if (_computeReconstructionError()) {
cs += ', reconstruction_error: true';
} else if (_computeDeepFeaturesHiddenLayer()) {
cs += ', deep_features_hidden_layer: ' + _deepFeaturesHiddenLayerValue();
}
}
if (_hasLeafNodeAssignment()) {
if (_computeLeafNodeAssignment()) {
cs += ', leaf_node_assignment: true';
}
}
if (_hasExemplarIndex()) {
cs += ', exemplar_index: ' + _exemplarIndexValue();
}
return _.insertAndExecuteCell('cs', cs);
};
lodash.defer(_go);
return {
destinationKey: _destinationKey,
exception: _exception,
hasModels: _hasModels,
hasFrames: _hasFrames,
canPredict: _canPredict,
selectedFramesCaption: _selectedFramesCaption,
selectedModelsCaption: _selectedModelsCaption,
selectedFrame: _selectedFrame,
selectedModel: _selectedModel,
frames: _frames,
models: _models,
predict: predict,
hasReconError: _hasReconError,
hasLeafNodeAssignment: _hasLeafNodeAssignment,
hasExemplarIndex: _hasExemplarIndex,
computeReconstructionError: _computeReconstructionError,
computeDeepFeaturesHiddenLayer: _computeDeepFeaturesHiddenLayer,
computeLeafNodeAssignment: _computeLeafNodeAssignment,
deepFeaturesHiddenLayer: _deepFeaturesHiddenLayer,
exemplarIndex: _exemplarIndex,
template: 'flow-predict-input'
};
};
}.call(this));
(function () {
H2O.PredictOutput = function (_, _go, prediction) {
var frame, inspect, model, renderPlot, table, tableName, _canInspect, _i, _len, _plots, _ref, _ref1;
if (prediction) {
frame = prediction.frame, model = prediction.model;
}
_plots = Flow.Dataflow.signals([]);
_canInspect = prediction.__meta ? true : false;
renderPlot = function (title, prediction, render) {
var combineWithFrame, container;
container = Flow.Dataflow.signal(null);
combineWithFrame = function () {
var predictionsFrameName, targetFrameName;
predictionsFrameName = prediction.predictions.frame_id.name;
targetFrameName = 'combined-' + predictionsFrameName;
return _.insertAndExecuteCell('cs', 'bindFrames ' + Flow.Prelude.stringify(targetFrameName) + ', [ ' + Flow.Prelude.stringify(predictionsFrameName) + ', ' + Flow.Prelude.stringify(frame.name) + ' ]');
};
render(function (error, vis) {
if (error) {
return console.debug(error);
} else {
$('a', vis.element).on('click', function (e) {
var $a;
$a = $(e.target);
switch ($a.attr('data-type')) {
case 'frame':
return _.insertAndExecuteCell('cs', 'getFrameSummary ' + Flow.Prelude.stringify($a.attr('data-key')));
case 'model':
return _.insertAndExecuteCell('cs', 'getModel ' + Flow.Prelude.stringify($a.attr('data-key')));
}
});
return container(vis.element);
}
});
return _plots.push({
title: title,
plot: container,
combineWithFrame: combineWithFrame,
canCombineWithFrame: title === 'Prediction'
});
};
if (prediction) {
switch ((_ref = prediction.__meta) != null ? _ref.schema_type : void 0) {
case 'ModelMetricsBinomial':
if (table = _.inspect('Prediction - Metrics for Thresholds', prediction)) {
renderPlot('ROC Curve', prediction, _.plot(function (g) {
return g(g.path(g.position('fpr', 'tpr')), g.line(g.position(g.value(1), g.value(0)), g.strokeColor(g.value('red'))), g.from(table), g.domainX_HACK(0, 1), g.domainY_HACK(0, 1));
}));
}
}
_ref1 = _.ls(prediction);
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
tableName = _ref1[_i];
if (table = _.inspect(tableName, prediction)) {
if (table.indices.length > 1) {
renderPlot(tableName, prediction, _.plot(function (g) {
return g(g.select(), g.from(table));
}));
} else {
renderPlot(tableName, prediction, _.plot(function (g) {
return g(g.select(0), g.from(table));
}));
}
}
}
}
inspect = function () {
return _.insertAndExecuteCell('cs', 'inspect getPrediction model: ' + Flow.Prelude.stringify(model.name) + ', frame: ' + Flow.Prelude.stringify(frame.name));
};
lodash.defer(_go);
return {
plots: _plots,
inspect: inspect,
canInspect: _canInspect,
template: 'flow-predict-output'
};
};
}.call(this));
(function () {
H2O.PredictsOutput = function (_, _go, opts, _predictions) {
var arePredictionsComparable, comparePredictions, createPredictionView, initialize, inspectAll, plotMetrics, plotPredictions, plotScores, predict, _canComparePredictions, _checkAllPredictions, _isCheckingAll, _metricsTable, _predictionViews, _predictionsTable, _rocCurve, _scoresTable;
_predictionViews = Flow.Dataflow.signal([]);
_checkAllPredictions = Flow.Dataflow.signal(false);
_canComparePredictions = Flow.Dataflow.signal(false);
_rocCurve = Flow.Dataflow.signal(null);
arePredictionsComparable = function (views) {
if (views.length === 0) {
return false;
}
return lodash.every(views, function (view) {
return view.modelCategory === 'Binomial';
});
};
_isCheckingAll = false;
Flow.Dataflow.react(_checkAllPredictions, function (checkAll) {
var view, _i, _len, _ref;
_isCheckingAll = true;
_ref = _predictionViews();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
view.isChecked(checkAll);
}
_canComparePredictions(checkAll && arePredictionsComparable(_predictionViews()));
_isCheckingAll = false;
});
createPredictionView = function (prediction) {
var inspect, view, _frameKey, _hasFrame, _isChecked, _modelKey, _ref;
_modelKey = prediction.model.name;
_frameKey = (_ref = prediction.frame) != null ? _ref.name : void 0;
_hasFrame = _frameKey ? true : false;
_isChecked = Flow.Dataflow.signal(false);
Flow.Dataflow.react(_isChecked, function () {
var checkedViews, view;
if (_isCheckingAll) {
return;
}
checkedViews = function () {
var _i, _len, _ref1, _results;
_ref1 = _predictionViews();
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
view = _ref1[_i];
if (view.isChecked()) {
_results.push(view);
}
}
return _results;
}();
return _canComparePredictions(arePredictionsComparable(checkedViews));
});
view = function () {
if (_hasFrame) {
return _.insertAndExecuteCell('cs', 'getPrediction model: ' + Flow.Prelude.stringify(_modelKey) + ', frame: ' + Flow.Prelude.stringify(_frameKey));
}
};
inspect = function () {
if (_hasFrame) {
return _.insertAndExecuteCell('cs', 'inspect getPrediction model: ' + Flow.Prelude.stringify(_modelKey) + ', frame: ' + Flow.Prelude.stringify(_frameKey));
}
};
return {
modelKey: _modelKey,
frameKey: _frameKey,
modelCategory: prediction.model_category,
isChecked: _isChecked,
hasFrame: _hasFrame,
view: view,
inspect: inspect
};
};
_predictionsTable = _.inspect('predictions', _predictions);
_metricsTable = _.inspect('metrics', _predictions);
_scoresTable = _.inspect('scores', _predictions);
comparePredictions = function () {
var selectedKeys, view;
selectedKeys = function () {
var _i, _len, _ref, _results;
_ref = _predictionViews();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
view = _ref[_i];
if (view.isChecked()) {
_results.push({
model: view.modelKey,
frame: view.frameKey
});
}
}
return _results;
}();
return _.insertAndExecuteCell('cs', 'getPredictions ' + Flow.Prelude.stringify(selectedKeys));
};
plotPredictions = function () {
return _.insertAndExecuteCell('cs', _predictionsTable.metadata.plot);
};
plotScores = function () {
return _.insertAndExecuteCell('cs', _scoresTable.metadata.plot);
};
plotMetrics = function () {
return _.insertAndExecuteCell('cs', _metricsTable.metadata.plot);
};
inspectAll = function () {
return _.insertAndExecuteCell('cs', 'inspect ' + _predictionsTable.metadata.origin);
};
predict = function () {
return _.insertAndExecuteCell('cs', 'predict');
};
initialize = function (predictions) {
_predictionViews(lodash.map(predictions, createPredictionView));
return lodash.defer(_go);
};
initialize(_predictions);
return {
predictionViews: _predictionViews,
hasPredictions: _predictions.length > 0,
comparePredictions: comparePredictions,
canComparePredictions: _canComparePredictions,
checkAllPredictions: _checkAllPredictions,
plotPredictions: plotPredictions,
plotScores: plotScores,
plotMetrics: plotMetrics,
inspect: inspectAll,
predict: predict,
rocCurve: _rocCurve,
template: 'flow-predicts-output'
};
};
}.call(this));
(function () {
H2O.ProfileOutput = function (_, _go, _profile) {
var createNode, i, node, _activeNode, _nodes;
_activeNode = Flow.Dataflow.signal(null);
createNode = function (node) {
var display, entries, entry, self;
display = function () {
return _activeNode(self);
};
entries = function () {
var _i, _len, _ref, _results;
_ref = node.entries;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
entry = _ref[_i];
_results.push({
stacktrace: entry.stacktrace,
caption: 'Count: ' + entry.count
});
}
return _results;
}();
return self = {
name: node.node_name,
caption: '' + node.node_name + ' at ' + new Date(node.timestamp),
entries: entries,
display: display
};
};
_nodes = function () {
var _i, _len, _ref, _results;
_ref = _profile.nodes;
_results = [];
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
node = _ref[i];
_results.push(createNode(node));
}
return _results;
}();
_activeNode(lodash.head(_nodes));
lodash.defer(_go);
return {
nodes: _nodes,
activeNode: _activeNode,
template: 'flow-profile-output'
};
};
}.call(this));
(function () {
H2O.RDDsOutput = function (_, _go, _rDDs) {
var createRDDView, _rDDViews;
_rDDViews = Flow.Dataflow.signal([]);
createRDDView = function (rDD) {
return {
id: rDD.rdd_id,
name: rDD.name,
partitions: rDD.partitions
};
};
_rDDViews(lodash.map(_rDDs, createRDDView));
lodash.defer(_go);
return {
rDDViews: _rDDViews,
hasRDDs: _rDDs.length > 0,
template: 'flow-rdds-output'
};
};
}.call(this));
(function () {
H2O.ScalaCodeOutput = function (_, _go, _result) {
var createScalaCodeView, _scalaCodeView, _scalaLinkText, _scalaResponseVisible;
_scalaCodeView = Flow.Dataflow.signal(null);
_scalaResponseVisible = Flow.Dataflow.signal(false);
_scalaLinkText = Flow.Dataflow.signal('Show Scala Response');
createScalaCodeView = function (result) {
return {
output: result.output,
response: result.response,
status: result.status,
scalaResponseVisible: _scalaResponseVisible,
scalaLinkText: _scalaLinkText,
toggleVisibility: function () {
_scalaResponseVisible(!_scalaResponseVisible());
if (_scalaResponseVisible()) {
return _scalaLinkText('Hide Scala Response');
} else {
return _scalaLinkText('Show Scala Response');
}
}
};
};
_scalaCodeView(createScalaCodeView(_result));
lodash.defer(_go);
return {
scalaCodeView: _scalaCodeView,
template: 'flow-scala-code-output'
};
};
}.call(this));
(function () {
H2O.ScalaIntpOutput = function (_, _go, _result) {
var createScalaIntpView, _scalaIntpView;
_scalaIntpView = Flow.Dataflow.signal(null);
createScalaIntpView = function (result) {
return { session_id: result.session_id };
};
_scalaIntpView(createScalaIntpView(_result));
lodash.defer(_go);
return {
scalaIntpView: _scalaIntpView,
template: 'flow-scala-intp-output'
};
};
}.call(this));
(function () {
H2O.SplitFrameInput = function (_, _go, _frameKey) {
var addSplit, addSplitRatio, collectKeys, collectRatios, computeSplits, createSplit, createSplitName, format4f, initialize, splitFrame, updateSplitRatiosAndNames, _frame, _frames, _lastSplitKey, _lastSplitRatio, _lastSplitRatioText, _seed, _splits, _validationMessage;
_frames = Flow.Dataflow.signal([]);
_frame = Flow.Dataflow.signal(null);
_lastSplitRatio = Flow.Dataflow.signal(1);
format4f = function (value) {
return value.toPrecision(4).replace(/0+$/, '0');
};
_lastSplitRatioText = Flow.Dataflow.lift(_lastSplitRatio, function (ratio) {
if (lodash.isNaN(ratio)) {
return ratio;
} else {
return format4f(ratio);
}
});
_lastSplitKey = Flow.Dataflow.signal('');
_splits = Flow.Dataflow.signals([]);
_seed = Flow.Dataflow.signal(Math.random() * 1000000 | 0);
Flow.Dataflow.react(_splits, function () {
return updateSplitRatiosAndNames();
});
_validationMessage = Flow.Dataflow.signal('');
collectRatios = function () {
var entry, _i, _len, _ref, _results;
_ref = _splits();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
entry = _ref[_i];
_results.push(entry.ratio());
}
return _results;
};
collectKeys = function () {
var entry, splitKeys;
splitKeys = function () {
var _i, _len, _ref, _results;
_ref = _splits();
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
entry = _ref[_i];
_results.push(entry.key().trim());
}
return _results;
}();
splitKeys.push(_lastSplitKey().trim());
return splitKeys;
};
createSplitName = function (key, ratio) {
return key + '_' + format4f(ratio);
};
updateSplitRatiosAndNames = function () {
var entry, frame, frameKey, lastSplitRatio, ratio, totalRatio, _i, _j, _len, _len1, _ref, _ref1;
totalRatio = 0;
_ref = collectRatios();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
ratio = _ref[_i];
totalRatio += ratio;
}
lastSplitRatio = _lastSplitRatio(1 - totalRatio);
frameKey = (frame = _frame()) ? frame : 'frame';
_ref1 = _splits();
for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
entry = _ref1[_j];
entry.key(createSplitName(frameKey, entry.ratio()));
}
_lastSplitKey(createSplitName(frameKey, _lastSplitRatio()));
};
computeSplits = function (go) {
var key, ratio, splitKeys, splitRatios, totalRatio, _i, _j, _len, _len1;
if (!_frame()) {
return go('Frame not specified.');
}
splitRatios = collectRatios();
totalRatio = 0;
for (_i = 0, _len = splitRatios.length; _i < _len; _i++) {
ratio = splitRatios[_i];
if (0 < ratio && ratio < 1) {
totalRatio += ratio;
} else {
return go('One or more split ratios are invalid. Ratios should between 0 and 1.');
}
}
if (totalRatio >= 1) {
return go('Sum of ratios is >= 1.');
}
splitKeys = collectKeys();
for (_j = 0, _len1 = splitKeys.length; _j < _len1; _j++) {
key = splitKeys[_j];
if (key === '') {
return go('One or more keys are empty or invalid.');
}
}
if (splitKeys.length < 2) {
return go('Please specify at least two splits.');
}
if (splitKeys.length !== lodash.unique(splitKeys).length) {
return go('Duplicate keys specified.');
}
return go(null, splitRatios, splitKeys);
};
createSplit = function (ratio) {
var self, _key, _ratio, _ratioText;
_ratioText = Flow.Dataflow.signal('' + ratio);
_key = Flow.Dataflow.signal('');
_ratio = Flow.Dataflow.lift(_ratioText, function (text) {
return parseFloat(text);
});
Flow.Dataflow.react(_ratioText, updateSplitRatiosAndNames);
Flow.Prelude.remove = function () {
return _splits.remove(self);
};
return self = {
key: _key,
ratioText: _ratioText,
ratio: _ratio,
remove: Flow.Prelude.remove
};
};
addSplitRatio = function (ratio) {
return _splits.push(createSplit(ratio));
};
addSplit = function () {
return addSplitRatio(0);
};
splitFrame = function () {
return computeSplits(function (error, splitRatios, splitKeys) {
if (error) {
return _validationMessage(error);
} else {
_validationMessage('');
return _.insertAndExecuteCell('cs', 'splitFrame ' + Flow.Prelude.stringify(_frame()) + ', ' + Flow.Prelude.stringify(splitRatios) + ', ' + Flow.Prelude.stringify(splitKeys) + ', ' + _seed());
}
});
};
initialize = function () {
_.requestFrames(function (error, frames) {
var frame, frameKeys;
if (error) {
} else {
frameKeys = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = frames.length; _i < _len; _i++) {
frame = frames[_i];
if (!frame.is_text) {
_results.push(frame.frame_id.name);
}
}
return _results;
}();
frameKeys.sort();
_frames(frameKeys);
return _frame(_frameKey);
}
});
addSplitRatio(0.25);
return lodash.defer(_go);
};
initialize();
return {
frames: _frames,
frame: _frame,
lastSplitRatio: _lastSplitRatio,
lastSplitRatioText: _lastSplitRatioText,
lastSplitKey: _lastSplitKey,
splits: _splits,
seed: _seed,
addSplit: addSplit,
splitFrame: splitFrame,
validationMessage: _validationMessage,
template: 'flow-split-frame-input'
};
};
}.call(this));
(function () {
H2O.SplitFrameOutput = function (_, _go, _splitFrameResult) {
var computeRatios, createFrameView, index, key, _frames, _ratios;
computeRatios = function (sourceRatios) {
var ratio, ratios, total;
total = 0;
ratios = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = sourceRatios.length; _i < _len; _i++) {
ratio = sourceRatios[_i];
total += ratio;
_results.push(ratio);
}
return _results;
}();
ratios.push(1 - total);
return ratios;
};
createFrameView = function (key, ratio) {
var self, view;
view = function () {
return _.insertAndExecuteCell('cs', 'getFrameSummary ' + Flow.Prelude.stringify(key));
};
return self = {
key: key,
ratio: ratio,
view: view
};
};
_ratios = computeRatios(_splitFrameResult.ratios);
_frames = function () {
var _i, _len, _ref, _results;
_ref = _splitFrameResult.keys;
_results = [];
for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) {
key = _ref[index];
_results.push(createFrameView(key, _ratios[index]));
}
return _results;
}();
lodash.defer(_go);
return {
frames: _frames,
template: 'flow-split-frame-output'
};
};
}.call(this));
(function () {
H2O.StackTraceOutput = function (_, _go, _stackTrace) {
var createNode, createThread, node, _activeNode, _nodes;
_activeNode = Flow.Dataflow.signal(null);
createThread = function (thread) {
var lines;
lines = thread.split('\n');
return {
title: lodash.head(lines),
stackTrace: lodash.tail(lines).join('\n')
};
};
createNode = function (node) {
var display, self, thread;
display = function () {
return _activeNode(self);
};
return self = {
name: node.node,
timestamp: new Date(node.time),
threads: function () {
var _i, _len, _ref, _results;
_ref = node.thread_traces;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
thread = _ref[_i];
_results.push(createThread(thread));
}
return _results;
}(),
display: display
};
};
_nodes = function () {
var _i, _len, _ref, _results;
_ref = _stackTrace.traces;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
node = _ref[_i];
_results.push(createNode(node));
}
return _results;
}();
_activeNode(lodash.head(_nodes));
lodash.defer(_go);
return {
nodes: _nodes,
activeNode: _activeNode,
template: 'flow-stacktrace-output'
};
};
}.call(this));
(function () {
H2O.TimelineOutput = function (_, _go, _timeline) {
var createEvent, refresh, toggleRefresh, updateTimeline, _data, _headers, _isBusy, _isLive, _timestamp;
_isLive = Flow.Dataflow.signal(false);
_isBusy = Flow.Dataflow.signal(false);
_headers = [
'HH:MM:SS:MS',
'nanosec',
'Who',
'I/O Type',
'Event',
'Type',
'Bytes'
];
_data = Flow.Dataflow.signal(null);
_timestamp = Flow.Dataflow.signal(Date.now());
createEvent = function (event) {
switch (event.type) {
case 'io':
return [
event.date,
event.nanos,
event.node,
event.io_flavor || '-',
'I/O',
'-',
event.data
];
case 'heartbeat':
return [
event.date,
event.nanos,
'many → many',
'UDP',
event.type,
'-',
'' + event.sends + ' sent ' + event.recvs + ' received'
];
case 'network_msg':
return [
event.date,
event.nanos,
'' + event.from + ' → ' + event.to,
event.protocol,
event.msg_type,
event.is_send ? 'send' : 'receive',
event.data
];
}
};
updateTimeline = function (timeline) {
var cell, event, grid, header, table, tbody, td, th, thead, ths, tr, trs, _ref;
_ref = Flow.HTML.template('.grid', 'table', 'thead', 'tbody', 'tr', 'th', 'td'), grid = _ref[0], table = _ref[1], thead = _ref[2], tbody = _ref[3], tr = _ref[4], th = _ref[5], td = _ref[6];
ths = function () {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = _headers.length; _i < _len; _i++) {
header = _headers[_i];
_results.push(th(header));
}
return _results;
}();
trs = function () {
var _i, _len, _ref1, _results;
_ref1 = timeline.events;
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
event = _ref1[_i];
_results.push(tr(function () {
var _j, _len1, _ref2, _results1;
_ref2 = createEvent(event);
_results1 = [];
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
cell = _ref2[_j];
_results1.push(td(cell));
}
return _results1;
}()));
}
return _results;
}();
return _data(Flow.HTML.render('div', grid([table([
thead(tr(ths)),
tbody(trs)
])])));
};
toggleRefresh = function () {
return _isLive(!_isLive());
};
refresh = function () {
_isBusy(true);
return _.requestTimeline(function (error, timeline) {
_isBusy(false);
if (error) {
_exception(Flow.Failure(_, new Flow.Error('Error fetching timeline', error)));
return _isLive(false);
} else {
updateTimeline(timeline);
if (_isLive()) {
return lodash.delay(refresh, 2000);
}
}
});
};
Flow.Dataflow.act(_isLive, function (isLive) {
if (isLive) {
return refresh();
}
});
updateTimeline(_timeline);
lodash.defer(_go);
return {
data: _data,
isLive: _isLive,
isBusy: _isBusy,
toggleRefresh: toggleRefresh,
refresh: refresh,
template: 'flow-timeline-output'
};
};
}.call(this));}).call(this);
© 2015 - 2025 Weber Informatics LLC | Privacy Policy