github.com/cayleygraph/cayley@v0.7.7/static/js/cayley_write.js (about)

     1  // Copyright 2014 The Cayley Authors. All rights reserved.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  $(function() {
    16  
    17  
    18    var alertFail = function(text) {
    19      $("#alertBox").text(text)
    20      $("#alertBox").addClass("alert-danger").fadeIn(300).delay(2000).fadeOut(300).queue(function(){ $(this).removeClass("alert-danger")});
    21    }
    22  
    23    var alertSucceed = function(text) {
    24      $("#alertBox").text(text)
    25      $("#alertBox").addClass("alert-success").fadeIn(300).delay(2000).fadeOut(300).queue(function(){ $(this).removeClass("alert-success")});
    26    }
    27  
    28    var checkQuad = function(t) {
    29      if (t.subject == "") {
    30        alertFail("Need a subject")
    31        return false
    32      }
    33      if (t.predicate == "") {
    34        alertFail("Need a predicate")
    35        return false
    36      }
    37      if (t.object == "") {
    38        alertFail("Need an object")
    39        return false
    40      }
    41      return true
    42    }
    43  
    44    $("#sbWrite").addClass("active");
    45  
    46    $("#add_quad").click(function() {
    47      var quad = {
    48        subject: $("#subject").val(),
    49        predicate: $("#predicate").val(),
    50        object: $("#object").val(),
    51        label: $("#label").val()
    52      }
    53      if (!checkQuad(quad)) {
    54        return
    55      }
    56      $.post("/api/v1/write", JSON.stringify([quad]))
    57        .done(function(return_data){
    58          alertSucceed("Wrote a quad!")
    59        })
    60        .fail(function(jqxhr) {
    61          var data = $.parseJSON(jqxhr.responseText)
    62          alertFail(data.error)
    63        })
    64    })
    65  
    66    $("#delete_quad").click(function() {
    67      var quad = {
    68        subject: $("#rsubject").val(),
    69        predicate: $("#rpredicate").val(),
    70        object: $("#robject").val(),
    71        label: $("#rlabel").val()
    72      }
    73      if (!checkQuad(quad)) {
    74        return
    75      }
    76      $.post("/api/v1/delete", JSON.stringify([quad]))
    77        .done(function(return_data){
    78          alertSucceed("Deleted a quad!")
    79        })
    80        .fail(function(jqxhr) {
    81          var data = $.parseJSON(jqxhr.responseText)
    82          alertFail(data.error)
    83        })
    84    })
    85  
    86    var upload = null
    87  
    88    var uploadProgress = function(event) {
    89      if (event.lengthComputable) {
    90        var percentComplete = Math.round(event.loaded * 100 / event.total);
    91        $("#alertBox").text("Uploaded  " + percentComplete.toString() + "%")
    92      } else {
    93        $("#alertBox").text("Uploading...")
    94      }
    95    }
    96  
    97    var uploadComplete = function(event) {
    98      stopAndReset();
    99      var data = $.parseJSON(upload.responseText)
   100      $("#alertBox").text("Upload complete! " + data.result);
   101      $("#alertBox").removeClass("alert-info").addClass("alert-success")
   102      .delay(2000).fadeOut(300)
   103      .queue(function () {
   104        $("#write_file").fadeIn(30);
   105        $("#alertBox").removeClass("alert-success");
   106      })
   107      upload = null
   108    }
   109  
   110    var uploadCanceled = function(event) {
   111      upload = null
   112      stopAndReset();
   113      $("#alertBox").text("Upload canceled!")
   114      $("#alertBox").removeClass("alert-info").addClass("alert-danger")
   115      .delay(2000).fadeOut(300)
   116      .queue(function () {
   117        $("#write_file").fadeIn(30);
   118        $("#alertBox").removeClass("alert-danger");
   119      })
   120    }
   121  
   122    var uploadFailed = function(event) {
   123      upload = null
   124      stopAndReset();
   125      $("#alertBox").text("Upload failed!")
   126      $("#alertBox").removeClass("alert-info").addClass("alert-danger")
   127      .delay(2000).fadeOut(300)
   128      .queue(function () {
   129        $("#write_file").fadeIn(30);
   130        $("#alertBox").removeClass("alert-danger");
   131      })
   132    }
   133  
   134    $("#write_file").click(function() {
   135      try {
   136        animate();
   137        var fd = new FormData()
   138        fd.append("NQuadFile", document.getElementById("nquad_file").files[0])
   139        var xhr = new XMLHttpRequest()
   140        upload = xhr
   141        $("#write_file").fadeOut(30);
   142        $("#alertBox").addClass("alert-info").fadeIn(300);
   143        xhr.upload.addEventListener("progress", uploadProgress, false);
   144        xhr.addEventListener("load", uploadComplete, false);
   145        xhr.addEventListener("error", uploadFailed, false);
   146        xhr.addEventListener("abort", uploadCanceled, false);
   147        xhr.open("POST", "/api/v1/write/file/nquad");
   148        xhr.send(fd);
   149  
   150      } catch(err) {
   151        $("#alertBox").removeClass("alert-info");
   152        stopAndReset();
   153        alertFail(err)
   154        $("#write_file").fadeIn(30);
   155      }
   156    })
   157  
   158  });