From 2c21a34d0790ef94de226afe0c3d03e790a45ccd Mon Sep 17 00:00:00 2001 From: or-else Date: Thu, 31 May 2018 21:41:06 -0700 Subject: [PATCH] adding large file uploads --- css/base.css | 32 ++++++++++++++++++++++++++++++++ img/logo32x32a.png | Bin 1711 -> 1567 bytes index.html | 43 ++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 72 insertions(+), 3 deletions(-) diff --git a/css/base.css b/css/base.css index 9bcf7e6c..e8df2bc8 100644 --- a/css/base.css +++ b/css/base.css @@ -1701,3 +1701,35 @@ ul.tabbar li.active > a:after { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } + +/* File upload styles */ +.upload-container { + width: 2rem; + height: 2rem; + padding: 0; + margin: 0; + position: relative; + background-color: #CCF; + border-radius: 50%; +} +.upload-container .half { + position: absolute; + top: 0; left: 0; width: 1rem; height: 2rem; + border-radius: 1rem 0 0 1rem; + transform-origin: 1rem 1rem; +} +.upload-container .half.active { + background-color: #66F; +} +.upload-container .half.clip { + background-color: #CCF; +} +.upload-container .inner { + font-size: 80%; + position: absolute; + top: 0.25rem; left: 0.25rem; right: 0.25rem; bottom: 0.25rem; + text-align: center; + line-height: 1.5rem; + border-radius: 50%; + background-color: white; +} diff --git a/img/logo32x32a.png b/img/logo32x32a.png index 0db3ef6b73c1b9159207c3a228b7e23b658b07c7..cc8d269ea108093bd0a17a6b7200990061134b69 100644 GIT binary patch delta 1476 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 MAX_ATTACHMENT_SIZE) { imageFileScaledToBase64(file, MAX_IMAGE_SIZE, MAX_IMAGE_SIZE, false, onImageSuccess, onError); @@ -691,10 +695,43 @@ return avatar; } } - - /* END Lettertile */ + /* File uload spinner with a cancel inside */ + class FileUploadProgress extends React.PureComponent { + constructor(props) { + super(props); + + this.state = { + progress: 0 + }; + } + + render() { + var halfclip, progress1, progress2; + if (this.state.progress < 0.5) { + halfclip = {display: "block"}; + progress1 = {transform: "rotate(" + (this.state.progress*360) + "deg)"}; + progress2 = {display: "none"}; + } else { + halfclip = {display: "none"}; + progress1 = {transform: "rotate(180deg)"}; + progress2 = {display: "block", transform: "rotate(" + (180 + (this.state.progress-0.5)*360) + "deg)"}; + } + return ( +
+
+
+
+
{this.props.onCancel ? + : + null} +
+
+ ); + } + } + /* BEGIN In-place text editor. Shows text with an icon * which toggles it into an input field */ var InPlaceEdit = React.createClass({