Trying to add PapaParse for importing CSV files of words, but for some reason it's not recognizing the Papa object.
This commit is contained in:
parent
f48ca733f9
commit
f4f9f85a30
|
@ -0,0 +1,20 @@
|
||||||
|
<div class="settingsCol">
|
||||||
|
<h2>Import</h2>
|
||||||
|
<div id="importOptions">
|
||||||
|
<label>
|
||||||
|
<span>Word List</span>
|
||||||
|
</label>
|
||||||
|
<p style="font-size:12px;">This process imports words in a CSV format to the currently loaded dictionary. <small>(You can save an Excel file as a CSV)</small></p>
|
||||||
|
<p style="font-size:12px;">The CSV file must have a header line in this order: word,pronunciation,part of speech,equivalent,explanation. Your words must be formatted in the appropriate order.</p>
|
||||||
|
<p style="font-size:12px;">Make sure the parts of speech for each word correspond to your dictionary's parts of speech or else it will be lost if you edit the word. If a part of speech is left blank, you can find the blanks using the "Blank" option in the Filter.</p>
|
||||||
|
<p style="font-size:12px;">At a minimum, all of your words <em>must</em> have the "word" field <em>and</em> either the "equivalent" or "explanation" field filled out in the CSV file.</p>
|
||||||
|
<input type="file" id="importWordsCSV" />
|
||||||
|
<button type="button" onclick="ImportWords(); return false;">Import Words</button>
|
||||||
|
<label>
|
||||||
|
<span>Full Dictionary</span>
|
||||||
|
<p style="font-size:12px;">This process imports a full dictionary previously exported from Lexiconga in a .dict format.</p>
|
||||||
|
<input type="file" id="importFile" />
|
||||||
|
<button type="button" onclick="ImportDictionary(); return false;">Import Dictionary</button>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -188,4 +188,5 @@ I hope you enjoy Lexiconga and that it helps you build some awesome languages.
|
||||||
## Libraries Used
|
## Libraries Used
|
||||||
* [Marked.js](https://github.com/chjj/marked) by Christopher Jeffrey (JJ) (a.k.a. chjj)
|
* [Marked.js](https://github.com/chjj/marked) by Christopher Jeffrey (JJ) (a.k.a. chjj)
|
||||||
* [Defiant.js](http://defiantjs.com) by Hakan Bilgin (a.k.a. hbi99)
|
* [Defiant.js](http://defiantjs.com) by Hakan Bilgin (a.k.a. hbi99)
|
||||||
|
* [Papa Parse](http://papaparse.com/) by Matt Holt (a.k.a. mholt)
|
||||||
* [removeDiacritics.js](http://stackoverflow.com/a/18391901/3508346) by [rdllopes](http://meta.stackoverflow.com/users/1879686/rdllopes)
|
* [removeDiacritics.js](http://stackoverflow.com/a/18391901/3508346) by [rdllopes](http://meta.stackoverflow.com/users/1879686/rdllopes)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
word,pronunciation,part of speech,equivalent,explanation
|
||||||
|
"test","[tehst]","noun","an example, per se!","no explanation required."
|
||||||
|
"test","[tehst]","verb","to test, i.e. to try to see if something works","no explanation required."
|
||||||
|
"tested","[tehst-ehd]","adjective","of or relating to an example","no explanation required."
|
|
|
@ -256,9 +256,7 @@ if ($is_viewing) {
|
||||||
<label><button type="button" onclick="CreateNewDictionary()" style="cursor:pointer;">Create a New Dictionary</button></label>
|
<label><button type="button" onclick="CreateNewDictionary()" style="cursor:pointer;">Create a New Dictionary</button></label>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<label>
|
<label>
|
||||||
<span>Import Dictionary</span>
|
<button type="button" onclick="ShowInfo('importForm')">Import...</button>
|
||||||
<input type="file" id="importFile" />
|
|
||||||
<button type="button" onclick="ImportDictionary(); return false;">Import</button>
|
|
||||||
</label>
|
</label>
|
||||||
<?php if ($current_user > 0) { //If logged in, show the log out button. ?>
|
<?php if ($current_user > 0) { //If logged in, show the log out button. ?>
|
||||||
<label><button type="button" onclick="DeleteCurrentDictionary()" style="cursor:pointer;">Delete Current Dictionary</button></label>
|
<label><button type="button" onclick="DeleteCurrentDictionary()" style="cursor:pointer;">Delete Current Dictionary</button></label>
|
||||||
|
@ -353,6 +351,8 @@ if ($is_viewing) {
|
||||||
<script src="js/marked.js"></script>
|
<script src="js/marked.js"></script>
|
||||||
<!-- JSON Search -->
|
<!-- JSON Search -->
|
||||||
<script src="js/defiant.js"></script>
|
<script src="js/defiant.js"></script>
|
||||||
|
<!-- CSV Parser -->
|
||||||
|
<script src="js/papaparse.js"></script>
|
||||||
<!-- Diacritics Removal for Exports -->
|
<!-- Diacritics Removal for Exports -->
|
||||||
<script src="js/removeDiacritics.js"></script>
|
<script src="js/removeDiacritics.js"></script>
|
||||||
<!-- Helper Functions -->
|
<!-- Helper Functions -->
|
||||||
|
@ -367,7 +367,7 @@ if ($is_viewing) {
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php if ($_GET['adminoverride'] != "noadsortracking") { include_once("php/google/analytics.php"); } ?>
|
<?php if ($_GET['adminoverride'] != "noadsortracking") { include_once("php/google/analytics.php"); } ?>
|
||||||
<script>
|
<script>
|
||||||
var aboutText = termsText = privacyText = loginForm = forgotForm = "Loading...";
|
var aboutText = termsText = privacyText = loginForm = forgotForm = importForm = "Loading...";
|
||||||
<?php if ($is_viewing) { ?>
|
<?php if ($is_viewing) { ?>
|
||||||
window.onload = function () {
|
window.onload = function () {
|
||||||
ShowPublicDictionary();
|
ShowPublicDictionary();
|
||||||
|
@ -378,6 +378,7 @@ if ($is_viewing) {
|
||||||
GetTextFile("PRIVACY.md", "privacyText", true);
|
GetTextFile("PRIVACY.md", "privacyText", true);
|
||||||
GetTextFile("LOGIN.form", "loginForm", false);
|
GetTextFile("LOGIN.form", "loginForm", false);
|
||||||
GetTextFile("FORGOT.form", "forgotForm", false);
|
GetTextFile("FORGOT.form", "forgotForm", false);
|
||||||
|
GetTextFile("IMPORT.form", "importForm", false);
|
||||||
}
|
}
|
||||||
<?php } else { ?>
|
<?php } else { ?>
|
||||||
ready(function() {
|
ready(function() {
|
||||||
|
|
|
@ -670,6 +670,40 @@ function ImportDictionary() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ImportWords() {
|
||||||
|
if (currentDictionary.externalID > 0 || confirm("This will add words in a correctly formatted CSV file to your currently loaded dictionary. Do you still want to import?")) {
|
||||||
|
if (!window.FileReader) {
|
||||||
|
alert('Your browser is not supported');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.getElementById("importWordsCSV").files.length > 0) {
|
||||||
|
var file = document.getElementById("importWordsCSV").files[0];
|
||||||
|
|
||||||
|
var resultsArea = document.getElementById("importOptions");
|
||||||
|
resultsArea.innerHTML = "";
|
||||||
|
|
||||||
|
Papa.parse(file, {
|
||||||
|
header: true,
|
||||||
|
step: function(row, parser) {
|
||||||
|
if (row.errors.length == 0) {
|
||||||
|
currentDictionary.words.push({name: row.data["word"], pronunciation: row.data["pronunciation"], partOfSpeech: row.data["part of speech"], simpleDefinition: row.data["equivalent"], longDefinition: row.data["explanation"], wordId: currentDictionary.nextWordId++});
|
||||||
|
resultsArea.innerHTML += "<p>Imported \"" + row.data["word"] + " successfully</p>";
|
||||||
|
} else {
|
||||||
|
resultsArea.innerHTML += "<p>Error on row " + row.error.row + ": " + row.error.message + "</p>";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
complete: function(results) {
|
||||||
|
SaveAndUpdateDictionary();
|
||||||
|
resultsArea.innerHTML += "<p>The file has finished importing.</p>";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alert("You must add a file to import.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function WordIndex(word) {
|
function WordIndex(word) {
|
||||||
for (var i = 0; i < currentDictionary.words.length; i++)
|
for (var i = 0; i < currentDictionary.words.length; i++)
|
||||||
{
|
{
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
1
js/ui.js
1
js/ui.js
|
@ -8,6 +8,7 @@ function Initialize() {
|
||||||
GetTextFile("PRIVACY.md", "privacyText", true);
|
GetTextFile("PRIVACY.md", "privacyText", true);
|
||||||
GetTextFile("LOGIN.form", "loginForm", false);
|
GetTextFile("LOGIN.form", "loginForm", false);
|
||||||
GetTextFile("FORGOT.form", "forgotForm", false);
|
GetTextFile("FORGOT.form", "forgotForm", false);
|
||||||
|
GetTextFile("IMPORT.form", "importForm", false);
|
||||||
|
|
||||||
SetKeyboardShortcuts();
|
SetKeyboardShortcuts();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue