Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 23 additions & 6 deletions standalone/export.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,29 @@
<script src="./lib/ext/jquery.load.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body -->
<body -->

<!-- h1>Export options<h1 -->
<button type="button" class="btn btn-primary" onclick="javascript:exportPNG();" style="width: 100px;">PNG</button>
<button type="button" class="btn btn-primary" onclick="javascript:exportSVG();" style="width: 100px;">SVG</button>
<button type="button" class="btn btn-primary" onclick="javascript:exportLATEX();" style="width: 100px;">LaTeX</button>
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<a class="nav-item nav-link active" id="nav-png-tab" data-toggle="tab" href="#nav-png" role="tab" aria-controls="nav-png" aria-selected="true" onclick="javascript:exportPNG();">PNG</a>

<a class="nav-item nav-link" id="nav-svg-tab" data-toggle="tab" href="#nav-svg" role="tab" aria-controls="nav-svg" aria-selected="false" onclick="javascript:exportSVG();">SVG</a>

<a class="nav-item nav-link" id="nav-latex-tab" data-toggle="tab" href="#nav-latex" role="tab" aria-controls="nav-latex" aria-selected="false" onclick="javascript:exportLATEX();">LaTeX</a>
</div>
</nav>
&nbsp;
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane text-center fade show active" id="nav-png" role="tabpanel" aria-labelledby="nav-png-tab">
<button type="button" class="btn btn-primary" onclick="javascript:downloadPNG();">Download</button>
</div>
<div class="tab-pane fade text-center" id="nav-svg" role="tabpanel" aria-labelledby="nav-svg-tab">
<button type="button" class="btn btn-primary" onclick="javascript:downloadSVG();">Download</button>
</div>
<div class="tab-pane fade" id="nav-latex" role="tabpanel" aria-labelledby="nav-latex-tab">
</div>
</div>
</br>
<div class="form-group">
<label for="comment"></label>
Expand All @@ -25,5 +42,5 @@
</div>
</div>

