clair/vendor/github.com/google/cayley/static/js/cayley_write.js
2015-11-13 14:11:28 -05:00

159 lines
4.5 KiB
JavaScript

// Copyright 2014 The Cayley Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
$(function() {
var alertFail = function(text) {
$("#alertBox").text(text)
$("#alertBox").addClass("alert-danger").fadeIn(300).delay(2000).fadeOut(300).queue(function(){ $(this).removeClass("alert-danger")});
}
var alertSucceed = function(text) {
$("#alertBox").text(text)
$("#alertBox").addClass("alert-success").fadeIn(300).delay(2000).fadeOut(300).queue(function(){ $(this).removeClass("alert-success")});
}
var checkQuad = function(t) {
if (t.subject == "") {
alertFail("Need a subject")
return false
}
if (t.predicate == "") {
alertFail("Need a predicate")
return false
}
if (t.object == "") {
alertFail("Need an object")
return false
}
return true
}
$("#sbWrite").addClass("active");
$("#add_quad").click(function() {
var quad = {
subject: $("#subject").val(),
predicate: $("#predicate").val(),
object: $("#object").val(),
label: $("#label").val()
}
if (!checkQuad(quad)) {
return
}
$.post("/api/v1/write", JSON.stringify([quad]))
.done(function(return_data){
alertSucceed("Wrote a quad!")
})
.fail(function(jqxhr) {
var data = $.parseJSON(jqxhr.responseText)
alertFail(data.error)
})
})
$("#delete_quad").click(function() {
var quad = {
subject: $("#rsubject").val(),
predicate: $("#rpredicate").val(),
object: $("#robject").val(),
label: $("#rlabel").val()
}
if (!checkQuad(quad)) {
return
}
$.post("/api/v1/delete", JSON.stringify([quad]))
.done(function(return_data){
alertSucceed("Deleted a quad!")
})
.fail(function(jqxhr) {
var data = $.parseJSON(jqxhr.responseText)
alertFail(data.error)
})
})
var upload = null
var uploadProgress = function(event) {
if (event.lengthComputable) {
var percentComplete = Math.round(event.loaded * 100 / event.total);
$("#alertBox").text("Uploaded " + percentComplete.toString() + "%")
} else {
$("#alertBox").text("Uploading...")
}
}
var uploadComplete = function(event) {
stopAndReset();
var data = $.parseJSON(upload.responseText)
$("#alertBox").text("Upload complete! " + data.result);
$("#alertBox").removeClass("alert-info").addClass("alert-success")
.delay(2000).fadeOut(300)
.queue(function () {
$("#write_file").fadeIn(30);
$("#alertBox").removeClass("alert-success");
})
upload = null
}
var uploadCanceled = function(event) {
upload = null
stopAndReset();
$("#alertBox").text("Upload canceled!")
$("#alertBox").removeClass("alert-info").addClass("alert-danger")
.delay(2000).fadeOut(300)
.queue(function () {
$("#write_file").fadeIn(30);
$("#alertBox").removeClass("alert-danger");
})
}
var uploadFailed = function(event) {
upload = null
stopAndReset();
$("#alertBox").text("Upload failed!")
$("#alertBox").removeClass("alert-info").addClass("alert-danger")
.delay(2000).fadeOut(300)
.queue(function () {
$("#write_file").fadeIn(30);
$("#alertBox").removeClass("alert-danger");
})
}
$("#write_file").click(function() {
try {
animate();
var fd = new FormData()
fd.append("NQuadFile", document.getElementById("nquad_file").files[0])
var xhr = new XMLHttpRequest()
upload = xhr
$("#write_file").fadeOut(30);
$("#alertBox").addClass("alert-info").fadeIn(300);
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "/api/v1/write/file/nquad");
xhr.send(fd);
} catch(err) {
$("#alertBox").removeClass("alert-info");
stopAndReset();
alertFail(err)
$("#write_file").fadeIn(30);
}
})
});