Browse Source

bohboh committing two years ago written code

encrypt 5 years ago
parent
commit
a232ee0a57
3 changed files with 100 additions and 13 deletions
  1. 3 1
      client/index.html
  2. 36 12
      client/main.js
  3. 61 0
      client/style.css

+ 3 - 1
client/index.html

@@ -3,10 +3,11 @@
     <script src="vendor/zepto.min.js"></script>
     <script src="crypto.js"></script>
     <script src="main.js"></script>
+    <link rel="stylesheet" type="text/css" href="./style.css" />
   </head>
   <body>
     <div id="create-room">
-      <input type="button" value="create room">
+      <input type="button" value="Create Room">
     </div>
     <div id="room">
       <div id="link">
@@ -16,6 +17,7 @@
 	  <input id="file-selector" type="file" name="file"/>
 	  <input id="woot" type="button" name="upload" value="upload"/>
 	</form>
+	<progress id="progress-bar"></progress>
       </div>
       <div id="file-list">
 	<ul>

+ 36 - 12
client/main.js

@@ -28,26 +28,30 @@ var Uploader = {
 	})
     },
 
-    uploadFile: function(name, data){
+    uploadFile: function(name, data, progress, success){
 	var formData = new FormData();
 	formData.append("file", data, name);
 	$.ajax({
 	    url: '/room/'+this.roomId,
-            data: formData,	    
+            data: formData,
+	    success: success,
             cache: false,
             processData: false,
             contentType: false,
             xhr: function () {
                 var xhr = new XMLHttpRequest()
-                //xhr.upload.addEventListener('progress', progress, false)
+		xhr.upload.addEventListener('progress', progress, false)
                 return xhr
             },
             type: 'POST'
 	});
     },
     
-    deleteFile: function() {
-	console.log('NOPE');
+    deleteFile: function(id) {
+	$.ajax({
+	    type: 'DELETE',
+	    url: '/room/'+this.roomId+'/'+id
+	})
     },
 }
 
@@ -70,10 +74,13 @@ var CryptoUploader = {
 	var self = this;
 	fileReader.onload = function(e) {
 	    this.data = fileReader.result;
+	    $("#progress-bar").show();
 	    CryptoUtils.encrypt(this.data)
-		.then(function(encrypted){
-		    Uploader.uploadFile(file.name, encrypted);
-		    self.showRoomContent();
+	    	.then(function(encrypted){
+		    Uploader.uploadFile(file.name, encrypted, self.progress, function(e){
+			self.showRoomContent();;
+			$("#progress-bar").hide();
+		    });
 		}).catch(function(err){
 		    console.error(err);
 		});
@@ -81,6 +88,14 @@ var CryptoUploader = {
 	fileReader.readAsArrayBuffer(file);
     },
 
+    progress: function(e) {
+	if(e.lengthComputable) {
+	    $("#progress-bar")
+		.prop("value", e.loaded)
+		.prop("max", e.total);
+	}
+    },
+    
     downloadFile: function(fileName) {
 	Uploader.getFile(fileName, function(e){
 	    if(this.status == 200) {
@@ -106,12 +121,20 @@ var CryptoUploader = {
 	$("#file-list > ul").empty();
 	Uploader.getRoom(function(data){
 	    for(let f of data.entries()) {
-		$("<li><a>"+f[1]+"</a></li>")
-		    .appendTo("#file-list > ul")
-		    .on('click', function(e){CryptoUploader.downloadFile(e.target.text)});
+		var e = $("<li></li>").appendTo("#file-list > ul");
+		$("<a>"+f[1]+"</a>")
+		    .on('click', function(e){CryptoUploader.downloadFile(e.target.text)})
+		    .appendTo(e);
+		$("<span>X</span>")
+		    .on('click', function(e){
+			Uploader.deleteFile(e.target.parentNode.querySelector("a").text);
+			CryptoUploader.showRoomContent();
+		    })
+		    .appendTo(e);
+		  
 	    }
 	})
-    }
+    },
 }
 
 $(function(){
@@ -122,6 +145,7 @@ $(function(){
 	var file = params.shift();
 	$("#create-room").hide();
 	$("#room").show();
+	$("#progress-bar").hide();
 	Uploader.roomId = roomId;
 	CryptoUtils.initialize(key).then(function(){
 	    $("#woot").on('click', function(){

+ 61 - 0
client/style.css

@@ -0,0 +1,61 @@
+body {
+    background: #232323;
+    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;b3
+}
+
+#woot {
+    background-color: #ec567c;
+    float: right;
+    height: 32px;
+    margin: 0;
+    padding: 5px 20px;
+    border: 0;
+    border-radius: 3px;
+    color: #fff;
+}
+
+#room {
+    margin-top: 30px;
+    color: #ccc;
+    width: 50%;
+    margin: 0 auto;
+    margin-top: 30px;
+}
+
+#upload {
+    text-align: center;
+}
+
+#create-room {
+    text-align: center;
+}
+
+#create-room > input {
+    background-color: #EF7896;
+    border: 4px dashed #ccc;
+    border-radius: 10px;
+    font-size: 60px;
+    margin-top: 20%;
+    color: #ccc;
+    padding: 20px;
+}
+
+#file-list > ul > li {
+    position: relative;
+    display: block;
+    padding: 10px 15px;
+    margin-bottom: -1px;
+    background-color: #363636;
+    border: 1px solid #bbb;
+}
+
+#file-list > ul > li:first-child {
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+}
+
+#file-list > ul > li:last-child {
+    margin-bottom: 0;
+    border-bottom-right-radius: 4px;
+    border-bottom-left-radius: 4px;
+}