2012-12-25 10:55:00 +00:00
<!DOCTYPE html>
< html >
< head >
2013-01-18 22:23:50 +00:00
< title > OctoPrint< / title >
2012-12-25 19:49:10 +00:00
2013-01-18 22:23:50 +00:00
< link rel = "shortcut icon" href = "{{ url_for('static', filename='img/tentacle-32x32.png') }}" >
2012-12-26 23:04:12 +00:00
2012-12-25 10:55:00 +00:00
< link href = "{{ url_for('static', filename='css/bootstrap.min.css') }}" rel = "stylesheet" media = "screen" >
2012-12-25 19:49:10 +00:00
< link href = "{{ url_for('static', filename='css/jquery.fileupload-ui.css') }}" rel = "stylesheet" media = "screen" >
2012-12-26 14:03:34 +00:00
< link href = "{{ url_for('static', filename='css/ui.css') }}" rel = "stylesheet" media = "screen" >
2013-02-01 22:13:44 +00:00
< link href = "{{ url_for('static', filename='gcodeviewer/css/cupertino/jquery-ui-1.9.0.custom.css') }}" rel = "stylesheet" media = "screen" >
< link href = "{{ url_for('static', filename='gcodeviewer/css/style.css') }}" rel = "stylesheet" media = "screen" >
2012-12-25 19:49:10 +00:00
< script lang = "javascript" >
2013-01-27 17:28:11 +00:00
var AJAX_BASEURL = "/ajax/";
2013-01-20 12:43:29 +00:00
var CONFIG_FILESPERPAGE = 5;
2013-01-27 17:28:11 +00:00
var CONFIG_WEBCAM_STREAM = "{{ webcamStream }}";
2013-01-06 15:51:04 +00:00
var WEB_SOCKET_SWF_LOCATION = "{{ url_for('static', filename='js/WebSocketMain.swf') }}";
var WEB_SOCKET_DEBUG = true;
2012-12-25 19:49:10 +00:00
< / script >
2012-12-25 10:55:00 +00:00
< / head >
< body >
2012-12-26 14:03:34 +00:00
< div class = "navbar navbar-fixed-top" >
< div class = "navbar-inner" >
< div class = "container" >
2013-01-18 22:23:50 +00:00
< a class = "brand" href = "#" > < img src = "{{ url_for('static', filename='img/tentacle-20x20.png') }}" > OctoPrint< / a >
2012-12-26 14:03:34 +00:00
< / div >
2012-12-25 10:55:00 +00:00
< / div >
2012-12-26 14:03:34 +00:00
< / div >
< div class = "container" >
< div class = "row" >
< div class = "accordion span4" >
2012-12-28 19:37:40 +00:00
< div class = "accordion-group" >
< div class = "accordion-heading" >
< a class = "accordion-toggle" data-toggle = "collapse" href = "#connection" > < i class = "icon-signal" > < / i > Connection< / a >
< / div >
< div class = "accordion-body collapse in" id = "connection" >
< div class = "accordion-inner" >
2013-01-01 20:04:00 +00:00
< label for = "connection_ports" data-bind = "css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed" > Serial Port< / label >
< select id = "connection_ports" data-bind = "options: portOptions, optionsCaption: 'AUTO', value: selectedPort, css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed" > < / select >
< label for = "connection_baudrates" data-bind = "css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed" > Baudrate< / label >
< select id = "connection_baudrates" data-bind = "options: baudrateOptions, optionsCaption: 'AUTO', value: selectedBaudrate, css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed" > < / select >
< label class = "checkbox" >
< input type = "checkbox" id = "connection_save" data-bind = "checked: saveSettings, css: {disabled: !isErrorOrClosed}, enable: isErrorOrClosed" > Save connection settings
< / label >
2012-12-28 19:37:40 +00:00
< button class = "btn btn-block" id = "printer_connect" data-bind = "click: connect, text: buttonText()" > Connect< / button >
< / div >
< / div >
< / div >
2012-12-25 19:49:10 +00:00
< div class = "accordion-group" >
< div class = "accordion-heading" >
2012-12-26 14:03:34 +00:00
< a class = "accordion-toggle" data-toggle = "collapse" href = "#state" > < i class = "icon-info-sign" > < / i > State< / a >
2012-12-25 19:49:10 +00:00
< / div >
< div class = "accordion-body collapse in" id = "state" >
< div class = "accordion-inner" >
2012-12-26 14:03:34 +00:00
Machine State: < strong data-bind = "text: stateString" > < / strong > < br >
2012-12-28 19:37:40 +00:00
File: < strong data-bind = "text: filename" > < / strong > < br >
2013-02-03 20:14:22 +00:00
Filament: < strong data-bind = "text: filament" > < / strong > < br >
Estimated Print Time: < strong data-bind = "text: estimatedPrintTime" > < / strong > < br >
2012-12-25 19:49:10 +00:00
Line: < strong data-bind = "text: lineString" > < / strong > < br >
Height: < strong data-bind = "text: currentHeight" > < / strong > < br >
Print Time: < strong data-bind = "text: printTime" > < / strong > < br >
Print Time Left: < strong data-bind = "text: printTimeLeft" > < / strong > < br >
2012-12-25 10:55:00 +00:00
2012-12-26 14:03:34 +00:00
< div class = "progress" >
< div class = "bar" id = "job_progressBar" data-bind = "style: { width: progress() + '%' }" > < / div >
< / div >
< button class = "btn btn-primary" data-bind = "enable: isOperational() && isReady() && !isPrinting() && !isPaused()" id = "job_print" > < i class = "icon-print icon-white" > < / i > < span > Print< / span > < / button >
< button class = "btn" id = "job_pause" data-bind = "css: {active: isPaused}" > < i class = "icon-pause" > < / i > < span > Pause< / span > < / button >
2012-12-25 19:49:10 +00:00
< button class = "btn" id = "job_cancel" > < i class = "icon-stop" > < / i > Cancel< / button >
< / div >
< / div >
< / div >
< div class = "accordion-group" >
< div class = "accordion-heading" >
2012-12-26 14:03:34 +00:00
< a class = "accordion-toggle" data-toggle = "collapse" href = "#files" > < i class = "icon-list" > < / i > Files< / a >
2012-12-25 19:49:10 +00:00
< / div >
2013-01-30 19:56:17 +00:00
< div class = "accordion-body collapse in overflow_visible" id = "files" >
2012-12-25 19:49:10 +00:00
< div class = "accordion-inner" >
2013-02-03 21:34:52 +00:00
< table class = "table table-condensed table-hover" id = "gcode_files" >
2012-12-25 19:49:10 +00:00
< thead >
< tr >
2012-12-26 14:03:34 +00:00
< th class = "gcode_files_name" > Name< / th >
< th class = "gcode_files_size" > Size< / th >
< th class = "gcode_files_action" > Action< / th >
2012-12-25 19:49:10 +00:00
< / tr >
< / thead >
2013-01-20 12:43:29 +00:00
< tbody data-bind = "foreach: paginatedFiles" >
2013-01-30 19:56:17 +00:00
< tr data-bind = "css: $root.getSuccessClass($data), popover: { title: name, animation: true, html: true, placement: 'right', trigger: 'hover', delay: 0, content: $root.getPopoverContent($data), html: true }" >
2012-12-26 14:03:34 +00:00
< td class = "gcode_files_name" data-bind = "text: name" > < / td >
< td class = "gcode_files_size" data-bind = "text: size" > < / td >
2013-01-20 12:43:29 +00:00
< td class = "gcode_files_action" > < a href = "#" class = "icon-trash" data-bind = "click: function() { $root.removeFile($data.name); }" > < / a > | < a href = "#" class = "icon-folder-open" data-bind = "click: function() { $root.loadFile($data.name); }" > < / a > < / td >
2012-12-25 19:49:10 +00:00
< / tr >
< / tbody >
< / table >
2013-01-20 12:43:29 +00:00
< div class = "pagination pagination-mini pagination-centered" >
< ul >
< li data-bind = "css: {disabled: currentPage() === 0}" > < a href = "#" data-bind = "click: prevPage" > «< / a > < / li >
< / ul >
< ul data-bind = "foreach: pages" >
< li data-bind = "css: { active: $data.number === $root.currentPage(), disabled: $data.number === -1 }" > < a href = "#" data-bind = "text: $data.text, click: function() { $root.changePage($data.number); }" > < / a > < / li >
< / ul >
< ul >
< li data-bind = "css: {disabled: currentPage() === lastPage()}" > < a href = "#" data-bind = "click: nextPage" > »< / a > < / li >
< / ul >
< / div >
2012-12-26 14:03:34 +00:00
< span class = "btn btn-primary btn-block fileinput-button" style = "margin-bottom: 10px" >
2012-12-25 19:49:10 +00:00
< i class = "icon-upload icon-white" > < / i >
< span > Upload< / span >
< input id = "gcode_upload" type = "file" name = "gcode_file" class = "fileinput-button" data-url = "/ajax/gcodefiles/upload" >
< / span >
2012-12-26 14:03:34 +00:00
< div id = "gcode_upload_progress" class = "progress" style = "width: 100%;" >
2012-12-25 19:49:10 +00:00
< div class = "bar" style = "width: 0%" > < / div >
< / div >
2013-01-20 12:43:29 +00:00
< div >
< small > Hint: You can also drag and drop files on this page to upload them.< / small >
< / div >
2012-12-25 19:49:10 +00:00
< / div >
< / div >
< / div >
2012-12-25 10:55:00 +00:00
< / div >
2012-12-26 14:03:34 +00:00
< div class = "tabbable span8" >
2013-01-11 23:00:58 +00:00
< ul class = "nav nav-tabs" id = "tabs" >
< li class = "active" > < a href = "#temp" data-toggle = "tab" > Temperature< / a > < / li >
2013-01-27 17:28:11 +00:00
< li > < a href = "#controls" data-toggle = "tab" > Controls< / a > < / li >
2013-02-03 21:01:11 +00:00
{% if enableGCodeVisualizer %}< li > < a href = "#gcode" data-toggle = "tab" > GCode Viewer< / a > < / li > {% endif %}
2013-01-11 23:00:58 +00:00
<!-- <li><a href="#speed" data - toggle="tab">Speed</a></li> -->
< li > < a href = "#term" data-toggle = "tab" > Terminal< / a > < / li >
2013-01-02 23:39:17 +00:00
{% if webcamStream %}< li > < a href = "#webcam" data-toggle = "tab" > Webcam< / a > < / li > {% endif %}
2012-12-25 10:55:00 +00:00
< / ul >
< div class = "tab-content" >
< div class = "tab-pane active" id = "temp" >
2012-12-26 14:03:34 +00:00
< div class = "row" style = "padding-left: 20px" >
2013-01-18 22:23:50 +00:00
< div id = "temperature-graph" > < / div >
2012-12-25 10:55:00 +00:00
< / div >
2012-12-26 14:03:34 +00:00
< div >
< div class = "form-horizontal" style = "width: 49%; float: left; margin-bottom: 20px;" >
2013-01-04 12:11:00 +00:00
< h1 > Temperature< / h1 >
2012-12-26 14:03:34 +00:00
2013-01-04 12:11:00 +00:00
< label > Current: < strong data-bind = "text: tempString" > < / strong > < / label >
2012-12-26 14:03:34 +00:00
2013-01-04 12:11:00 +00:00
< label > Target: < strong data-bind = "text: targetTempString" > < / strong > < / label >
2012-12-26 14:03:34 +00:00
2013-01-04 12:11:00 +00:00
< label for = "temp_newTemp" > New Target< / label >
< div class = "input-append" >
< input class = "span1" type = "text" id = "temp_newTemp" data-bind = "attr: {placeholder: targetTemp}" >
< span class = "add-on" > °C< / span >
< / div >
< button type = "submit" class = "btn" id = "temp_newTemp_set" > Set< / button >
2012-12-25 10:55:00 +00:00
< / div >
2012-12-26 14:03:34 +00:00
< div class = "form-horizontal" style = "width: 49%; margin-left: 2%; float: left; margin-bottom: 20px;" >
2013-01-04 12:11:00 +00:00
< h1 > Bed Temperature< / h1 >
2012-12-26 14:03:34 +00:00
2013-01-04 12:11:00 +00:00
< label > Current: < strong data-bind = "text: bedTempString" > < / strong > < / label >
2012-12-26 14:03:34 +00:00
2013-01-04 12:11:00 +00:00
< label > Target: < strong data-bind = "text: bedTargetTempString" > < / strong > < / label >
2012-12-26 14:03:34 +00:00
2013-01-04 12:11:00 +00:00
< label for = "temp_newBedTemp" > New Target< / label >
< div class = "input-append" >
< input class = "span1" type = "text" id = "temp_newBedTemp" data-bind = "attr: {placeholder: bedTargetTemp}" >
< span class = "add-on" > °C< / span >
< / div >
< button type = "submit" class = "btn" id = "temp_newBedTemp_set" > Set< / button >
2012-12-25 10:55:00 +00:00
< / div >
< / div >
< / div >
2013-01-27 17:28:11 +00:00
< div class = "tab-pane" id = "controls" >
2013-02-09 11:22:09 +00:00
<!-- XY jogging control panel -->
< div id = "jog_xy" class = "jog-panel" >
< h4 > XY< / h4 >
< div >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendJogCommand('y', 10) }" > < i class = "icon-arrow-up" > < / i > < / button >
< / div >
< div >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendJogCommand('x', -10) }" > < i class = "icon-arrow-left" > < / i > < / button >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendHomeCommand('XY') }" > < i class = "icon-home" > < / i > < / button >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendJogCommand('x', 10) }" > < i class = "icon-arrow-right" > < / i > < / button >
< / div >
< div >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendJogCommand('y', -10) }" > < i class = "icon-arrow-down" > < / i > < / button >
< / div >
2012-12-26 14:03:34 +00:00
< / div >
2013-02-09 11:22:09 +00:00
<!-- Z jogging control panel -->
< div id = "jog_z" class = "jog-panel" >
< h4 > Z< / h4 >
< div >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendJogCommand('z', 10) }" > < i class = "icon-arrow-up" > < / i > < / button >
< / div >
< div >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendHomeCommand('Z') }" > < i class = "icon-home" > < / i > < / button >
< / div >
< div >
< button class = "btn box" data-bind = "enable: isOperational() && !isPrinting(), click: function() { $root.sendJogCommand('z', -10) }" > < i class = "icon-arrow-down" > < / i > < / button >
< / div >
2012-12-26 14:03:34 +00:00
< / div >
2013-01-27 10:12:28 +00:00
< div data-bind = "template: { name: $root.displayMode, foreach: controls }" > < / div >
<!-- Templates for custom controls -->
< script type = "text/html" id = "customControls_sectionTemplate" >
< h1 data-bind = "text: name" > < / h1 >
< div data-bind = "template: { name: $root.displayMode, foreach: children }" > < / div >
< / script >
< script type = "text/html" id = "customControls_commandTemplate" >
2013-01-27 17:28:11 +00:00
< form class = "form-inline" >
< button class = "btn" data-bind = "text: name, enable: $root.isOperational(), click: function() { $root.sendCustomCommand($data) }" > < / button >
< / form >
2013-01-27 10:12:28 +00:00
< / script >
2013-01-27 17:52:25 +00:00
< script type = "text/html" id = "customControls_parametricCommandTemplate" >
2013-01-27 17:28:11 +00:00
< form class = "form-inline" >
<!-- ko foreach: input -->
< label data-bind = "text: name" > < / label >
< input type = "text" class = "input-small" data-bind = "attr: {placeholder: name}, value: value" >
<!-- /ko -->
< button class = "btn" data-bind = "text: name, enable: $root.isOperational(), click: function() { $root.sendCustomCommand($data) }" > < / button >
< / form >
< / script >
< script type = "text/html" id = "customControls_emptyTemplate" > < div > < / d i v > < / script >
2013-01-27 10:12:28 +00:00
<!-- End of templates for custom controls -->
2012-12-26 14:03:34 +00:00
< / div >
2012-12-25 10:55:00 +00:00
< div class = "tab-pane" id = "speed" >
2012-12-29 14:41:23 +00:00
< div class = "form-horizontal" style = "margin-bottom: 20px" >
< label for = "speed_outerWall" > Outer Wall< / label >
< div class = "input-append" >
< input type = "text" id = "speed_outerWall" class = "input-mini" data-bind = "enable: isOperational(), attr: {placeholder: outerWall}" >
< span class = "add-on" > %< / span >
< button type = "submit" class = "btn" id = "speed_outerWall_set" data-bind = "enable: isOperational()" > Set< / button >
< / div >
< label for = "speed_innerWall" > Inner Wall< / label >
< div class = "input-append" >
< input type = "text" id = "speed_innerWall" class = "input-mini" data-bind = "enable: isOperational(), attr: {placeholder: innerWall}" >
< span class = "add-on" > %< / span >
< button type = "submit" class = "btn" id = "speed_innerWall_set" data-bind = "enable: isOperational()" > Set< / button >
< / div >
< label for = "speed_fill" > Fill< / label >
< div class = "input-append" >
< input type = "text" id = "speed_fill" class = "input-mini" data-bind = "enable: isOperational(), attr: {placeholder: fill}" >
< span class = "add-on" > %< / span >
< button type = "submit" class = "btn" id = "speed_fill_set" data-bind = "enable: isOperational()" > Set< / button >
< / div >
< label for = "speed_support" > Support< / label >
< div class = "input-append" >
< input type = "text" id = "speed_support" class = "input-mini" data-bind = "enable: isOperational(), attr: {placeholder: support}" >
< span class = "add-on" > %< / span >
< button type = "submit" class = "btn" id = "speed_support_set" data-bind = "enable: isOperational()" > Set< / button >
< / div >
< / div >
2012-12-25 10:55:00 +00:00
< / div >
2013-02-03 21:01:11 +00:00
< div class = "tab-pane" id = "gcode" >
2013-02-01 22:13:44 +00:00
< canvas id = "canvas" width = "572" height = "588" > < / canvas >
< div id = "slider-vertical" > < / div >
< div id = "slider-horizontal" > < / div >
2013-02-03 21:01:11 +00:00
< div id = "gcode_accordion" class = "accordion" style = "margin-top: 20px" >
2013-02-01 22:13:44 +00:00
< div class = "accordion-group" >
< div class = "accordion-heading" >
2013-02-03 21:01:11 +00:00
< a class = "accordion-toggle" data-toggle = "collapse" data-parent = "#gcode_accordion" href = "#progressAccordionTab" >
2013-02-01 22:13:44 +00:00
Progress indicators
< / a >
< / div >
< div id = "progressAccordionTab" class = "accordion-body collapse" >
< div class = "accordion-inner" >
< div id = "progressBlock" >
< div class = "progress" >
< div id = "loadProgress" class = "bar" style = "width: 0%;" > < / div >
< / div >
< div class = "progress" >
< div id = "analyzeProgress" class = "bar" style = "width: 0%;" > < / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "accordion-group" >
< div class = "accordion-heading" >
2013-02-03 21:01:11 +00:00
< a class = "accordion-toggle" data-toggle = "collapse" data-parent = "#gcode_accordion" href = "#infoAccordionTab" >
2013-02-01 22:13:44 +00:00
Model info
< / a >
< / div >
< div id = "infoAccordionTab" class = "accordion-body collapse" >
< div class = "accordion-inner" >
< p id = "list" > < / p >
< / div >
< / div >
< / div >
< div class = "accordion-group" >
< div class = "accordion-heading" >
2013-02-03 21:01:11 +00:00
< a class = "accordion-toggle" data-toggle = "collapse" data-parent = "#gcode_accordion" href = "#layerAccordionTab" >
2013-02-01 22:13:44 +00:00
Layer Info
< / a >
< / div >
< div id = "layerAccordionTab" class = "accordion-body collapse" >
< div class = "accordion-inner" >
< p id = "layerInfo" > < / p >
< / div >
< / div >
< / div >
< div class = "accordion-group" >
< div class = "accordion-heading" >
2013-02-03 21:01:11 +00:00
< a class = "accordion-toggle" data-toggle = "collapse" data-parent = "#gcode_accordion" href = "#options2DAccordionTab" >
2013-02-01 22:13:44 +00:00
2D Render options
< / a >
< / div >
< div id = "options2DAccordionTab" class = "accordion-body collapse" >
< div class = "accordion-inner" >
< input type = "checkbox" id = "showMovesCheckbox" value = "1" onclick = "GCODE.ui.processOptions()" checked > Show non-extrusion moves< / input > < br >
< input type = "checkbox" id = "showRetractsCheckbox" value = "2" onclick = "GCODE.ui.processOptions()" checked > Show retracts and restarts< / input > < br >
< input type = "checkbox" id = "moveModelCheckbox" value = "3" onclick = "GCODE.ui.processOptions()" checked > Move model to the center of the grid< / input > < br >
< input type = "checkbox" id = "differentiateColorsCheckbox" value = "7" onclick = "GCODE.ui.processOptions()" checked > Show different speeds with different colors< / input > < br >
< input type = "checkbox" id = "thickExtrusionCheckbox" value = "8" onclick = "GCODE.ui.processOptions()" > Emulate extrusion width< / input > < br >
Width modifier: < input type = "text" value = "2" id = "widthModifier" onchange = "GCODE.ui.processOptions()" / > < br >
< input type = "checkbox" id = "showNextLayer" value = "9" onclick = "GCODE.ui.processOptions()" > Show +1 layer< / input > < br >
< / div >
< / div >
< / div >
< div class = "accordion-group" >
< div class = "accordion-heading" >
2013-02-03 21:01:11 +00:00
< a class = "accordion-toggle" data-toggle = "collapse" data-parent = "#gcode_accordion" href = "#analyzeOptionsAccordioinTab" >
2013-02-01 22:13:44 +00:00
GCode analyzer options
< / a >
< / div >
< div id = "analyzeOptionsAccordioinTab" class = "accordion-body collapse" >
< div class = "accordion-inner" >
These require re-analyzing file:< br >
< input type = "checkbox" id = "sortLayersCheckbox" value = "4" onclick = "GCODE.ui.processOptions()" checked > Sort layers by Z< / input > < br >
< input type = "checkbox" id = "purgeEmptyLayersCheckbox" value = "5" onclick = "GCODE.ui.processOptions()" checked > Hide empty layers< / input > < br >
< input type = "checkbox" id = "showGCodeCheckbox" value = "6" onclick = "GCODE.ui.processOptions()" checked > Show GCode in GCode tab (memory intensive!)< / input > < br >
< / div >
< / div >
< / div >
< / div >
< / div >
2012-12-25 10:55:00 +00:00
< div class = "tab-pane" id = "term" >
< pre id = "terminal-output" class = "pre-scrollable" > < / pre >
2013-01-20 13:34:44 +00:00
< label class = "checkbox" >
< input type = "checkbox" id = "terminal-autoscroll" data-bind = "checked: autoscrollEnabled" > Autoscroll
< / label >
2012-12-25 10:55:00 +00:00
< div class = "input-append" >
2012-12-26 14:03:34 +00:00
< input type = "text" id = "terminal-command" >
2012-12-25 10:55:00 +00:00
< button class = "btn" type = "button" id = "terminal-send" > Send< / button >
< / div >
< / div >
2013-01-02 23:39:17 +00:00
{% if webcamStream %}
2012-12-30 19:30:31 +00:00
< div class = "tab-pane" id = "webcam" >
2013-01-02 15:33:37 +00:00
< div id = "webcam_container" >
2013-01-02 23:39:17 +00:00
< img id = "webcam_image" src = "{{ webcamStream }}" >
2013-01-02 15:33:37 +00:00
< / div >
2013-01-03 14:25:20 +00:00
2013-01-04 17:38:50 +00:00
{% if enableTimelapse %}
2013-01-04 12:11:00 +00:00
< h1 > Timelapse Configuration< / h1 >
2013-01-03 14:25:20 +00:00
2013-01-04 12:11:00 +00:00
< label for = "webcam_timelapse_mode" > Timelapse Mode< / label >
< select id = "webcam_timelapse_mode" data-bind = "value: timelapseType, enable: isOperational() && !isPrinting()" >
< option value = "off" > Off< / option >
< option value = "zchange" > On Z Change< / option >
< option value = "timed" > Timed< / option >
< / select >
2013-01-03 14:25:20 +00:00
2013-01-04 12:11:00 +00:00
< div id = "webcam_timelapse_timedsettings" data-bind = "visible: intervalInputEnabled()" >
< label for = "webcam_timelapse_interval" > Interval< / label >
2013-01-04 17:38:50 +00:00
< div class = "input-append" >
< input type = "text" class = "input-mini" id = "webcam_timelapse_interval" data-bind = "value: timelapseTimedInterval, enable: isOperational() && !isPrinting()" >
< span class = "add-on" > sec< / span >
< / div >
2013-01-04 12:11:00 +00:00
< / div >
2013-01-03 14:25:20 +00:00
2013-01-04 12:11:00 +00:00
< div >
< button class = "btn" data-bind = "click: save, enable: isOperational() && !isPrinting()" > Save Settings< / button >
< / div >
< h1 > Finished Timelapses< / h1 >
< table class = "table table-striped table-hover table-condensed table-hover" id = "timelapse_files" >
< thead >
< tr >
< th class = "timelapse_files_name" > Name< / th >
< th class = "timelapse_files_size" > Size< / th >
< th class = "timelapse_files_action" > Action< / th >
< / tr >
< / thead >
< tbody data-bind = "foreach: files" >
< tr data-bind = "attr: {title: name}" >
< td class = "timelapse_files_name" data-bind = "text: name" > < / td >
< td class = "timelapse_files_size" data-bind = "text: size" > < / td >
< td class = "timelapse_files_action" > < a href = "#" class = "icon-trash" data-bind = "click: $parent.removeFile" > < / a > | < a href = "#" class = "icon-download" data-bind = "attr: {href: url}" > < / a > < / td >
< / tr >
< / tbody >
< / table >
2013-01-04 17:38:50 +00:00
{% endif %}
2012-12-30 19:30:31 +00:00
< / div >
2013-01-02 23:39:17 +00:00
{% endif %}
2012-12-30 19:30:31 +00:00
< / div >
< / div >
< / div >
< / div >
< div id = "offline_overlay" >
< div id = "offline_overlay_background" > < / div >
< div id = "offline_overlay_wrapper" >
< div class = "container" >
< div class = "hero-unit" >
< h1 > Server is offline< / h1 >
2013-01-13 17:28:55 +00:00
< p id = "offline_overlay_message" >
2012-12-30 19:30:31 +00:00
The server appears to be offline, at least I'm not getting any response from it. I'll try to reconnect
2013-01-13 17:28:55 +00:00
automatically < strong > over the next couple of minutes< / strong > , however you are welcome to try a manual reconnect
2012-12-30 19:30:31 +00:00
anytime using the button below.
< / p >
< p >
< a class = "btn btn-primary btn-large" id = "offline_overlay_reconnect" > Attempt to reconnect< / a >
< / p >
2012-12-25 10:55:00 +00:00
< / div >
< / div >
< / div >
< / div >
2013-01-06 15:51:04 +00:00
< script src = "http://code.jquery.com/jquery-latest.js" > < / script >
2013-01-27 10:12:28 +00:00
< script src = "{{ url_for('static', filename='js/knockout-2.2.1.js') }}" > < / script >
2013-01-06 15:51:04 +00:00
< script src = "{{ url_for('static', filename='js/bootstrap.js') }}" > < / script >
2013-02-01 22:13:44 +00:00
< script src = "{{ url_for('static', filename='js/jquery.ui.core.js') }}" > < / script >
2013-01-06 15:51:04 +00:00
< script src = "{{ url_for('static', filename='js/jquery.ui.widget.js') }}" > < / script >
2013-02-01 22:13:44 +00:00
< script src = "{{ url_for('static', filename='js/jquery.ui.mouse.js') }}" > < / script >
< script src = "{{ url_for('static', filename='js/jquery.ui.slider.js') }}" > < / script >
2013-01-06 15:51:04 +00:00
< script src = "{{ url_for('static', filename='js/jquery.flot.js') }}" > < / script >
< script src = "{{ url_for('static', filename='js/jquery.iframe-transport.js') }}" > < / script >
< script src = "{{ url_for('static', filename='js/jquery.fileupload.js') }}" > < / script >
< script src = "{{ url_for('static', filename='js/socket.io.js') }}" > < / script >
< script src = "{{ url_for('static', filename='js/ui.js') }}" > < / script >
2013-02-01 22:13:44 +00:00
< script type = "text/javascript" src = "{{ url_for('static', filename='gcodeviewer/lib/modernizr.custom.09684.js') }}" > < / script >
< script type = "text/javascript" src = "{{ url_for('static', filename='gcodeviewer/js/ui.js') }}" > < / script >
< script type = "text/javascript" src = "{{ url_for('static', filename='gcodeviewer/js/gCodeReader.js') }}" > < / script >
< script type = "text/javascript" src = "{{ url_for('static', filename='gcodeviewer/js/renderer.js') }}" > < / script >
<!-- <script type="text/javascript" src="{{ url_for('static', filename='gcodeviewer/lib/jquery - ui - 1.9.0.custom.js') }}"></script> -->
2012-12-25 10:55:00 +00:00
< / body >
2013-02-09 11:22:09 +00:00
< / html >