| <!DOCTYPE html> |
| <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> |
| <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> |
| <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> |
| <!--[if gt IE 8]><!--> |
| <html class="no-js"> |
| <!--<![endif]--> |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| <title>PredictionIO Admin Web</title> |
| <meta name="description" content=""> |
| <meta name="viewport" content="width=device-width"> |
| |
| <link rel="stylesheet" href="assets/stylesheets/vendors/bootstrap.min.css"> |
| <link rel="stylesheet" href="assets/stylesheets/vendors/darkstrap.css"> |
| <link rel="stylesheet" href="assets/stylesheets/main.css?v=201304091"> |
| <link rel="stylesheet" href="assets/stylesheets/vendors/jquery-ui-1.9.2.custom.min.css"> |
| <script type="text/javascript" src="assets/javascripts/vendors/modernizr-2.6.2-respond-1.1.0.min.js"></script> |
| <link rel="stylesheet" href="assets/stylesheets/vendors/toastr-1.2.2.min.css"> |
| <link rel="stylesheet" href="assets/stylesheets/vendors/toggle-switch.css"> |
| |
| <script type="text/template" id="auth_template"> |
| <% if (data.username) { %> |
| <div id="navAuth" class="btn-group pull-right"> |
| <a class="btn btn-inverse btn-small dropdown-toggle" data-toggle="dropdown" href="#"><i class="icon-user icon-white"></i> <%= data.username %> <span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <!-- TODO |
| <li><a href="#">Edit Account</a></li> |
| <li><a href="#">Admin Settings</a></li> |
| <li class="divider"></li> |
| --> |
| <li><a href="?#signout"><i class="i"></i> Logout</a></li> |
| </ul> |
| </div> |
| <% } %> |
| </script> |
| <script type="text/template" id="signin_template"> |
| <div class="row-fluid"> |
| <div class="span12"> |
| <div id="signinContainer" class="center"> |
| <form id="signinForm" class="form-horizontal"> |
| <div class="modal modal-visible"> |
| <div class="modal-header"> |
| <h4>PredictionIO Admin Panel</h4> |
| </div> |
| <div class="modal-body"> |
| <div class="control-group"> |
| <label class="control-label" for="email">Email</label> |
| <div class="controls"> |
| <input type="text" name="email" required="required" placeholder="your email"> |
| </div> |
| </div> |
| <div class="control-group"> |
| <label class="control-label" for="password">Password</label> |
| <div class="controls"> |
| <input type="password" name="password" required="required" placeholder="your password"> |
| </div> |
| </div> |
| <div class="control-group"> |
| <div class="controls"> |
| <label class="checkbox"> <input name="remember" type="checkbox"> |
| Remember me |
| </label> |
| </div> |
| </div> |
| <div class="pull-right"> |
| <span id="signinFormError" class="displayNone text-warning">error</span> |
| </div> |
| </div> |
| <div class="modal-footer"> |
| |
| <button type="submit" class="btn btn-primary input-medium">Sign In</button> |
| </div> |
| </div> |
| </form> |
| <div> |
| <!-- TODO |
| <a href="#">Forget Password?</a> |
| --> |
| </div> |
| </div> |
| </div> |
| </div> |
| </script> |
| |
| <script type="text/template" id="appsDashboard_template"> |
| <div class="row-fluid topMargin"> |
| <div class="span10 offset1"> |
| <div class="modal modal-visible modal-inverse"> |
| <div class="modal-header"> |
| <h5>Applications</h5> |
| </div> |
| <div class="modal-container"> |
| <section class="modal-content"> |
| <div class="modal-item-box"> |
| <div id="appList"> |
| <!-- App list template --> |
| </div> |
| <div id="appCreatePanel" class="displayNone modal-item"> |
| <div class="row-fluid"> |
| <div class="span5"> |
| <form class="navbar-form"> |
| <div class="input-append"> |
| <input id="addAppInput" type="text" |
| placeholder="Name your app. E.g. MyMobileApp"> |
| <button id="createAppBtn" class="btn" type="button">Add</button> |
| </div> |
| <span id="addAppInputError" class="displayNone text-error">Something |
| may have gone wrong</span> |
| </form> |
| </div> |
| </div> |
| </div> |
| </div> |
| <!-- End of App --> |
| <a href="#" id="showAddAppBtn" class="btn btn-small pull-right">Add |
| an App</a> |
| </section> |
| |
| </div> |
| </div> |
| </div> |
| </div> |
| </script> |
| |
| <script type="text/template" id="app_template"> |
| <div class="modal-item"> |
| <div class="clearfix"> |
| <div class="pull-left"> |
| <h5> |
| <a class="toggleAppDetailsAction" href="#"><%= data.appname %></a> |
| </h5> |
| </div> |
| <div class="modal-item-panel pull-right"> |
| <a href="#" class="actionbtn toggleAppDetailsAction"><i |
| class="icon-cog icon-white"></i> Develop</a> |
| </div> |
| </div> |
| <div class="app-info displayNone"> |
| <div class="appdetails"> |
| <!-- app details template --> |
| </div> |
| <div class="appenginelist"> |
| <!-- app engine template --> |
| </div> |
| <p> |
| [ <a href="#" class="eraseAllDataAction"><span |
| class="text-warning">Reset and Erase All Data</span></a> ] |
| |
| [ <a href="#" |
| class="removeAppAction"><span class="text-warning">Remove |
| this App</span></a> ] |
| <!-- TODO |
| [ <a href="javascript:alert('This feature will be available soon.');" ><span |
| class="text-warning">Reset and Erase All Data</span></a> ] |
| |
| [ <a href="javascript:alert('This feature will be available soon.');"><span class="text-warning">Remove this App</span></a> ] |
| --> |
| </p> |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="appdetails_template"> |
| <div class="row-fluid"> |
| <div class="span8"> |
| <p> |
| Last Updated: <%= data.updatedtime %> <a class="detailsRefreshAction" href="#"><i class="icon-refresh"></i></a> |
| <br /> Number of Users: <%= data.userscount %> |
| <br /> Number of Items: <%= data.itemscount %> |
| <br /> Number of U2I Actions: <%= data.u2icount %> |
| </p> |
| <!-- |
| <strong>API Endpoint</strong> [<a href="#">?</a>] |
| <input class="span12" type="text" readonly required="" value="<%= data.apiurl %>" name="apiurl"> |
| --> |
| <strong>App Key</strong> <!-- TODO [<a href="#">?</a>] --> |
| <input class="span12" type="text" readonly required="" value="<%= data.appkey %>" name="appkey"> |
| <div class="bottomMargin"></div> |
| |
| <div class="clearfix"> |
| <strong>Prediction Engines</strong> |
| <a href="?appid=<%= data.id %>#addEngine" class="pull-right btn btn-small">Add an Engine »</a> |
| </div> |
| |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="appenginelist_template"> |
| <div class="row-fluid"> |
| <div class="span8"> |
| <table class="table bottomMargin-large"> |
| <thead> |
| <tr> |
| <th>Engine Name</th> |
| <th>Type</th> |
| <th></th> |
| </tr> |
| </thead> |
| <tbody id="appdetails_engines"> |
| <% _.each(data.enginelist, function(engine) { %> |
| <tr> |
| <td><%= engine.enginename %></td> |
| <td><%= engine.engineinfoid %></td> |
| <td><a href="?appid=<%= data.id %>&engineid=<%= engine.id %>&engineinfoid=<%= engine.engineinfoid %>#engine" class="btn btn-small">Manage</a></td> |
| </tr> |
| <% }); %> |
| |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="breadcrumb_template"> |
| <ul class="breadcrumb"> |
| <% if(data.appname != null) { %> |
| <li><strong><a href="#appsDashboard"><%= data.appname %></a></strong> |
| <% } %> |
| <% if(data.enginename != null) { %> |
| <span class="divider">/</span></li> |
| <li class="active"><%= data.enginename %></li> |
| <% } %> |
| </ul> |
| </script> |
| |
| <script type="text/template" id="app_addEngine_template"> |
| <div class="row-fluid"> |
| <div class="span10 offset1"> |
| <div id="breadcrumb_ContentHolder"></div> |
| <div class="page-header"><h4>Create an Engine</h4></div> |
| <div id="createEngine" class="boxContainer clearfix bottomMargin-large"> |
| <% _.each(data, function(enginetype, index) { %> |
| <% if(index % 2 == 0) { %> |
| <div class="row-fluid"> |
| <% } %> |
| <div class="span6 boxBlock"> |
| <div class="boxtitle"> |
| <strong><i class="icon-cog icon-white"></i> <%= enginetype.engineinfoname%></strong> |
| </div> |
| <div class="boxContent"> |
| <%= enginetype.description%> |
| </div> |
| <div class="boxPanel clearfix"> |
| <form> |
| <div class="textRight"> |
| <span class="createEngineError text-error displayNone">Error text here</span> |
| </div> |
| <div class="pull-right"> |
| <div class="input-append"> |
| <input type="hidden" name="engineinfoid" value="<%= enginetype.id%>"/> |
| <input class="btn-input" name="enginename" type="text" placeholder="type engine name..."/> |
| <button class="btn btn-inverse" type="submit">Create</button> |
| </div> |
| </div> |
| </form> |
| </div> |
| </div> |
| <% if(index % 2 != 0) { %> |
| </div> |
| <% } %> |
| |
| <% }); %> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </script> |
| |
| <script type="text/template" id="engineTabAlgorithms_template"> |
| <div class="row-fluid bottomMargin"> |
| <div class="span8"> |
| <div class="boxContainer"> |
| <div class="boxBlock"> |
| <div class="boxtitle"> |
| <i class="icon-fire icon-white"></i> Deployed Algorithm <small> |
| - running on live system</small> |
| </div> |
| <div class="boxContent"> |
| <div id="engine_deployedAlgo_ContentHolder"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div class="boxContainer"> |
| <div class="boxBlock"> |
| <div class="boxContent"> |
| <div class="row-fluid"> |
| <div class="span8"> |
| <h4>Available Algorithms</h4> |
| <!-- TODO |
| <a href="#" disabled id="availableAlgoDeployBtn" class="btn btn-small btn-primary"> |
| Deploy <i class="icon-play icon-white"></i> |
| </a> |
| --> |
| |
| <a href="#" disabled id="availableSimEvalBtn" class="btn btn-small btn-primary"> |
| Run Simulated Evaluation <i class="icon-signal icon-white"></i> |
| </a> |
| |
| <a href="#engineAddAlgorithm" class="btn btn-info btn-small">Add an Algorithm »</a> |
| <div id="engine_availableAlgoList_ContentHolder"> |
| <!-- template here --> |
| </div> |
| </div> |
| <div class="span4"> |
| <div id="engine_simevalList_ContentHolder"> |
| <!-- template here --> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="engine_simevalList_template"> |
| <h4> |
| Simulated Evaluation <i class="icon-signal icon-white"></i> |
| </h4> |
| <table |
| class="table table-bordered table-condensed smallContent table-hover"> |
| <thead> |
| <tr> |
| <th>Created Date</th> |
| <th>Algo(s)</th> |
| <th></th> |
| </tr> |
| </thead> |
| <tbody> |
| <!-- template here --> |
| </tbody> |
| </table> |
| </script> |
| <script type="text/template" id="engine_simeval_template"> |
| <td><%= data.createtime %></td> |
| <td> |
| <% |
| var algoArray = []; |
| _.each(data.algolist, function(algo, index) { |
| algoArray.push(algo.algoname); |
| }); |
| %> |
| <%= algoArray.join(', ') %> |
| </td> |
| <td> |
| <div class="btn-group dropup"> |
| <button data-toggle="dropdown" |
| class="btn btn-mini btn-inverse dropdown-toggle"> |
| Actions <span class="caret"></span> |
| </button> |
| <ul class="dropdown-menu pull-right"> |
| <li><a href="#simEvalReport/<%= encodeURIComponent(data.id) %>">View Report</a></li> |
| <li><a class="simevalDeleteBtn" href="javascript:void(0);">Stop and Delete</a></li> |
| </ul> |
| </div> |
| </td> |
| </script> |
| |
| <script type="text/template" id="engine_deployedAlgo_template"> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Algo Name</th> |
| <th>Algorithm</th> |
| <th>Status</th> |
| <!-- TODO |
| <th>Running Since</th> |
| --> |
| </tr> |
| </thead> |
| <tbody> |
| <% _.each(data.algolist, function(algo, index) { %> |
| <tr> |
| <td><%= algo.algoname %></td> |
| <td><%= algo.algoinfoname %></td> |
| <td span="2"> |
| <% if(index == 0) { %> |
| <div class="btn-group"> |
| <button data-toggle="dropdown" |
| class="btn btn-mini btn-inverse dropdown-toggle"> |
| <%= data.status %> <span class="caret"></span> |
| </button> |
| <ul class="dropdown-menu pull-right"> |
| <!-- TODO |
| <li><a href="#"><i class="icon-signal"></i> View Report</a></li> |
| <li><a href="#"><i class="icon-pencil"></i> Edit Deploy |
| Settings</a></li> |
| <li class="divider"></li> |
| --> |
| <li><a id="algoTrainNowBtn" href="javascript:void(0);">Train Data Model Now</a></li> |
| <li><a id="algoUndeployBtn" href="#">Undeploy</a></li> |
| </ul> |
| </div> |
| <% } %> |
| </td> |
| <!-- TODO |
| <td span="2" class="smallContent"> |
| <% if(index == 0) { %> |
| <%= data.updatedtime %> |
| <% } %> |
| </td> |
| --> |
| </tr> |
| <% }); %> |
| </tbody> |
| </table> |
| </script> |
| |
| <script type="text/template" id="engine_availableAlgoList_template"> |
| <table class="table table-hover"> |
| <thead> |
| <tr> |
| <th></th> |
| <th>Algo Name</th> |
| <th>Algorithm</th> |
| <th>Status</th> |
| <th>Last Updated</th> |
| </tr> |
| </thead> |
| <tbody> |
| <!-- template here --> |
| </tbody> |
| </table> |
| </script> |
| |
| <script type="text/template" id="engine_availableAlgo_template"> |
| <td> |
| <% if ( data.status == "ready") {%> |
| <input type="checkbox" name="avaalgoSelect" value="<%= data.id %>" /> |
| <% } %> |
| </td> |
| <td><%= data.algoname %></td> |
| <td><%= data.algoinfoname %></td> |
| <td> |
| <% if ( data.status == "ready") {%> |
| <div class="btn-group dropup"> |
| <button data-toggle="dropdown" |
| class="btn btn-mini btn-inverse dropdown-toggle"> |
| Ready to Deploy<span class="caret"></span> |
| </button> |
| <ul class="dropdown-menu pull-right"> |
| <li><a class="algoDeployBtn" href="#">Deploy</a></li> |
| <li><a href="#algoSettings/<%= data.algoinfoid %>/<%= data.algoname %>/<%= encodeURIComponent(data.id) %>">View/Edit Algorithm Settings</a></li> |
| <li><a href="#simEvalSettings/<%= encodeURIComponent(data.id) %>">Run Simulated Evaluation</a></li> |
| <li class="divider"></li> |
| <li><a class="algoDeleteBtn" href="#">Delete</a></li> |
| </ul> |
| </div> |
| <% } else { %> |
| <div class="btn-group dropup"> |
| <button data-toggle="dropdown" |
| class="btn btn-mini btn-inverse dropdown-toggle"> |
| <% if ( data.status == "tuning") {%> |
| <em>Auto-tuning...</em><span class="caret"></span> |
| <% } else { %> |
| Auto-tuning Completed<span class="caret"></span> |
| <% } %> |
| </button> |
| <ul class="dropdown-menu pull-right"> |
| <li><a href="#algoAutotuningReport/<%= encodeURIComponent(data.id) %>">View Tuning Report</a></li> |
| <li class="divider"></li> |
| <li><a class="algoDeleteBtn" href="#">Delete</a></li> |
| </ul> |
| </div> |
| <% } %> |
| </td> |
| <td class="smallContent"><%= data.updatedtime %></td> |
| </script> |
| <script type="text/template" id="engine_addAlgorithm_template"> |
| <div class="row-fluid bottomMargin"> |
| <div class="span12"> |
| <div class="boxContainer"> |
| <div class="boxBlock"> |
| <div class="boxtitle">Available Algorithms for <%= data.engineinfoname %></div> |
| <div class="boxContent"> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Algorithm</th> |
| <th>Description</th> |
| <th>Requirement</th> |
| <th>Data Requirement</th> |
| <th></th> |
| </tr> |
| </thead> |
| <tbody> |
| <% _.each(data.algotypelist, function(algotype) { %> |
| <tr> |
| <td><%= algotype.algoinfoname %></td> |
| <td><%= algotype.description %></td> |
| <td><%= algotype.req %></td> |
| <td><%= algotype.datareq %></td> |
| <td> |
| <form> |
| <div class="input-append"> |
| <input type="hidden" name="algoinfoid" value="<%= algotype.id%>"/> |
| <input class="btn-input span9" name="algoname" type="text" placeholder="type algo name..."/> |
| <button class="btn btn-primary" type="submit">Add</button> |
| </div> |
| <div class="addAlgoError text-error displayNone">Error text here</div> |
| </form> |
| </td> |
| </tr> |
| <% }); %> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="engineStatus_template"> |
| <div class="row-fluid bottomMargin"> |
| <div class="span12"> |
| Engine Status: |
| <% if (data.enginestatus == "noappdata") { %> |
| <span class="label label-warning"><i class="icon-warning-sign icon-white"></i> Not Running: No Data. Please import some data.</span> |
| <% } else if (data.enginestatus == "nodeployedalgo") { %> |
| <span class="label label-warning"><i class="icon-warning-sign icon-white"></i> Not Running: Please deploy an algorithm.</span> |
| <% } else if (data.enginestatus == "nomodeldata") { %> |
| <span class="label label-warning"><i class="icon-warning-sign icon-white"></i> Not Running: Waiting for the the first-time data model training.</span> |
| <% } else if (data.enginestatus == "nomodeldatanoscheduler") { %> |
| <span class="label label-warning"><i class="icon-warning-sign icon-white"></i> Not Running: Waiting for the the first-time data model training. (Scheduler is unreachable)</span> |
| <% } else if (data.enginestatus == "firsttraining") { %> |
| <span class="label label-warning"><i class="icon-warning-sign icon-white"></i> Not Running: Training the first data model.</span> |
| <% } else if (data.enginestatus == "training") { %> |
| <span class="label label-info">Running (Last Successful Training: <%= data.lasttraintime %>) (training data model) <i class="icon-ok icon-white"></i></span> |
| <% } else if (data.enginestatus == "runningnoscheduler") { %> |
| <span class="label label-warning"><i class="icon-warning-sign icon-white"></i> Running (Last Successful Training: <%= data.lasttraintime %>) (Scheduler is unreachable)</span> |
| <% } else if (data.enginestatus == "running") { %> |
| <span class="label label-info">Running (Last Successful Training: <%= data.lasttraintime %>) <i class="icon-ok icon-white"></i></span> |
| <% } else { %> |
| <span class="label label-warning"><i class="icon-warning-sign icon-white"></i> Not Running: Undetermined error</span> |
| <% } %> |
| <a href="javascript:void(0);" id="engineStatusReloadBtn" title="refresh engine status"><i class="icon-refresh"></i></a> |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="engine_template"> |
| <div class="row-fluid"> |
| <div class="span10 offset1"> |
| <div class="alert alert-block alert-error displayNone"> |
| <button type="button" class="close" data-dismiss="alert">×</button> |
| <strong>Warning!</strong> Error placeholder here.... It should be |
| hidden by default. For now, please click the 'x' button. |
| </div> |
| <!-- breadcrumb --> |
| <div id="breadcrumb_ContentHolder"></div> |
| |
| <div id="engineStatus_ContentHolder"></div> |
| |
| <div id="engineTab" class="row-fluid"> |
| <div class="span12"> |
| <div class="pull-right"> |
| <div class="btn-group"> |
| <button data-toggle="dropdown" class="btn btn-inverse btn-small dropdown-toggle">Engine Control <span class="caret"></span></button> |
| <ul class="dropdown-menu"> |
| <li><a id="deleteEngineBtn" href="#">Delete this Engine</a></li> |
| </ul> |
| </div> |
| </div> |
| <ul class="nav nav-tabs" id="engineTab"> |
| <li><a id="engineTabSettingsBtn" href="#engineTabSettings">Engine</a></li> |
| <li><a id="engineTabAlgorithmsBtn" href="#engineTabAlgorithms">Algorithms</a></li> |
| <li id="engineExtraTabTitle" class="displayNone"><a onclick="return false;" id="engineExtraTabBtn" href="#engineExtraTab">-</a></li> |
| </ul> |
| |
| </div> |
| </div> |
| <div class="tab-content"> |
| <div class="tab-pane" id="engineTabSettings"> |
| <h4>Prediction Settings</h4> |
| <div id="engineTabSettingsContentHolder"> |
| <!-- engine settings template --> |
| </div> |
| </div> |
| <div class="tab-pane" id="engineTabAlgorithms"> |
| <div id="engineTabAlgorithmsContentHolder"> |
| <!-- engine algorithms tab template --> |
| </div> |
| </div> |
| <div class="tab-pane" id="engineExtraTab"> |
| <div id="engineExtraTabContentHolder"> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="engine_algoAutotuningReport_template"> |
| <% |
| var algo = {}; |
| var metric = {} |
| if (data.algo) { |
| algo = data.algo; |
| } |
| if (data.metric) { |
| metric = data.metric; |
| } |
| %> |
| <div class="row-fluid"> |
| <div class="span12"> |
| <form class="form-horizontal"> |
| <div class="modal modal-visible"> |
| <div class="modal-header"> |
| <h4>Algorithm Autotuning Report for <%= algo.algoname%></h4> |
| </div> |
| <div class="modal-body"> |
| <div class="bottomMargin"> |
| <p>Auto-tuning Status: <%= data.status %></p> |
| <p>Start Time: <%= data.starttime %></p> |
| <p>End Time: <%= data.endtime %></p> |
| |
| <h5 class="topMargin">Targeted Algorithm</h5> |
| <span>Algo Name: <%= algo.algoname %></span> |
| <span class="leftMargin">Algo Type: <%= algo.algoinfoname %></span> |
| |
| <h5 class="topMargin">Data Split Settings</h5> |
| <span>Train Set: <%= data.splittrain %>%</span> |
| <span class="leftMargin">Validation Set: <%= data.splitvalidation %>%</span> |
| <span class="leftMargin">Test Set: <%= data.splittest %>%</span> |
| <div> |
| <%= data.splittersettingsstring %> |
| </div> |
| <h5 class="topMargin">Metric</h5> |
| <span>Name: <%= metric.metricsname %> (<%= metric.settingsstring %>)</span> |
| <span class="leftMargin">Number of Iteration: <%= data.evaliteration %></span> |
| </div> |
| |
| <h4 class="topMargin-large">Average Results</h4> |
| <table class="table bottomMargin-large"> |
| <thead> |
| <tr> |
| <th>Param Settings</th> |
| <th>Score</th> |
| <th></th> |
| </tr> |
| </thead> |
| <tbody> |
| <% _.each(data.metricscorelist, function(m, index) { %> |
| <tr> |
| <td><%= m.algoinfoname %>: <%= m.settingsstring %></td> |
| <td><%= m.score %></td> |
| <td> |
| <!-- NOTE: index 0 is baseline algo --> |
| <% if(index != 0) { %> |
| <a href="#" data-autotuneid="<%= m.algoautotuneid %>" class="algoAutotuneSelectBtn btn btn-primary btn-small">Use It</a> |
| <% } %> |
| </td> |
| </tr> |
| <% }); %> |
| </tbody> |
| </table> |
| |
| <% _.each(data.metricscoreiterationlist, function(iterationscorelist, index) { %> |
| <h6>Results in Iteration <%= index+1 %></h6> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Param Settings</th> |
| <th>Score</th> |
| <th></th> |
| </tr> |
| </thead> |
| <tbody> |
| <% _.each(iterationscorelist, function(m) { %> |
| <tr> |
| <td><%= m.algoinfoname %>: <%= m.settingsstring %></td> |
| <td><%= m.score %></td> |
| <td></td> |
| </tr> |
| <% }); %> |
| </tbody> |
| </table> |
| <% }); %> |
| |
| </div> |
| </div> |
| </form> |
| </div> |
| </div> |
| </script> |
| <script type="text/template" id="engine_simEvalReport_template"> |
| <div class="row-fluid"> |
| <div class="span12"> |
| <form class="form-horizontal"> |
| <div class="modal modal-visible"> |
| <div class="modal-header"> |
| <h4>Simulated Evaluation Report</h4> |
| </div> |
| <div class="modal-body"> |
| <div class="bottomMargin"> |
| <p>Simulated Evaluation Status: <%= data.status %></p> |
| <p>Start Time: <%= data.starttime %></p> |
| <p>End Time: <%= data.endtime %></p> |
| |
| <h5>Data Split Settings:</h5> |
| <span>Train Set: <%= data.splittrain %>%</span> |
| <!-- 3-part split |
| <span class="leftMargin">Validation Set: <%= data.splitvalidation %>%</span> |
| --> |
| <span class="leftMargin">Test Set: <%= data.splittest %>%</span> |
| <div> |
| <%= data.splittersettingsstring %> |
| </div> |
| </div> |
| <h5>Algorithms</h5> |
| <p>Settings of algorithms at the time of evaluation.</p> |
| <div class="well"> |
| <ul> |
| <% _.each(data.algolist, function(algo) { %> |
| <li><%= algo.algoname %> |
| <p><%= algo.algoinfoname %> (<%= algo.settingsstring %>)</p> |
| </li> |
| <% }); %> |
| </ul> |
| </div> |
| |
| <h4>Average Results</h4> |
| <% // create result matrix |
| var result = {}; |
| _.each(data.algolist, function(algo) { |
| result[algo.id] = {}; |
| }); |
| _.each(data.metricscorelist, function(s) { |
| result[s.algoid][s.metricsid] = s.score; |
| }); |
| %> |
| <table class="table bottomMargin-large"> |
| <thead> |
| <tr> |
| <th>Algorithm ID</th> |
| <% _.each(data.metricslist, function(metrics) { %> |
| <th><%= metrics.metricsname%> (<%= metrics.settingsstring%>)</th> |
| <% }); %> |
| </tr> |
| </thead> |
| <tbody> |
| <% _.each(data.algolist, function(algo) { %> |
| <tr> |
| <td><%= algo.algoname %></td> |
| <% _.each(data.metricslist, function(metrics) { %> |
| <td><%= result[algo.id][metrics.id] %></td> |
| <% }); %> |
| </tr> |
| <% }); %> |
| </tbody> |
| </table> |
| |
| <% _.each(data.metricscoreiterationlist, function(iterationscorelist, index) { %> |
| <h6>Results in Iteration <%= index+1 %></h6> |
| <% // create result matrix |
| var result = {}; |
| _.each(data.algolist, function(algo) { |
| result[algo.id] = {}; |
| }); |
| _.each(iterationscorelist, function(s) { |
| result[s.algoid][s.metricsid] = s.score; |
| }); |
| %> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th>Algorithm ID</th> |
| <% _.each(data.metricslist, function(metrics) { %> |
| <th><%= metrics.metricsname%> (<%= metrics.settingsstring%>)</th> |
| <% }); %> |
| </tr> |
| </thead> |
| <tbody> |
| <% _.each(data.algolist, function(algo) { %> |
| <tr> |
| <td><%= algo.algoname %></td> |
| <% _.each(data.metricslist, function(metrics) { %> |
| <td><%= result[algo.id][metrics.id] %></td> |
| <% }); %> |
| </tr> |
| <% }); %> |
| </tbody> |
| </table> |
| <% }); %> |
| </div> |
| </div> |
| </form> |
| </div> |
| </div> |
| </script> |
| |
| <script type="text/template" id="engine_simEvalSettingsMetrics_template"> |
| |
| <li class="bottomMargin"> |
| <div class="bottomMargin"> |
| <select name="infoid[<%= data.index %>]" class="span6 changeMetricsSelect"> |
| <% _.each(data.metricslist, function(metrics) { %> |
| <% if ( metrics.id == this.defaultmetric ) { %> |
| <option value="<%= metrics.id %>" selected><%= metrics.description %> (<%= metrics.name %>)</option> |
| <% } else { %> |
| <option value="<%= metrics.id %>"><%= metrics.description %> (<%= metrics.name %>)</option> |
| <% } %> |
| <% }, data); %> |
| </select> |
| <span> [<a href="#" class="deleteMetricsBtn"> remove </a>] |
| </span> |
| </div> |
| <div id="metricSetting_Holder"> |
| </div> |
| </li> |
| </script> |
| |
| <script type="text/template" id="engine_simEvalSettings_template"> |
| <div class="row-fluid"> |
| <div class="span10 offset1"> |
| <form id="simEvalSettingsForm" class="form-horizontal"> |
| <div class="modal modal-visible"> |
| <div class="modal-header"> |
| <h4>Simulated Evaluation</h4> |
| </div> |
| <div class="modal-body"> |
| <h5>Algorithms to be Evaluated</h5> |
| <div class="well"> |
| <ul> |
| <% _.each(data.algoList, function(algo, index) { %> |
| <li><%= algo.algoname %><input type="hidden" value="<%= algo.id %>" name="algoids[<%= index %>]"/></li> |
| <% }); %> |
| </ul> |
| </div> |
| |
| <h5 class="topMargin-large">Metrics <small><!-- TODO [<a href="#">?</a>] --> </small></h5> |
| <p> |
| The above algorithms will be evaluated against the following metrics. |
| </p> |
| |
| <ul id="metrics_list_ContentHolder"> |
| |
| </ul> |
| <a href="#" id="addMetricsBtn" class="btn btn-small btn-inverse">Add Another Metric</a> |
| |
| <h5 class="topMargin-large">Data Split</h5> |
| <p class="bottomMargin">Adjust the slider to specify how you want to split data into Train Set and Test Set.</p> |
| <!-- 3-part split |
| <table id="dataSplitBar" width="70%" cellspacing="0" cellpadding="0" border="0"> |
| <tr> |
| <td class="selection" width="55%"><span>Train Set</span></td> |
| <td class="selection" width="20%"><span>Validation Set</span></td> |
| <td class="selection" width="15%"><span>Test Set</span></td> |
| <td width="10%"></td> |
| </tr> |
| </table> |
| --> |
| <table id="dataSplitBar" width="70%" cellspacing="0" cellpadding="0" border="0"> |
| <tr> |
| <td class="selection" width="60%"><span>Train Set</span></td> |
| <td class="selection" width="20%"><span>Test Set</span></td> |
| <td width="20%"></td> |
| </tr> |
| </table> |
| <div class="topMargin"> |
| <!-- 3-part split |
| <span>Train: </span><input class="span1" readonly type="text" id="splittrain" name="splittrain" value="55">% |
| <span class="leftMargin">Validation: </span><input class="span1" readonly type="text" id="splitvalidation" name="splitvalidation" value="20">% |
| <span class="leftMargin">Test: </span><input class="span1" readonly type="text" id="splittest" name="splittest" value="15">% |
| --> |
| <span>Train: </span><input class="span1" readonly type="text" id="splittrain" name="splittrain" value="60">% |
| <span class="leftMargin">Test: </span><input class="span1" readonly type="text" id="splittest" name="splittest" value="20">% |
| </div> |
| |
| <div class="topMargin-large" id="splitterSetting_Holder"> |
| </div> |
| <h5 class="topMargin-large">Iteration</h5> |
| <p>You may want to repeat the evaluation for a few times with different sampling. An average score will be reported.</p> |
| <div class="topMargin"> |
| <span>Number of Iteration: </span><input class="span1" type="text" name="evaliteration" value="3"> |
| </div> |
| |
| </div> |
| <div class="modal-footer"> |
| <button type="submit" class="btn btn-primary input-medium">Run Now</button> |
| </div> |
| </div> |
| </form> |
| </div> |
| </div> |
| </script> |
| |
| </head> |
| |
| <body> |
| <!--[if lt IE 7]> |
| <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please upgrade your browser or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p> |
| <![endif]--> |
| |
| <div class="wrapper"> |
| <!-- sticky footer --> |
| <div id="headbar" class="navbar navbar-inverse navbar-fixed-top"> |
| <div class="navbar-inner"> |
| <div class="container-fluid"> |
| <a class="btn btn-navbar" data-toggle="collapse" |
| data-target=".nav-collapse"> <span class="icon-bar"></span> <span |
| class="icon-bar"></span> <span class="icon-bar"></span> |
| </a> <a class="brand" href="?#appsDashboard"><img width="130px" |
| src="assets/images/predictionio.png" /></a> |
| <div id="navBar" class="nav-collapse collapse"> |
| <ul class="nav"> |
| <!-- <li><a href="#about">Processing Tasks <span class="badge badge-info">0</span></a></li> --> |
| <li class="dropdown"><a href="#" class="dropdown-toggle" |
| data-toggle="dropdown">Help <b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li><a href="http://docs.prediction.io" target="_blank">PredictionIO Docs</a></li> |
| <li><a href="http://prediction.io/download">Download SDKs</a></li> |
| <li><a href="https://github.com/PredictionIO">View Source Code</a></li> |
| <li class="divider"></li> |
| <li class="nav-header">Support</li> |
| <li><a href="https://groups.google.com/#predictionio-user">Google Group</a></li> |
| <li><a href="http://www.twitter.com/predictionio">Twitter</a></li> |
| </ul></li> |
| </ul> |
| <div id="AuthHolder"></div> |
| </div> |
| <!--/.nav-collapse --> |
| </div> |
| </div> |
| </div> |
| <div id="mainarea" class="container-fluid"> |
| <div id="ContentHolder"></div> |
| </div> |
| <div id="dialog_template" class="hide" title="Confirm?"> |
| <div> |
| <span id="dialog_text">Are you sure?</span> |
| </div> |
| </div> |
| <div class="push"></div> |
| <!-- sticky footer --> |
| </div> |
| |
| <div class="footer"> |
| <hr /> |
| <footer> |
| <p>PredictionIO Community Edition core is released under the |
| AGPL License, SDKs under Apache License and documentation under |
| Creative Common.</p> |
| <p> |
| <a href="http://groups.google.com/group/predictionio-user" target="_blank">Contact Us</a> | <a href="http://predictionio.atlassian.net/" target="_blank">Report Bugs</a> | <a href="https://github.com/PredictionIO/" target="_blank">Contribute |
| Codes</a> |
| </p> |
| </footer> |
| </div> |
| |
| <script |
| src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> |
| <script> |
| window.jQuery |
| || document |
| .write('<script type="text/javascript" src="assets/javascripts/vendors/jquery-1.8.3.min.js"><\/script>') |
| </script> |
| <script type="text/javascript" |
| src="assets/javascripts/vendors/jquery-ui-1.9.2.custom.min.js"></script> |
| <script type="text/javascript" |
| src="assets/javascripts/vendors/bootstrap.min.js"></script> |
| <script type="text/javascript" |
| src="assets/javascripts/vendors/underscore-min.js"></script> |
| <script type="text/javascript" |
| src="assets/javascripts/vendors/json2.js"></script> |
| <script type="text/javascript" |
| src="assets/javascripts/vendors/backbone-min.js"></script> |
| <script type="text/javascript" src="assets/javascripts/core.js?v=20130320-1"></script> |
| <script type="text/javascript" src="assets/javascripts/vendors/toastr-1.2.2.min.js"></script> |
| <script type="text/javascript" src="assets/javascripts/vendors/colResizable-1.3.min.js"></script> |
| </body> |
| </html> |