diff --git a/.gitignore b/.gitignore index 8645c86..736ea04 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ .project .idea/* +www/js/*.js +www/css/styles.css +www/css/*.min.css __index.html _index.html div_bgs.html @@ -28,4 +31,4 @@ less/verticalshapes.css less/verticalshapes_backup.css __settings.html css/_settings.css -node_modules/* \ No newline at end of file +node_modules/* diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..33b5598 --- /dev/null +++ b/Makefile @@ -0,0 +1,64 @@ +################################################ +# OpenWrt Makefile for Doodle3D Print3D driver # +################################################ +include $(TOPDIR)/rules.mk + +PKG_NAME := doodle3d-client +PKG_VERSION := 0.9.0 +PKG_RELEASE := 1 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/doodle3d-client + SECTION:=mods + CATEGORY:=Doodle3D + TITLE:=Doodle3D web client + DEPENDS:= +endef + +define Package/doodle3d-client/description + This package provides the Doodle3D web client, which interacts with the wifibox package using a REST API. +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) less $(PKG_BUILD_DIR)/ + $(CP) www $(PKG_BUILD_DIR)/ + $(CP) Gruntfile.js $(PKG_BUILD_DIR)/ + $(CP) README.md $(PKG_BUILD_DIR)/ + $(CP) ___settings.html $(PKG_BUILD_DIR)/ + $(CP) lesstocss.sh $(PKG_BUILD_DIR)/ + $(CP) package.json $(PKG_BUILD_DIR)/ +endef + +define Build/Compile + npm install + grunt less autoprefixer cssmin concat uglify +endef + +define Package/doodle3d-client/install + $(INSTALL_DIR) $(1)/www + $(INSTALL_DIR) $(1)/www/css + $(INSTALL_DIR) $(1)/www/img + #$(INSTALL_DIR) $(1)/www/js + $(INSTALL_DIR) $(1)/www/js/libs + + $(CP) $(PKG_BUILD_DIR)/www/favicon* $(1)/www/ + $(CP) $(PKG_BUILD_DIR)/www/index.html $(1)/www/ + $(CP) $(PKG_BUILD_DIR)/www/settings.html $(1)/www/ + + $(CP) $(PKG_BUILD_DIR)/www/css/debug.min.css $(1)/www/css/ + $(CP) $(PKG_BUILD_DIR)/www/css/settings.min.css $(1)/www/css/ + $(CP) $(PKG_BUILD_DIR)/www/css/styles.min.css $(1)/www/css/ + + $(CP) $(PKG_BUILD_DIR)/www/img/* $(1)/www/img/ + + $(CP) $(PKG_BUILD_DIR)/www/js/doodle3d-client.min.js $(1)/www/js/ + $(CP) $(PKG_BUILD_DIR)/www/js/libs/* $(1)/www/js/libs/ + + $(CP) $(PKG_BUILD_DIR)/www/library $(1)/www/ +endef + +$(eval $(call BuildPackage,doodle3d-client)) diff --git a/README.md b/README.md index 8a4ef7a..d86cc3a 100644 --- a/README.md +++ b/README.md @@ -1 +1,13 @@ -Doodle3D client app \ No newline at end of file +Doodle3D client app +=================== + + +# How to build + +## Prerequisites +- get `npm`, the Node.js package manager, for instance using macports on OSX. +- (prerequisite) install Grunt: `npm install -g grunt-cli`. +- run npm install in the project root to install project dependencies + +Finally run grunt to build minified css and js files. By default, it will keep +running to automatically rebuild when source files are changed. diff --git a/___settings.html b/___settings.html old mode 100755 new mode 100644 diff --git a/js_src/libs/jquery-cookie.js b/js_src/libs/jquery-cookie.js old mode 100755 new mode 100644 diff --git a/www/css/.gitkeep b/www/css/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/www/css/debug.css b/www/css/debug.css index 0f0de5e..48cdbea 100644 --- a/www/css/debug.css +++ b/www/css/debug.css @@ -42,4 +42,4 @@ background-color: #fff; opacity: .7; color: #000; -} \ No newline at end of file +} diff --git a/www/css/debug.min.css b/www/css/debug.min.css deleted file mode 100644 index 3047837..0000000 --- a/www/css/debug.min.css +++ /dev/null @@ -1 +0,0 @@ -.debugContainer{position:absolute;top:0;left:0;z-index:500;background-color:#f0f;display:none}#debug_textArea{position:absolute;bottom:0;z-index:500;display:none}.debugBtn{width:25px;height:25px;background-color:#03b;float:left}.agentInfo{background:#fff;border:1px #333 solid;display:none;float:left;opacity:.7}.agentInfoToggle{display:block}#debug_display{position:absolute;top:0;left:0;display:none;background-color:#fff;opacity:.7;color:#000} \ No newline at end of file diff --git a/www/css/settings.css b/www/css/settings.css index 8feddcc..8a41cc4 100644 --- a/www/css/settings.css +++ b/www/css/settings.css @@ -106,4 +106,4 @@ form dl dt { float: left; font-style: italic; width: 10em; -} \ No newline at end of file +} diff --git a/www/css/settings.min.css b/www/css/settings.min.css deleted file mode 100644 index 11ea3a1..0000000 --- a/www/css/settings.min.css +++ /dev/null @@ -1 +0,0 @@ -form{margin:10px;max-width:600px}form input{margin:1px}body,th,td{font-family:Helvetica,Arial,"Nimbus Sans L",sans-serif;font-size:13px}.settingsContainer{position:relative;width:100%;height:100%}form fieldset{max-width:600px;border:1px solid #bbb;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;margin-bottom:20px;padding:8px}form fieldset fieldset{max-width:580px;margin:15px 0 5px;clear:left;float:left}form fieldset legend{margin-left:10px;font-weight:700}form label{min-width:150px;display:block;float:left;margin:1px 0 0;clear:left}form div{float:left}form input[type=text],form input[type=number],form input[type=password]{border:1px solid #90c0ff;margin-right:5px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}form input[type=text].small,form input[type=number].small,form input[type=password].small{width:50px}form input[type=text].large,form input[type=number].large,form input[type=password].large{width:250px}form input[type=radio]{margin:4px 4px 0 0}form textarea{border:1px solid #90c0ff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}form .startgcode_left{float:left;margin-right:20px}form textarea.gcode{width:252px;height:150px}form small{margin:3px 0 0;display:block;clear:left}form .button{display:inline-block}form #passwordLabel,form #password{display:none}form input.error,form textarea.error,form select.error{border:red solid 2px}form .errorMsg{color:red;margin:0 0 0 1em}form dl dt{float:left;font-style:italic;width:10em} \ No newline at end of file diff --git a/www/css/styles.css b/www/css/styles.css deleted file mode 100644 index 76133c4..0000000 --- a/www/css/styles.css +++ /dev/null @@ -1,1163 +0,0 @@ -/* Artfully masterminded by ZURB */ - -body { - /*position: relative;*/ -} - -/* Default styles for the container */ - -.joyride-tip-guide { - position: absolute; - background: rgba(255, 255, 255, 0.92); - display: none; - color: #222; - width: 300px; - z-index: 101; - top: 0; - /* keeps the page from scrolling when calculating position */ - left: 0; - font-weight: normal; - border-radius: 10px; - border: 3px solid #5FCE4F; - -webkit-box-shadow: 0 0 15px rgba(0, 0, 0, 0.4); - box-shadow: 0 0 15px rgba(0, 0, 0, 0.4); -} - -.joyride-content-wrapper { - padding: 10px 10px 15px 15px; -} - -/* Mobile */ - -@media only screen and (max-width: 767px) { - .joyride-tip-guide { - width: 95% !important; - border-radius: 0; - left: 2.5% !important; - } - - .joyride-tip-guide-wrapper { - width: 100%; - } -} - -/* Add a little css triangle pip, older browser just miss out on the fanciness of it */ - -.joyride-tip-guide span.joyride-nub { - display: block; - position: absolute; - right: 22px; - width: 0; - height: 0; - border: solid 14px; -} - -.joyride-tip-guide span.joyride-nub.top { - /* - IE7/IE8 Don't support rgba so we set the fallback - border color here. However, IE7/IE8 are also buggy - in that the fallback color doesn't work for - border-bottom-color so here we set the border-color - and override the top,left,right colors below. - */ - border-color: #43d814; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-top-width: 0; - top: -14px; - bottom: 0; -} - -.joyride-tip-guide span.joyride-nub.bottom { - /* - IE7/IE8 Don't support rgba so we set the fallback - border color here. However, IE7/IE8 are also buggy - in that the fallback color doesn't work for - border-top-color so here we set the border-color - and override the bottom,left,right colors below. - */ - border-color: #43d814 !important; - border-bottom-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-bottom-width: 0; - bottom: -14px !important; - bottom: 0; -} - -.joyride-tip-guide span.joyride-nub.right { - border-color: #43d814 !important; - border-top-color: transparent !important; - border-right-color: transparent !important; - border-bottom-color: transparent !important; - border-right-width: 0; - top: 22px; - bottom: 0; - left: auto; - right: -14px; -} - -.joyride-tip-guide span.joyride-nub.left { - border-color: #43d814 !important; - border-top-color: transparent !important; - border-left-color: transparent !important; - border-bottom-color: transparent !important; - border-left-width: 0; - top: 22px; - left: -14px; - right: auto; - bottom: 0; -} - -.joyride-tip-guide span.joyride-nub.top-right { - border-color: #000; - border-color: rgba(0, 0, 0, 0.8); - border-top-color: transparent !important; - border-left-color: transparent !important; - border-right-color: transparent !important; - border-top-width: 0; - top: -14px; - bottom: 0; - left: auto; - right: 28px; -} - -/* Typography */ - -.joyride-tip-guide h1, -.joyride-tip-guide h2, -.joyride-tip-guide h3, -.joyride-tip-guide h4, -.joyride-tip-guide h5, -.joyride-tip-guide h6 { - line-height: 1.25; - margin: 0; - font-weight: bold; - color: #2DDF34; -} - -.joyride-tip-guide h1 { - font-size: 30px; -} - -.joyride-tip-guide h2 { - font-size: 26px; -} - -.joyride-tip-guide h3 { - font-size: 22px; -} - -.joyride-tip-guide h4 { - font-size: 18px; -} - -.joyride-tip-guide h5 { - font-size: 16px; -} - -.joyride-tip-guide h6 { - font-size: 14px; -} - -.joyride-tip-guide p { - margin: 0 0 18px 0; - font-size: 14px; - line-height: 18px; -} - -.joyride-tip-guide a { - color: #ffffff; - text-decoration: none; - border-bottom: dotted 1px rgba(255, 255, 255, 0.6); -} - -.joyride-tip-guide a:hover { - color: rgba(255, 255, 255, 0.8); - border-bottom: none; -} - -/* Button Style */ - -.joyride-tip-guide .joyride-next-tip { - width: auto; - padding: 6px 18px 4px; - font-size: 13px; - text-decoration: none; - color: #ffffff; - border: solid 1px #003cb4; - background: #0063ff; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #0063ff), color-stop(100%, #0055d6)); - background: -webkit-linear-gradient(top, #0063ff 0%, #0055d6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0063ff', endColorstr='#0055d6', GradientType=0); - background: -webkit-gradient(linear, top left, bottom left, from(#0063ff), to(#0055d6)); - background: linear-gradient(top, #0063ff 0%, #0055d6 100%); - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.5); - border-radius: 2px; - -webkit-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.3) inset; - box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.3) inset; -} - -.joyride-next-tip:hover { - color: #ffffff !important; - border: solid 1px #003cb4 !important; - background: #2b80ff; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b80ff), color-stop(100%, #1d66d3)); - background: -webkit-linear-gradient(top, #2b80ff 0%, #1d66d3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b80ff', endColorstr='#1d66d3', GradientType=0); - background: -webkit-gradient(linear, top left, bottom left, from(#2b80ff), to(#1d66d3)); - background: linear-gradient(top, #2b80ff 0%, #1d66d3 100%); -} - -.joyride-timer-indicator-wrap { - width: 50px; - height: 3px; - border: solid 1px rgba(255, 255, 255, 0.1); - position: absolute; - right: 17px; - bottom: 16px; -} - -.joyride-timer-indicator { - display: block; - width: 0; - height: inherit; - background: rgba(255, 255, 255, 0.25); -} - -.joyride-close-tip { - position: absolute; - right: 10px; - top: 10px; - color: rgba(0, 0, 0, 0.5) !important; - text-decoration: none; - font-family: Verdana, sans-serif; - font-size: 10px; - font-weight: bold; - border-bottom: none !important; -} - -.joyride-close-tip:hover { - color: rgba(0, 0, 0, 0.9) !important; -} - -.joyride-modal-bg { - position: fixed; - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.3); - z-index: 100; - display: none; - top: 0; - left: 0; - cursor: pointer; -} - -.joyride-expose-wrapper { - background-color: #ffffff; - position: absolute; - z-index: 102; - -webkit-box-shadow: 0px 0px 30px #ffffff; - box-shadow: 0px 0px 30px #ffffff; - border-radius: 5px; -} - -.joyride-expose-cover { - background: transparent; - position: absolute; - z-index: 10000; - top: 0; - left: 0; - border-radius: 5px; -} - -#helpContainer { - display: none; - margin: 0; - padding: 0; -} - -.joyride-tip-guide.d3dInfoWelcomePanel { - width: 460px; - padding: 25px; -} - -/* - - GLOBAL CONTAINER - -*/ - -body { - background-color: #fcfcfc; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - /* disable cut copy paste */ - overflow: hidden; - /* This chops off any overhanging divs */ -} - -img { - z-index: 5; - /*pointer-events:none;*/ - /*-webkit-touch-callout: none; */ - /*disable callout, image save panel */ - /*-webkit-tap-highlight-color: transparent; */ - /* "turn off" link highlight */ -} - -/* http://stackoverflow.com/questions/5348092/prevent-default-press-but-not-default-drag-in-ios-mobilesafari */ - -.btn { - background-repeat: no-repeat; - /* -webkit-user-select: none;*/ - cursor: pointer; -} - -#landscape { - position: absolute; - width: 100%; - max-width: 1024px; - max-height: 768px; - top: 0; - bottom: 0; - left: 0; - right: 0; - overflow: hidden; - margin: 0 auto; - outline: 2px solid #5e8c71; - -webkit-box-shadow: 0 0 8px rgba(8, 8, 8, 0.25); - box-shadow: 0 0 8px rgba(8, 8, 8, 0.25); -} - -#portrait { - display: none; -} - -.bgContainer { - position: absolute; - width: 100%; - height: 100%; - overflow: hidden; -} - -.bgTop, -.bgMiddle, -.bgBottom { - opacity: 1.0; - -webkit-transition: opacity .35s linear; - transition: opacity .35s linear; - position: absolute; - left: 0px; - z-index: -5; -} - -.bgTop { - top: 0px; -} - -.bgMiddle { - top: 30%; -} - -.bgBottom { - bottom: 0px; -} - -/* - - CENTER PANEL - -*/ - -.centerpanel { - position: absolute; - left: 50%; - margin-left: -33%; - width: 66%; - height: 100%; - z-index: 5; -} - -.logopanel { - height: 25%; -} - -.d3dlogo { - position: relative; - top: 15%; - width: 100%; - height: 100%; - margin: 0px auto; - max-width: 399px; - height: 139px; - background: url('../img/logo/logo_full.png') no-repeat center center; - cursor: pointer; -} - -#verticalShapes { - position: absolute; - right: 0; - bottom: 15px; - margin-right: -8.5%; - width: 8%; -} - -#verticalShapes > div { - border: 2px solid #333; - border-radius: 0px 5px 5px 0px; - margin-top: 4px; - background-color: #fff; - cursor: pointer; -} - -#verticalShapes > div img.verticalshape { - width: 100%; - max-width: 50px; - height: auto; - vertical-align: bottom; -} - -.drawareacontainer { - position: relative; - width: 100%; - height: 65%; - background-color: #fff; - border: 4px solid #000; - border-radius: 15px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - z-index: 15; -} - -#canvasContainers { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - padding: 0; - margin: 0; -} - -#mycanvasContainer { - position: absolute; - top: 0; - left: 0; - width: 78%; - height: 100%; -} - -#mycanvas { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - border-right: 2px solid #333; -} - -#previewContainer { - position: absolute; - top: 0; - right: 0; - width: 22%; - height: 100%; -} - -#preview { - min-width: 50px; - width: 100%; - height: 100%; - margin: 0; - padding: 0; -} - -/* DEBUG THING */ - -#preview_tmp { - position: absolute; - top: 0px; - left: 0px; - z-index: 500; - border: 1px solid #f80; - display: none; -} - -.bottompanel { - position: relative; - bottom: 0px; - width: 100%; - height: 10%; -} - -/* - DOODLE UP/DOWN/LEFT/RIGHT buttons -*/ - -.manipulationBtns { - margin: 2px 5px; - position: absolute; - right: 0; - top: 0; - max-width: 340px; - max-height: 70px; - width: 45%; -} - -.manipulationBtn { - width: 45%; - height: auto; - cursor: pointer; -} - -#btnsUpDown { - float: left; - width: 45%; -} - -#btnsUpDown > div { - float: left; - padding-right: 8px; - background-repeat: no-repeat; -} - -#btnsTurnLeftRight { - float: right; - width: 45%; -} - -#btnsTurnLeftRight > div { - float: left; - padding-right: 8px; - background-repeat: no-repeat; -} - -#btnMoveUp { - max-width: 65px; -} - -#btnMoveDown { - max-width: 64px; -} - -#btnTwistLeft { - max-width: 59px; -} - -#btnTwistRight { - max-width: 64px; -} - -/* - HEIGHT-related RESPONSIVE STUFF -*/ - -@media screen and (max-height: 700px) { - .logopanel { - height: 22%; - } - - .doodlecontainer { - height: 68%; - } - - .d3dlogo { - top: 25%; - max-width: 399px; - height: 74px; - background-image: url('../img/logo/logo_small.png'); - } -} - -@media screen and (max-height: 655px) { - .bgMiddle { - opacity: 0; - } -} - -@media screen and (max-height: 525px) { - .d3dlogo { - top: 20%; - height: 57px; - max-width: 307px; - background-image: url('../img/logo/logo_smaller.png'); - } -} - -@media screen and (max-height: 375px) { - .d3dlogo { - height: 40px; - max-width: 216px; - background-image: url('../img/logo/logo_smallest.png'); - } -} - -/* - - LEFT PANEL - -*/ - -.leftpanel { - position: absolute; - width: 17%; - top: 0px; - left: 0px; - bottom: 0px; -} - -.btnNew { - margin: 5% 0% 1% 5%; - width: 100%; - max-width: 180px; - height: auto; -} - -.btnsPrevNext { - margin: 1% 7%; - max-width: 160px; -} - -.btnPrevious { - width: 40%; - max-width: 56px; - height: auto; -} - -.btnNext { - width: 40%; - max-width: 56px; - height: auto; - float: right; -} - -.btnSave { - margin: 5% 5% 1% 5%; - width: 90%; - max-width: 144px; - height: auto; -} - -.btnOops { - margin: 5% 5% 1% 5%; - width: 90%; - max-width: 144px; - height: auto; -} - -/* - - RIGHT PANEL - -*/ - -.rightpanel { - position: absolute; - width: 17%; - top: 0; - right: 0; - bottom: 0; -} - -.btnPrint { - margin: 1% 5% 5% 0%; - width: 100%; - max-width: 163px; - height: auto; - float: right; -} - -.btnStop { - margin: 5% 10% 1% 5%; - float: right; - width: 90%; - max-width: 98px; - height: auto; -} - -.btnsSettingsInfo { - position: absolute; - bottom: 25px; - right: 5px; - width: 80%; - margin: 1% 5%; - max-width: 160px; -} - -.btnInfo { - width: 40%; - max-width: 53px; - height: auto; -} - -.btnSettings { - width: 40%; - max-width: 53px; - height: auto; - float: right; -} - -/* - - PROGRESSGUAGE AND THERMOMETER SHARED STYLES - -*/ - -.progressbarAppear { - /*margin-right: 1.5% !important;*/ - right: -0.5% !important; -} - -.thermometerAppear { - /*margin-right: 1.5% !important;*/ - right: -6.5% !important; -} - -/* - - PROGRESS GUAGE - -*/ - -.progressbarCanvasContainerParent { - position: relative; - width: 100%; -} - -#progressbarCanvasContainer { - position: relative; - width: 50%; - float: right; - border: solid #000; - border-width: 2px 0 2px 2px; - border-radius: 15px 0 0 15px; - /*padding: 5px 0px 5px 5px;*/ - padding: 5px; - background-color: #fff; - -webkit-box-shadow: 0 2px 5px rgba(37, 37, 37, 0.35); - box-shadow: 0 2px 5px rgba(37, 37, 37, 0.35); - -webkit-transition: right 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55); - transition: right 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55); - right: -60%; - margin: 5% 0%; -} - -#progressbarCanvas { - top: 0; - right: 0; - bottom: 0; - left: 0; - width: 100%; - height: auto; - background-color: #fff; -} - -/* - - THERMOMETER - -*/ - -.thermometerContainerParent { - position: relative; - width: 100%; - padding-top: 10px; -} - -#thermometerContainer { - position: relative; - width: 45%; - float: right; - background-color: #fff; - border: solid #000; - border-width: 2px 0 2px 2px; - border-radius: 15px 0 0 15px; - padding: 5px; - -webkit-box-shadow: 0 2px 5px rgba(37, 37, 37, 0.35); - box-shadow: 0 2px 5px rgba(37, 37, 37, 0.35); - -webkit-transition: right 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); - transition: right 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); - right: -55%; -} - -#thermometerCanvas { - top: 0; - right: 0; - bottom: 0; - left: 0; - width: 100%; - height: auto; - background-color: #fff; -} - -/* - under all the above styles w.r.t. the cascading effect -*/ - -.disabled { - opacity: 0.3; - cursor: default; -} - -#btnStop.disabled { - display: none; -} - -/* - - REST - -*/ - -/* CLEARFIX */ - -/* http://nicolasgallagher.com/micro-clearfix-hack/ */ - -.clearfix:before, -.clearfix:after { - content: " "; - /* 1 */ - display: table; - /* 2 */ -} - -.clearfix:after { - clear: both; -} - -/* For IE 6/7 only*/ - -.clearfix { - *zoom: 1; -} - -/* - - SETTINGS POPUP - -*/ - -#contentOverlay { - background-color: rgba(255, 255, 255, 0.65); - z-index: 20; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; - display: none; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -#contentOverlay #settings { - background-color: #fff; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 15; - max-width: 775px; - max-height: 540px; - width: 80%; - height: 75%; - margin: 7% 8%; - -webkit-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - border: 2px solid #222; - border-radius: 15px; - padding: 2%; -} - -#contentOverlay #settings .toppanel { - height: 10%; -} - -#contentOverlay #settings .toppanel .settingsLabelContainer { - width: 100%; - height: auto; - margin-bottom: 1%; -} - -#contentOverlay #settings .toppanel .settingsLabelContainer .settingsLabelImg { - width: 45%; - max-width: 373px; - height: auto; -} - -#contentOverlay #settings .bottompanel { - width: 100%; - height: 90%; -} - -#contentOverlay #settings .bottompanel > .settingsContainer { - float: left; - width: 83%; - height: 98%; - margin: .5%; - overflow-y: scroll; - overflow-x: hidden; - border: 1px solid #bbbbbb; - border-radius: 5px; -} - -#contentOverlay #settings .bottompanel > .btnContainer { - width: 15%; - height: 100%; - float: right; - position: relative; - right: 0; -} - -#contentOverlay #settings .bottompanel > .btnContainer > .btnOK { - position: absolute; - bottom: 3%; - right: 7%; - max-width: 85px; - min-width: 42px; - width: 88%; - height: auto; - margin: 0 2% 2% 0; - cursor: pointer; -} - -#message { - position: absolute; - top: 0; - right: 0; - padding: 0.4em 0.5em; - border-radius: 0 0 0 10px; - border: 2px solid #333; - border-width: 0 0 2px 2px; - font-weight: bold; - -webkit-box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - box-shadow: 0px 2px 6px 0px rgba(16, 16, 16, 0.65); - color: #333; - white-space: nowrap; - display: none; -} - -#message.error { - background: #EB313C; - color: #fff; -} - -#message.warning { - background: #E9A86E; -} - -#message.notice { - background: #93CAF4; -} - -#message.info { - background: #97DD8A; -} - -@media only screen and (max-width: 480px), only screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5), only screen and (max-width: 720px) and (-webkit-min-device-pixel-ratio: 1.5) { - /* - TOP LOGO - */ - - .centerpanel { - left: 0; - margin-left: 0; - width: 100%; - /* background-color: rgba(0, 135, 255, 0.4);*/ - } - - .logopanel { - height: 40px; - } - - .d3dlogo { - top: 0; - height: 40px; - max-width: 216px; - background-image: url('../img/logo/logo_smallest.png'); - } - - .drawareacontainer { - /* position: absolute;*/ - height: 70%; - } - - .bottompanel { - height: 10%; - } - - .bottompanel .manipulationBtns { - margin: 2px -27; - right: 22%; - width: 38%; - } - - /* - LEFT - */ - - .leftpanel { - width: 100px; - background-color: #fff; - z-index: 50; - -webkit-transition: left 0.3s ease-out; - transition: left 0.3s ease-out; - } - - .hideleft { - left: -101px; - } - - .shadowright { - -webkit-box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); - box-shadow: 2px 0 4px rgba(42, 42, 41, 0.6); - } - - .btnNew { - margin: 5% 5% 1% 5%; - width: 90%; - } - - .btnSave { - margin-left: 9%; - width: 75%; - } - - .btnOops { - margin-left: 6%; - width: 71%; - } - - /* - RIGHT - */ - - .rightpanel { - width: 100px; - background-color: #fff; - z-index: 50; - -webkit-transition: right 0.3s ease-out; - transition: right 0.3s ease-out; - } - - .hideright { - right: -101px; - } - - .shadowleft { - -webkit-box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); - box-shadow: -2px 0 4px rgba(42, 42, 41, 0.6); - } - - .btnPrint { - margin: 1% 5% 5% 5%; - width: 90%; - } - - .btnStop { - margin: 5% 6% 1% 5%; - width: 70%; - } - - /* - REST - */ - - .sidebutton { - display: block; - position: absolute; - /* top: 50%;*/ - /* margin-top: -20px;*/ - top: 40px; - /*float:right;*/ - width: 25px; - height: 38px; - border: 1px solid #808; - background: url('../img/arrows.png') no-repeat; - background-color: #eee; - cursor: pointer; - } - - .sidebutton:active { - background-color: #aaa; - } - - .leftpanel .sidebutton { - right: -27px; - background-position: 0px 0px; - } - - .rightpanel .sidebutton { - left: -27px; - background-position: -25px 0px; - } - - .sidebuttonin:active { - background-color: #888; - } - - .leftpanel .sidebuttonin { - background-color: #ccc; - background-position: -25px 0px; - } - - .rightpanel .sidebuttonin { - background-color: #ccc; - background-position: 0px 0px; - } - - /* - - SETTINGS POPUP - MOBILE - - */ - - #contentOverlay { - z-index: 200; - } - - #contentOverlay #settings { - width: 87%; - height: 82%; - margin: 6% 4%; - } - - #contentOverlay #settings > .right { - width: 14%; - } -} - -@media only screen and (min-width: 1000px) and (max-device-pixel-ratio: 1.5), only screen and (min-width: 1000px) and (-webkit-max-device-pixel-ratio: 1.5) { - -} - -@media only screen and (orientation: portrait) { - #landscape { - display: none; - } - - #portrait { - display: block; - } - - .vertImage { - margin: 0px; - padding: 0px; - /*border: 2px solid #f0f;*/ - max-width: 100%; - height: auto; - width: auto; - /* for ie9 */ - } -} \ No newline at end of file diff --git a/www/css/styles.min.css b/www/css/styles.min.css deleted file mode 100644 index a7d57dd..0000000 --- a/www/css/styles.min.css +++ /dev/null @@ -1 +0,0 @@ -body{}.joyride-tip-guide{position:absolute;background:rgba(255,255,255,.92);display:none;color:#222;width:300px;z-index:101;top:0;left:0;font-weight:400;border-radius:10px;border:3px solid #5FCE4F;-webkit-box-shadow:0 0 15px rgba(0,0,0,.4);box-shadow:0 0 15px rgba(0,0,0,.4)}.joyride-content-wrapper{padding:10px 10px 15px 15px}@media only screen and (max-width:767px){.joyride-tip-guide{width:95%!important;border-radius:0;left:2.5%!important}.joyride-tip-guide-wrapper{width:100%}}.joyride-tip-guide span.joyride-nub{display:block;position:absolute;right:22px;width:0;height:0;border:solid 14px}.joyride-tip-guide span.joyride-nub.top{border-color:#43d814;border-top-color:transparent!important;border-left-color:transparent!important;border-right-color:transparent!important;border-top-width:0;top:-14px;bottom:0}.joyride-tip-guide span.joyride-nub.bottom{border-color:#43d814!important;border-bottom-color:transparent!important;border-left-color:transparent!important;border-right-color:transparent!important;border-bottom-width:0;bottom:-14px!important;bottom:0}.joyride-tip-guide span.joyride-nub.right{border-color:#43d814!important;border-top-color:transparent!important;border-right-color:transparent!important;border-bottom-color:transparent!important;border-right-width:0;top:22px;bottom:0;left:auto;right:-14px}.joyride-tip-guide span.joyride-nub.left{border-color:#43d814!important;border-top-color:transparent!important;border-left-color:transparent!important;border-bottom-color:transparent!important;border-left-width:0;top:22px;left:-14px;right:auto;bottom:0}.joyride-tip-guide span.joyride-nub.top-right{border-color:#000;border-color:rgba(0,0,0,.8);border-top-color:transparent!important;border-left-color:transparent!important;border-right-color:transparent!important;border-top-width:0;top:-14px;bottom:0;left:auto;right:28px}.joyride-tip-guide h1,.joyride-tip-guide h2,.joyride-tip-guide h3,.joyride-tip-guide h4,.joyride-tip-guide h5,.joyride-tip-guide h6{line-height:1.25;margin:0;font-weight:700;color:#2DDF34}.joyride-tip-guide h1{font-size:30px}.joyride-tip-guide h2{font-size:26px}.joyride-tip-guide h3{font-size:22px}.joyride-tip-guide h4{font-size:18px}.joyride-tip-guide h5{font-size:16px}.joyride-tip-guide h6{font-size:14px}.joyride-tip-guide p{margin:0 0 18px;font-size:14px;line-height:18px}.joyride-tip-guide a{color:#fff;text-decoration:none;border-bottom:dotted 1px rgba(255,255,255,.6)}.joyride-tip-guide a:hover{color:rgba(255,255,255,.8);border-bottom:0}.joyride-tip-guide .joyride-next-tip{width:auto;padding:6px 18px 4px;font-size:13px;text-decoration:none;color:#fff;border:solid 1px #003cb4;background:#0063ff;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#0063ff),color-stop(100%,#0055d6));background:-webkit-linear-gradient(top,#0063ff 0,#0055d6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0063ff', endColorstr='#0055d6', GradientType=0);background:-webkit-gradient(linear,top left,bottom left,from(#0063ff),to(#0055d6));background:linear-gradient(top,#0063ff 0,#0055d6 100%);text-shadow:0 -1px 0 rgba(0,0,0,.5);border-radius:2px;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3) inset;box-shadow:0 1px 0 rgba(255,255,255,.3) inset}.joyride-next-tip:hover{color:#fff!important;border:solid 1px #003cb4!important;background:#2b80ff;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#2b80ff),color-stop(100%,#1d66d3));background:-webkit-linear-gradient(top,#2b80ff 0,#1d66d3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b80ff', endColorstr='#1d66d3', GradientType=0);background:-webkit-gradient(linear,top left,bottom left,from(#2b80ff),to(#1d66d3));background:linear-gradient(top,#2b80ff 0,#1d66d3 100%)}.joyride-timer-indicator-wrap{width:50px;height:3px;border:solid 1px rgba(255,255,255,.1);position:absolute;right:17px;bottom:16px}.joyride-timer-indicator{display:block;width:0;height:inherit;background:rgba(255,255,255,.25)}.joyride-close-tip{position:absolute;right:10px;top:10px;color:rgba(0,0,0,.5)!important;text-decoration:none;font-family:Verdana,sans-serif;font-size:10px;font-weight:700;border-bottom:0!important}.joyride-close-tip:hover{color:rgba(0,0,0,.9)!important}.joyride-modal-bg{position:fixed;height:100%;width:100%;background:rgba(0,0,0,.3);z-index:100;display:none;top:0;left:0;cursor:pointer}.joyride-expose-wrapper{background-color:#fff;position:absolute;z-index:102;-webkit-box-shadow:0 0 30px #fff;box-shadow:0 0 30px #fff;border-radius:5px}.joyride-expose-cover{background:transparent;position:absolute;z-index:10000;top:0;left:0;border-radius:5px}#helpContainer{display:none;margin:0;padding:0}.joyride-tip-guide.d3dInfoWelcomePanel{width:460px;padding:25px}body{background-color:#fcfcfc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}img{z-index:5}.btn{background-repeat:no-repeat;cursor:pointer}#landscape{position:absolute;width:100%;max-width:1024px;max-height:768px;top:0;bottom:0;left:0;right:0;overflow:hidden;margin:0 auto;outline:2px solid #5e8c71;-webkit-box-shadow:0 0 8px rgba(8,8,8,.25);box-shadow:0 0 8px rgba(8,8,8,.25)}#portrait{display:none}.bgContainer{position:absolute;width:100%;height:100%;overflow:hidden}.bgTop,.bgMiddle,.bgBottom{opacity:1;-webkit-transition:opacity .35s linear;transition:opacity .35s linear;position:absolute;left:0;z-index:-5}.bgTop{top:0}.bgMiddle{top:30%}.bgBottom{bottom:0}.centerpanel{position:absolute;left:50%;margin-left:-33%;width:66%;height:100%;z-index:5}.logopanel{height:25%}.d3dlogo{position:relative;top:15%;width:100%;height:100%;margin:0 auto;max-width:399px;height:139px;background:url(../img/logo/logo_full.png) no-repeat center center;cursor:pointer}#verticalShapes{position:absolute;right:0;bottom:15px;margin-right:-8.5%;width:8%}#verticalShapes>div{border:2px solid #333;border-radius:0 5px 5px 0;margin-top:4px;background-color:#fff;cursor:pointer}#verticalShapes>div img.verticalshape{width:100%;max-width:50px;height:auto;vertical-align:bottom}.drawareacontainer{position:relative;width:100%;height:65%;background-color:#fff;border:4px solid #000;border-radius:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;z-index:15}#canvasContainers{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;padding:0;margin:0}#mycanvasContainer{position:absolute;top:0;left:0;width:78%;height:100%}#mycanvas{width:100%;height:100%;margin:0;padding:0;border-right:2px solid #333}#previewContainer{position:absolute;top:0;right:0;width:22%;height:100%}#preview{min-width:50px;width:100%;height:100%;margin:0;padding:0}#preview_tmp{position:absolute;top:0;left:0;z-index:500;border:1px solid #f80;display:none}.bottompanel{position:relative;bottom:0;width:100%;height:10%}.manipulationBtns{margin:2px 5px;position:absolute;right:0;top:0;max-width:340px;max-height:70px;width:45%}.manipulationBtn{width:45%;height:auto;cursor:pointer}#btnsUpDown{float:left;width:45%}#btnsUpDown>div{float:left;padding-right:8px;background-repeat:no-repeat}#btnsTurnLeftRight{float:right;width:45%}#btnsTurnLeftRight>div{float:left;padding-right:8px;background-repeat:no-repeat}#btnMoveUp{max-width:65px}#btnMoveDown{max-width:64px}#btnTwistLeft{max-width:59px}#btnTwistRight{max-width:64px}@media screen and (max-height:700px){.logopanel{height:22%}.doodlecontainer{height:68%}.d3dlogo{top:25%;max-width:399px;height:74px;background-image:url(../img/logo/logo_small.png)}}@media screen and (max-height:655px){.bgMiddle{opacity:0}}@media screen and (max-height:525px){.d3dlogo{top:20%;height:57px;max-width:307px;background-image:url(../img/logo/logo_smaller.png)}}@media screen and (max-height:375px){.d3dlogo{height:40px;max-width:216px;background-image:url(../img/logo/logo_smallest.png)}}.leftpanel{position:absolute;width:17%;top:0;left:0;bottom:0}.btnNew{margin:5% 0 1% 5%;width:100%;max-width:180px;height:auto}.btnsPrevNext{margin:1% 7%;max-width:160px}.btnPrevious{width:40%;max-width:56px;height:auto}.btnNext{width:40%;max-width:56px;height:auto;float:right}.btnSave{margin:5% 5% 1%;width:90%;max-width:144px;height:auto}.btnOops{margin:5% 5% 1%;width:90%;max-width:144px;height:auto}.rightpanel{position:absolute;width:17%;top:0;right:0;bottom:0}.btnPrint{margin:1% 5% 5% 0;width:100%;max-width:163px;height:auto;float:right}.btnStop{margin:5% 10% 1% 5%;float:right;width:90%;max-width:98px;height:auto}.btnsSettingsInfo{position:absolute;bottom:25px;right:5px;width:80%;margin:1% 5%;max-width:160px}.btnInfo{width:40%;max-width:53px;height:auto}.btnSettings{width:40%;max-width:53px;height:auto;float:right}.progressbarAppear{right:-.5%!important}.thermometerAppear{right:-6.5%!important}.progressbarCanvasContainerParent{position:relative;width:100%}#progressbarCanvasContainer{position:relative;width:50%;float:right;border:solid #000;border-width:2px 0 2px 2px;border-radius:15px 0 0 15px;padding:5px;background-color:#fff;-webkit-box-shadow:0 2px 5px rgba(37,37,37,.35);box-shadow:0 2px 5px rgba(37,37,37,.35);-webkit-transition:right .4s cubic-bezier(0.68,-.55,.265,1.55);transition:right .4s cubic-bezier(0.68,-.55,.265,1.55);right:-60%;margin:5% 0}#progressbarCanvas{top:0;right:0;bottom:0;left:0;width:100%;height:auto;background-color:#fff}.thermometerContainerParent{position:relative;width:100%;padding-top:10px}#thermometerContainer{position:relative;width:45%;float:right;background-color:#fff;border:solid #000;border-width:2px 0 2px 2px;border-radius:15px 0 0 15px;padding:5px;-webkit-box-shadow:0 2px 5px rgba(37,37,37,.35);box-shadow:0 2px 5px rgba(37,37,37,.35);-webkit-transition:right .5s cubic-bezier(0.68,-.55,.265,1.55);transition:right .5s cubic-bezier(0.68,-.55,.265,1.55);right:-55%}#thermometerCanvas{top:0;right:0;bottom:0;left:0;width:100%;height:auto;background-color:#fff}.disabled{opacity:.3;cursor:default}#btnStop.disabled{display:none}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.clearfix{*zoom:1}#contentOverlay{background-color:rgba(255,255,255,.65);z-index:20;position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;display:none;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}#contentOverlay #settings{background-color:#fff;position:absolute;top:0;left:0;right:0;bottom:0;z-index:15;max-width:775px;max-height:540px;width:80%;height:75%;margin:7% 8%;-webkit-box-shadow:0 2px 6px 0 rgba(16,16,16,.65);box-shadow:0 2px 6px 0 rgba(16,16,16,.65);border:2px solid #222;border-radius:15px;padding:2%}#contentOverlay #settings .toppanel{height:10%}#contentOverlay #settings .toppanel .settingsLabelContainer{width:100%;height:auto;margin-bottom:1%}#contentOverlay #settings .toppanel .settingsLabelContainer .settingsLabelImg{width:45%;max-width:373px;height:auto}#contentOverlay #settings .bottompanel{width:100%;height:90%}#contentOverlay #settings .bottompanel>.settingsContainer{float:left;width:83%;height:98%;margin:.5%;overflow-y:scroll;overflow-x:hidden;border:1px solid #bbb;border-radius:5px}#contentOverlay #settings .bottompanel>.btnContainer{width:15%;height:100%;float:right;position:relative;right:0}#contentOverlay #settings .bottompanel>.btnContainer>.btnOK{position:absolute;bottom:3%;right:7%;max-width:85px;min-width:42px;width:88%;height:auto;margin:0 2% 2% 0;cursor:pointer}#message{position:absolute;top:0;right:0;padding:.4em .5em;border-radius:0 0 0 10px;border:2px solid #333;border-width:0 0 2px 2px;font-weight:700;-webkit-box-shadow:0 2px 6px 0 rgba(16,16,16,.65);box-shadow:0 2px 6px 0 rgba(16,16,16,.65);color:#333;white-space:nowrap;display:none}#message.error{background:#EB313C;color:#fff}#message.warning{background:#E9A86E}#message.notice{background:#93CAF4}#message.info{background:#97DD8A}@media only screen and (max-width:480px),only screen and (max-width:720px) and (min-device-pixel-ratio:1.5),only screen and (max-width:720px) and (-webkit-min-device-pixel-ratio:1.5){.centerpanel{left:0;margin-left:0;width:100%}.logopanel{height:40px}.d3dlogo{top:0;height:40px;max-width:216px;background-image:url(../img/logo/logo_smallest.png)}.drawareacontainer{height:70%}.bottompanel{height:10%}.bottompanel .manipulationBtns{margin:2px -27;right:22%;width:38%}.leftpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:left .3s ease-out;transition:left .3s ease-out}.hideleft{left:-101px}.shadowright{-webkit-box-shadow:2px 0 4px rgba(42,42,41,.6);box-shadow:2px 0 4px rgba(42,42,41,.6)}.btnNew{margin:5% 5% 1%;width:90%}.btnSave{margin-left:9%;width:75%}.btnOops{margin-left:6%;width:71%}.rightpanel{width:100px;background-color:#fff;z-index:50;-webkit-transition:right .3s ease-out;transition:right .3s ease-out}.hideright{right:-101px}.shadowleft{-webkit-box-shadow:-2px 0 4px rgba(42,42,41,.6);box-shadow:-2px 0 4px rgba(42,42,41,.6)}.btnPrint{margin:1% 5% 5%;width:90%}.btnStop{margin:5% 6% 1% 5%;width:70%}.sidebutton{display:block;position:absolute;top:40px;width:25px;height:38px;border:1px solid #808;background:url(../img/arrows.png) no-repeat;background-color:#eee;cursor:pointer}.sidebutton:active{background-color:#aaa}.leftpanel .sidebutton{right:-27px;background-position:0 0}.rightpanel .sidebutton{left:-27px;background-position:-25px 0}.sidebuttonin:active{background-color:#888}.leftpanel .sidebuttonin{background-color:#ccc;background-position:-25px 0}.rightpanel .sidebuttonin{background-color:#ccc;background-position:0 0}#contentOverlay{z-index:200}#contentOverlay #settings{width:87%;height:82%;margin:6% 4%}#contentOverlay #settings>.right{width:14%}}@media only screen and (min-width:1000px) and (max-device-pixel-ratio:1.5),only screen and (min-width:1000px) and (-webkit-max-device-pixel-ratio:1.5){}@media only screen and (orientation:portrait){#landscape{display:none}#portrait{display:block}.vertImage{margin:0;padding:0;max-width:100%;height:auto;width:auto}} \ No newline at end of file diff --git a/www/favicon.ico b/www/favicon.ico old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnDown.png b/www/img/buttons/btnDown.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnNew.png b/www/img/buttons/btnNew.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnOk.png b/www/img/buttons/btnOk.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnOops.png b/www/img/buttons/btnOops.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnPrint.png b/www/img/buttons/btnPrint.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnSave.png b/www/img/buttons/btnSave.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnStop.png b/www/img/buttons/btnStop.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnTurnLeft.png b/www/img/buttons/btnTurnLeft.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnUp.png b/www/img/buttons/btnUp.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnZoomIn.png b/www/img/buttons/btnZoomIn.png old mode 100755 new mode 100644 diff --git a/www/img/buttons/btnZoomOut.png b/www/img/buttons/btnZoomOut.png old mode 100755 new mode 100644 diff --git a/www/index.html b/www/index.html old mode 100755 new mode 100644 index fee9366..84c64a7 --- a/www/index.html +++ b/www/index.html @@ -11,9 +11,10 @@ + + -
@@ -58,7 +59,7 @@ - + @@ -152,4 +153,4 @@ --> -