<!-- /body>
</html -->
<!-- /body>-->
</html>
22 changes: 12 additions & 10 deletions standalone/lib/annotator.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ function main() {
pathRoot + 'ext/l20n.js',
pathRoot + 'ext/canvas2svg.js',
pathRoot + 'ext/conllu/conllu.js', // CoNLL-U parser from https://github.com/FrancessFractal/conllu
pathRoot + 'ext/FileSaver.js',
pathRoot + 'ext/FileSaver.min.js',

// native project code
pathRoot + 'CG2conllu.js',
Expand Down Expand Up @@ -316,7 +318,7 @@ function showDataIndiv() {
}
if(AVAILABLESENTENCES != 0) {
document.getElementById('currentsen').value = (CURRENTSENTENCE+1);
} else {
} else {
document.getElementById('currentsen').value = 0;
}
document.getElementById('totalsen').innerHTML = AVAILABLESENTENCES;
Expand Down Expand Up @@ -432,7 +434,7 @@ function exportCorpora() {
if (SERVER_RUNNING) {
console.log('exportCorpora');
downloadCorpus();
} else {
} else {
var finalcontent = getContents();

var link = document.createElement('a');
Expand Down Expand Up @@ -468,16 +470,16 @@ function drawTree() {
1. removes the previous tree, if there's one
2. takes the data from the textarea
3. */

ISEDITING = false;

// TODO: update the sentence
try {cy.destroy()} catch (err) {}; // remove the previous tree, if there is one

var content = $("#indata").val(); // TODO: rename
var format = detectFormat(content);

// -- to be moved out--
// -- to be moved out--
// content = content.replace(/ +\n/, '\n'); // remove extra spaces at the end of lines. #89
// $("#indata").val(content); // TODO: what is this line for?

Expand Down Expand Up @@ -505,13 +507,13 @@ function drawTree() {
var newContent = cleanConllu(content); // TODO: move this one inside of this func

// If there are >1 CoNLL-U format sentences is in the input, treat them as such
// conlluMultiInput(newContent); // TODO: move this one also inside of this func, and make a separate func for calling them all at the same time
// conlluMultiInput(newContent); // TODO: move this one also inside of this func, and make a separate func for calling them all at the same time

if(newContent != content) {
content = newContent;
$("#indata").val(content);
}
// -- to be moved out --
// -- to be moved out --

conlluDraw(content);
showProgress();
Expand Down Expand Up @@ -557,7 +559,7 @@ function detectFormat(content) {
// console.log('[0] detectFormat() WARNING EMPTY CONTENT');
return "Unknown";
}

var firstWord = content.replace(/\n/g, " ").split(" ")[0];

//console.log('[0] detectFormat() ' + content.length + " | " + FORMAT);
Expand Down Expand Up @@ -677,12 +679,12 @@ function getLocalStorageMaxSize(error) {
minimalFound = 0,
error = error || 25e4;

// fill a string with 1024 symbols / bytes
// fill a string with 1024 symbols / bytes
while (i--) string1024 += 1e16;

i = max / 1024;

// fill a string with 'max' amount of symbols / bytes
// fill a string with 'max' amount of symbols / bytes
while (i--) string += string1024;

i = max;
Expand Down
185 changes: 185 additions & 0 deletions standalone/lib/ext/FileSaver.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
/* FileSaver.js
* A saveAs() FileSaver implementation.
* 1.3.4
* 2018-01-12 13:14:0
*
* By Eli Grey, http://eligrey.com
* License: MIT
* See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
*/

/*global self */
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */

/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */

var saveAs = saveAs || (function(view) {
"use strict";
// IE <10 is explicitly unsupported
if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
return;
}
var
doc = view.document
// only get URL when necessary in case Blob.js hasn't overridden it yet
, get_URL = function() {
return view.URL || view.webkitURL || view;
}
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
, can_use_save_link = "download" in save_link
, click = function(node) {
var event = new MouseEvent("click");
node.dispatchEvent(event);
}
, is_safari = /constructor/i.test(view.HTMLElement) || view.safari
, is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
, throw_outside = function(ex) {
(view.setImmediate || view.setTimeout)(function() {
throw ex;
}, 0);
}
, force_saveable_type = "application/octet-stream"
// the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
, arbitrary_revoke_timeout = 1000 * 40 // in ms
, revoke = function(file) {
var revoker = function() {
if (typeof file === "string") { // file is an object URL
get_URL().revokeObjectURL(file);
} else { // file is a File
file.remove();
}
};
setTimeout(revoker, arbitrary_revoke_timeout);
}
, dispatch = function(filesaver, event_types, event) {
event_types = [].concat(event_types);
var i = event_types.length;
while (i--) {
var listener = filesaver["on" + event_types[i]];
if (typeof listener === "function") {
try {
listener.call(filesaver, event || filesaver);
} catch (ex) {
throw_outside(ex);
}
}
}
}
, auto_bom = function(blob) {
// prepend BOM for UTF-8 XML and text/* types (including HTML)
// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
}
return blob;
}
, FileSaver = function(blob, name, no_auto_bom) {
if (!no_auto_bom) {
blob = auto_bom(blob);
}
// First try a.download, then web filesystem, then object URLs
var
filesaver = this
, type = blob.type
, force = type === force_saveable_type
, object_url
, dispatch_all = function() {
dispatch(filesaver, "writestart progress write writeend".split(" "));
}
// on any filesys errors revert to saving with object URLs
, fs_error = function() {
if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
// Safari doesn't allow downloading of blob urls
var reader = new FileReader();
reader.onloadend = function() {
var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
var popup = view.open(url, '_blank');
if(!popup) view.location.href = url;
url=undefined; // release reference before dispatching
filesaver.readyState = filesaver.DONE;
dispatch_all();
};
reader.readAsDataURL(blob);
filesaver.readyState = filesaver.INIT;
return;
}
// don't create more object URLs than needed
if (!object_url) {
object_url = get_URL().createObjectURL(blob);
}
if (force) {
view.location.href = object_url;
} else {
var opened = view.open(object_url, "_blank");
if (!opened) {
// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
view.location.href = object_url;
}
}
filesaver.readyState = filesaver.DONE;
dispatch_all();
revoke(object_url);
}
;
filesaver.readyState = filesaver.INIT;

if (can_use_save_link) {
object_url = get_URL().createObjectURL(blob);
setTimeout(function() {
save_link.href = object_url;
save_link.download = name;
click(save_link);
dispatch_all();
revoke(object_url);
filesaver.readyState = filesaver.DONE;
});
return;
}

fs_error();
}
, FS_proto = FileSaver.prototype
, saveAs = function(blob, name, no_auto_bom) {
return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
}
;
// IE 10+ (native saveAs)
if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
return function(blob, name, no_auto_bom) {
name = name || blob.name || "download";

if (!no_auto_bom) {
blob = auto_bom(blob);
}
return navigator.msSaveOrOpenBlob(blob, name);
};
}

FS_proto.abort = function(){};
FS_proto.readyState = FS_proto.INIT = 0;
FS_proto.WRITING = 1;
FS_proto.DONE = 2;

FS_proto.error =
FS_proto.onwritestart =
FS_proto.onprogress =
FS_proto.onwrite =
FS_proto.onabort =
FS_proto.onerror =
FS_proto.onwriteend =
null;

return saveAs;
}(
typeof self !== "undefined" && self
|| typeof window !== "undefined" && window
|| this
));

if (typeof module !== "undefined" && module.exports) {
module.exports.saveAs = saveAs;
} else if ((typeof define !== "undefined" && define !== null) && (define.amd !== null)) {
define("FileSaver.js", function() {
return saveAs;
});
}
2 changes: 2 additions & 0 deletions standalone/lib/ext/FileSaver.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading