Merge remote-tracking branch 'blakko/internationalization' - close #755
Conflicts: extensions/freebase/module/scripts/dialogs/schema-alignment/schema-alignment-dialog.html main/webapp/modules/core/index.vt main/webapp/modules/core/project.vt main/webapp/modules/core/scripts/project/browsing-engine.js main/webapp/modules/core/scripts/project/history-panel.html
This commit is contained in:
commit
218ea46a4d
@ -59,6 +59,7 @@ function init() {
|
||||
RS.registerCommand(module, "import-qa-data", new Packages.com.google.refine.freebase.commands.ImportQADataCommand());
|
||||
RS.registerCommand(module, "mqlread", new Packages.com.google.refine.freebase.commands.MQLReadCommand());
|
||||
RS.registerCommand(module, "mqlwrite", new Packages.com.google.refine.freebase.commands.MQLWriteCommand());
|
||||
RS.registerCommand(module, "load-language", new Packages.com.google.refine.freebase.commands.LoadLanguageCommand());
|
||||
|
||||
var OR = Packages.com.google.refine.operations.OperationRegistry;
|
||||
|
||||
|
115
extensions/freebase/module/langs/translation-default.json
Normal file
115
extensions/freebase/module/langs/translation-default.json
Normal file
@ -0,0 +1,115 @@
|
||||
{
|
||||
"fb-schema-alignment": {
|
||||
"close-confirm": "There are unsaved changes. Close anyway?",
|
||||
"status-warning": "There are unsaved changes.",
|
||||
"assert-link-found": "Assert link when 'true' is found in column",
|
||||
"search-pick-property": "Search for a property or pick one below",
|
||||
"search-property": "Search for a property",
|
||||
"cell": "cell",
|
||||
"cells": "cells",
|
||||
"which-column": "Which column?",
|
||||
"configure": "Configure...",
|
||||
"which-topic": "Which topic?",
|
||||
"what-value": "What value?",
|
||||
"anonymous": "anonymous",
|
||||
"add-property": "add property",
|
||||
"anonymous-node": "Anonymous Node",
|
||||
"freebase-topic": "Freebase Topic",
|
||||
"value": "Value",
|
||||
"skeleton-node": "Schema Alignment Skeleton Node",
|
||||
"text": "text",
|
||||
"int": "int",
|
||||
"float": "float",
|
||||
"double": "double",
|
||||
"boolean": "boolean",
|
||||
"date-time": "date/time",
|
||||
"rawstring": "rawstring",
|
||||
"set-to-cell": "Set to Cell in Column",
|
||||
"cell-content-used": "The cell's content is used ...",
|
||||
"specify-fb-topic": "to specify a Freebase topic, as reconciled",
|
||||
"type-new-topics": "Type new topics as",
|
||||
"literal-value": "as a literal value",
|
||||
"literal-type": "Literal type",
|
||||
"text-language": "Text language",
|
||||
"key-namespace": "as a key in a namespace",
|
||||
"namespace": "Namespace",
|
||||
"generate-anonymous": "Generate an anonymous graph node",
|
||||
"assign-type": "Assign a type to the node",
|
||||
"use-existing-topic": "Use one existing Freebase topic",
|
||||
"value-type": "Value type",
|
||||
"language": "Language",
|
||||
"use-literal-value": "Use a literal value",
|
||||
"column-warning": "You must select at least one column",
|
||||
"new-node-warning": "For creating a new graph node, you need to specify a type for it.",
|
||||
"namespace-warning": "Please specify the namespace.",
|
||||
"anonymous-node-warning": "For generating an anonymous graph node, you need to specify a type for it",
|
||||
"specify-topic-warning": "Please specify which existing Freebase topic to use",
|
||||
"specify-value-warning": "Please specify the value to use"
|
||||
},
|
||||
"fb-interface": {
|
||||
"dialog-header": "Align to Freebase's Schemas",
|
||||
"body-text": "The schema alignment skeleton below specifies how your grid-shaped data will be transformed into graph-shaped data in Freebase's schemas.",
|
||||
"find-more": "Find out more ...",
|
||||
"skeleton": "Skeleton",
|
||||
"mql-preview": "MQL-like Preview",
|
||||
"tripleloader-preview": "TripleLoader Preview"
|
||||
},
|
||||
"fb-dialogs": {
|
||||
"sign-in": "Sign into Freebase",
|
||||
"enable-loading": "to enable loading",
|
||||
"error-new-topic": "Error creating new topic",
|
||||
"error-loading-data": "Error loading data",
|
||||
"add-info-source": "Click here to add a new information source",
|
||||
"dialog-header": "Load Data into Freebase",
|
||||
"no-triples-dataset": "This dataset has no triples",
|
||||
"warning-aligned": "Have you aligned it with Freebase's schemas yet?",
|
||||
"name-of-data": "Name of data load",
|
||||
"source-id": "Source ID (optional)",
|
||||
"bodytext-1": "Note: Your data will only be loaded into",
|
||||
"bodytext-2": "Sandbox is where everyone can experiment with Freebase technologies without disruption to the official",
|
||||
"bodytext-3": "Sandbox gets",
|
||||
"sandbox-link": " Sandbox",
|
||||
"freebase-link": " Freebase",
|
||||
"refreshed-link": " refreshed periodically",
|
||||
"bodytext-4": "In order to load your data into the official Freebase, you must first load it into Sandbox. Then it must pass a Quality Assurance (QA) process before it can be loaded into Freebase proper.",
|
||||
"quality-assurance": "Quality assurance",
|
||||
"bodytext-5": "After loaded into Sandbox, enlist other people's help to double-check this data load's quality so that it can be loaded into Freebase.",
|
||||
"triple-schedule": "triples successfully scheduled for loading",
|
||||
"follow-progress": "Follow the loading progress in the ",
|
||||
"refinery-link": "Freebase Refinery",
|
||||
"signed-as": "Signed in as:",
|
||||
"sign-out": "Sign Out"
|
||||
},
|
||||
"fb-qa": {
|
||||
"header": "QA Data Load?",
|
||||
"bodytext-1": "Other people will be enlisted to help double-check your data load for quality assurance purposes. Their time and labor have a cost.",
|
||||
"bodytext-2": "You yourself should have taken all reasonable measures to eliminate errors from your data load. Your prudence is greatly appreciated.",
|
||||
"tell-more": "Tell me more ...",
|
||||
"ok-button": "Yes, QA Data Load"
|
||||
},
|
||||
"fb-extend": {
|
||||
"add-column": "Add Columns from Freebase Based on Column",
|
||||
"warning-add-properties": "Please add some properties first.",
|
||||
"querying-freebase": "Querying Freebase ...",
|
||||
"remove-column": "Remove this column",
|
||||
"add-constraints": "Add constraints to this column",
|
||||
"mql-constraints": "Enter MQL query constraints as JSON",
|
||||
"warning-valid-json": "Please ensure that the JSON you enter is valid.",
|
||||
"warning-json-obj": "The JSON you enter must be an object, that is, it is of this form { ... }.",
|
||||
"add-property": "Add Property",
|
||||
"suggested-properties": "Suggested Properties",
|
||||
"constraint": "Constraint"
|
||||
},
|
||||
"fb-buttons": {
|
||||
"save": "Save",
|
||||
"save-load": "Save & Load",
|
||||
"close": "Close",
|
||||
"reset": "Reset",
|
||||
"cancel": "Cancel",
|
||||
"align-now": "Align Now",
|
||||
"settings": "Settings",
|
||||
"preview": "Preview",
|
||||
"load-sandbox": "Load to Sandbox",
|
||||
"ok": "Ok"
|
||||
}
|
||||
}
|
125
extensions/freebase/module/langs/translation-en.json
Normal file
125
extensions/freebase/module/langs/translation-en.json
Normal file
@ -0,0 +1,125 @@
|
||||
{
|
||||
"fb-schema-alignment": {
|
||||
"close-confirm": "There are unsaved changes. Close anyway?",
|
||||
"status-warning": "There are unsaved changes.",
|
||||
"assert-link-found": "Assert link when 'true' is found in column",
|
||||
"search-pick-property": "Search for a property or pick one below",
|
||||
"search-property": "Search for a property",
|
||||
"cell": "cell",
|
||||
"cells": "cells",
|
||||
"which-column": "Which column?",
|
||||
"configure": "Configure...",
|
||||
"which-topic": "Which topic?",
|
||||
"what-value": "What value?",
|
||||
"anonymous": "anonymous",
|
||||
"add-property": "add property",
|
||||
"anonymous-node": "Anonymous Node",
|
||||
"freebase-topic": "Freebase Topic",
|
||||
"value": "Value",
|
||||
"skeleton-node": "Schema Alignment Skeleton Node",
|
||||
"text": "text",
|
||||
"int": "int",
|
||||
"float": "float",
|
||||
"double": "double",
|
||||
"boolean": "boolean",
|
||||
"date-time": "date/time",
|
||||
"rawstring": "rawstring",
|
||||
"set-to-cell": "Set to Cell in Column",
|
||||
"cell-content-used": "The cell's content is used ...",
|
||||
"specify-fb-topic": "to specify a Freebase topic, as reconciled",
|
||||
"type-new-topics": "Type new topics as",
|
||||
"literal-value": "as a literal value",
|
||||
"literal-type": "Literal type",
|
||||
"text-language": "Text language",
|
||||
"key-namespace": "as a key in a namespace",
|
||||
"namespace": "Namespace",
|
||||
"generate-anonymous": "Generate an anonymous graph node",
|
||||
"assign-type": "Assign a type to the node",
|
||||
"use-existing-topic": "Use one existing Freebase topic",
|
||||
"value-type": "Value type",
|
||||
"language": "Language",
|
||||
"use-literal-value": "Use a literal value",
|
||||
"column-warning": "You must select at least one column",
|
||||
"new-node-warning": "For creating a new graph node, you need to specify a type for it.",
|
||||
"namespace-warning": "Please specify the namespace.",
|
||||
"anonymous-node-warning": "For generating an anonymous graph node, you need to specify a type for it.",
|
||||
"specify-topic-warning": "Please specify which existing Freebase topic to use",
|
||||
"specify-value-warning": "Please specify the value to use"
|
||||
},
|
||||
"fb-interface": {
|
||||
"dialog-header": "Align to Freebase's Schemas",
|
||||
"body-text": "The schema alignment skeleton below specifies how your grid-shaped data will be transformed into graph-shaped data in Freebase's schemas.",
|
||||
"find-more": "Find out more ...",
|
||||
"skeleton": "Skeleton",
|
||||
"mql-preview": "MQL-like Preview",
|
||||
"tripleloader-preview": "TripleLoader Preview"
|
||||
},
|
||||
"fb-dialogs": {
|
||||
"sign-in": "Sign into Freebase",
|
||||
"enable-loading": "to enable loading",
|
||||
"error-new-topic": "Error creating new topic",
|
||||
"error-loading-data": "Error loading data",
|
||||
"add-info-source": "Click here to add a new information source",
|
||||
"dialog-header": "Load Data into Freebase",
|
||||
"no-triples-dataset": "This dataset has no triples",
|
||||
"warning-aligned": "Have you aligned it with Freebase's schemas yet?",
|
||||
"name-of-data": "Name of data load",
|
||||
"source-id": "Source ID (optional)",
|
||||
"bodytext-1": "Note: Your data will only be loaded into",
|
||||
"bodytext-2": "Sandbox is where everyone can experiment with Freebase technologies without disruption to the official",
|
||||
"bodytext-3": "Sandbox gets",
|
||||
"sandbox-link": " Sandbox",
|
||||
"freebase-link": " Freebase",
|
||||
"refreshed-link": " refreshed periodically",
|
||||
"bodytext-4": "In order to load your data into the official Freebase, you must first load it into Sandbox. Then it must pass a Quality Assurance (QA) process before it can be loaded into Freebase proper.",
|
||||
"quality-assurance": "Quality assurance",
|
||||
"bodytext-5": "After loaded into Sandbox, enlist other people's help to double-check this data load's quality so that it can be loaded into Freebase.",
|
||||
"triple-schedule": "triples successfully scheduled for loading",
|
||||
"follow-progress": "Follow the loading progress in the ",
|
||||
"refinery-link": "Freebase Refinery",
|
||||
"signed-as": "Signed in as:",
|
||||
"sign-out": "Sign Out"
|
||||
},
|
||||
"fb-qa": {
|
||||
"header": "QA Data Load?",
|
||||
"bodytext-1": "Other people will be enlisted to help double-check your data load for quality assurance purposes. Their time and labor have a cost.",
|
||||
"bodytext-2": "You yourself should have taken all reasonable measures to eliminate errors from your data load. Your prudence is greatly appreciated.",
|
||||
"tell-more": "Tell me more ...",
|
||||
"ok-button": "Yes, QA Data Load"
|
||||
},
|
||||
"fb-extend": {
|
||||
"add-column": "Add Columns from Freebase Based on Column",
|
||||
"warning-add-properties": "Please add some properties first.",
|
||||
"querying-freebase": "Querying Freebase ...",
|
||||
"remove-column": "Remove this column",
|
||||
"add-constraints": "Add constraints to this column",
|
||||
"mql-constraints": "Enter MQL query constraints as JSON",
|
||||
"warning-valid-json": "Please ensure that the JSON you enter is valid.",
|
||||
"warning-json-obj": "The JSON you enter must be an object, that is, it is of this form { ... }.",
|
||||
"add-property": "Add Property",
|
||||
"suggested-properties": "Suggested Properties",
|
||||
"constraint": "Constraint"
|
||||
},
|
||||
"fb-menu": {
|
||||
"freebase": "Freebase",
|
||||
"set-api-key": "Set Freebase API Key",
|
||||
"align-schema": "Align to Freebase's schemas...",
|
||||
"load": "Load into Freebase...",
|
||||
"browse-data-load": "Browse data load details...",
|
||||
"import-qa": "Import QA data",
|
||||
"add-columns": "Add columns from Freebase ...",
|
||||
"warning-load": "You have not tried to load the data in this project into Freebase yet."
|
||||
},
|
||||
"fb-buttons": {
|
||||
"save": "Save",
|
||||
"save-load": "Save & Load",
|
||||
"close": "Close",
|
||||
"reset": "Reset",
|
||||
"cancel": "Cancel",
|
||||
"align-now": "Align Now",
|
||||
"settings": "Settings",
|
||||
"preview": "Preview",
|
||||
"load-sandbox": "Load to Sandbox",
|
||||
"ok": "Ok"
|
||||
}
|
||||
}
|
125
extensions/freebase/module/langs/translation-it.json
Normal file
125
extensions/freebase/module/langs/translation-it.json
Normal file
@ -0,0 +1,125 @@
|
||||
{
|
||||
"fb-schema-alignment": {
|
||||
"close-confirm": "Ci sono cambiamenti non salvati. Chiudere comunque?",
|
||||
"status-warning": "Ci sono cambiamenti non salvati.",
|
||||
"assert-link-found": "Assert link when 'true' is found in column",
|
||||
"search-pick-property": "Cerca una proprietà o scegline una dalle seguenti",
|
||||
"search-property": "Cerca una proprietà",
|
||||
"cell": "cella",
|
||||
"cells": "celle",
|
||||
"which-column": "Quale colonna?",
|
||||
"configure": "Configura...",
|
||||
"which-topic": "Quale topic?",
|
||||
"what-value": "Quale valore?",
|
||||
"anonymous": "anonimo",
|
||||
"add-property": "aggiungi proprietà",
|
||||
"anonymous-node": "Nodo Anonimo",
|
||||
"freebase-topic": "Topic Freebase",
|
||||
"value": "Valore",
|
||||
"skeleton-node": "Schema Alignment Skeleton Node",
|
||||
"text": "testo",
|
||||
"int": "int",
|
||||
"float": "float",
|
||||
"double": "double",
|
||||
"boolean": "boolean",
|
||||
"date-time": "data/ora",
|
||||
"rawstring": "rawstring",
|
||||
"set-to-cell": "Set to Cell in Column",
|
||||
"cell-content-used": "Il contenuto della cella è usato ...",
|
||||
"specify-fb-topic": "per specificare un topic Freebase, come riconciliato",
|
||||
"type-new-topics": "Inserisci il nuovo topic come",
|
||||
"literal-value": "come un valore letterale",
|
||||
"literal-type": "Tipo letterale",
|
||||
"text-language": "Lingua di testo",
|
||||
"key-namespace": "come una chiave nel namespace",
|
||||
"namespace": "Namespace",
|
||||
"generate-anonymous": "Genera un nodo anonimo nel grafo",
|
||||
"assign-type": "Assegna un tipo al nodo",
|
||||
"use-existing-topic": "Usa un topic Freebase esistente",
|
||||
"value-type": "Tipo valore",
|
||||
"language": "Lingua",
|
||||
"use-literal-value": "Usa un valore letterale",
|
||||
"column-warning": "Devi selezionare almeno una colonna",
|
||||
"new-node-warning": "Per creare un nuovo nodo nel grafo, devi specificarne un tipo.",
|
||||
"namespace-warning": "Specifica il namespace.",
|
||||
"anonymous-node-warning": "Per generare un nodo anonimo nel grafo, devi specificarne un tipo.",
|
||||
"specify-topic-warning": "Per favore specifica quale topic esistente di Freebase usare",
|
||||
"specify-value-warning": "Per favore specifica il valore da usare"
|
||||
},
|
||||
"fb-interface": {
|
||||
"dialog-header": "Allinea con gli schemi Freebase",
|
||||
"body-text": "Lo scheletro per l'allineamento della schema specifica come i tuoi dati in formato tabellare saranno trasformati in un formato a grafo con lo schema di Freebase.",
|
||||
"find-more": "Per saperne di più ...",
|
||||
"skeleton": "Scheletro",
|
||||
"mql-preview": "Anteprima MQL-like",
|
||||
"tripleloader-preview": "Anteprima TripleLoader"
|
||||
},
|
||||
"fb-dialogs": {
|
||||
"sign-in": "Accedi a Freebase",
|
||||
"enable-loading": "per abilitare il caricamento",
|
||||
"error-new-topic": "Errore nella creazione di un nuovo topic",
|
||||
"error-loading-data": "Errore durante il caricamento dei dati",
|
||||
"add-info-source": "Clicca qui per aggiungere una nuova sorgente di informazioni",
|
||||
"dialog-header": "Carica i dati in Freebase",
|
||||
"no-triples-dataset": "Questo dataset non ha triple",
|
||||
"warning-aligned": "Hai già effettuato l'allineamento con lo schema Freebase?",
|
||||
"name-of-data": "Nome del caricamento dati",
|
||||
"source-id": "ID sorgente (opzionale)",
|
||||
"bodytext-1": "Nota: i tuoi dati saranno caricati solamente in",
|
||||
"bodytext-2": "Sandbox è dove chiunque può sperimentare le tecnologie Freebase senza creare danni all'ufficiale",
|
||||
"bodytext-3": "Sandbox viene",
|
||||
"sandbox-link": " Sandbox",
|
||||
"freebase-link": " Freebase",
|
||||
"refreshed-link": " aggiornata periodicamente",
|
||||
"bodytext-4": "Per caricare i tuoi data su Freebase ufficiale, devi prima caricarli nel Sandbox. Successivamente, devono passare un processo di analisi qualitativa prima di essere caricati su Freebase.",
|
||||
"quality-assurance": "Analisi qualitativa",
|
||||
"bodytext-5": "Dopo essere caricati nella Sandbox, viene chiesto l'aiuto di altre persone per controllare due volte la qualità di questi dati in modo da poter poi essere caricati in Freebase.",
|
||||
"triple-schedule": "triple pianificate con successo per il caricamento",
|
||||
"follow-progress": "Segui il processo di caricamento nel ",
|
||||
"refinery-link": "Freebase Refinery",
|
||||
"signed-as": "Accesso effettuato come:",
|
||||
"sign-out": "Esci"
|
||||
},
|
||||
"fb-qa": {
|
||||
"header": "Caricamento dati con analisi qualitativa?",
|
||||
"bodytext-1": "Alcune persone verranno incaricate per controllare i tuoi dati allo scopo di verificarne la qualità. Il loro tempo e lavoro ha un costo.",
|
||||
"bodytext-2": "Tu stesso dovresti aver già effettuato la maggior parte dei controlli per assicurarti di aver rimosso errori dai dati. La tua prudenza è enormemente apprezzata.",
|
||||
"tell-more": "Dimmi di più ...",
|
||||
"ok-button": "Si, Caricamento dati con analisi qualitativa"
|
||||
},
|
||||
"fb-extend": {
|
||||
"add-column": "Aggiungi colonne da Freebase basandoti sulla colonna",
|
||||
"warning-add-properties": "Prima aggiungi delle proprietà.",
|
||||
"querying-freebase": "Interrogando Freebase ...",
|
||||
"remove-column": "Rimuovi questa colonna",
|
||||
"add-constraints": "Aggiungi vincoli a questa colonna",
|
||||
"mql-constraints": "Inserisci i vincoli per la query MQL come JSON",
|
||||
"warning-valid-json": "Assicurati che l'oggetto JSON inserito sia valido.",
|
||||
"warning-json-obj": "Il JSON che inserisci deve essere un oggetto, cioè in questa forma: { ... }.",
|
||||
"add-property": "Aggiungi Proprietà",
|
||||
"suggested-properties": "Proprietà suggerite",
|
||||
"constraint": "Vincoli"
|
||||
},
|
||||
"fb-menu": {
|
||||
"freebase": "Freebase",
|
||||
"set-api-key": "Imposta l'API Key Freebase",
|
||||
"align-schema": "Allinea con lo schema Freebase...",
|
||||
"load": "Carica in Freebase...",
|
||||
"browse-data-load": "Vedi i dettagli per il caricamento dati...",
|
||||
"import-qa": "Importa dati con controllo qualità",
|
||||
"add-columns": "Aggiungi colonne da Freebase ...",
|
||||
"warning-load": "Non hai ancora provato a caricare i dati di questo progetto in Freebase."
|
||||
},
|
||||
"fb-buttons": {
|
||||
"save": "Salva",
|
||||
"save-load": "Salva & Carica",
|
||||
"close": "Chiudi",
|
||||
"reset": "Reset",
|
||||
"cancel": "Cancella",
|
||||
"align-now": "Allinea adesso",
|
||||
"settings": "Settings",
|
||||
"preview": "Anteprima",
|
||||
"load-sandbox": "Carica nella Sandbox",
|
||||
"ok": "Ok"
|
||||
}
|
||||
}
|
@ -1,17 +1,12 @@
|
||||
<div class="dialog-frame" style="width: 400px;">
|
||||
<div class="dialog-header" bind="dialogHeader">QA Data Load?</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<p class="body-text">Other people will be enlisted to help double-check
|
||||
your data load for quality assurance purposes. Their time and labor
|
||||
have a cost.
|
||||
</p>
|
||||
<p class="body-text">You yourself should have taken all reasonable measures
|
||||
to eliminate errors from your data load. Your prudence is greatly appreciated.
|
||||
</p>
|
||||
<p><a href="http://wiki.freebase.com/wiki/Refinery" target="_blank">Tell me more ...</a></p>
|
||||
<p class="body-text" bind="bodytext1"></p>
|
||||
<p class="body-text" bind="bodytext2"></p>
|
||||
<p><a href="http://wiki.freebase.com/wiki/Refinery" target="_blank" bind="tellMore"></a></p>
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter">
|
||||
<button class="button" bind="okButton">Yes, QA Data Load</button>
|
||||
<button class="button" bind="cancelButton">Cancel</button>
|
||||
<button class="button" bind="okButton"></button>
|
||||
<button class="button" bind="cancelButton"></button>
|
||||
</div>
|
||||
</div>
|
@ -3,16 +3,16 @@
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<div class="grid-layout layout-normal layout-full"><table rows="4">
|
||||
<tr>
|
||||
<td width="300" height="1">Add Property</td>
|
||||
<td width="300" height="1" ><span bind="fb_add_property"></span></td>
|
||||
<td height="1">Preview</td>
|
||||
<td height="1" width="1%"><button class="button" bind="resetButton">Reset</button></td>
|
||||
<td height="1" width="1%"><button class="button" bind="resetButton"></button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;" height="1"><div class="input-container"><input bind="addPropertyInput" /></div></td>
|
||||
<td style="vertical-align: top;" rowspan="3" colspan="2"><div class="preview-container" bind="previewContainer"></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="1">Suggested Properties</td>
|
||||
<td height="1" bind="suggested_properties"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="suggested-property-container" bind="suggestedPropertyContainer"></div></td>
|
||||
@ -20,7 +20,7 @@
|
||||
</table></div>
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter">
|
||||
<button class="button" bind="okButton"> OK </button>
|
||||
<button class="button" bind="cancelButton">Cancel</button>
|
||||
<button class="button" bind="okButton"></button>
|
||||
<button class="button" bind="cancelButton"></button>
|
||||
</div>
|
||||
</div>
|
@ -41,15 +41,23 @@ function ExtendDataPreviewDialog(column, columnIndex, rowIndices, onDone) {
|
||||
var self = this;
|
||||
this._dialog = $(DOM.loadHTML("freebase", "scripts/dialogs/extend-data-preview-dialog.html"));
|
||||
this._elmts = DOM.bind(this._dialog);
|
||||
this._elmts.dialogHeader.text("Add Columns from Freebase Based on Column " + column.name);
|
||||
|
||||
this._elmts.dialogHeader.text($.i18n._('fb-extend')["add-column"]);
|
||||
this._elmts.fb_add_property.html($.i18n._('fb-extend')["add-property"]);
|
||||
this._elmts.suggested_properties.text($.i18n._('fb-extend')["suggested-properties"]);
|
||||
|
||||
this._elmts.resetButton.text($.i18n._('fb-buttons')["reset"]);
|
||||
this._elmts.okButton.html(' '+$.i18n._('fb-buttons')["ok"]+' ');
|
||||
this._elmts.cancelButton.text($.i18n._('fb-buttons')["cancel"]);
|
||||
|
||||
this._elmts.resetButton.click(function() {
|
||||
self._extension.properties = [];
|
||||
self._update();
|
||||
});
|
||||
|
||||
|
||||
this._elmts.okButton.click(function() {
|
||||
if (self._extension.properties.length === 0) {
|
||||
alert("Please add some properties first.");
|
||||
alert($.i18n._('fb-extend')["warning-add-properties"]);
|
||||
} else {
|
||||
DialogSystem.dismissUntil(self._level - 1);
|
||||
self._onDone(self._extension);
|
||||
@ -157,7 +165,7 @@ ExtendDataPreviewDialog.prototype._show = function(properties) {
|
||||
};
|
||||
|
||||
ExtendDataPreviewDialog.prototype._update = function() {
|
||||
this._elmts.previewContainer.empty().text("Querying Freebase ...");
|
||||
this._elmts.previewContainer.empty().text($.i18n._('fb-extend')["querying-freebase"]);
|
||||
|
||||
var self = this;
|
||||
var params = {
|
||||
@ -234,7 +242,7 @@ ExtendDataPreviewDialog.prototype._renderPreview = function(data) {
|
||||
$('<a href="javascript:{}"></a>')
|
||||
.text("remove")
|
||||
.addClass("action")
|
||||
.attr("title", "Remove this column")
|
||||
.attr("title", $.i18n._('fb-extend')["remove-column"])
|
||||
.click(function() {
|
||||
self._removeProperty(column.path);
|
||||
}).appendTo(th);
|
||||
@ -242,7 +250,7 @@ ExtendDataPreviewDialog.prototype._renderPreview = function(data) {
|
||||
$('<a href="javascript:{}"></a>')
|
||||
.text("constrain")
|
||||
.addClass("action")
|
||||
.attr("title", "Add constraints to this column")
|
||||
.attr("title", $.i18n._('fb-extend')["add-constraints"])
|
||||
.click(function() {
|
||||
self._constrainProperty(column.path);
|
||||
}).appendTo(th);
|
||||
@ -329,14 +337,14 @@ ExtendDataPreviewDialog.prototype._constrainProperty = function(path) {
|
||||
var frame = DialogSystem.createDialog();
|
||||
frame.width("500px");
|
||||
|
||||
var header = $('<div></div>').addClass("dialog-header").text("Constrain " + path.join(" > ")).appendTo(frame);
|
||||
var header = $('<div></div>').addClass("dialog-header").text(" " + path.join(" > ")).appendTo(frame);
|
||||
var body = $('<div></div>').addClass("dialog-body").appendTo(frame);
|
||||
var footer = $('<div></div>').addClass("dialog-footer").appendTo(frame);
|
||||
|
||||
body.html(
|
||||
'<div class="grid-layout layout-normal layout-full"><table>' +
|
||||
'<tr><td>' +
|
||||
'Enter MQL query constraints as JSON' +
|
||||
$.i18n._('fb-extend')["mql-constraints"] +
|
||||
'</td></tr>' +
|
||||
'<tr><td>' +
|
||||
'<textarea style="width: 100%; height: 300px; font-family: monospace;" bind="textarea"></textarea>' +
|
||||
@ -352,8 +360,8 @@ ExtendDataPreviewDialog.prototype._constrainProperty = function(path) {
|
||||
}
|
||||
|
||||
footer.html(
|
||||
'<button class="button" bind="okButton"> OK </button>' +
|
||||
'<button class="button" bind="cancelButton">Cancel</button>'
|
||||
'<button class="button" bind="okButton"> '+$.i18n._('fb-buttons')["ok"]+' </button>' +
|
||||
'<button class="button" bind="cancelButton">'+$.i18n._('fb-buttons')["cancel"]+'</button>'
|
||||
);
|
||||
var footerElmts = DOM.bind(footer);
|
||||
|
||||
@ -367,7 +375,7 @@ ExtendDataPreviewDialog.prototype._constrainProperty = function(path) {
|
||||
try {
|
||||
var o = JSON.parse(bodyElmts.textarea[0].value);
|
||||
if (o === undefined) {
|
||||
alert("Please ensure that the JSON you enter is valid.");
|
||||
alert($.i18n._('fb-extend')["warning-valid-json"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -375,7 +383,7 @@ ExtendDataPreviewDialog.prototype._constrainProperty = function(path) {
|
||||
o = o[0];
|
||||
}
|
||||
if (!$.isPlainObject(o)) {
|
||||
alert("The JSON you enter must be an object, that is, it is of this form { ... }.");
|
||||
alert($.i18n._('fb-extend')["warning-json-obj"]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1,44 +1,40 @@
|
||||
<div class="dialog-frame" style="width: 800px;">
|
||||
<div class="dialog-header" bind="dialogHeader">Load Data into Freebase</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<div bind="unalignedCase" style="display: none;" class="freebase-loading-tripleloader-message">
|
||||
<h2>This dataset has no triples</h2>
|
||||
<p>Have you aligned it with Freebase's schemas yet? <button class="button" bind="alignButton">Align Now</button></p>
|
||||
<h2 bind="no_triples_dataset"></h2>
|
||||
<p bind="warning_aligned"><button class="button" bind="alignButton"></button></p>
|
||||
</div>
|
||||
<div bind="functionalCase" style="display: none;">
|
||||
<div class="refine-tabs" bind="functionalTabs">
|
||||
<ul>
|
||||
<li><a href="#freebase-loading-dialog-functional-tabs-settings">Settings</a></li>
|
||||
<li><a href="#freebase-loading-dialog-functional-tabs-preview">Preview</a></li>
|
||||
<li><a href="#freebase-loading-dialog-functional-tabs-settings" bind="settingsBtn"></a></li>
|
||||
<li><a href="#freebase-loading-dialog-functional-tabs-preview" bind="previewBtn"></a></li>
|
||||
</ul>
|
||||
<div id="freebase-loading-dialog-functional-tabs-settings"
|
||||
class="freebase-loading-dialog-functional-tab-panel"><div class="grid-layout layout-normal"><table>
|
||||
<tr><td width="20%">Name of data load</td>
|
||||
<tr><td width="20%" bind="name_of_data"></td>
|
||||
<td colspan="2"><input type="text" size="40" id="freebase-loading-source-name" bind="source_name" /></td>
|
||||
</tr>
|
||||
<tr><td>Source ID (optional)</td>
|
||||
<tr><td bind="source_id_label"></td>
|
||||
<td colspan="2"><input type="text" size="60" id="freebase-loading-source-id" bind="source_id" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p class="body-text">Note: Your data will only be loaded into
|
||||
<a href="http://www.sandbox-freebase.com/" target="_blank">Sandbox</a>.
|
||||
Sandbox is where everyone can experiment with Freebase technologies without disruption
|
||||
to the official <a href="http://www.freebase.com/">Freebase</a>. Sandbox gets
|
||||
<a href="http://wiki.freebase.com/wiki/Sandbox" target="_blank">refreshed periodically</a>.
|
||||
<p class="body-text"><span bind="bodytext1"></span>
|
||||
<a href="http://www.sandbox-freebase.com/" target="_blank" bind="sandbox_link"></a>.
|
||||
<span bind="bodytext2"> </span><a href="http://www.freebase.com/" bind="freebase_link"></a>.
|
||||
<span bind="bodytext3"></span><a href="http://wiki.freebase.com/wiki/Sandbox"
|
||||
target="_blank" bind="refreshed_link"></a>.
|
||||
</p>
|
||||
<p class="body-text">In order to load your data into the official Freebase, you must first load it
|
||||
into Sandbox. Then it must pass a Quality Assurance (QA) process before it can
|
||||
be loaded into Freebase proper.
|
||||
<a href="http://wiki.freebase.com/wiki/Refinery" target="_blank">Find out more ...</a>
|
||||
<p class="body-text" bind="bodytext4">
|
||||
<a href="http://wiki.freebase.com/wiki/Refinery" target="_blank" bind="findOutMore"></a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td>Quality assurance</td>
|
||||
<tr><td bind="quality_assurance"></td>
|
||||
<td><input bind="qaCheckbox" type="checkbox" name="qa" value="qa" /></td>
|
||||
<td>After loaded into Sandbox, enlist other people's help to double-check
|
||||
this data load's quality so that it can be loaded into Freebase.
|
||||
</td>
|
||||
<td bind="bodytext5"></td>
|
||||
</tr>
|
||||
</table></div></div>
|
||||
<div id="freebase-loading-dialog-functional-tabs-preview"
|
||||
@ -49,8 +45,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div bind="loadedCase" style="display: none;" class="freebase-loading-tripleloader-message">
|
||||
<h2><span bind="tripleCountSpan"></span> triples successfully scheduled for loading</h2>
|
||||
<h4>Follow the loading progress in the <a bind="refineryLink" target="_new">Freebase Refinery</a>.</h4>
|
||||
<h2><span bind="tripleCountSpan"></span> <span bind="triple_success_load"></span></h2>
|
||||
<h4><span bind="follow_progress"></span> <a bind="refineryLink" target="_new"></a>.</h4>
|
||||
</div>
|
||||
<div bind="errorCase" style="display: none;" class="freebase-loading-tripleloader-message">
|
||||
<h2 bind="errorMessage"></h2>
|
||||
@ -59,13 +55,13 @@
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter"><div class="grid-layout layout-normal layout-full"><table><tr>
|
||||
<td bind="left" style="text-align: left" width="60%" nowrap="true">
|
||||
<button class="button" bind="cancelButton" id="freebase-loading-cancel">Cancel</button>
|
||||
<button class="button" bind="cancelButton" id="freebase-loading-cancel"></button>
|
||||
</td>
|
||||
<td bind="center" style="text-align: right" width="20%" nowrap="true">
|
||||
<div bind="authorization" class="freebase-loading-authorization"></div>
|
||||
</td>
|
||||
<td bind="right" style="text-align: right" width="20%" nowrap="true">
|
||||
<button class="button button-primary button-disabled" bind="loadButton" id="freebase-loading-load" disabled>Load to Sandbox</button>
|
||||
<button class="button button-primary button-disabled" bind="loadButton" id="freebase-loading-load" disabled></button>
|
||||
</td>
|
||||
</tr></table></div></div>
|
||||
</div>
|
@ -45,13 +45,37 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
||||
var provider = "freebase.com";
|
||||
var authorization = this._elmts.authorization;
|
||||
var loadButton = this._elmts.loadButton;
|
||||
|
||||
|
||||
this._elmts.dialogHeader.text($.i18n._('fb-dialogs')["dialog-header"]);
|
||||
this._elmts.no_triples_dataset.text($.i18n._('fb-dialogs')["no-triples-dataset"]);
|
||||
this._elmts.warning_aligned.text($.i18n._('fb-dialogs')["warning-aligned"]);
|
||||
this._elmts.alignButton.text($.i18n._('fb-buttons')["align-now"]);
|
||||
this._elmts.settingsBtn.text($.i18n._('fb-buttons')["settings"]);
|
||||
this._elmts.previewBtn.text($.i18n._('fb-buttons')["preview"]);
|
||||
this._elmts.name_of_data.text($.i18n._('fb-dialogs')["name-of-data"]);
|
||||
this._elmts.source_id_label.text($.i18n._('fb-dialogs')["source-id"]);
|
||||
this._elmts.bodytext1.text($.i18n._('fb-dialogs')["bodytext-1"]);
|
||||
this._elmts.bodytext2.text($.i18n._('fb-dialogs')["bodytext-2"]);
|
||||
this._elmts.bodytext3.text($.i18n._('fb-dialogs')["bodytext-3"]);
|
||||
this._elmts.sandbox_link.text($.i18n._('fb-dialogs')["sandbox-link"]);
|
||||
this._elmts.freebase_link.text($.i18n._('fb-dialogs')["freebase-link"]);
|
||||
this._elmts.refreshed_link.text($.i18n._('fb-dialogs')["refreshed-link"]);
|
||||
this._elmts.bodytext4.text($.i18n._('fb-dialogs')["bodytext-4"]);
|
||||
this._elmts.findOutMore.text($.i18n._('fb-interface')["find-more"]);
|
||||
this._elmts.quality_assurance.text($.i18n._('fb-dialogs')["quality-assurance"]);
|
||||
this._elmts.bodytext5.text($.i18n._('fb-dialogs')["bodytext-5"]);
|
||||
this._elmts.triple_success_load.text($.i18n._('fb-dialogs')["triple-schedule"]);
|
||||
this._elmts.follow_progress.text($.i18n._('fb-dialogs')["follow-progress"]);
|
||||
this._elmts.refineryLink.text($.i18n._('fb-dialogs')["refinery-link"]);
|
||||
this._elmts.cancelButton.text($.i18n._('fb-buttons')["cancel"]);
|
||||
this._elmts.loadButton.text($.i18n._('fb-buttons')["load-sandbox"]);
|
||||
|
||||
// TODO: Does this need to be redone for the new API / freebase.com site?
|
||||
var check_authorization = function(cont) {
|
||||
var check_authorization_url = "command/freebase/check-authorization/" + provider;
|
||||
$.get(check_authorization_url, function(data) {
|
||||
if ("status" in data && data.code == "/api/status/ok") {
|
||||
authorization.html('Signed in as: <a target="_new" href="http://www.freebase.com/view/user/' + data.username + '">' + data.username + '</a> | <a href="javascript:{}" bind="signout">Sign Out</a>').show();
|
||||
authorization.html($.i18n._('fb-dialogs')["signed-as"]+' <a target="_new" href="http://www.freebase.com/view/user/' + data.username + '">' + data.username + '</a> | <a href="javascript:{}" bind="signout">'+$.i18n._('fb-dialogs')["sign-out"]+'</a>').show();
|
||||
DOM.bind(authorization).signout.click(function() {
|
||||
self._signedin = false;
|
||||
loadButton.attr("disabled","disabled");
|
||||
@ -71,7 +95,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
||||
|
||||
if (typeof cont == "function") cont(data);
|
||||
} else {
|
||||
authorization.html('<a href="javascript:{}" bind="signin">Sign into Freebase</a> to enable loading').show();
|
||||
authorization.html('<a href="javascript:{}" bind="signin">'+$.i18n._('fb-dialogs')["sign-in"]+'</a> '+$.i18n._('fb-dialogs')["enable-loading"]).show();
|
||||
|
||||
self._signedin = false;
|
||||
$("#freebase-loading-source-name").keyup();
|
||||
@ -104,7 +128,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
||||
self._elmts.source_id.val(data.result[0].id);
|
||||
if (typeof cont == "function") cont();
|
||||
} else {
|
||||
self._show_error("Error creating new topic", data);
|
||||
self._show_error($.i18n._('fb-dialogs')["error-new-topic"], data);
|
||||
}
|
||||
},
|
||||
"json"
|
||||
@ -137,7 +161,7 @@ FreebaseLoadingDialog.prototype._createDialog = function() {
|
||||
|
||||
self._elmts.source_id.suggest({
|
||||
filter: "(all type:/dataworld/information_source)",
|
||||
suggest_new: "Click here to add a new information source"
|
||||
suggest_new: $.i18n._('fb-dialogs')["add-info-source"]
|
||||
}).bind("fb-select", function(e, data) {
|
||||
self._elmts.source_id.val(data.id);
|
||||
}).bind("fb-select-new", function(e, val) {
|
||||
@ -202,7 +226,7 @@ FreebaseLoadingDialog.prototype._load = function() {
|
||||
self._elmts.loadedCase.show();
|
||||
self._end();
|
||||
} else {
|
||||
self._show_error("Error loading data",data);
|
||||
self._show_error($.i18n._('fb-dialogs')["error-loading-data"],data);
|
||||
}
|
||||
},
|
||||
"json"
|
||||
@ -216,6 +240,13 @@ FreebaseLoadingDialog.prototype._load = function() {
|
||||
var dismiss = function() {
|
||||
DialogSystem.dismissUntil(level - 1);
|
||||
};
|
||||
|
||||
this._elmts.refineryLink.text($.i18n._('fb-qa')["header"]);
|
||||
this._elmts.bodytext1.text($.i18n._('fb-qa')["bodytext-1"]);
|
||||
this._elmts.bodytext2.text($.i18n._('fb-qa')["bodytext-2"]);
|
||||
this._elmts.tellMore.text($.i18n._('fb-qa')["tell-more"]);
|
||||
this._elmts.okButton.text($.i18n._('fb-qa')["ok-button"]);
|
||||
this._elmts.cancelButton.text($.i18n._('fb-qa')["ok-button"]);
|
||||
|
||||
elmts.okButton.click(function() {
|
||||
doLoad();
|
||||
|
@ -234,6 +234,17 @@ SchemaAlignmentDialog.prototype._createDialog = function() {
|
||||
DialogSystem.dismissUntil(self._level - 1);
|
||||
};
|
||||
|
||||
elmts.dialogHeader.text($.i18n._('fb-interface')["dialog-header"]);
|
||||
elmts.body_text.text($.i18n._('fb-interface')["body-text"]);
|
||||
elmts.find_more.text($.i18n._('fb-interface')["find-more"]);
|
||||
elmts.skeleton.text($.i18n._('fb-interface')["skeleton"]);
|
||||
elmts.skeleton.text($.i18n._('fb-interface')["mql-preview"]);
|
||||
elmts.skeleton.text($.i18n._('fb-interface')["tripleloader-preview"]);
|
||||
elmts.saveButton.text($.i18n._('fb-buttons')["save"]);
|
||||
elmts.saveAndLoadButton.text($.i18n._('fb-buttons')["save-load"]);
|
||||
elmts.closeButton.text($.i18n._('fb-buttons')["close"]);
|
||||
elmts.resetButton.text($.i18n._('fb-buttons')["reset"]);
|
||||
|
||||
elmts.saveButton.click(function() {
|
||||
self._save();
|
||||
});
|
||||
@ -247,7 +258,7 @@ SchemaAlignmentDialog.prototype._createDialog = function() {
|
||||
self._reset(null);
|
||||
});
|
||||
elmts.closeButton.click(function() {
|
||||
if (!self._hasUnsavedChanges || window.confirm("There are unsaved changes. Close anyway?")) {
|
||||
if (!self._hasUnsavedChanges || window.confirm($.i18n._('fb-schema-alignment')["close-confirm"])) {
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
@ -281,7 +292,7 @@ SchemaAlignmentDialog.prototype.preview = function(initial) {
|
||||
|
||||
this._previewPanes.empty();
|
||||
if (!(initial)) {
|
||||
this._elmts.statusIndicator.show().text("There are unsaved changes.");
|
||||
this._elmts.statusIndicator.show().text($.i18n._('fb-schema-alignment')["status-warning"]);
|
||||
this._hasUnsavedChanges = true;
|
||||
}
|
||||
|
||||
|
@ -1,16 +1,14 @@
|
||||
<div class="dialog-frame" style="width: 800px;">
|
||||
<div class="dialog-header" bind="dialogHeader">Align to Freebase's Schemas</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<p class="body-text">
|
||||
The schema alignment skeleton below specifies how your grid-shaped data will be
|
||||
transformed into graph-shaped data in Freebase's schemas.
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Schema-Alignment" target="_blank">Find out more ...</a>
|
||||
<p class="body-text" bind="body_text">
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Schema-Alignment" target="_blank" bind="find_more"></a>
|
||||
</p>
|
||||
<div id="schema-alignment-tabs" class="refine-tabs">
|
||||
<ul>
|
||||
<li><a href="#schema-alignment-tabs-protograph">Skeleton</a></li>
|
||||
<li><a href="#schema-alignment-tabs-preview-mqllike">MQL-like Preview</a></li>
|
||||
<li><a href="#schema-alignment-tabs-preview-tripleloader">TripleLoader Preview</a></li>
|
||||
<li><a href="#schema-alignment-tabs-protograph" bind="skeleton"></a></li>
|
||||
<li><a href="#schema-alignment-tabs-preview-mqllike" bind="mql_preview"></a></li>
|
||||
<li><a href="#schema-alignment-tabs-preview-tripleloader" bind="tripleloader_preview"></a></li>
|
||||
</ul>
|
||||
<div id="schema-alignment-tabs-protograph">
|
||||
<div class="schema-alignment-dialog-canvas"></div>
|
||||
@ -25,17 +23,17 @@
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter"><div class="grid-layout layout-normal layout-full"><table><tr>
|
||||
<td>
|
||||
<button class="button" bind="resetButton">Reset</button>
|
||||
<button class="button" bind="resetButton"></button>
|
||||
</td>
|
||||
<td style="text-align:right;">
|
||||
<button class="button button-primary" bind="saveButton">Save</button>
|
||||
<button class="button" bind="saveAndLoadButton">Save & Load</button>
|
||||
<button class="button button-primary" bind="saveButton"></button>
|
||||
<button class="button" bind="saveAndLoadButton"></button>
|
||||
</td>
|
||||
<td style="text-align:center;" width="30%">
|
||||
<span class="schema-alignment-status-indicator" bind="statusIndicator"></span>
|
||||
</td>
|
||||
<td style="text-align:right;" width="1%">
|
||||
<button class="button" bind="closeButton">Close</button>
|
||||
<button class="button" bind="closeButton"></button>
|
||||
</td>
|
||||
</tr></table></div></div>
|
||||
</div>
|
@ -239,7 +239,7 @@ SchemaAlignmentDialog.UILink.prototype._showPropertySuggestPopup = function(elmt
|
||||
|
||||
var divConditional = $('<div>')
|
||||
.addClass("schema-alignment-link-menu-section")
|
||||
.html("Assert link when 'true' is found in column<br/>").appendTo(menu);
|
||||
.html($.i18n._('fb-schema-alignment')["assert-link-found"]+"<br/>").appendTo(menu);
|
||||
|
||||
var conditionalSelect = $('<select>').appendTo(divConditional);
|
||||
$('<option>')
|
||||
@ -266,7 +266,7 @@ SchemaAlignmentDialog.UILink.prototype._showPropertySuggestPopup = function(elmt
|
||||
divSearch = $('<div>')
|
||||
.addClass("schema-alignment-link-menu-section")
|
||||
.css("margin-bottom", "2em")
|
||||
.html('<div>Search for a property or pick one below</div>').appendTo(menu);
|
||||
.html('<div>'+$.i18n._('fb-schema-alignment')["search-pick-property"]+'</div>').appendTo(menu);
|
||||
|
||||
var createSuggestion = function(suggestion) {
|
||||
var menuItem = MenuSystem.createMenuItem().appendTo(menu);
|
||||
@ -296,7 +296,7 @@ SchemaAlignmentDialog.UILink.prototype._showPropertySuggestPopup = function(elmt
|
||||
} else {
|
||||
divSearch = $('<div>')
|
||||
.addClass("schema-alignment-link-menu-section-last")
|
||||
.html('<div>Search for a property</div>').appendTo(menu);
|
||||
.html('<div>'+$.i18n._('fb-schema-alignment')["search-property"]+'</div>').appendTo(menu);
|
||||
}
|
||||
var input = $('<input />').appendTo($('<div>').appendTo(divSearch));
|
||||
|
||||
|
@ -124,9 +124,12 @@ SchemaAlignmentDialog.UINode.prototype._renderMain = function() {
|
||||
.appendTo(a);
|
||||
}
|
||||
|
||||
$('<span>').text(this._node.columnNames.length > 1 ? " cells" : " cell").appendTo(a);
|
||||
$('<span>').text(
|
||||
this._node.columnNames.length > 1 ? " "
|
||||
+ $.i18n._('fb-schema-alignment')["cells"] : " "
|
||||
+ $.i18n._('fb-schema-alignment')["cell"]).appendTo(a);
|
||||
} else {
|
||||
a.html(this._options.mustBeCellTopic ? "Which column?" : "Configure...");
|
||||
a.html(this._options.mustBeCellTopic ? $.i18n._('fb-schema-alignment')["which-column"] : $.i18n._('fb-schema-alignment')["configure"]);
|
||||
}
|
||||
} else if (this._node.nodeType == "topic") {
|
||||
if ("topic" in this._node) {
|
||||
@ -134,16 +137,16 @@ SchemaAlignmentDialog.UINode.prototype._renderMain = function() {
|
||||
} else if ("id" in this._node) {
|
||||
a.html(this._node.topic.id);
|
||||
} else {
|
||||
a.html("Which topic?");
|
||||
a.html($.i18n._('fb-schema-alignment')["which-topic"]);
|
||||
}
|
||||
} else if (this._node.nodeType == "value") {
|
||||
if ("value" in this._node) {
|
||||
a.html(this._node.value);
|
||||
} else {
|
||||
a.html("What value?");
|
||||
a.html($.i18n._('fb-schema-alignment')["what-value"]);
|
||||
}
|
||||
} else if (this._node.nodeType == "anonymous") {
|
||||
a.html("(anonymous)");
|
||||
a.html("("+$.i18n._('fb-schema-alignment')["anonymous"]+")");
|
||||
}
|
||||
};
|
||||
|
||||
@ -212,7 +215,7 @@ SchemaAlignmentDialog.UINode.prototype._renderDetails = function() {
|
||||
|
||||
$('<a href="javascript:{}"></a>')
|
||||
.addClass("action")
|
||||
.text("add property")
|
||||
.text($.i18n._('fb-schema-alignment')["add-property"])
|
||||
.appendTo(divFooter)
|
||||
.click(function() {
|
||||
var newLink = {
|
||||
@ -241,7 +244,7 @@ SchemaAlignmentDialog.UINode.prototype._showColumnPopupMenu = function(elmt) {
|
||||
|
||||
if (!this._options.mustBeCellTopic) {
|
||||
menu.push({
|
||||
label: "Anonymous Node",
|
||||
label: $.i18n._('fb-schema-alignment')["anonymous-node"],
|
||||
click: function() {
|
||||
self._node.nodeType = "anonymous";
|
||||
self._showExpandable();
|
||||
@ -249,7 +252,7 @@ SchemaAlignmentDialog.UINode.prototype._showColumnPopupMenu = function(elmt) {
|
||||
}
|
||||
});
|
||||
menu.push({
|
||||
label: "Freebase Topic",
|
||||
label: $.i18n._('fb-schema-alignment')["freebase-topic"],
|
||||
click: function() {
|
||||
self._node.nodeType = "topic";
|
||||
self._hideExpandable();
|
||||
@ -257,7 +260,7 @@ SchemaAlignmentDialog.UINode.prototype._showColumnPopupMenu = function(elmt) {
|
||||
}
|
||||
});
|
||||
menu.push({
|
||||
label: "Value",
|
||||
label: $.i18n._('fb-schema-alignment')["value"],
|
||||
click: function() {
|
||||
self._node.nodeType = "value";
|
||||
self._hideExpandable();
|
||||
@ -292,7 +295,7 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
|
||||
frame.width("750px");
|
||||
|
||||
var header = $('<div></div>').addClass("dialog-header").text("Schema Alignment Skeleton Node").appendTo(frame);
|
||||
var header = $('<div></div>').addClass("dialog-header").text($.i18n._('fb-schema-alignment')["skeleton-node"]).appendTo(frame);
|
||||
var body = $('<div></div>').addClass("dialog-body").appendTo(frame);
|
||||
var footer = $('<div></div>').addClass("dialog-footer").appendTo(frame);
|
||||
|
||||
@ -301,13 +304,13 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
*--------------------------------------------------
|
||||
*/
|
||||
var literalTypeSelectHtml =
|
||||
'<option value="/type/text" checked>text</option>' +
|
||||
'<option value="/type/int">int</option>' +
|
||||
'<option value="/type/float">float</option>' +
|
||||
'<option value="/type/double">double</option>' +
|
||||
'<option value="/type/boolean">boolean</option>' +
|
||||
'<option value="/type/datetime">date/time</option>' +
|
||||
'<option value="/type/rawstring">rawstring</option>';
|
||||
'<option value="/type/text" checked>'+$.i18n._('fb-schema-alignment')["text"]+'</option>' +
|
||||
'<option value="/type/int">'+$.i18n._('fb-schema-alignment')["int"]+'</option>' +
|
||||
'<option value="/type/float">'+$.i18n._('fb-schema-alignment')["float"]+'</option>' +
|
||||
'<option value="/type/double">'+$.i18n._('fb-schema-alignment')["double"]+'</option>' +
|
||||
'<option value="/type/boolean">'+$.i18n._('fb-schema-alignment')["boolean"]+'</option>' +
|
||||
'<option value="/type/datetime">'+$.i18n._('fb-schema-alignment')["date-time"]+'</option>' +
|
||||
'<option value="/type/rawstring">'+$.i18n._('fb-schema-alignment')["rawstring"]+'</option>';
|
||||
|
||||
var html = $(
|
||||
'<div class="grid-layout layout-looser layout-full"><table>' +
|
||||
@ -317,7 +320,7 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
'<tr>' +
|
||||
'<td>' +
|
||||
'<div class="schema-align-node-dialog-node-type">' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="cell-as" bind="radioNodeTypeCellAs" /> Set to Cell in Column' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="cell-as" bind="radioNodeTypeCellAs" /> '+$.i18n._('fb-schema-alignment')["set-to-cell"]+'' +
|
||||
'</div>' +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
@ -329,15 +332,15 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
'<td>' +
|
||||
'<div class="grid-layout layout-tight"><table cols="4">' +
|
||||
'<tr>' +
|
||||
'<td colspan="4">The cell\'s content is used ...</td>' +
|
||||
'<td colspan="4">'+$.i18n._('fb-schema-alignment')["cell-content-used"]+'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td><input type="radio" name="schema-align-node-dialog-node-subtype" value="cell-as-topic" bind="radioNodeTypeCellAsTopic" /></td>' +
|
||||
'<td colspan="3">to specify a Freebase topic, as reconciled</td>' +
|
||||
'<td colspan="3">'+$.i18n._('fb-schema-alignment')["specify-fb-topic"]+'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td colspan="3">Type new topics as</td>' +
|
||||
'<td colspan="3">'+$.i18n._('fb-schema-alignment')["type-new-topic"]+'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
@ -345,26 +348,26 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td><input type="radio" name="schema-align-node-dialog-node-subtype" value="cell-as-value" bind="radioNodeTypeCellAsValue" /></td>' +
|
||||
'<td colspan="3">as a literal value</td>' +
|
||||
'<td colspan="3">'+$.i18n._('fb-schema-alignment')["literal-value"]+'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td colspan="2">Literal type</td>' +
|
||||
'<td colspan="2">'+$.i18n._('fb-schema-alignment')["literal-type"]+'</td>' +
|
||||
'<td colspan="1"><select bind="cellAsValueTypeSelect">' + literalTypeSelectHtml + '</select></td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td colspan="2">Text language</td>' +
|
||||
'<td colspan="2">'+$.i18n._('fb-schema-alignment')["text-language"]+'</td>' +
|
||||
'<td colspan="1"><input bind="cellAsValueLanguageInput" /></td>' +
|
||||
'</tr>' +
|
||||
|
||||
'<tr>' +
|
||||
'<td><input type="radio" name="schema-align-node-dialog-node-subtype" value="cell-as-key" bind="radioNodeTypeCellAsKey" /></td>' +
|
||||
'<td colspan="3">as a key in a namespace</td>' +
|
||||
'<td colspan="3">'+$.i18n._('fb-schema-alignment')["key-namespace"]+'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td colspan="2">Namespace</td>' +
|
||||
'<td colspan="2">'+$.i18n._('fb-schema-alignment')["namespace"]+'</td>' +
|
||||
'<td colspan="1"><input bind="cellAsKeyInput" /></td>' +
|
||||
'</tr>' +
|
||||
'</table></div>' +
|
||||
@ -381,20 +384,20 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
'<tr>' +
|
||||
'<td colspan="3">' +
|
||||
'<div class="schema-align-node-dialog-node-type">' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="anonymous" bind="radioNodeTypeAnonymous" /> Generate an anonymous graph node' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="anonymous" bind="radioNodeTypeAnonymous" /> '+$.i18n._('fb-schema-alignment')["generate-anonymous"]+'' +
|
||||
'</div>' +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td>Assign a type to the node</td>' +
|
||||
'<td>'+$.i18n._('fb-schema-alignment')["assign-type"]+'</td>' +
|
||||
'<td> <input bind="anonymousNodeTypeInput" /></td>' +
|
||||
'</tr>' +
|
||||
|
||||
'<tr>' +
|
||||
'<td colspan="3">' +
|
||||
'<div class="schema-align-node-dialog-node-type">' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="topic" bind="radioNodeTypeTopic" /> Use one existing Freebase topic' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="topic" bind="radioNodeTypeTopic" /> '+$.i18n._('fb-schema-alignment')["use-existing-topic"]+'' +
|
||||
'</div>' +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
@ -407,23 +410,23 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
'<tr>' +
|
||||
'<td colspan="3">' +
|
||||
'<div class="schema-align-node-dialog-node-type">' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="value" bind="radioNodeTypeValue" /> Use a literal value' +
|
||||
'<input type="radio" name="schema-align-node-dialog-node-type" value="value" bind="radioNodeTypeValue" /> '+$.i18n._('fb-schema-alignment')["use-literal-value"]+
|
||||
'</div>' +
|
||||
'</td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td>Value</td>' +
|
||||
'<td>'+$.i18n._('fb-schema-alignment')["value"]+'</td>' +
|
||||
'<td><input bind="valueNodeTypeValueInput" /></td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td>Value type</td>' +
|
||||
'<td>'+$.i18n._('fb-schema-alignment')["value-type"]+'</td>' +
|
||||
'<td><select bind="valueNodeTypeValueTypeSelect">' + literalTypeSelectHtml + '</select></td>' +
|
||||
'</tr>' +
|
||||
'<tr>' +
|
||||
'<td></td>' +
|
||||
'<td>Language</td>' +
|
||||
'<td>'+$.i18n._('fb-schema-alignment')["language"]+'</td>' +
|
||||
'<td><input bind="valueNodeTypeLanguageInput" /></td>' +
|
||||
'</tr>' +
|
||||
'</table></div>' +
|
||||
@ -581,14 +584,14 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
}).get();
|
||||
|
||||
if (node.columnNames.length == 0) {
|
||||
alert("You must select at least one column.");
|
||||
alert($.i18n._('fb-schema-alignment')["column-warning"]);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (node.nodeType == "cell-as-topic") {
|
||||
var t = elmts.cellAsTopicNodeTypeInput.data("data.suggest");
|
||||
if (!(t)) {
|
||||
alert("For creating a new graph node, you need to specify a type for it.");
|
||||
alert($.i18n._('fb-schema-alignment')["new-node-warning"]);
|
||||
elmts.cellAsTopicNodeTypeInput.focus();
|
||||
return null;
|
||||
}
|
||||
@ -606,7 +609,7 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
} else if (node.nodeType == "cell-as-key") {
|
||||
var t = elmts.cellAsKeyInput.data("data.suggest");
|
||||
if (!(t)) {
|
||||
alert("Please specify the namespace.");
|
||||
alert($.i18n._('fb-schema-alignment')["namespace-warning"]);
|
||||
return null;
|
||||
}
|
||||
node.namespace = {
|
||||
@ -617,7 +620,7 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
} else if (node.nodeType == "anonymous") {
|
||||
var t = elmts.anonymousNodeTypeInput.data("data.suggest");
|
||||
if (!(t)) {
|
||||
alert("For generating an anonymous graph node, you need to specify a type for it.");
|
||||
alert($.i18n._('fb-schema-alignment')["anonymous-node-warning"]);
|
||||
return null;
|
||||
}
|
||||
node.type = {
|
||||
@ -627,7 +630,7 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
} else if (node.nodeType == "topic") {
|
||||
var t = elmts.topicNodeTypeInput.data("data.suggest");
|
||||
if (!(t)) {
|
||||
alert("Please specify which existing Freebase topic to use.");
|
||||
alert($.i18n._('fb-schema-alignment')["specify-topic-warning"]);
|
||||
return null;
|
||||
}
|
||||
node.topic = {
|
||||
@ -637,7 +640,7 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
} else if (node.nodeType == "value") {
|
||||
node.value = $.trim(elmts.valueNodeTypeValueInput[0].value);
|
||||
if (!node.value.length) {
|
||||
alert("Please specify the value to use.");
|
||||
alert($.i18n._('fb-schema-alignment')["specify-value-warning"]);
|
||||
return null;
|
||||
}
|
||||
node.valueType = elmts.valueNodeTypeValueTypeSelect[0].value;
|
||||
@ -662,7 +665,7 @@ SchemaAlignmentDialog.UINode.prototype._showNodeConfigDialog = function() {
|
||||
}
|
||||
}).appendTo(footer);
|
||||
|
||||
$('<button class="button"></button>').text("Cancel").click(function() {
|
||||
$('<button class="button"></button>').text($.i18n._('fb-buttons')["cancel"]).click(function() {
|
||||
DialogSystem.dismissUntil(level - 1);
|
||||
}).appendTo(footer);
|
||||
|
||||
|
@ -33,6 +33,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
var FreebaseExtension = { handlers: {} };
|
||||
|
||||
|
||||
// Internationalization init
|
||||
var lang = navigator.language.split("-")[0]
|
||||
|| navigator.userLanguage.split("-")[0];
|
||||
var dictionary = "";
|
||||
$.ajax({
|
||||
url : "/command/freebase/load-language?",
|
||||
type : "POST",
|
||||
async : false,
|
||||
data : {
|
||||
lng : lang
|
||||
},
|
||||
success : function(data) {
|
||||
dictionary = data;
|
||||
}
|
||||
});
|
||||
$.i18n.setDictionary(dictionary);
|
||||
// End internationalization
|
||||
|
||||
FreebaseExtension.handlers.setFreebaseApiKey = function() {
|
||||
var value = window.prompt("Set Freebase API Key:");
|
||||
if (value !== null) {
|
||||
@ -79,7 +98,7 @@ FreebaseExtension.handlers.browseToDataLoad = function() {
|
||||
null,
|
||||
function(data) {
|
||||
if (data.value == null) {
|
||||
alert("You have not tried to load the data in this project into Freebase yet.");
|
||||
alert($.i18n._('fb-menu')["warning-load"]);
|
||||
} else {
|
||||
$(form).attr("action", "http://refinery.freebaseapps.com/load/" + data.value);
|
||||
form.submit();
|
||||
@ -101,33 +120,35 @@ FreebaseExtension.handlers.importQAData = function() {
|
||||
};
|
||||
|
||||
ExtensionBar.addExtensionMenu({
|
||||
|
||||
|
||||
"id" : "freebase",
|
||||
"label" : "Freebase",
|
||||
"label" : $.i18n._('fb-menu')["freebase"],
|
||||
"submenu" : [
|
||||
{
|
||||
"id" : "freebase/set-api-key",
|
||||
label: "Set Freebase API Key",
|
||||
label: $.i18n._('fb-menu')["set-api-key"],
|
||||
click: FreebaseExtension.handlers.setFreebaseApiKey
|
||||
},
|
||||
{
|
||||
"id" : "freebase/schema-alignment",
|
||||
label: "Align to Freebase's schemas...",
|
||||
label: $.i18n._('fb-menu')["align-schema"],
|
||||
click: function() { FreebaseExtension.handlers.editSchemaAlignment(false); }
|
||||
},
|
||||
{
|
||||
"id" : "freebase/load-info-freebase",
|
||||
label: "Load into Freebase...",
|
||||
label: $.i18n._('fb-menu')["load"],
|
||||
click: function() { FreebaseExtension.handlers.loadIntoFreebase(); }
|
||||
},
|
||||
{},
|
||||
{
|
||||
"id" : "freebase/browse-load",
|
||||
label: "Browse data load details...",
|
||||
label: $.i18n._('fb-menu')["browse-data-load"],
|
||||
click: function() { FreebaseExtension.handlers.browseToDataLoad(); }
|
||||
},
|
||||
{
|
||||
"id" : "freebase/import-qa-data",
|
||||
label: "Import QA data",
|
||||
label: $.i18n._('fb-menu')["import-qa"],
|
||||
click: function() { FreebaseExtension.handlers.importQAData(); }
|
||||
}
|
||||
]
|
||||
@ -163,7 +184,7 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) {
|
||||
[ "core/edit-column", "core/add-column-by-fetching-urls" ],
|
||||
{
|
||||
id: "freebase/add-columns-from-freebase",
|
||||
label: "Add columns from Freebase ...",
|
||||
label: $.i18n._('fb-menu')["add-columns"],
|
||||
click: doAddColumnFromFreebase
|
||||
}
|
||||
);
|
||||
|
@ -0,0 +1,73 @@
|
||||
|
||||
package com.google.refine.freebase.commands;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.google.refine.ProjectManager;
|
||||
import com.google.refine.commands.Command;
|
||||
|
||||
public class LoadLanguageCommand extends Command {
|
||||
|
||||
public LoadLanguageCommand() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
doPost(request, response);
|
||||
}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
String rawDirectoryFile = request.getSession().getServletContext()
|
||||
.getRealPath("extensions/freebase/module/langs/");
|
||||
String cleanedDirectory = rawDirectoryFile.replace("main" + File.separator + "webapp" + File.separator, "");
|
||||
|
||||
BufferedReader reader = null;String param = null;
|
||||
try {
|
||||
param = (String) ProjectManager.singleton.getPreferenceStore().get("userLang");
|
||||
} catch (NullPointerException e) {
|
||||
}
|
||||
if (param == null) param = request.getParameter("lng");
|
||||
|
||||
String[] langs = param.split(" ");
|
||||
try {
|
||||
String file = cleanedDirectory + File.separator + "translation-" + langs[0] + ".json";
|
||||
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
|
||||
} catch (FileNotFoundException e1) {
|
||||
try {
|
||||
String file = cleanedDirectory + File.separator + "translation-default.json";
|
||||
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
|
||||
} catch (FileNotFoundException e3) {
|
||||
e3.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
String line = null;
|
||||
String message = new String();
|
||||
if (reader != null) {
|
||||
while ((line = reader.readLine()) != null) {
|
||||
// buffer.append(line);
|
||||
message += line + System.getProperty("line.separator");
|
||||
}
|
||||
}
|
||||
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json");
|
||||
response.getWriter().println(message);
|
||||
response.getWriter().flush();
|
||||
response.getWriter().close();
|
||||
}
|
||||
|
||||
}
|
@ -43,6 +43,7 @@ function init() {
|
||||
var RS = Packages.com.google.refine.RefineServlet;
|
||||
RS.registerCommand(module, "deauthorize", Packages.com.google.refine.extension.gdata.DeAuthorizeCommand());
|
||||
RS.registerCommand(module, "upload", Packages.com.google.refine.extension.gdata.UploadCommand());
|
||||
RS.registerCommand(module, "load-language", Packages.com.google.refine.extension.gdata.commands.LoadLanguageCommand());
|
||||
|
||||
// Register importer and exporter
|
||||
var IM = Packages.com.google.refine.importing.ImportingManager;
|
||||
|
@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>OpenRefine - Authorization</title>
|
||||
<title id="gdata-authorize"></title>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
@ -37,7 +37,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<title>OpenRefine - Authorized</title>
|
||||
</head>
|
||||
<body>
|
||||
Authorization process completed. Close this window and return to OpenRefine.
|
||||
<span id="gdata-authorized"></span>
|
||||
|
||||
<script>
|
||||
var windowName = "$winname";
|
||||
|
56
extensions/gdata/module/langs/translation-default.json
Normal file
56
extensions/gdata/module/langs/translation-default.json
Normal file
@ -0,0 +1,56 @@
|
||||
{
|
||||
"gdata-import": {
|
||||
"preparing": "Preparing ...",
|
||||
"creating": "Creating project ...",
|
||||
"title": "Public Documents",
|
||||
"import-by-url": "Import a <em>public</em> Google Spreadsheet or Fusion Table by its URL:",
|
||||
"next->": "Next »",
|
||||
"auth-doc": "Authorized Documents",
|
||||
"please": "Please",
|
||||
"sign-in": "sign in and authorize",
|
||||
"sign-out": "sign out",
|
||||
"access-data": "access to your Google data.",
|
||||
"retrieving": "Retrieving Google Docs documents ...",
|
||||
"re-sign-in": "re-sign in",
|
||||
"another-account": "with another account"
|
||||
},
|
||||
"gdata-parsing": {
|
||||
"start-over": "« Start Over",
|
||||
"conf-pars": "Configure Parsing Options",
|
||||
"proj-name": "Project name",
|
||||
"create-proj": "Create Project »",
|
||||
"updating-preview": "Updating preview ...",
|
||||
"worksheet": "Worksheets",
|
||||
"option": "Options",
|
||||
"preview-button": "Update Preview",
|
||||
"ignore-first": "Ignore first",
|
||||
"ignore": "line(s) at beginning of file",
|
||||
"parse-next": "Parse next",
|
||||
"parse": "line(s) as column headers",
|
||||
"discard-next": "Discard initial",
|
||||
"discard": "row(s) of data",
|
||||
"limit-next": "Load at most",
|
||||
"limit": "row(s) of data",
|
||||
"store-row": "Store blank rows",
|
||||
"store-cell": "Store blank cells as nulls"
|
||||
},
|
||||
"gdata-source": {
|
||||
"alert-url": "You must specify a web address (URL) to import.",
|
||||
"type": "Type",
|
||||
"title": "Title",
|
||||
"authors": "Authors",
|
||||
"updated": "Updated"
|
||||
},
|
||||
"gdata-exporter": {
|
||||
"uploading": "Uploading...",
|
||||
"upload-error": "Upload error: ",
|
||||
"new-spreadsheet": "A new Google spreadsheet",
|
||||
"enter-spreadsheet": "Enter a name for the new Google spreadsheet",
|
||||
"new-fusion": "A new Google Fusion table",
|
||||
"enter-fusion": "Enter a name for the new Google Fusion table"
|
||||
},
|
||||
"gdata-auth": {
|
||||
"authorize-label": "OpenRefine - Authorization",
|
||||
"authorized-label": "Authorization process completed. Close this window and return to OpenRefine."
|
||||
}
|
||||
}
|
56
extensions/gdata/module/langs/translation-en.json
Normal file
56
extensions/gdata/module/langs/translation-en.json
Normal file
@ -0,0 +1,56 @@
|
||||
{
|
||||
"gdata-import": {
|
||||
"preparing": "Preparing ...",
|
||||
"creating": "Creating project ...",
|
||||
"title": "Public Documents",
|
||||
"import-by-url": "Import a <em>public</em> Google Spreadsheet or Fusion Table by its URL:",
|
||||
"next->": "Next »",
|
||||
"auth-doc": "Authorized Documents",
|
||||
"please": "Please",
|
||||
"sign-in": "sign in and authorize",
|
||||
"sign-out": "sign out",
|
||||
"access-data": "access to your Google data.",
|
||||
"retrieving": "Retrieving Google Docs documents ...",
|
||||
"re-sign-in": "re-sign in",
|
||||
"another-account": "with another account"
|
||||
},
|
||||
"gdata-parsing": {
|
||||
"start-over": "« Start Over",
|
||||
"conf-pars": "Configure Parsing Options",
|
||||
"proj-name": "Project name",
|
||||
"create-proj": "Create Project »",
|
||||
"updating-preview": "Updating preview ...",
|
||||
"worksheet": "Worksheets",
|
||||
"option": "Options",
|
||||
"preview-button": "Update Preview",
|
||||
"ignore-first": "Ignore first",
|
||||
"ignore": "line(s) at beginning of file",
|
||||
"parse-next": "Parse next",
|
||||
"parse": "line(s) as column headers",
|
||||
"discard-next": "Discard initial",
|
||||
"discard": "row(s) of data",
|
||||
"limit-next": "Load at most",
|
||||
"limit": "row(s) of data",
|
||||
"store-row": "Store blank rows",
|
||||
"store-cell": "Store blank cells as nulls"
|
||||
},
|
||||
"gdata-source": {
|
||||
"alert-url": "You must specify a web address (URL) to import.",
|
||||
"type": "Type",
|
||||
"title": "Title",
|
||||
"authors": "Authors",
|
||||
"updated": "Updated"
|
||||
},
|
||||
"gdata-exporter": {
|
||||
"uploading": "Uploading...",
|
||||
"upload-error": "Upload error: ",
|
||||
"new-spreadsheet": "A new Google spreadsheet",
|
||||
"enter-spreadsheet": "Enter a name for the new Google spreadsheet",
|
||||
"new-fusion": "A new Google Fusion table",
|
||||
"enter-fusion": "Enter a name for the new Google Fusion table"
|
||||
},
|
||||
"gdata-auth": {
|
||||
"authorize-label": "OpenRefine - Authorization",
|
||||
"authorized-label": "Authorization process completed. Close this window and return to OpenRefine."
|
||||
}
|
||||
}
|
56
extensions/gdata/module/langs/translation-it.json
Normal file
56
extensions/gdata/module/langs/translation-it.json
Normal file
@ -0,0 +1,56 @@
|
||||
{
|
||||
"gdata-import": {
|
||||
"preparing": "In preparazione ...",
|
||||
"creating": "Creazione il progetto ...",
|
||||
"title": "Documenti Pubblici",
|
||||
"import-by-url": "Importa un Google Spreadsheet o Fusion Table <em>pubblico</em> inserendo l'URL:",
|
||||
"next->": "Avanti »",
|
||||
"auth-doc": "Documenti Autorizzati",
|
||||
"please": "Per piacere",
|
||||
"sign-in": "autenticati ed autorizza",
|
||||
"sign-out": "esci",
|
||||
"access-data": "accedi ai tuoi dati Google.",
|
||||
"retrieving": "Recuperando i documenti Google Doc ...",
|
||||
"re-sign-in": "rieffettua l'autenticazione",
|
||||
"another-account": "con un altro account"
|
||||
},
|
||||
"gdata-parsing": {
|
||||
"start-over": "« Ricomincia",
|
||||
"conf-pars": "Configura le opzioni per il parsing",
|
||||
"proj-name": "Nome del progetto",
|
||||
"create-proj": "Crea un progetto »",
|
||||
"updating-preview": "Aggiornando la preview ...",
|
||||
"worksheet": "Worksheets",
|
||||
"option": "Opzioni",
|
||||
"preview-button": "Aggiorna la Preview",
|
||||
"ignore-first": "Ignora le prime",
|
||||
"ignore": "linee all'inizio del file",
|
||||
"parse-next": "Parsa le prossime",
|
||||
"parse": "linee come nomi delle colonne",
|
||||
"discard-next": "Scarta le prime",
|
||||
"discard": "righe di dati",
|
||||
"limit-next": "Carica al massimo",
|
||||
"limit": "righe di dati",
|
||||
"store-row": "Salva righe vuote",
|
||||
"store-cell": "Salva le celle vuote come 'null'"
|
||||
},
|
||||
"gdata-source": {
|
||||
"alert-url": "Devi specificare un indirizzo web (URL) per l'import.",
|
||||
"type": "Tipo",
|
||||
"title": "Titolo",
|
||||
"authors": "Autori",
|
||||
"updated": "Aggiornato"
|
||||
},
|
||||
"gdata-exporter": {
|
||||
"uploading": "Caricando...",
|
||||
"upload-error": "Errore durante il caricamento: ",
|
||||
"new-spreadsheet": "Un nuovo Google spreadsheet",
|
||||
"enter-spreadsheet": "Inserisci un nome per il nuovo Google spreadsheet",
|
||||
"new-fusion": "Una nuova tabella Google Fusion",
|
||||
"enter-fusion": "Inserisci un nome per la nuova tabella Google Fusion"
|
||||
},
|
||||
"gdata-auth": {
|
||||
"authorize-label": "OpenRefine - Autorizzazione",
|
||||
"authorized-label": "Processo di autorizzazione completato. Chiudi questa finestra e torna ad OpenRefine."
|
||||
}
|
||||
}
|
@ -1,39 +1,39 @@
|
||||
<div bind="wizardHeader" class="gdata-importing-wizard-header"><div class="grid-layout layout-tightest layout-full"><table><tr>
|
||||
<td width="1%"><button bind="startOverButton" class="button">« Start Over</button></td>
|
||||
<td width="98%">Configure Parsing Options</td>
|
||||
<td style="text-align: right;">Project name</td>
|
||||
<td width="98%" bind="gdata_conf_pars"></td>
|
||||
<td style="text-align: right;" bind="gdata_proj_name"></td>
|
||||
<td width="1%"><input class="inline" type="text" size="30" bind="projectNameInput" /></td>
|
||||
<td width="1%"><button bind="createProjectButton" class="button button-primary">Create Project »</button></td>
|
||||
<td width="1%"><button bind="createProjectButton" class="button button-primary"></button></td>
|
||||
</tr></table></div></div>
|
||||
|
||||
<div bind="dataPanel" class="gdata-importing-parsing-data-panel"></div>
|
||||
|
||||
<div bind="progressPanel" class="gdata-importing-progress-data-panel">
|
||||
<img src="images/large-spinner.gif" /> Updating preview ...
|
||||
<img src="images/large-spinner.gif" /> <span bind="gdata-updating"></span>
|
||||
</div>
|
||||
|
||||
<div bind="controlPanel" class="gdata-importing-parsing-control-panel"><div class="grid-layout layout-normal"><table>
|
||||
<tr>
|
||||
<td>Options</td>
|
||||
<td><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td bind="gdata-options"></td>
|
||||
<td><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="skipCheckbox" id="$skip"/></td>
|
||||
<td><label for="$skip">Discard initial</label></td>
|
||||
<td><label for="$skip" bind="gdata_discard_next"></label></td>
|
||||
<td><input bind="skipInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$skip">row(s) of data</label></td></tr>
|
||||
<label for="$skip" bind="gdata_discard"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" bind="gdata_limit_next"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">row(s) of data</label></td></tr>
|
||||
<label for="$limit" bind="gdata_limit"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankRowsCheckbox" id="$store-blank-rows" /></td>
|
||||
<td colspan="2"><label for="$store-blank-rows">Store blank rows</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-rows" bind="gdata_store_row"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankCellsAsNullsCheckbox" id="$store-blank-cells" /></td>
|
||||
<td colspan="2"><label for="$store-blank-cells">Store blank cells as nulls</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-cells" bind="gdata_store_cell"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div></div>
|
@ -1,51 +1,51 @@
|
||||
<div bind="wizardHeader" class="gdata-importing-wizard-header"><div class="grid-layout layout-tightest layout-full"><table><tr>
|
||||
<td width="1%"><button bind="startOverButton" class="button">« Start Over</button></td>
|
||||
<td width="98%">Configure Parsing Options</td>
|
||||
<td style="text-align: right;">Project name</td>
|
||||
<td width="1%"><button bind="startOverButton" class="button"></button></td>
|
||||
<td width="98%" bind="gdata_conf_pars"></td>
|
||||
<td style="text-align: right;" bind="gdata_proj_name"></td>
|
||||
<td width="1%"><input class="inline" type="text" size="30" bind="projectNameInput" /></td>
|
||||
<td width="1%"><button bind="createProjectButton" class="button button-primary">Create Project »</button></td>
|
||||
<td width="1%"><button bind="createProjectButton" class="button button-primary"></button></td>
|
||||
</tr></table></div></div>
|
||||
|
||||
<div bind="dataPanel" class="gdata-importing-parsing-data-panel"></div>
|
||||
|
||||
<div bind="progressPanel" class="gdata-importing-progress-data-panel">
|
||||
<img src="images/large-spinner.gif" /> Updating preview ...
|
||||
<img src="images/large-spinner.gif" /> <span bind="gdata-updating"></span>
|
||||
</div>
|
||||
|
||||
<div bind="controlPanel" class="gdata-importing-parsing-control-panel"><div class="grid-layout layout-normal"><table>
|
||||
<tr>
|
||||
<td>Worksheets</td>
|
||||
<td colspan="2">Options</td>
|
||||
<td rowspan="2"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td bind="gdata-worksheet"></td>
|
||||
<td colspan="2" bind="gdata-options"></td>
|
||||
<td rowspan="2"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="2" width="40%"><div class="grid-layout layout-tightest"><table bind="sheetRecordContainer"></table></div></td>
|
||||
|
||||
<td colspan="2"><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="ignoreCheckbox" id="$ignore" /></td>
|
||||
<td><label for="$ignore">Ignore first</label></td>
|
||||
<td><label for="$ignore" bind="gdata_ignore_first"></label></td>
|
||||
<td><input bind="ignoreInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$ignore">line(s) at beginning of file</label></td></tr>
|
||||
<label for="$ignore" bind="gdata_ignore"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="headerLinesCheckbox" id="$headers" /></td>
|
||||
<td><label for="$headers">Parse next</label></td>
|
||||
<td><label for="$headers" bind="gdata_parse_next"></label></td>
|
||||
<td><input bind="headerLinesInput" type="text" class="lightweight" size="2" value="1" />
|
||||
<label for="$headers">line(s) as column headers</label></td></tr>
|
||||
<label for="$headers" bind="gdata_parse"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="skipCheckbox" id="$skip" /></td>
|
||||
<td><label for="$skip">Discard initial</label></td>
|
||||
<td><label for="$skip" bind="gdata_discard_next"></label></td>
|
||||
<td><input bind="skipInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$skip">row(s) of data</label></td></tr>
|
||||
<label for="$skip" bind="gdata_discard"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" bind="gdata_limit_next"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">row(s) of data</label></td></tr>
|
||||
<label for="$limit" bind="gdata_limit"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankRowsCheckbox" id="$store-blank-rows" /></td>
|
||||
<td colspan="2"><label for="$store-blank-rows">Store blank rows</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-rows" bind="gdata_store_row"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankCellsAsNullsCheckbox" id="$store-blank-cells" /></td>
|
||||
<td colspan="2"><label for="$store-blank-cells">Store blank cells as nulls</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-cells" bind="gdata_store_cell"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div></div>
|
@ -41,6 +41,18 @@ Refine.GDataSourceUI.prototype.attachUI = function(body) {
|
||||
this._body.html(DOM.loadHTML("gdata", "scripts/index/import-from-gdata-form.html"));
|
||||
this._elmts = DOM.bind(this._body);
|
||||
|
||||
$('#gdata-title').text($.i18n._("gdata-import")["title"]);
|
||||
$('#gdata-import').html($.i18n._("gdata-import")["import-by-url"]);
|
||||
$('#gdata-next').html($.i18n._("gdata-import")["next->"]);
|
||||
$('#gdata-auth-doc').text($.i18n._("gdata-import")["auth-doc"]);
|
||||
$('#gdata-please').text($.i18n._("gdata-import")["please"]);
|
||||
$('#gdata-signin-btn').text($.i18n._("gdata-import")["sign-in"]);
|
||||
$('#gdata-access-data').text($.i18n._("gdata-import")["access-data"]);
|
||||
$('#gdata-retrieving').text($.i18n._("gdata-import")["retrieving"]);
|
||||
$('#gdata-retrieving').text($.i18n._("gdata-import")["sign-out"]);
|
||||
$('#gdata-resignin').text($.i18n._("gdata-import")["re-sign-in"]);
|
||||
$('#gdata-another-account').text($.i18n._("gdata-import")["another-account"]);
|
||||
|
||||
var self = this;
|
||||
this._body.find('.gdata-signin.button').click(function() {
|
||||
GdataExtension.showAuthorizationDialog(
|
||||
@ -62,7 +74,7 @@ Refine.GDataSourceUI.prototype.attachUI = function(body) {
|
||||
this._elmts.urlNextButton.click(function(evt) {
|
||||
var url = $.trim(self._elmts.urlInput[0].value);
|
||||
if (url.length === 0) {
|
||||
window.alert("You must specify a web address (URL) to import.");
|
||||
window.alert($.i18n._('gdata-source')["alert-url"]);
|
||||
} else {
|
||||
var doc = {};
|
||||
doc.docSelfLink = url;
|
||||
@ -112,10 +124,10 @@ Refine.GDataSourceUI.prototype._renderDocuments = function(o) {
|
||||
var table = $(
|
||||
'<table><tr>' +
|
||||
'<th></th>' + // starred
|
||||
'<th>Type</th>' +
|
||||
'<th>Title</th>' +
|
||||
'<th>Authors</th>' +
|
||||
'<th>Updated</th>' +
|
||||
'<th>'+$.i18n._('gdata-source')["type"]+'</th>' +
|
||||
'<th>'+$.i18n._('gdata-source')["title"]+'</th>' +
|
||||
'<th>'+$.i18n._('gdata-source')["authors"]+'</th>' +
|
||||
'<th>'+$.i18n._('gdata-source')["updated"]+'</th>' +
|
||||
'</tr></table>'
|
||||
).appendTo(this._elmts.listingContainer)[0];
|
||||
|
||||
|
@ -1,29 +1,29 @@
|
||||
<div>
|
||||
<div bind="publicDocsPanel" class="gdata-panel">
|
||||
<h1>Public Documents</h1>
|
||||
<h1 id="gdata-title"></h1>
|
||||
<div class="grid-layout layout-tighter"><table>
|
||||
<tr><td colspan="2">Import a <em>public</em> Google Spreadsheet or Fusion Table by its URL:</td></tr>
|
||||
<tr><td colspan="2" id="gdata-import"></td></tr>
|
||||
<tr bind="urlRow">
|
||||
<td><input bind="urlInput" name="download" class="default-importing-web-url" /></td>
|
||||
<td><button bind="urlNextButton" class="button button-primary" type="button">Next »</button></td>
|
||||
<td><button bind="urlNextButton" class="button button-primary" type="button" id="gdata-next"></button></td>
|
||||
</tr>
|
||||
</table></div>
|
||||
</div>
|
||||
|
||||
<div bind="authorizedDocsPanel" class="gdata-panel">
|
||||
<h1>Authorized Documents</h1>
|
||||
<h1 id="gdata-auth-doc"></h1>
|
||||
|
||||
<div bind="signinPage" class="gdata-page">
|
||||
<p>Please <button class="gdata-signin button button-primary">sign in and authorize</button>
|
||||
access to your Google data.</p>
|
||||
<p><span id="gdata-please"></span> <button class="gdata-signin button button-primary" id="gdata-signin-btn"></button>
|
||||
<span id="gdata-access-data"></p>
|
||||
</div>
|
||||
<div bind="progressPage" class="gdata-page">
|
||||
<p><img src="images/large-spinner.gif" /> Retrieving Google Docs documents ...</p>
|
||||
<p><img src="images/large-spinner.gif" /> <span id="gdata-retrieving"></span></p>
|
||||
</div>
|
||||
<div bind="listingPage" class="gdata-page grid-layout layout-normal"><table>
|
||||
<tr>
|
||||
<td width="%"><button class="gdata-signout button">sign out</button></td>
|
||||
<td><button class="gdata-signin button">re-sign in</button> with another account</td>
|
||||
<td width="%"><button class="gdata-signout button" id="gdata-signout"></button></td>
|
||||
<td><button class="gdata-signin button" id="gdata-resignin"></button> <span id="gdata-another-account"></span></td>
|
||||
</tr>
|
||||
<tr><td colspan="2"><div bind="listingContainer" class="grid-layout layout-tight gdata-document-container"></div></td></tr>
|
||||
</table></div>
|
||||
|
@ -31,6 +31,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
//Internationalization init
|
||||
var lang = navigator.language.split("-")[0]
|
||||
|| navigator.userLanguage.split("-")[0];
|
||||
var dictionary = "";
|
||||
$.ajax({
|
||||
url : "/command/gdata/load-language?",
|
||||
type : "POST",
|
||||
async : false,
|
||||
data : {
|
||||
lng : lang
|
||||
},
|
||||
success : function(data) {
|
||||
dictionary = data;
|
||||
}
|
||||
});
|
||||
$.i18n.setDictionary(dictionary);
|
||||
// End internationalization
|
||||
|
||||
Refine.GDataImportingController = function(createProjectUI) {
|
||||
this._createProjectUI = createProjectUI;
|
||||
|
||||
@ -41,11 +59,14 @@ Refine.GDataImportingController = function(createProjectUI) {
|
||||
id: "gdata-source",
|
||||
ui: new Refine.GDataSourceUI(this)
|
||||
});
|
||||
|
||||
$('#gdata-authorize').text($.i18n._('gdata-auth')["authorize-label"]);
|
||||
$('#gdata-authorized').text($.i18n._('gdata-auth')["authorized-label"]);
|
||||
};
|
||||
Refine.CreateProjectUI.controllers.push(Refine.GDataImportingController);
|
||||
|
||||
Refine.GDataImportingController.prototype.startImportingDocument = function(doc) {
|
||||
var dismiss = DialogSystem.showBusy("Preparing ...");
|
||||
var dismiss = DialogSystem.showBusy($.i18n._('gdata-import')["preparing"]);
|
||||
|
||||
var self = this;
|
||||
$.post(
|
||||
@ -143,6 +164,27 @@ Refine.GDataImportingController.prototype._showParsingPanel = function() {
|
||||
'scripts/index/gdata-parsing-panel.html'));
|
||||
this._parsingPanelElmts = DOM.bind(this._parsingPanel);
|
||||
|
||||
if(this._doc.type != 'table'){
|
||||
this._parsingPanelElmts.gdata-worksheet.html($.i18n._('gdata-parsing')["worksheet"]);
|
||||
this._parsingPanelElmts.gdata_ignore_first.html($.i18n._('gdata-parsing')["ignore-first"]);
|
||||
this._parsingPanelElmts.gdata_ignore.html($.i18n._('gdata-parsing')["ignore"]);
|
||||
this._parsingPanelElmts.gdata_parse_next.html($.i18n._('gdata-parsing')["parse-next"]);
|
||||
this._parsingPanelElmts.gdata_parse.html($.i18n._('gdata-parsing')["parse"]);
|
||||
}
|
||||
this._parsingPanelElmts.startOverButton.html($.i18n._('gdata-parsing')["start-over"]);
|
||||
this._parsingPanelElmts.gdata_conf_pars.html($.i18n._('gdata-parsing')["conf-pars"]);
|
||||
this._parsingPanelElmts.gdata_proj_name.html($.i18n._('gdata-parsing')["proj-name"]);
|
||||
this._parsingPanelElmts.createProjectButton.html($.i18n._('gdata-parsing')["create-proj"]);
|
||||
this._parsingPanelElmts.gdata-options.html($.i18n._('gdata-parsing')["option"]);
|
||||
this._parsingPanelElmts.previewButton.html($.i18n._('gdata-parsing')["preview-button"]);
|
||||
this._parsingPanelElmts.gdata-updating.html($.i18n._('gdata-parsing')["updating-preview"]);
|
||||
this._parsingPanelElmts.gdata_discard_next.html($.i18n._('gdata-parsing')["discard-next"]);
|
||||
this._parsingPanelElmts.gdata_discard.html($.i18n._('gdata-parsing')["discard"]);
|
||||
this._parsingPanelElmts.gdata_limit_next.html($.i18n._('gdata-parsing')["limit-next"]);
|
||||
this._parsingPanelElmts.gdata_limit.html($.i18n._('gdata-parsing')["limit"]);
|
||||
this._parsingPanelElmts.gdata_store_row.html($.i18n._('gdata-parsing')["store-row"]);
|
||||
this._parsingPanelElmts.gdata_store_cell.html($.i18n._('gdata-parsing')["store-cell"]);
|
||||
|
||||
if (this._parsingPanelResizer) {
|
||||
$(window).unbind('resize', this._parsingPanelResizer);
|
||||
}
|
||||
@ -376,7 +418,7 @@ Refine.GDataImportingController.prototype._createProject = function() {
|
||||
},
|
||||
1000
|
||||
);
|
||||
self._createProjectUI.showImportProgressPanel("Creating project ...", function() {
|
||||
self._createProjectUI.showImportProgressPanel($.i18n._('gdata-import')["creating"], function() {
|
||||
// stop the timed polling
|
||||
window.clearInterval(timerID);
|
||||
|
||||
|
@ -31,12 +31,27 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
var dictionary = "";
|
||||
$.ajax({
|
||||
url : "/command/gdata/load-language?",
|
||||
type : "POST",
|
||||
async : false,
|
||||
data : {
|
||||
lng : lang
|
||||
},
|
||||
success : function(data) {
|
||||
dictionary = data;
|
||||
}
|
||||
});
|
||||
$.i18n.setDictionary(dictionary);
|
||||
// End internationalization
|
||||
|
||||
(function() {
|
||||
var handleUpload = function(options, exportAllRows, onDone, prompt) {
|
||||
var doUpload = function() {
|
||||
var name = window.prompt(prompt, theProject.metadata.name);
|
||||
if (name) {
|
||||
var dismiss = DialogSystem.showBusy('Uploading...');
|
||||
var dismiss = DialogSystem.showBusy($.i18n._('gdata-exporter')["uploading"]);
|
||||
$.post(
|
||||
"command/gdata/upload",
|
||||
{
|
||||
@ -52,7 +67,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
if (o.url) {
|
||||
window.open(o.url, '_blank');
|
||||
} else {
|
||||
alert('Upload error: ' + o.message)
|
||||
alert($.i18n._('gdata-exporter')["upload-error"] + o.message)
|
||||
}
|
||||
onDone();
|
||||
},
|
||||
@ -70,16 +85,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
CustomTabularExporterDialog.uploadTargets.push({
|
||||
id: 'gdata/google-spreadsheet',
|
||||
label: 'A new Google spreadsheet',
|
||||
label: $.i18n._('gdata-exporter')["new-spreadsheet"],
|
||||
handler: function(options, exportAllRows, onDone) {
|
||||
handleUpload(options, exportAllRows, onDone, 'Enter a name for the new Google spreadsheet');
|
||||
handleUpload(options, exportAllRows, onDone, $.i18n._('gdata-exporter')["enter-spreadsheet"]);
|
||||
}
|
||||
});
|
||||
CustomTabularExporterDialog.uploadTargets.push({
|
||||
id: 'gdata/fusion-table',
|
||||
label: 'A new Google Fusion table',
|
||||
label: $.i18n._('gdata-exporter')["new-fusion"],
|
||||
handler: function(options, exportAllRows, onDone) {
|
||||
handleUpload(options, exportAllRows, onDone, 'Enter a name for the new Google Fusion table');
|
||||
handleUpload(options, exportAllRows, onDone, $.i18n._('gdata-exporter')["enter-fusion"]);
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
@ -0,0 +1,74 @@
|
||||
|
||||
package com.google.refine.extension.gdata.commands;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.google.refine.ProjectManager;
|
||||
import com.google.refine.commands.Command;
|
||||
|
||||
public class LoadLanguageCommand extends Command {
|
||||
|
||||
public LoadLanguageCommand() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
doPost(request, response);
|
||||
}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
String rawDirectoryFile = request.getSession().getServletContext()
|
||||
.getRealPath("extensions/gdata/module/langs/");
|
||||
String cleanedDirectory = rawDirectoryFile.replace("main" + File.separator + "webapp" + File.separator, "");
|
||||
|
||||
BufferedReader reader = null;
|
||||
String param = null;
|
||||
try {
|
||||
param = (String) ProjectManager.singleton.getPreferenceStore().get("userLang");
|
||||
} catch (NullPointerException e) {
|
||||
}
|
||||
if (param == null) param = request.getParameter("lng");
|
||||
|
||||
String[] langs = param.split(" ");
|
||||
try {
|
||||
String file = cleanedDirectory + File.separator + "translation-" + langs[0] + ".json";
|
||||
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
|
||||
} catch (FileNotFoundException e1) {
|
||||
try {
|
||||
String file = cleanedDirectory + File.separator + "translation-default.json";
|
||||
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
|
||||
} catch (FileNotFoundException e3) {
|
||||
e3.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
String line = null;
|
||||
String message = new String();
|
||||
if (reader != null) {
|
||||
while ((line = reader.readLine()) != null) {
|
||||
// buffer.append(line);
|
||||
message += line + System.getProperty("line.separator");
|
||||
}
|
||||
}
|
||||
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json");
|
||||
response.getWriter().println(message);
|
||||
response.getWriter().flush();
|
||||
response.getWriter().close();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
|
||||
package com.google.refine.commands.lang;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.google.refine.ProjectManager;
|
||||
import com.google.refine.commands.Command;
|
||||
|
||||
public class LoadLanguageCommand extends Command {
|
||||
|
||||
public LoadLanguageCommand() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
doPost(request, response);
|
||||
}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
String rawDirectoryFile = request.getSession().getServletContext().getRealPath("webapp/modules/langs/");
|
||||
String cleanedDirectory = rawDirectoryFile.replace("main" + File.separator + "webapp" + File.separator, "main"
|
||||
+ File.separator);
|
||||
|
||||
BufferedReader reader = null;
|
||||
String param = null;
|
||||
try {
|
||||
param = (String) ProjectManager.singleton.getPreferenceStore().get("userLang");
|
||||
} catch (NullPointerException e) {
|
||||
}
|
||||
if (param == null) param = request.getParameter("lng");
|
||||
|
||||
String[] langs = param.split(" ");
|
||||
try {
|
||||
String file = cleanedDirectory + File.separator + "translation-" + langs[0] + ".json";
|
||||
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
|
||||
} catch (FileNotFoundException e1) {
|
||||
try {
|
||||
String file = cleanedDirectory + File.separator + "translation-default.json";
|
||||
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
|
||||
} catch (FileNotFoundException e3) {
|
||||
e3.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
String line = null;
|
||||
String message = new String();
|
||||
if (reader != null) {
|
||||
while ((line = reader.readLine()) != null) {
|
||||
// buffer.append(line);
|
||||
message += line + System.getProperty("line.separator");
|
||||
}
|
||||
}
|
||||
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/json");
|
||||
response.getWriter().println(message);
|
||||
response.getWriter().flush();
|
||||
response.getWriter().close();
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
|
||||
package com.google.refine.commands.lang;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.google.refine.ProjectManager;
|
||||
import com.google.refine.commands.Command;
|
||||
import com.google.refine.preference.PreferenceStore;
|
||||
|
||||
public class SetLanguageCommand extends Command {
|
||||
|
||||
public SetLanguageCommand() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
doPost(request, response);
|
||||
}
|
||||
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
String lang = request.getParameter("lng");
|
||||
PreferenceStore pref = ProjectManager.singleton.getPreferenceStore();
|
||||
|
||||
pref.put("userLang", lang);
|
||||
}
|
||||
|
||||
}
|
@ -98,6 +98,9 @@ function registerCommands() {
|
||||
RS.registerCommand(module, "transpose-rows-into-columns", new Packages.com.google.refine.commands.cell.TransposeRowsIntoColumnsCommand());
|
||||
RS.registerCommand(module, "key-value-columnize", new Packages.com.google.refine.commands.cell.KeyValueColumnizeCommand());
|
||||
|
||||
RS.registerCommand(module, "load-language", Packages.com.google.refine.commands.lang.LoadLanguageCommand());
|
||||
RS.registerCommand(module, "set-language", Packages.com.google.refine.commands.lang.SetLanguageCommand());
|
||||
|
||||
RS.registerCommand(module, "add-column", new Packages.com.google.refine.commands.column.AddColumnCommand());
|
||||
RS.registerCommand(module, "add-column-by-fetching-urls", new Packages.com.google.refine.commands.column.AddColumnByFetchingURLsCommand());
|
||||
RS.registerCommand(module, "remove-column", new Packages.com.google.refine.commands.column.RemoveColumnCommand());
|
||||
@ -309,6 +312,7 @@ function init() {
|
||||
"externals/jquery.eventstack-0.3.js",
|
||||
"externals/jquery-ui/jquery-ui-1.8.20.custom.min.js",
|
||||
"externals/date.js",
|
||||
"externals/jquery.i18n.js",
|
||||
|
||||
"externals/CFInstall.min.js",
|
||||
"scripts/chrome-frame.js",
|
||||
@ -328,6 +332,7 @@ function init() {
|
||||
"scripts/index/create-project-ui.js",
|
||||
"scripts/index/open-project-ui.js",
|
||||
"scripts/index/import-project-ui.js",
|
||||
"scripts/index/lang-settings-ui.js",
|
||||
|
||||
"scripts/index/default-importing-controller/controller.js",
|
||||
"scripts/index/default-importing-controller/file-selection-panel.js",
|
||||
@ -384,6 +389,7 @@ function init() {
|
||||
"externals/jquery-ui/jquery-ui-1.8.20.custom.min.js",
|
||||
"externals/imgareaselect/jquery.imgareaselect.js",
|
||||
"externals/date.js",
|
||||
"externals/jquery.i18n.js",
|
||||
|
||||
"externals/CFInstall.min.js",
|
||||
"scripts/chrome-frame.js",
|
||||
@ -489,7 +495,8 @@ function init() {
|
||||
"externals/jquery-ui/jquery-ui-1.8.20.custom.min.js",
|
||||
"externals/imgareaselect/jquery.imgareaselect.js",
|
||||
"externals/date.js",
|
||||
"scripts/preferences.js"
|
||||
"scripts/preferences.js",
|
||||
"externals/jquery.i18n.js",
|
||||
]
|
||||
);
|
||||
ClientSideResourceManager.addPaths(
|
||||
|
2
main/webapp/modules/core/externals/jquery.i18n.js
vendored
Normal file
2
main/webapp/modules/core/externals/jquery.i18n.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
(function(f){f.i18n={dict:null,plural:null,setDictionary:function(a){null===this.dict?this.dict=a:f.extend(this.dict,a)},setPlural:function(a){this.plural=a},_p:function(a,d,e){var c=this.dict[a],b=[];b.push(e);if(void 0===c||null===this.plural)return this.printf(1<e?d:a,b);a=this.plural.replace(/n%/g,e+"%");eval(a);return this.printf(c[plural],b)},_:function(a,d){var e=a;this.dict&&this.dict[a]&&(e=this.dict[a]);return this.printf(e,d)},printf:function(a,d){if(!d)return a;for(var e="",c=/%(\d+)\$s/g,
|
||||
b=c.exec(a);b;){var f=parseInt(b[1],10)-1;a=a.replace("%"+b[1]+"$s",d[f]);b=c.exec(a)}c=a.split("%s");if(1<c.length)for(b=0;b<d.length;b++)0<c[b].length&&c[b].lastIndexOf("%")==c[b].length-1&&(c[b]+="s"+c.splice(b+1,1)[0]),e+=c[b]+d[b];return e+c[c.length-1]}};f.fn._t=function(a,d){return f(this).text(f.i18n._(a,d))}})(jQuery);
|
@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<body>
|
||||
<div id="header">
|
||||
<img alt="OpenRefine" src="images/logo-openrefine-30.png" width="129" height="29" />
|
||||
<span id="slogan">A power tool for working with messy data.</span>
|
||||
<span id="slogan"></span>
|
||||
</div>
|
||||
|
||||
<div id="left-panel" class="main-layout-panel"><div id="left-panel-body">
|
||||
@ -58,8 +58,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<div id="openrefine-version"></div>
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href="https://github.com/OpenRefine/OpenRefine/wiki/Documentation-For-Users">Help</a></li>
|
||||
<li><a href="about.html">About</a></li>
|
||||
<li><a href="https://github.com/OpenRefine/OpenRefine/wiki/Documentation-For-Users" id="or-index-help"></a></li>
|
||||
<li><a href="about.html" id="or-index-about"></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div></div> <!-- left-panel -->
|
||||
@ -68,9 +68,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
</div></div> <!-- right-panel -->
|
||||
|
||||
<div id="no-project-message" class="message" style="display: none;">
|
||||
No existing project. Select "Create Project" on the left to create a new project.<br/>
|
||||
If you have no data to work with, try these
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Sample-Datasets" target="_blank">sample data sets</a>.
|
||||
<span id="or-index-noProj"></span><br/>
|
||||
<span id="or-index-try"></span>
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Sample-Datasets" target="_blank" id="or-index-sample"></a>.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
</div>
|
||||
|
||||
<div id="body-info">
|
||||
<div id="loading-message"><img src="images/large-spinner.gif" /> Loading...</div>
|
||||
<div id="loading-message"><img src="images/large-spinner.gif" /> <span id="or-proj-starting"></span></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -47,24 +47,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<div id="header">
|
||||
<a id="app-home-button" href="./"><img alt="OpenRefine" src="images/logo-openrefine-30.png" width="129" height="29" /></a>
|
||||
<div id="project-title">
|
||||
<span id="project-name-button" class="app-path-section" title="Click to rename project"></span>
|
||||
<a id="project-permalink-button" href="javascript:{}" class="secondary">Permalink</a>
|
||||
<span id="project-name-button" class="app-path-section"></span>
|
||||
<a id="project-permalink-button" href="javascript:{}" class="secondary"></a>
|
||||
</div>
|
||||
<div id="project-controls">
|
||||
<a href="./" class="button" target="_blank">Open...</a>
|
||||
<a class="button" bind="exportButton" id="export-button" href="#export"><span class="button-menu">Export</span></a>
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Documentation-For-Users" target="_blank" class="button">Help</a>
|
||||
<a href="./" class="button" target="_blank"><span id="or-proj-open"></span></a>
|
||||
<a class="button" bind="exportButton" id="export-button" href="#export"><span class="button-menu" id="or-proj-export"></span></a>
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Documentation-For-Users" target="_blank" class="button"><span id="or-proj-help"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="loading-message"><img src="images/large-spinner.gif" /> Starting up...</div>
|
||||
<div id="loading-message"><img src="images/large-spinner.gif" /> <span id="or-proj-starting"></span></div>
|
||||
|
||||
<div id="body">
|
||||
<div bind="leftPanelDiv" id="left-panel">
|
||||
<div bind="leftPanelTabs" class="refine-tabs">
|
||||
<ul>
|
||||
<li><a href="#refine-tabs-facets">Facet / Filter</a></li>
|
||||
<li><a href="#refine-tabs-history" bind="historyTabHeader">Undo / Redo</a></li>
|
||||
<li><a href="#refine-tabs-facets" id="or-proj-facFil"></a></li>
|
||||
<li><a href="#refine-tabs-history" bind="historyTabHeader" id="or-proj-undoRedo"></a></li>
|
||||
</ul>
|
||||
<div id="refine-tabs-facets" bind="facetPanelDiv" id="facet-panel"></div>
|
||||
<div id="refine-tabs-history" bind="historyPanelDiv" id="history-panel"></div>
|
||||
@ -76,7 +76,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<!-- row/record counts -->
|
||||
</div>
|
||||
<div bind="extensionBarDiv" id="extension-bar">
|
||||
Extensions: <span bind="menuContainer" id="extension-bar-menu-container"></span>
|
||||
<span id="or-proj-ext"></span> <span bind="menuContainer" id="extension-bar-menu-container"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div bind="viewPanelDiv" id="view-panel"></div>
|
||||
|
@ -4,40 +4,38 @@
|
||||
<div class="grid-layout layout-normal layout-full"><table>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
This feature helps you find groups of different cell values that might be
|
||||
alternative representations of the same thing. For example, the two strings
|
||||
"New York" and "new york" are very likely to refer to the same concept and
|
||||
just have capitalization differences, and "Gödel" and "Godel" probably refer
|
||||
to the same person.
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Clustering" target="_blank">Find out more ...</a>
|
||||
<span bind="or_dialog_descr"></span>
|
||||
<a href="https://github.com/OpenRefine/OpenRefine/wiki/Clustering" target="_blank" bind="or_dialog_findMore"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Method <select bind="methodSelector">
|
||||
<option selected="true">key collision</option>
|
||||
<option>nearest neighbor</option>
|
||||
<span bind="or_dialog_method"></span><select bind="methodSelector">
|
||||
<option selected="true" bind="or_dialog_keyCollision"></option>
|
||||
<option bind="or_dialog_neighbor"></option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<div class="binning-controls">Keying Function <select bind="keyingFunctionSelector">
|
||||
<option selected="true">fingerprint</option>
|
||||
<option>ngram-fingerprint</option>
|
||||
<option>metaphone3</option>
|
||||
<option>cologne-phonetic</option>
|
||||
<div class="binning-controls"><span bind="or_dialog_keying"></span>
|
||||
<select bind="keyingFunctionSelector">
|
||||
<option selected="true" bind="or_dialog_fingerprint"></option>
|
||||
<option bind="or_dialog_ngram"></option>
|
||||
<option bind="or_dialog_metaphone"></option>
|
||||
<option bind="or_dialog_phonetic"></option>
|
||||
</select></div>
|
||||
<div class="knn-controls hidden">Distance Function <select bind="distanceFunctionSelector">
|
||||
<option selected="true">levenshtein</option>
|
||||
<option>PPM</option>
|
||||
<div class="knn-controls hidden"><span bind="or_dialog_distance"></span>
|
||||
<select bind="distanceFunctionSelector">
|
||||
<option selected="true" bind="or_dialog_leven"></option>
|
||||
<option bind="or_dialog_ppm"></option>
|
||||
</select></div>
|
||||
</td>
|
||||
<td>
|
||||
<div id="ngram-fingerprint-params" class="function-params hidden">
|
||||
Ngram Size <input type="text" value="2" bind="ngramSize" name="ngram-size" size="2" class="param" datatype="int">
|
||||
<span bind="or_dialog_ngramSize"></span><input type="text" value="2" bind="ngramSize" name="ngram-size" size="2" class="param" datatype="int">
|
||||
</div>
|
||||
<div class="knn-controls hidden">
|
||||
<span style="margin-right: 1em">Radius <input type="text" value="1.0" bind="radius" name="radius" size="2" class="param" datatype="float"></span>
|
||||
<span>Block Chars <input type="text" value="6" bind="ngramBlock" name="blocking-ngram-size" size="2" class="param" datatype="int"></span>
|
||||
<span style="margin-right: 1em"><span bind="or_dialog_radius"></span><input type="text" value="1.0" bind="radius" name="radius" size="2" class="param" datatype="float"></span>
|
||||
<span><span bind="or_dialog_blockChars"></span><input type="text" value="6" bind="ngramBlock" name="blocking-ngram-size" size="2" class="param" datatype="int"></span>
|
||||
</div>
|
||||
</td>
|
||||
<td bind="resultSummary" style="text-align:right;">
|
||||
@ -54,13 +52,13 @@
|
||||
<div class="dialog-footer" bind="dialogFooter">
|
||||
<table width="100%"><tr>
|
||||
<td class="left" style="text-align: left">
|
||||
<button class="button" bind="selectAllButton">Select All</button>
|
||||
<button class="button" bind="deselectAllButton">Deselect All</button>
|
||||
<button class="button" bind="selectAllButton"></button>
|
||||
<button class="button" bind="deselectAllButton"></button>
|
||||
</td>
|
||||
<td class="right" style="text-align: right">
|
||||
<button class="button button-primary" bind="applyReClusterButton">Merge Selected & Re-Cluster</button>
|
||||
<button class="button" bind="applyCloseButton">Merge Selected & Close</button>
|
||||
<button class="button" bind="closeButton">Close</button>
|
||||
<button class="button button-primary" bind="applyReClusterButton"></button>
|
||||
<button class="button" bind="applyCloseButton"></button>
|
||||
<button class="button" bind="closeButton"></button>
|
||||
</td>
|
||||
</tr></table>
|
||||
</div>
|
||||
|
@ -49,23 +49,45 @@ ClusteringDialog.prototype._createDialog = function() {
|
||||
var dialog = $(DOM.loadHTML("core", "scripts/dialogs/clustering-dialog.html"));
|
||||
|
||||
this._elmts = DOM.bind(dialog);
|
||||
this._elmts.dialogHeader.text('Cluster & Edit column "' + this._columnName + '"');
|
||||
|
||||
this._elmts.dialogHeader.text($.i18n._('core-dialogs')["cluster-edit"]+' "' + this._columnName + '"');
|
||||
|
||||
this._elmts.or_dialog_descr.html($.i18n._('core-dialogs')["cluster-descr"]);
|
||||
this._elmts.or_dialog_findMore.html($.i18n._('core-dialogs')["find-more"]);
|
||||
this._elmts.or_dialog_method.html($.i18n._('core-dialogs')["method"]);
|
||||
this._elmts.or_dialog_keyCollision.html($.i18n._('core-dialogs')["key-collision"]);
|
||||
this._elmts.or_dialog_neighbor.html($.i18n._('core-dialogs')["nearest-neighbor"]);
|
||||
this._elmts.or_dialog_keying.html($.i18n._('core-dialogs')["keying-function"]);
|
||||
this._elmts.or_dialog_fingerprint.html($.i18n._('core-dialogs')["fingerprint"]);
|
||||
this._elmts.or_dialog_ngram.html($.i18n._('core-dialogs')["ngram"]);
|
||||
this._elmts.or_dialog_metaphone.html($.i18n._('core-dialogs')["metaphone"]);
|
||||
this._elmts.or_dialog_phonetic.html($.i18n._('core-dialogs')["phonetic"]);
|
||||
this._elmts.or_dialog_distance.html($.i18n._('core-dialogs')["distance-fun"]);
|
||||
this._elmts.or_dialog_leven.html($.i18n._('core-dialogs')["leven"]);
|
||||
this._elmts.or_dialog_ppm.html($.i18n._('core-dialogs')["ppm"]);
|
||||
this._elmts.or_dialog_ngramSize.html($.i18n._('core-dialogs')["ngram-size"]);
|
||||
this._elmts.or_dialog_radius.html($.i18n._('core-dialogs')["ngram-radius"]);
|
||||
this._elmts.or_dialog_blockChars.html($.i18n._('core-dialogs')["block-chars"]);
|
||||
this._elmts.selectAllButton.html($.i18n._('core-buttons')["select-all"]);
|
||||
this._elmts.deselectAllButton.html($.i18n._('core-buttons')["unselect-all"]);
|
||||
this._elmts.applyReClusterButton.html($.i18n._('core-buttons')["merge-cluster"]);
|
||||
this._elmts.applyCloseButton.html($.i18n._('core-buttons')["merge-close"]);
|
||||
this._elmts.closeButton.html($.i18n._('core-buttons')["close"]);
|
||||
|
||||
this._elmts.methodSelector.change(function() {
|
||||
var selection = $(this).find("option:selected").text();
|
||||
if (selection == 'key collision') {
|
||||
if (selection == $.i18n._('core-dialogs')["key-collision"]) {
|
||||
dialog.find(".binning-controls").show();
|
||||
dialog.find(".knn-controls").hide();
|
||||
self._method = "binning";
|
||||
self._elmts.keyingFunctionSelector.change();
|
||||
} else if (selection === 'nearest neighbor') {
|
||||
} else if (selection === $.i18n._('core-dialogs')["nearest-neighbor"]) {
|
||||
dialog.find(".binning-controls").hide();
|
||||
dialog.find(".knn-controls").show();
|
||||
self._method = "knn";
|
||||
self._elmts.distanceFunctionSelector.change();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var changer = function() {
|
||||
self._function = $(this).find("option:selected").text();
|
||||
$(".function-params").hide();
|
||||
@ -116,11 +138,11 @@ ClusteringDialog.prototype._renderTable = function(clusters) {
|
||||
|
||||
var trHead = table.insertRow(table.rows.length);
|
||||
trHead.className = "header";
|
||||
$(trHead.insertCell(0)).text("Cluster Size");
|
||||
$(trHead.insertCell(1)).text("Row Count");
|
||||
$(trHead.insertCell(2)).text("Values in Cluster");
|
||||
$(trHead.insertCell(3)).text("Merge?");
|
||||
$(trHead.insertCell(4)).text("New Cell Value");
|
||||
$(trHead.insertCell(0)).text($.i18n._('core-dialogs')["cluster-size"]);
|
||||
$(trHead.insertCell(1)).text($.i18n._('core-dialogs')["row-count"]);
|
||||
$(trHead.insertCell(2)).text($.i18n._('core-dialogs')["cluster-values"]);
|
||||
$(trHead.insertCell(3)).text($.i18n._('core-dialogs')["merge"]);
|
||||
$(trHead.insertCell(4)).text($.i18n._('core-dialogs')["new-cell-val"]);
|
||||
|
||||
var renderCluster = function(cluster) {
|
||||
var tr = table.insertRow(table.rows.length);
|
||||
@ -159,7 +181,7 @@ ClusteringDialog.prototype._renderTable = function(clusters) {
|
||||
for (var c = 0; c < choices.length; c++) {
|
||||
var choice = choices[c];
|
||||
var li = $('<li></li>');
|
||||
$('<a href="javascript:{}" title="Use this value"></a>').text(choice.v).click(onClick).appendTo(li);
|
||||
$('<a href="javascript:{}" title='+$.i18n._('core-dialogs')["use-this-val"]+'></a>').text(choice.v).click(onClick).appendTo(li);
|
||||
$('<span></span>').text("(" + choice.c + " rows)").addClass("clustering-dialog-entry-count").appendTo(li);
|
||||
rowCount += choice.c;
|
||||
facet.s[c] = {
|
||||
@ -181,7 +203,7 @@ ClusteringDialog.prototype._renderTable = function(clusters) {
|
||||
|
||||
var div = $('<div></div>').addClass("clustering-dialog-value-focus");
|
||||
|
||||
var browseLink = $('<a target="_new" title="Browse only these values">Browse this cluster</a>')
|
||||
var browseLink = $('<a target="_new" title="'+$.i18n._('core-dialogs')["browse-only-these"]+'">'+$.i18n._('core-dialogs')["browse-this-cluster"]+'</a>')
|
||||
.addClass("clustering-dialog-browse-focus")
|
||||
.attr("href",url)
|
||||
.css("visibility","hidden")
|
||||
@ -217,13 +239,13 @@ ClusteringDialog.prototype._renderTable = function(clusters) {
|
||||
|
||||
this._elmts.resultSummary.html(
|
||||
(clusters.length === this._clusters.length) ?
|
||||
("<b>" + this._clusters.length + "</b> cluster" + ((this._clusters.length != 1) ? "s" : "") + " found") :
|
||||
("<b>" + clusters.length + "</b> cluster" + ((clusters.length != 1) ? "s" : "") + " filtered from <b>" + this._clusters.length + "</b> total")
|
||||
("<b>" + this._clusters.length + "</b> cluster" + ((this._clusters.length != 1) ? "s" : "") + " "+$.i18n._('core-dialogs')["found"]) :
|
||||
("<b>" + clusters.length + "</b> cluster" + ((clusters.length != 1) ? "s" : "") + " "+$.i18n._('core-dialogs')["filtered-from"]+ this._clusters.length +$.i18n._('core-dialogs')["from-total"] )
|
||||
);
|
||||
|
||||
} else {
|
||||
container.html(
|
||||
'<div style="margin: 2em;"><div style="font-size: 130%; color: #333;">No clusters were found with the selected method</div><div style="padding-top: 1em; font-size: 110%; color: #888;">Try selecting another method above or changing its parameters</div></div>'
|
||||
'<div style="margin: 2em;"><div style="font-size: 130%; color: #333;">'+$.i18n._('core-dialogs')["no-cluster-found"]+'</div><div style="padding-top: 1em; font-size: 110%; color: #888;">'+$.i18n._('core-dialogs')["try-another-method"]+'</div></div>'
|
||||
);
|
||||
}
|
||||
};
|
||||
@ -232,7 +254,7 @@ ClusteringDialog.prototype._cluster = function() {
|
||||
var self = this;
|
||||
|
||||
var container = this._elmts.tableContainer.html(
|
||||
'<div style="margin: 1em; font-size: 130%; color: #888;">Clustering... <img src="images/small-spinner.gif"></div>'
|
||||
'<div style="margin: 1em; font-size: 130%; color: #888;">'+$.i18n._('core-dialogs')["clustering"]+'<img src="images/small-spinner.gif"></div>'
|
||||
);
|
||||
|
||||
this._elmts.resultSummary.empty();
|
||||
@ -346,7 +368,7 @@ ClusteringDialog.prototype._apply = function(onDone) {
|
||||
}
|
||||
);
|
||||
} else {
|
||||
alert("You must check some Edit? checkboxes for your edits to be applied.");
|
||||
alert($.i18n._('core-dialogs')["warning-check-boxes"]);
|
||||
}
|
||||
};
|
||||
|
||||
@ -386,10 +408,10 @@ ClusteringDialog.prototype._resetFacets = function() {
|
||||
}
|
||||
this._facets = [];
|
||||
|
||||
this._createFacet("# Choices in Cluster", "size");
|
||||
this._createFacet("# Rows in Cluster", "rowCount");
|
||||
this._createFacet("Average Length of Choices", "avg");
|
||||
this._createFacet("Length Variance of Choices", "variance");
|
||||
this._createFacet($.i18n._('core-dialogs')["choices-in-cluster"], "size");
|
||||
this._createFacet($.i18n._('core-dialogs')["rows-in-cluster"], "rowCount");
|
||||
this._createFacet($.i18n._('core-dialogs')["choice-avg-length"], "avg");
|
||||
this._createFacet($.i18n._('core-dialogs')["choice-var-length"], "variance");
|
||||
};
|
||||
|
||||
ClusteringDialog.prototype._createFacet = function(title, property) {
|
||||
|
@ -1,9 +1,9 @@
|
||||
<div class="dialog-frame" style="width: 600px;">
|
||||
<div class="dialog-header" bind="dialogHeader">Re-order / Remove Columns</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody"><div class="grid-layout grid-layout-for-ui layout-normal layout-full"><table>
|
||||
<tr>
|
||||
<td>Drag columns to re-order</td>
|
||||
<td>Drop columns here to remove</td>
|
||||
<td bind="or_dialog_dragCol"></td>
|
||||
<td bind="or_dialog_dropCol"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%"><div class="column-reordering-dialog-column-container" bind="columnContainer"></div></td>
|
||||
@ -11,7 +11,7 @@
|
||||
</tr>
|
||||
</table></div></div>
|
||||
<div class="dialog-footer" bind="dialogFooter">
|
||||
<button class="button" bind="okButton"> OK </button>
|
||||
<button class="button" bind="cancelButton">Cancel</button>
|
||||
<button class="button" bind="okButton"></button>
|
||||
<button class="button" bind="cancelButton"></button>
|
||||
</div>
|
||||
</div>
|
@ -39,9 +39,16 @@ ColumnReorderingDialog.prototype._createDialog = function() {
|
||||
var self = this;
|
||||
var dialog = $(DOM.loadHTML("core", "scripts/dialogs/column-reordering-dialog.html"));
|
||||
this._elmts = DOM.bind(dialog);
|
||||
|
||||
this._elmts.cancelButton.click(function() { self._dismiss(); });
|
||||
this._elmts.okButton.click(function() { self._commit(); });
|
||||
|
||||
this._elmts.dialogHeader.html($.i18n._('core-dialogs')["reorder-column"]);
|
||||
this._elmts.or_dialog_dragCol.html($.i18n._('core-dialogs')["drag-column"]);
|
||||
this._elmts.or_dialog_dropCol.html($.i18n._('core-dialogs')["drop-column"]);
|
||||
this._elmts.okButton.html($.i18n._('core-buttons')["ok"]);
|
||||
this._elmts.cancelButton.html($.i18n._('core-buttons')["cancel"]);
|
||||
|
||||
this._level = DialogSystem.showDialog(dialog);
|
||||
|
||||
for (var i = 0; i < theProject.columnModel.columns.length; i++) {
|
||||
|
@ -1,91 +1,91 @@
|
||||
<div class="dialog-frame" style="width: 800px;">
|
||||
<div class="dialog-header" bind="dialogHeader">Custom Tabular Exporter</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<div id="custom-tabular-exporter-tabs" class="refine-tabs">
|
||||
<ul>
|
||||
<li><a href="#custom-tabular-exporter-tabs-content">Content</a></li>
|
||||
<li><a href="#custom-tabular-exporter-tabs-download">Download</a></li>
|
||||
<li bind="uploadTabHeader"><a href="#custom-tabular-exporter-tabs-upload">Upload</a></li>
|
||||
<li><a href="#custom-tabular-exporter-tabs-code">Option Code</a></li>
|
||||
<li><a href="#custom-tabular-exporter-tabs-content" bind="or_dialog_content"></a></li>
|
||||
<li><a href="#custom-tabular-exporter-tabs-download" bind="or_dialog_download"></a></li>
|
||||
<li bind="uploadTabHeader"><a href="#custom-tabular-exporter-tabs-upload" bind="or_dialog_upload"></a></li>
|
||||
<li><a href="#custom-tabular-exporter-tabs-code" bind="or_dialog_optCode"></a></li>
|
||||
</ul>
|
||||
|
||||
<div id="custom-tabular-exporter-tabs-content"><div class="grid-layout grid-layout-for-ui layout-normal layout-full"><table>
|
||||
<tr>
|
||||
<td>Select and Order Columns to Export</td>
|
||||
<td>Options for <span bind="columnNameSpan" class="custom-tabular-exporter-selected-column"></span></td>
|
||||
<td bind="or_dialog_selAndOrd"></td>
|
||||
<td><span bind="or_dialog_optFor"></span><span bind="columnNameSpan" class="custom-tabular-exporter-selected-column"></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%"><div bind="columnList" class="custom-tabular-exporter-columns"></div></td>
|
||||
<td><div bind="columnOptionPane" class="custom-tabular-exporter-column-options"><div class="grid-layout layout-normal"><table>
|
||||
<tr><td colspan="2">For reconciled cells, output</td></tr>
|
||||
<tr><td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td colspan="2" bind="or_dialog_forReconCell"></td></tr>
|
||||
<tr><td><div class="grid-layout layout-tightest" ><table>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-recon" value="entity-name" id="$custom-exporter-recon-entity-name" /></td>
|
||||
<td><label for="$custom-exporter-recon-entity-name">Matched entity's name</label></td>
|
||||
<td><label for="$custom-exporter-recon-entity-name" bind="or_dialog_matchedName"></label></td>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-recon" value="cell-content" id="$custom-exporter-recon-cell-content" /></td>
|
||||
<td><label for="$custom-exporter-recon-cell-content">Cell's content</label></td>
|
||||
<td><label for="$custom-exporter-recon-cell-content" bind="or_dialog_cellCont"></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-recon" value="entity-id" id="$custom-exporter-recon-entity-id" /></td>
|
||||
<td><label for="$custom-exporter-recon-entity-id">Matched entity's ID</label></td>
|
||||
<td><label for="$custom-exporter-recon-entity-id" bind="or_dialog_matchedId"></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="checkbox" bind="reconLinkCheckbox" id="$custom-exporter-recon-link" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-recon-link">Link to matched entity's page</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-recon-link" bind="or_dialog_linkMatch"></label></td>
|
||||
<td width="1%"><input type="checkbox" bind="reconBlankUnmatchedCheckbox" id="$custom-exporter-recon-blank-unmatched" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-recon-blank-unmatched">Output nothing for unmatched cells</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-recon-blank-unmatched" bind="or_dialog_outNotUnMatch"></label></td>
|
||||
</tr>
|
||||
</table></td></tr>
|
||||
|
||||
<tr><td colspan="2">For date/time values, use format</td></tr>
|
||||
<tr><td colspan="2" bind="or_dialog_dateFormat"></td></tr>
|
||||
<tr><td><div class="grid-layout layout-tightest"><table>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-date" value="iso-8601" id="$custom-exporter-date-iso" /></td>
|
||||
<td colspan="3"><label for="$custom-exporter-date-iso">ISO 8601, e.g., 2011-08-24T18:36:10+08:00</label></td>
|
||||
<td colspan="3"><label for="$custom-exporter-date-iso" bind="or_dialog_dateIso"></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-date" value="locale-short" id="$custom-exporter-date-locale-short" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-short">Short locale format</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-short" bind="or_dialog_shortFormat"></label></td>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-date" value="locale-medium" id="$custom-exporter-date-locale-medium" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-medium">Medium locale format</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-medium" bind="or_dialog_mediumFormat"></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-date" value="locale-long" id="$custom-exporter-date-locale-long" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-long">Long locale format</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-long" bind="or_dialog_longFormat"></label></td>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-date" value="locale-full" id="$custom-exporter-date-locale-full" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-full">Full locale format</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-locale-full" bind="or_dialog_fullFormat"></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-date" value="custom" id="$custom-exporter-date-custom" /></td>
|
||||
<td colspan="3">
|
||||
<label for="$custom-exporter-date-custom">Custom</label> <input size="35" class="lightweight" bind="dateCustomInput" />
|
||||
<a href="" target="_blank">Help</a>
|
||||
<label for="$custom-exporter-date-custom" bind="or_dialog_custom"></label> <input size="35" class="lightweight" bind="dateCustomInput" />
|
||||
<a href="" target="_blank" bind="or_dialog_help"></a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="checkbox" bind="dateLocalTimeZoneCheckbox" id="$custom-exporter-date-local-timezone" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-local-timezone">Use local time zone</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-local-timezone" bind="or_dialog_localTime"></label></td>
|
||||
<td width="1%"><input type="checkbox" bind="omitTimeCheckbox" id="$custom-exporter-date-omit-time" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-omit-time">Omit time</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-date-omit-time" bind="or_dialog_omitTime"></label></td>
|
||||
</tr>
|
||||
</table></td></tr>
|
||||
</table></div></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<button class="button" bind="selectAllButton">Select All</button>
|
||||
<button class="button" bind="deselectAllButton">De-select All</button>
|
||||
<button class="button" bind="selectAllButton"></button>
|
||||
<button class="button" bind="deselectAllButton"></button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td width="1%"><input type="checkbox" bind="outputColumnHeadersCheckbox" checked id="$custom-exporter-output-column-headers" /></td>
|
||||
<td width="25%"><label for="$custom-exporter-output-column-headers">Output column headers</label></td>
|
||||
<td width="25%"><label for="$custom-exporter-output-column-headers" bind="or_dialog_outColHeader"></label></td>
|
||||
<td width="1%"><input type="checkbox" bind="outputEmptyRowsCheckbox" id="$custom-exporter-output-empty-rows" /></td>
|
||||
<td width="25%"><label for="$custom-exporter-output-empty-rows">Output empty rows (ie all cells null)</label></td>
|
||||
<td width="25%"><label for="$custom-exporter-output-empty-rows" bind="or_dialog_outEmptyRow"></label></td>
|
||||
<td width="1%"><input type="checkbox" bind="exportAllRowsCheckbox" id="$custom-exporter-output-all-rows" /></td>
|
||||
<td width="50%"><label for="$custom-exporter-output-all-rows">Ignore facets and filters and export all rows</label></td>
|
||||
<td width="50%"><label for="$custom-exporter-output-all-rows" bind="or_dialog_ignoreFacets"></label></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
@ -94,48 +94,48 @@
|
||||
|
||||
<div id="custom-tabular-exporter-tabs-download" style="display: none;"><div class="grid-layout grid-layout-for-ui layout-loose layout-full"><table>
|
||||
<tr>
|
||||
<th>Line-based text formats</th>
|
||||
<th>Other formats</th>
|
||||
<th bind="or_dialog_lineFormat"></th>
|
||||
<th bind="or_dialog_otherFormat"></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="60%"><div class="grid-layout grid-layout-for-text layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="radio" name="custom-tabular-exporter-download-format" value="tsv" checked id="$custom-exporter-download-tsv" /></td>
|
||||
<td><label for="$custom-exporter-download-tsv">Tab-separated values (TSV)</label></td></tr>
|
||||
<td><label for="$custom-exporter-download-tsv" bind="or_dialog_tsv"></label></td></tr>
|
||||
<tr><td width="1%"><input type="radio" name="custom-tabular-exporter-download-format" value="csv" id="$custom-exporter-download-csv" /></td>
|
||||
<td><label for="$custom-exporter-download-csv">Comma-separated values (CSV)</label></td></tr>
|
||||
<td><label for="$custom-exporter-download-csv" bind="or_dialog_csv"></label></td></tr>
|
||||
<tr><td width="1%"><input type="radio" name="custom-tabular-exporter-download-format" value="*sv" id="$custom-exporter-download-sv" /></td>
|
||||
<td><label for="$custom-exporter-download-sv">Custom separator</label>
|
||||
<td><label for="$custom-exporter-download-sv" bind="or_dialog_customSep"></label>
|
||||
<input type="text" class="lightweight" size="5" bind="separatorInput" /></td></tr>
|
||||
</table></div></td>
|
||||
|
||||
<td><div class="grid-layout grid-layout-for-text layout-tightest"><table>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-download-format" value="xls" id="$custom-exporter-download-xls" /></td>
|
||||
<td><label for="$custom-exporter-download-xls">Excel (.xls)</label></td>
|
||||
<td><label for="$custom-exporter-download-xls" bind="or_dialog_excel"></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-download-format" value="xlsx" id="$custom-exporter-download-xlsx" /></td>
|
||||
<td><label for="$custom-exporter-download-xlsx">Excel in XML (.xlsx)</label></td>
|
||||
<td><label for="$custom-exporter-download-xlsx" bind="or_dialog_excelXml"></label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="1%"><input type="radio" name="custom-tabular-exporter-download-format" value="html" id="$custom-exporter-download-html" /></td>
|
||||
<td><label for="$custom-exporter-download-html">HTML table</label></td>
|
||||
<td><label for="$custom-exporter-download-html" bind="or_dialog_htmlTable"></label></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><div class="grid-layout grid-layout-for-text layout-tightest"><table>
|
||||
<tr><td>Line separator</td><td><input type="text" size="5" class="lightweight" bind="lineSeparatorInput" /></td></tr>
|
||||
<tr><td>Character encoding</td><td><input type="text" size="10" class="lightweight" bind="encodingInput" /></td></tr>
|
||||
<tr><td bind="or_dialog_lineSep"></td><td><input type="text" size="5" class="lightweight" bind="lineSeparatorInput" /></td></tr>
|
||||
<tr><td bind="or_dialog_charEnc"></td><td><input type="text" size="10" class="lightweight" bind="encodingInput" /></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2"><div class="grid-layout grid-layout-for-text layout-tightest layout-full"><table><tr>
|
||||
<td width="100%"> </td>
|
||||
<td width="1%"><button class="button" bind="downloadPreviewButton">Preview</button></td>
|
||||
<td width="1%"><button class="button button-primary" bind="downloadButton">Download</button></td>
|
||||
<td width="1%"><button class="button" bind="downloadPreviewButton"></button></td>
|
||||
<td width="1%"><button class="button button-primary" bind="downloadButton"></button></td>
|
||||
</tr></table></div></td>
|
||||
</tr>
|
||||
</table></div></div>
|
||||
@ -143,30 +143,27 @@
|
||||
|
||||
<div bind="uploadTabBody" id="custom-tabular-exporter-tabs-upload" style="display: none;"><div class="grid-layout grid-layout-for-ui layout-loose layout-full"><table>
|
||||
<tr>
|
||||
<th>Upload to</th>
|
||||
<th ><span bind="or_dialog_uploadTo"></span></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout grid-layout-for-text layout-tightest"><table bind="uploadTargetTable"></table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><button class="button button-primary" bind="uploadButton">Upload</button></td>
|
||||
<td><button class="button button-primary" bind="uploadButton"></button></td>
|
||||
</tr>
|
||||
</table></div></div>
|
||||
|
||||
|
||||
<div id="custom-tabular-exporter-tabs-code" style="display: none;"><div class="grid-layout grid-layout-for-ui layout-loose layout-full"><table>
|
||||
<tr>
|
||||
<td>The following JSON text encodes the options you have set in the other tabs.
|
||||
You can copy it out and save it for later, and paste it back in and click Apply
|
||||
to re-use the same options.
|
||||
</td>
|
||||
<td width="30%" style="text-align: right;"><button class="button" bind="applyOptionCodeButton">Apply</button></td>
|
||||
<td bind="or_dialog_jsonText"></td>
|
||||
<td width="30%" style="text-align: right;"><button class="button" bind="applyOptionCodeButton"></button></td>
|
||||
</tr>
|
||||
<tr><td colspan="2"><textarea class="custom-tabular-exporter-code" bind="optionCodeInput"></textarea></td></tr>
|
||||
</table></div></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter"><div class="grid-layout layout-tightest layout-full"><table><tr>
|
||||
<td><button class="button" bind="cancelButton">Cancel</button></td>
|
||||
<td><button class="button" bind="cancelButton"></button></td>
|
||||
</tr></table></div></div>
|
||||
</div>
|
@ -82,6 +82,51 @@ CustomTabularExporterDialog.prototype._createDialog = function(options) {
|
||||
this._elmts.uploadTabBody.remove();
|
||||
}
|
||||
|
||||
this._elmts.dialogHeader.html($.i18n._('core-dialogs')["custom-tab-exp"]);
|
||||
this._elmts.or_dialog_content.html($.i18n._('core-dialogs')["content"]);
|
||||
this._elmts.or_dialog_download.html($.i18n._('core-dialogs')["download"]);
|
||||
this._elmts.or_dialog_upload.html($.i18n._('core-dialogs')["upload"]);
|
||||
this._elmts.or_dialog_optCode.html($.i18n._('core-dialogs')["opt-code"]);
|
||||
this._elmts.or_dialog_selAndOrd.html($.i18n._('core-dialogs')["sel-and-ord"]);
|
||||
this._elmts.or_dialog_optFor.html($.i18n._('core-dialogs')["opt-for"]+" ");
|
||||
this._elmts.or_dialog_forReconCell.html($.i18n._('core-dialogs')["for-recon-cell"]);
|
||||
this._elmts.or_dialog_matchedName.html($.i18n._('core-dialogs')["match-ent-name"]);
|
||||
this._elmts.or_dialog_cellCont.html($.i18n._('core-dialogs')["cell-content"]);
|
||||
this._elmts.or_dialog_matchedId.html($.i18n._('core-dialogs')["match-ent-id"]);
|
||||
this._elmts.or_dialog_linkMatch.html($.i18n._('core-dialogs')["link-match"]);
|
||||
this._elmts.or_dialog_outNotUnMatch.html($.i18n._('core-dialogs')["out-not-unmatch"]);
|
||||
this._elmts.or_dialog_dateIso.html($.i18n._('core-dialogs')["date-iso"]);
|
||||
this._elmts.or_dialog_shortFormat.html($.i18n._('core-dialogs')["short-format"]);
|
||||
this._elmts.or_dialog_mediumFormat.html($.i18n._('core-dialogs')["medium-format"]);
|
||||
this._elmts.or_dialog_longFormat.html($.i18n._('core-dialogs')["long-format"]);
|
||||
this._elmts.or_dialog_fullFormat.html($.i18n._('core-dialogs')["full-format"]);
|
||||
this._elmts.or_dialog_custom.html($.i18n._('core-dialogs')["custom"]);
|
||||
this._elmts.or_dialog_help.html($.i18n._('core-dialogs')["help"]);
|
||||
this._elmts.or_dialog_localTime.html($.i18n._('core-dialogs')["local-time"]);
|
||||
this._elmts.or_dialog_omitTime.html($.i18n._('core-dialogs')["omit-time"]);
|
||||
this._elmts.selectAllButton.html($.i18n._('core-buttons')["select-all"]);
|
||||
this._elmts.deselectAllButton.html($.i18n._('core-buttons')["deselect-all"]);
|
||||
this._elmts.or_dialog_outColHeader.html($.i18n._('core-dialogs')["out-col-header"]);
|
||||
this._elmts.or_dialog_outEmptyRow.html($.i18n._('core-dialogs')["out-empty-row"]);
|
||||
this._elmts.or_dialog_ignoreFacets.html($.i18n._('core-dialogs')["ignore-facets"]);
|
||||
this._elmts.or_dialog_lineFormat.html($.i18n._('core-dialogs')["line-based"]);
|
||||
this._elmts.or_dialog_otherFormat.html($.i18n._('core-dialogs')["other-format"]);
|
||||
this._elmts.or_dialog_tsv.html($.i18n._('core-dialogs')["tsv"]);
|
||||
this._elmts.or_dialog_csv.html($.i18n._('core-dialogs')["csv"]);
|
||||
this._elmts.or_dialog_customSep.html($.i18n._('core-dialogs')["custom-separator"]);
|
||||
this._elmts.or_dialog_excel.html($.i18n._('core-dialogs')["excel"]);
|
||||
this._elmts.or_dialog_excelXml.html($.i18n._('core-dialogs')["excel-xml"]);
|
||||
this._elmts.or_dialog_htmlTable.html($.i18n._('core-dialogs')["html-table"]);
|
||||
this._elmts.or_dialog_lineSep.html($.i18n._('core-dialogs')["line-sep"]);
|
||||
this._elmts.or_dialog_charEnc.html($.i18n._('core-dialogs')["char-enc"]);
|
||||
this._elmts.downloadPreviewButton.html($.i18n._('core-buttons')["preview"]);
|
||||
this._elmts.downloadButton.html($.i18n._('core-buttons')["download"]);
|
||||
this._elmts.or_dialog_uploadTo.html($.i18n._('core-dialogs')["upload-to"]);
|
||||
this._elmts.uploadButton.html($.i18n._('core-buttons')["upload"]);
|
||||
this._elmts.or_dialog_jsonText.html($.i18n._('core-dialogs')["json-text"]);
|
||||
this._elmts.applyOptionCodeButton.html($.i18n._('core-buttons')["apply"]);
|
||||
this._elmts.cancelButton.html($.i18n._('core-buttons')["cancel"]);
|
||||
|
||||
$("#custom-tabular-exporter-tabs-content").css("display", "");
|
||||
$("#custom-tabular-exporter-tabs-download").css("display", "");
|
||||
$("#custom-tabular-exporter-tabs-upload").css("display", "");
|
||||
@ -326,9 +371,9 @@ CustomTabularExporterDialog.prototype._applyOptionCode = function() {
|
||||
var json = JSON.parse(s);
|
||||
this._configureUIFromOptionCode(json);
|
||||
|
||||
alert('Option code successfully applied.');
|
||||
alert($.i18n._('core-dialogs')["opt-code-applied"]);
|
||||
} catch (e) {
|
||||
alert('Error applying option code: ' + e);
|
||||
alert($.i18n._('core-dialogs')["error-apply-code"]+': ' + e);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<div class="grid-layout layout-tight layout-full"><table rows="4" cols="4">
|
||||
<tr style="vertical-align: bottom;">
|
||||
<td>Expression</td>
|
||||
<td style="text-align: right;">Language</td>
|
||||
<td bind="or_dialog_expr"></td>
|
||||
<td style="text-align: right;" bind="or_dialog_lang"></td>
|
||||
<td colspan="2"><select bind="expressionPreviewLanguageSelect">$LANGUAGE_OPTIONS$</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -12,10 +12,10 @@
|
||||
<td colspan="4">
|
||||
<div id="expression-preview-tabs" class="refine-tabs">
|
||||
<ul>
|
||||
<li><a href="#expression-preview-tabs-preview">Preview</a></li>
|
||||
<li><a href="#expression-preview-tabs-history">History</a></li>
|
||||
<li><a href="#expression-preview-tabs-starred">Starred</a></li>
|
||||
<li><a href="#expression-preview-tabs-help">Help</a></li>
|
||||
<li><a href="#expression-preview-tabs-preview" bind="or_dialog_preview"></a></li>
|
||||
<li><a href="#expression-preview-tabs-history" bind="or_dialog_history"></a></li>
|
||||
<li><a href="#expression-preview-tabs-starred" bind="or_dialog_starred"></a></li>
|
||||
<li><a href="#expression-preview-tabs-help" bind="or_dialog_help"></a></li>
|
||||
</ul>
|
||||
<div id="expression-preview-tabs-preview">
|
||||
<div class="expression-preview-container" bind="expressionPreviewPreviewContainer"></div>
|
||||
|
@ -45,12 +45,12 @@ function ExpressionPreviewDialog(title, cellIndex, rowIndices, values, expressio
|
||||
|
||||
this._elmts = DOM.bind(html);
|
||||
|
||||
$('<button class="button"></button>').html(" OK ").click(function() {
|
||||
$('<button class="button"></button>').html($.i18n._('core-buttons')["ok"]).click(function() {
|
||||
DialogSystem.dismissUntil(self._level - 1);
|
||||
self._onDone(self._previewWidget.getExpression(true));
|
||||
}).appendTo(footer);
|
||||
|
||||
$('<button class="button"></button>').text("Cancel").click(function() {
|
||||
$('<button class="button"></button>').text($.i18n._('core-buttons')["cancel"]).click(function() {
|
||||
DialogSystem.dismissUntil(self._level - 1);
|
||||
}).appendTo(footer);
|
||||
|
||||
@ -139,6 +139,13 @@ ExpressionPreviewDialog.Widget = function(
|
||||
|
||||
this._tabContentWidth = this._elmts.expressionPreviewPreviewContainer.width() + "px";
|
||||
|
||||
this._elmts.or_dialog_expr.html($.i18n._('core-dialogs')["expression"]);
|
||||
this._elmts.or_dialog_lang.html($.i18n._('core-dialogs')["language"]);
|
||||
this._elmts.or_dialog_preview.html($.i18n._('core-dialogs')["preview"]);
|
||||
this._elmts.or_dialog_history.html($.i18n._('core-dialogs')["history"]);
|
||||
this._elmts.or_dialog_starred.html($.i18n._('core-dialogs')["starred"]);
|
||||
this._elmts.or_dialog_help.html($.i18n._('core-dialogs')["help"]);
|
||||
|
||||
this.update();
|
||||
this._renderExpressionHistoryTab();
|
||||
this._renderStarredExpressionsTab();
|
||||
@ -188,21 +195,19 @@ ExpressionPreviewDialog.Widget.prototype._renderHelp = function(data) {
|
||||
var varTable = $('<table cellspacing="5"></table>').appendTo(elmt)[0];
|
||||
var vars = [
|
||||
{ name: "cell",
|
||||
description: "The current cell. It has a few fields: 'value' and 'recon'."
|
||||
description: $.i18n._('core-dialogs')["cell-fields"]
|
||||
},
|
||||
{ name: "value",
|
||||
description: "The current cell's value. This is a shortcut for 'cell.value'."
|
||||
description: $.i18n._('core-dialogs')["cell-value"]
|
||||
},
|
||||
{ name: "row",
|
||||
description: "The current row. It has 5 fields: 'flagged', 'starred', 'index', 'cells', and 'record'."
|
||||
description: $.i18n._('core-dialogs')["row-fields"]
|
||||
},
|
||||
{ name: "cells",
|
||||
description: "The cells of the current row. This is a shortcut for 'row.cells'. " +
|
||||
"A particular cell can be retrieved with 'cells.<column name>' if the <column name> is a single word, " +
|
||||
"or with 'cells[\"<column name>\"] otherwise."
|
||||
description: $.i18n._('core-dialogs')["cells-of-row"]
|
||||
},
|
||||
{ name: "rowIndex",
|
||||
description: "The current row's index. This is a shortcut for 'row.index'."
|
||||
description: $.i18n._('core-dialogs')["row-index"]
|
||||
}
|
||||
];
|
||||
for (var i = 0; i < vars.length; i++) {
|
||||
@ -221,7 +226,7 @@ ExpressionPreviewDialog.Widget.prototype._renderHelp = function(data) {
|
||||
$(tr0.insertCell(1)).addClass("expression-preview-doc-item-params").text("(" + entry.params + ")");
|
||||
|
||||
$(tr1.insertCell(0));
|
||||
$(tr1.insertCell(1)).addClass("expression-preview-doc-item-returns").text("returns: " + entry.returns);
|
||||
$(tr1.insertCell(1)).addClass("expression-preview-doc-item-returns").text($.i18n._('core-dialogs')["returns"]+": " + entry.returns);
|
||||
|
||||
$(tr2.insertCell(0));
|
||||
$(tr2.insertCell(1)).addClass("expression-preview-doc-item-desc").text(entry.description);
|
||||
@ -268,7 +273,7 @@ ExpressionPreviewDialog.Widget.prototype._renderExpressionHistory = function(dat
|
||||
|
||||
var table = $(
|
||||
'<table>' +
|
||||
'<tr><th></th><th></th><th>From</th><th colspan="2">Expression</th><th></th></tr>' +
|
||||
'<tr><th></th><th></th><th>'+$.i18n._('core-dialogs')["from"]+'</th><th colspan="2">'+$.i18n._('core-dialogs')["expression"]+'</th><th></th></tr>' +
|
||||
'</table>'
|
||||
).appendTo($('<div>').addClass("expression-preview-table-wrapper").appendTo(elmt))[0];
|
||||
|
||||
@ -291,7 +296,7 @@ ExpressionPreviewDialog.Widget.prototype._renderExpressionHistory = function(dat
|
||||
);
|
||||
});
|
||||
|
||||
$('<a href="javascript:{}">Reuse</a>').appendTo(tr.insertCell(1)).click(function() {
|
||||
$('<a href="javascript:{}">'+$.i18n._('core-dialogs')["reuse"]+'</a>').appendTo(tr.insertCell(1)).click(function() {
|
||||
self._elmts.expressionPreviewTextarea[0].value = o.expression;
|
||||
self._elmts.expressionPreviewLanguageSelect[0].value = o.language;
|
||||
|
||||
@ -334,7 +339,7 @@ ExpressionPreviewDialog.Widget.prototype._renderStarredExpressions = function(da
|
||||
|
||||
var table = $(
|
||||
'<table>' +
|
||||
'<tr><th></th><th></th><th colspan="2">Expression</th><th></th></tr>' +
|
||||
'<tr><th></th><th></th><th colspan="2">'+$.i18n._('core-dialogs')["expression"]+'</th><th></th></tr>' +
|
||||
'</table>'
|
||||
).appendTo($('<div>').addClass("expression-preview-table-wrapper").appendTo(elmt))[0];
|
||||
|
||||
@ -342,7 +347,7 @@ ExpressionPreviewDialog.Widget.prototype._renderStarredExpressions = function(da
|
||||
var tr = table.insertRow(table.rows.length);
|
||||
var o = Scripting.parse(entry.code);
|
||||
|
||||
$('<a href="javascript:{}">Remove</a>').appendTo(tr.insertCell(0)).click(function() {
|
||||
$('<a href="javascript:{}">'+$.i18n._('core-dialogs')["remove"]+'</a>').appendTo(tr.insertCell(0)).click(function() {
|
||||
$.post(
|
||||
"command/core/toggle-starred-expression",
|
||||
{ expression: entry.code, returnList: true },
|
||||
@ -427,7 +432,7 @@ ExpressionPreviewDialog.Widget.prototype._renderPreview = function(expression, d
|
||||
var renderValue = function(td, v) {
|
||||
if (v !== null && v !== undefined) {
|
||||
if ($.isPlainObject(v)) {
|
||||
$('<span></span>').addClass("expression-preview-special-value").text("Error: " + v.message).appendTo(td);
|
||||
$('<span></span>').addClass("expression-preview-special-value").text($.i18n._('core-dialogs')["error"]+": " + v.message).appendTo(td);
|
||||
} else {
|
||||
td.text(v);
|
||||
}
|
||||
@ -437,9 +442,9 @@ ExpressionPreviewDialog.Widget.prototype._renderPreview = function(expression, d
|
||||
};
|
||||
|
||||
if (this._results !== null) {
|
||||
this._elmts.expressionPreviewParsingStatus.empty().removeClass("error").text("No syntax error.");
|
||||
this._elmts.expressionPreviewParsingStatus.empty().removeClass("error").text($.i18n._('core-dialogs')["no-syntax-err"]+".");
|
||||
} else {
|
||||
var message = (data.type == "parser") ? data.message : "Internal error";
|
||||
var message = (data.type == "parser") ? data.message : $.i18n._('core-dialogs')["internal-err"];
|
||||
this._elmts.expressionPreviewParsingStatus.empty().addClass("error").text(message);
|
||||
}
|
||||
|
||||
|
@ -12,29 +12,29 @@
|
||||
<table class="scatterplot-selectors"><tr>
|
||||
<td nowrap>
|
||||
<div class="buttonset scatterplot-dim-selector" bind="plotSelector">
|
||||
<input type="radio" id="clustering-dialog-dim-lin" name="clustering-dialog-dim" value="lin" checked="checked"/><label class="dim-lin-label" for="clustering-dialog-dim-lin" title="Linear Plot">lin</label>
|
||||
<input type="radio" id="clustering-dialog-dim-log" name="clustering-dialog-dim" value="log"/><label class="dim-log-label" for="clustering-dialog-dim-log" title="Logarithmic Plot">log</label>
|
||||
<input type="radio" id="clustering-dialog-dim-lin" name="clustering-dialog-dim" value="lin" checked="checked"/><label class="dim-lin-label" for="clustering-dialog-dim-lin" bind="or_dialog_linplot">lin</label>
|
||||
<input type="radio" id="clustering-dialog-dim-log" name="clustering-dialog-dim" value="log"/><label class="dim-log-label" for="clustering-dialog-dim-log" bind="or_dialog_logplot">log</label>
|
||||
</div>
|
||||
</td>
|
||||
<td nowrap>
|
||||
<div class="buttonset scatterplot-rot-selector" bind="rotationSelector">
|
||||
<input type="radio" id="clustering-dialog-rot-ccw" name="clustering-dialog-rot" value="ccw"/><label class="rot-ccw-label" for="clustering-dialog-rot-ccw" title="Rotated 45° Counter-Clockwise"> </label>
|
||||
<input type="radio" id="clustering-dialog-rot-none" name="clustering-dialog-rot" value="none" checked="checked"/><label class="rot-none-label" for="clustering-dialog-rot-none" title="No rotation"> </label>
|
||||
<input type="radio" id="clustering-dialog-rot-cw" name="clustering-dialog-rot" value="cw"/><label class="rot-cw-label" for="clustering-dialog-rot-cw" title="Rotated 45° Clockwise"> </label>
|
||||
<input type="radio" id="clustering-dialog-rot-ccw" name="clustering-dialog-rot" value="ccw"/><label class="rot-ccw-label" for="clustering-dialog-rot-ccw" bind="or_dialog_counter"> </label>
|
||||
<input type="radio" id="clustering-dialog-rot-none" name="clustering-dialog-rot" value="none" checked="checked"/><label class="rot-none-label" for="clustering-dialog-rot-none" bind="or_dialog_norot"> </label>
|
||||
<input type="radio" id="clustering-dialog-rot-cw" name="clustering-dialog-rot" value="cw"/><label class="rot-cw-label" for="clustering-dialog-rot-cw" bind="or_dialog_clock"> </label>
|
||||
</div>
|
||||
</td>
|
||||
<td nowrap>
|
||||
<div class="buttonset scatterplot-dot-selector" bind="dotSelector">
|
||||
<input type="radio" id="clustering-dialog-dot-small" name="clustering-dialog-dot" value="small"/><label class="dot-small-label" for="clustering-dialog-dot-small" title="Small Dot Size"> </label>
|
||||
<input type="radio" id="clustering-dialog-dot-regular" name="clustering-dialog-dot" value="regular" checked="checked"/><label class="dot-regular-label" for="clustering-dialog-dot-regular" title="Regular Dot Size"> </label>
|
||||
<input type="radio" id="clustering-dialog-dot-big" name="clustering-dialog-dot" value="big"/><label class="dot-big-label" for="clustering-dialog-dot-big" title="Big Dot Size"> </label>
|
||||
<input type="radio" id="clustering-dialog-dot-small" name="clustering-dialog-dot" value="small"/><label class="dot-small-label" for="clustering-dialog-dot-small" bind="or_dialog_smallDot"> </label>
|
||||
<input type="radio" id="clustering-dialog-dot-regular" name="clustering-dialog-dot" value="regular" checked="checked"/><label class="dot-regular-label" for="clustering-dialog-dot-regular" bind="or_dialog_regularDot"> </label>
|
||||
<input type="radio" id="clustering-dialog-dot-big" name="clustering-dialog-dot" value="big"/><label class="dot-big-label" for="clustering-dialog-dot-big" bind="or_dialog_bigDot"> </label>
|
||||
</div>
|
||||
</td>
|
||||
</tr></table>
|
||||
</div>
|
||||
</td>
|
||||
<td class="right" style="text-align: right">
|
||||
<button class="button" bind="closeButton">Close</button>
|
||||
<button class="button" bind="closeButton"></button>
|
||||
</td>
|
||||
</tr></table>
|
||||
</div>
|
||||
|
@ -43,10 +43,19 @@ ScatterplotDialog.prototype._createDialog = function() {
|
||||
var dialog = $(DOM.loadHTML("core", "scripts/dialogs/scatterplot-dialog.html"));
|
||||
this._elmts = DOM.bind(dialog);
|
||||
this._elmts.dialogHeader.text(
|
||||
'Scatterplot Matrix' +
|
||||
((typeof this._column == "undefined") ? "" : " (focusing on '" + this._column + "')"));
|
||||
$.i18n._('core-dialogs')["scatterplot-matrix"] +
|
||||
((typeof this._column == "undefined") ? "" : " ("+$.i18n._('core-dialogs')["focusing-on"]+" '" + this._column + "')"));
|
||||
|
||||
this._elmts.closeButton.click(function() { self._dismiss(); });
|
||||
this._elmts.or_dialog_linplot.attr("title", $.i18n._('core-dialogs')["linear-plot"]);
|
||||
this._elmts.or_dialog_logplot.attr("title", $.i18n._('core-dialogs')["logarithmic-plot"]);
|
||||
this._elmts.or_dialog_counter.attr("title", $.i18n._('core-dialogs')["rotated-counter-clock"]);
|
||||
this._elmts.or_dialog_norot.attr("title", $.i18n._('core-dialogs')["no-rotation"]);
|
||||
this._elmts.or_dialog_clock.attr("title", $.i18n._('core-dialogs')["rotated-clock"]);
|
||||
this._elmts.or_dialog_smallDot.attr("title", $.i18n._('core-dialogs')["small-dot"]);
|
||||
this._elmts.or_dialog_regularDot.attr("title", $.i18n._('core-dialogs')["regular-dot"]);
|
||||
this._elmts.or_dialog_bigDot.attr("title", $.i18n._('core-dialogs')["big-dot"]);
|
||||
this._elmts.closeButton.text($.i18n._('core-buttons')["close"]);
|
||||
|
||||
this._elmts.plotSelector.buttonset().change(function() {
|
||||
self._plot_method = $(this).find("input:checked").val();
|
||||
@ -78,7 +87,7 @@ ScatterplotDialog.prototype._renderMatrix = function() {
|
||||
var self = this;
|
||||
|
||||
var container = this._elmts.tableContainer.html(
|
||||
'<div style="margin: 1em; font-size: 130%; color: #888; background-color: white;">Processing... <img src="images/small-spinner.gif"></div>'
|
||||
'<div style="margin: 1em; font-size: 130%; color: #888; background-color: white;">'+$.i18n._('core-dialogs')["focusing-on"]+' <img src="images/small-spinner.gif"></div>'
|
||||
);
|
||||
|
||||
if (theProject.columnModel.columns.length > 0) {
|
||||
@ -87,7 +96,7 @@ ScatterplotDialog.prototype._renderMatrix = function() {
|
||||
};
|
||||
$.getJSON("command/core/get-columns-info?" + $.param(params),function(data) {
|
||||
if (data === null || typeof data.length == 'undefined') {
|
||||
container.html("Error calling 'get-columns-info'");
|
||||
container.html($.i18n._('core-dialogs')["error-getColumnInfo"]);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -205,7 +214,7 @@ ScatterplotDialog.prototype._renderMatrix = function() {
|
||||
});
|
||||
} else {
|
||||
container.html(
|
||||
'<div style="margin: 2em;"><div style="font-size: 130%; color: #333;">There are no columns in this dataset</div></div>'
|
||||
'<div style="margin: 2em;"><div style="font-size: 130%; color: #333;">'+$.i18n._('core-dialogs')["no-column-dataset"]+ '</div></div>'
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
<div class="dialog-frame" style="width: 900px;">
|
||||
<div class="dialog-header" bind="dialogHeader">Templating Export</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<div class="grid-layout layout-normal layout-full"><table>
|
||||
<tr>
|
||||
<td style="vertical-align: top"><div class="grid-layout layout-tighter layout-full" bind="controls"><table>
|
||||
<tr><td>Prefix</td></tr>
|
||||
<tr><td bind="or_dialog_prefix"></td></tr>
|
||||
<tr><td><div class="input-container"><textarea bind="prefixTextarea" class="code" wrap="off" style="height:5em;"></textarea></div></td></tr>
|
||||
<tr><td>Row Template</td></tr>
|
||||
<tr><td bind="or_dialog_rowTmpl"></td></tr>
|
||||
<tr><td><div class="input-container"><textarea bind="templateTextarea" class="code" wrap="off" style="height:20em;"></textarea></div></td></tr>
|
||||
<tr><td>Row Separator</td></tr>
|
||||
<tr><td bind="or_dialog_rowSep"></td></tr>
|
||||
<tr><td><div class="input-container"><textarea bind="separatorTextarea" class="code" wrap="off" style="height:3em;"></textarea></div></td></tr>
|
||||
<tr><td>Suffix</td></tr>
|
||||
<tr><td bind="or_dialog_suffix"></td></tr>
|
||||
<tr><td><div class="input-container"><textarea bind="suffixTextarea" class="code" wrap="off" style="height:5em;"></textarea></div></td></tr>
|
||||
</table></div></td>
|
||||
<td width="50%" style="vertical-align: top">
|
||||
@ -21,11 +21,11 @@
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter"><div class="grid-layout layout-normal layout-full"><table><tr>
|
||||
<td align="left">
|
||||
<button class="button" bind="resetButton">Reset Template</button>
|
||||
<button class="button" bind="resetButton"></button>
|
||||
</td>
|
||||
<td style="text-align: right;">
|
||||
<button class="button" bind="exportButton">Export</button>
|
||||
<button class="button" bind="cancelButton">Cancel</button>
|
||||
<button class="button" bind="exportButton"></button>
|
||||
<button class="button" bind="cancelButton"></button>
|
||||
</td>
|
||||
</tr></table></div></div>
|
||||
</div>
|
@ -43,6 +43,15 @@ TemplatingExporterDialog.prototype._createDialog = function() {
|
||||
this._elmts = DOM.bind(dialog);
|
||||
this._elmts.controls.find("textarea").bind("keyup change input",function() { self._scheduleUpdate(); });
|
||||
|
||||
this._elmts.dialogHeader.html($.i18n._('core-dialogs')["template-export"]);
|
||||
this._elmts.or_dialog_prefix.html($.i18n._('core-dialogs')["template-prefix"]);
|
||||
this._elmts.or_dialog_rowTmpl.html($.i18n._('core-dialogs')["template-rowt"]);
|
||||
this._elmts.or_dialog_rowSep.html($.i18n._('core-dialogs')["template-rows"]);
|
||||
this._elmts.or_dialog_suffix.html($.i18n._('core-dialogs')["template-suffix"]);
|
||||
this._elmts.resetButton.html($.i18n._('core-buttons')["reset-template"]);
|
||||
this._elmts.exportButton.html($.i18n._('core-buttons')["export"]);
|
||||
this._elmts.cancelButton.html($.i18n._('core-buttons')["cancel"]);
|
||||
|
||||
this._elmts.exportButton.click(function() { self._export(); self._dismiss(); });
|
||||
this._elmts.cancelButton.click(function() { self._dismiss(); });
|
||||
this._elmts.resetButton.click(function() {
|
||||
@ -98,10 +107,10 @@ TemplatingExporterDialog.prototype._scheduleUpdate = function() {
|
||||
window.clearTimeout(this._timerID);
|
||||
}
|
||||
|
||||
this._elmts.previewTextarea[0].value = "Idling...";
|
||||
this._elmts.previewTextarea[0].value = $.i18n._('core-dialogs')["idling"];
|
||||
this._timerID = window.setTimeout(function() {
|
||||
self._timerID = null;
|
||||
self._elmts.previewTextarea[0].value = "Updating...";
|
||||
self._elmts.previewTextarea[0].value = $.i18n._('core-dialogs')["updating"];
|
||||
self._updatePreview();
|
||||
}, 1000);
|
||||
};
|
||||
|
@ -148,23 +148,23 @@ ListFacet.prototype._initializeUI = function() {
|
||||
this._div.empty().show().html(
|
||||
'<div class="facet-title">' +
|
||||
'<div class="grid-layout layout-tightest layout-full"><table><tr>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="Remove this facet" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="'+$.i18n._('core-facets')["remove-facet"]+'" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">reset</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="invertButton">invert</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="changeButton">change</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">'+$.i18n._('core-facets')["reset"]+'</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="invertButton">'+$.i18n._('core-facets')["invert"]+'</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="changeButton">'+$.i18n._('core-facets')["change"]+'</a>' +
|
||||
'<span bind="titleSpan"></span>' +
|
||||
'</td>' +
|
||||
'</tr></table></div>' +
|
||||
'</div>' +
|
||||
'<div class="facet-expression" bind="expressionDiv" title="Click to edit expression"></div>' +
|
||||
'<div class="facet-expression" bind="expressionDiv" title="'+$.i18n._('core-facets')["click-to-edit"]+'"></div>' +
|
||||
'<div class="facet-controls" bind="controlsDiv" style="display:none;">' +
|
||||
'<a bind="choiceCountContainer" class="action" href="javascript:{}"></a> ' +
|
||||
'<span class="facet-controls-sortControls" bind="sortGroup">Sort by: ' +
|
||||
'<a href="javascript:{}" bind="sortByNameLink">name</a>' +
|
||||
'<a href="javascript:{}" bind="sortByCountLink">count</a>' +
|
||||
'<span class="facet-controls-sortControls" bind="sortGroup">'+$.i18n._('core-facets')["sort-by"]+': ' +
|
||||
'<a href="javascript:{}" bind="sortByNameLink">'+$.i18n._('core-facets')["name"]+'</a>' +
|
||||
'<a href="javascript:{}" bind="sortByCountLink">'+$.i18n._('core-facets')["count"]+'</a>' +
|
||||
'</span>' +
|
||||
'<button bind="clusterLink" class="facet-controls-button button">Cluster</button>' +
|
||||
'<button bind="clusterLink" class="facet-controls-button button">'+$.i18n._('core-facets')["cluster"]+'</button>' +
|
||||
'</div>' +
|
||||
'<div class="facet-body" bind="bodyDiv">' +
|
||||
'<div class="facet-body-inner" bind="bodyInnerDiv"></div>' +
|
||||
@ -173,7 +173,7 @@ ListFacet.prototype._initializeUI = function() {
|
||||
this._elmts = DOM.bind(this._div);
|
||||
|
||||
this._elmts.titleSpan.text(this._config.name);
|
||||
this._elmts.changeButton.attr("title","Current Expression: " + this._config.expression).click(function() {
|
||||
this._elmts.changeButton.attr("title",$.i18n._('core-facets')["current-exp"]+": " + this._config.expression).click(function() {
|
||||
self._elmts.expressionDiv.slideToggle(100, function() {
|
||||
if (self._elmts.expressionDiv.css("display") != "none") {
|
||||
self._editExpression();
|
||||
@ -223,14 +223,14 @@ ListFacet.prototype._copyChoices = function() {
|
||||
var frame = DialogSystem.createDialog();
|
||||
frame.width("600px");
|
||||
|
||||
var header = $('<div></div>').addClass("dialog-header").text("Facet Choices as Tab Separated Values").appendTo(frame);
|
||||
var header = $('<div></div>').addClass("dialog-header").text($.i18n._('core-facets')["facet-choices"]).appendTo(frame);
|
||||
var body = $('<div></div>').addClass("dialog-body").appendTo(frame);
|
||||
var footer = $('<div></div>').addClass("dialog-footer").appendTo(frame);
|
||||
|
||||
body.html('<textarea wrap="off" bind="textarea" style="display: block; width: 100%; height: 400px;" />');
|
||||
var elmts = DOM.bind(body);
|
||||
|
||||
$('<button class="button"></button>').text("Close").click(function() {
|
||||
$('<button class="button"></button>').text($.i18n._('core-button')["close"]).click(function() {
|
||||
DialogSystem.dismissUntil(level - 1);
|
||||
}).appendTo(footer);
|
||||
|
||||
@ -270,7 +270,7 @@ ListFacet.prototype._update = function(resetScroll) {
|
||||
//this._elmts.statusDiv.hide();
|
||||
this._elmts.controlsDiv.hide();
|
||||
this._elmts.bodyInnerDiv.empty().append(
|
||||
$('<div>').text("Loading...").addClass("facet-body-message"));
|
||||
$('<div>').text($.i18n._('core-facets')["loading"]).addClass("facet-body-message"));
|
||||
|
||||
return;
|
||||
} else if ("error" in this._data) {
|
||||
@ -281,12 +281,12 @@ ListFacet.prototype._update = function(resetScroll) {
|
||||
this._elmts.bodyInnerDiv.empty();
|
||||
|
||||
var messageDiv = $('<div>')
|
||||
.text(this._data.choiceCount + " choices total, too many to display")
|
||||
.text(this._data.choiceCount + " "+$.i18n._('core-facets')["too-many-choices"])
|
||||
.addClass("facet-body-message")
|
||||
.appendTo(this._elmts.bodyInnerDiv);
|
||||
$('<br>').appendTo(messageDiv);
|
||||
$('<a>')
|
||||
.text("Set choice count limit")
|
||||
.text($.i18n._('core-facets')["set-choice-count"])
|
||||
.attr("href", "javascript:{}")
|
||||
.addClass("action")
|
||||
.addClass("secondary")
|
||||
@ -362,7 +362,7 @@ ListFacet.prototype._update = function(resetScroll) {
|
||||
|
||||
// edit link
|
||||
if (renderEdit) {
|
||||
html.push('<a href="javascript:{}" class="facet-choice-link facet-choice-edit" style="visibility: hidden">edit</a>');
|
||||
html.push('<a href="javascript:{}" class="facet-choice-link facet-choice-edit" style="visibility: hidden">'+$.i18n._('core-facets')["edit"]+'</a>');
|
||||
}
|
||||
|
||||
html.push('<a href="javascript:{}" class="facet-choice-label">' + encodeHtml(label) + '</a>');
|
||||
@ -463,7 +463,7 @@ ListFacet.prototype._renderBodyControls = function() {
|
||||
.appendTo(this._elmts.bodyInnerDiv);
|
||||
|
||||
$('<a>')
|
||||
.text("Facet by choice counts")
|
||||
.text($.i18n._('core-facets')["facet-by-count"])
|
||||
.attr("href", "javascript:{}")
|
||||
.addClass("action")
|
||||
.addClass("secondary")
|
||||
@ -505,12 +505,12 @@ ListFacet.prototype._editChoice = function(choice, choiceDiv) {
|
||||
'<textarea class="data-table-cell-editor-editor" bind="textarea" />' +
|
||||
'<div id="data-table-cell-editor-actions">' +
|
||||
'<div class="data-table-cell-editor-action">' +
|
||||
'<button class="button" bind="okButton">Apply</button>' +
|
||||
'<div class="data-table-cell-editor-key">Enter</div>' +
|
||||
'<button class="button" bind="okButton">'+$.i18n._('core-buttons')["apply"]+'</button>' +
|
||||
'<div class="data-table-cell-editor-key">'+$.i18n._('core-buttons')["enter"]+'</div>' +
|
||||
'</div>' +
|
||||
'<div class="data-table-cell-editor-action">' +
|
||||
'<button class="button" bind="cancelButton">Cancel</button>' +
|
||||
'<div class="data-table-cell-editor-key">Esc</div>' +
|
||||
'<button class="button" bind="cancelButton">'+$.i18n._('core-buttons')["cancel"]+'</button>' +
|
||||
'<div class="data-table-cell-editor-key">'+$.i18n._('core-buttons')["esc"]+'</div>' +
|
||||
'</div>' +
|
||||
'</div>'
|
||||
);
|
||||
@ -663,8 +663,8 @@ ListFacet.prototype._updateRest = function() {
|
||||
ListFacet.prototype._editExpression = function() {
|
||||
var self = this;
|
||||
var title = (this._config.columnName) ?
|
||||
("Edit Facet's Expression based on Column " + this._config.columnName) :
|
||||
"Edit Facet's Expression";
|
||||
($.i18n._('core-facets')["edit-based-col"]+" " + this._config.columnName) :
|
||||
$.i18n._('core-facets')["edit-facet-exp"];
|
||||
|
||||
var column = Refine.columnNameToColumn(this._config.columnName);
|
||||
var o = DataTableView.sampleVisibleRows(column);
|
||||
@ -680,7 +680,7 @@ ListFacet.prototype._editExpression = function() {
|
||||
self._config.expression = expr;
|
||||
|
||||
self._elmts.expressionDiv.text(self._config.expression);
|
||||
self._elmts.changeButton.attr("title", "Current Expression: " + self._config.expression);
|
||||
self._elmts.changeButton.attr("title", $.i18n._('core-facets')["current-exp"]+": " + self._config.expression);
|
||||
if (self._config.expression == "value" || self._config.expression == "grel:value") {
|
||||
self._elmts.clusterLink.show();
|
||||
} else {
|
||||
@ -697,7 +697,7 @@ ListFacet.prototype._editExpression = function() {
|
||||
|
||||
ListFacet.prototype._setChoiceCountLimit = function(choiceCount) {
|
||||
var limit = Math.ceil(choiceCount / 1000) * 1000;
|
||||
var s = window.prompt('Set the maximum number of choices shown in each text facet (too many will slow down the application)', limit);
|
||||
var s = window.prompt($.i18n._('core-facets')["set-max-choices"], limit);
|
||||
if (s) {
|
||||
var n = parseInt(s,10);
|
||||
|
||||
|
@ -132,17 +132,17 @@ RangeFacet.prototype._initializeUI = function() {
|
||||
.html(
|
||||
'<div class="facet-title" bind="headerDiv">' +
|
||||
'<div class="grid-layout layout-tightest layout-full"><table><tr>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="Remove this facet" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="'+$.i18n._('core-facets')["remove-facet"]+'" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">reset</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="changeButton">change</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">'+$.i18n._('core-facets')["reset"]+'</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="changeButton">'+$.i18n._('core-facets')["change"]+'</a>' +
|
||||
'<span bind="facetTitle"></span>' +
|
||||
'</td>' +
|
||||
'</tr></table></div>' +
|
||||
'</div>' +
|
||||
'<div class="facet-expression" bind="expressionDiv" title="Click to edit expression"></div>' +
|
||||
'<div class="facet-expression" bind="expressionDiv" title="'+$.i18n._('core-facets')["click-to-edit"]+'"></div>' +
|
||||
'<div class="facet-range-body">' +
|
||||
'<div class="facet-range-message" bind="messageDiv">Loading...</div>' +
|
||||
'<div class="facet-range-message" bind="messageDiv">'+$.i18n._('core-facets')["loading"]+'</div>' +
|
||||
'<div class="facet-range-slider" bind="sliderWidgetDiv">' +
|
||||
'<div class="facet-range-histogram" bind="histogramDiv"></div>' +
|
||||
'</div>' +
|
||||
@ -153,7 +153,7 @@ RangeFacet.prototype._initializeUI = function() {
|
||||
this._elmts = DOM.bind(this._div);
|
||||
|
||||
this._elmts.facetTitle.text(this._config.name);
|
||||
this._elmts.changeButton.attr("title","Current Expression: " + this._config.expression).click(function() {
|
||||
this._elmts.changeButton.attr("title",$.i18n._('core-facets')["current-expression"]+": " + this._config.expression).click(function() {
|
||||
self._elmts.expressionDiv.slideToggle(100, function() {
|
||||
if (self._elmts.expressionDiv.css("display") != "none") {
|
||||
self._editExpression();
|
||||
@ -209,7 +209,7 @@ RangeFacet.prototype._renderOtherChoices = function() {
|
||||
if (this._selectNumeric) numericCheck.attr("checked","checked");
|
||||
|
||||
var numericLabel = $('<label>').attr("for", facet_id + "-numeric").appendTo(numericDiv);
|
||||
$('<span>').text("Numeric ").addClass("facet-range-choice-label").appendTo(numericLabel);
|
||||
$('<span>').text($.i18n._('core-facets')["numeric"]+" ").addClass("facet-range-choice-label").appendTo(numericLabel);
|
||||
$('<div>').text(this._numericCount).addClass("facet-range-choice-count").appendTo(numericLabel);
|
||||
|
||||
// ----------------- non-numeric -----------------
|
||||
@ -315,7 +315,7 @@ RangeFacet.prototype.updateState = function(data) {
|
||||
this._errorCount = data.errorCount;
|
||||
} else {
|
||||
this._error = true;
|
||||
this._errorMessage = "error" in data ? data.error : "Unknown error.";
|
||||
this._errorMessage = "error" in data ? data.error : $.i18n._('core-facets')["unknown-error"]+".";
|
||||
}
|
||||
|
||||
this.render();
|
||||
@ -375,8 +375,8 @@ RangeFacet.prototype._updateRest = function() {
|
||||
RangeFacet.prototype._editExpression = function() {
|
||||
var self = this;
|
||||
var title = (this._config.columnName) ?
|
||||
("Edit Facet's Expression based on Column " + this._config.columnName) :
|
||||
"Edit Facet's Expression";
|
||||
($.i18n._('core-facets')["edit-based-col"]+" " + this._config.columnName) :
|
||||
$.i18n._('core-facets')["edit-facet-exp"];
|
||||
|
||||
var column = Refine.columnNameToColumn(this._config.columnName);
|
||||
var o = DataTableView.sampleVisibleRows(column);
|
||||
|
@ -93,15 +93,15 @@ ScatterplotFacet.prototype._initializeUI = function() {
|
||||
this._div.empty().show().html(
|
||||
'<div class="facet-title">' +
|
||||
'<div class="grid-layout layout-tightest layout-full"><table><tr>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="Remove this facet" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="'+$.i18n._('core-facets')["remove-facet"]+'" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">reset</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">'+$.i18n._('core-facets')["reset"]+'</a>' +
|
||||
'<span bind="titleSpan"></span>' +
|
||||
'</td>' +
|
||||
'</tr></table></div>' +
|
||||
'</div>' +
|
||||
'<div class="facet-scatterplot-body" bind="bodyDiv">' +
|
||||
'<div class="facet-scatterplot-message" bind="messageDiv">Loading...</div>' +
|
||||
'<div class="facet-scatterplot-message" bind="messageDiv">'+$.i18n._('core-facets')["loading"]+'</div>' +
|
||||
'<table width="100%"><tr>' +
|
||||
'<td>' +
|
||||
'<div class="facet-scatterplot-plot-container">' +
|
||||
@ -114,20 +114,20 @@ ScatterplotFacet.prototype._initializeUI = function() {
|
||||
'<td class="facet-scatterplot-selectors-container" width="100%">' +
|
||||
'<div class="scatterplot-selectors" bind="selectors">' +
|
||||
'<div class="buttonset scatterplot-dim-selector">' +
|
||||
'<input type="radio" id="' + facet_id + '-dim-lin" name="' + facet_id + '-dim" value="lin"/><label class="dim-lin-label" for="' + facet_id + '-dim-lin" title="Linear Plot">lin</label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dim-log" name="' + facet_id + '-dim" value="log"/><label class="dim-log-label" for="' + facet_id + '-dim-log" title="Logarithmic Plot">log</label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dim-lin" name="' + facet_id + '-dim" value="lin"/><label class="dim-lin-label" for="' + facet_id + '-dim-lin" title="'+$.i18n._('core-facets')["linear-plot"]+'">'+$.i18n._('core-facets')["linear-plot-abbr"]+'</label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dim-log" name="' + facet_id + '-dim" value="log"/><label class="dim-log-label" for="' + facet_id + '-dim-log" title="'+$.i18n._('core-facets')["logar-plot"]+'">'+$.i18n._('core-facets')["logar-plot-abbr"]+'</label>' +
|
||||
'</div>' +
|
||||
'<div class="buttonset scatterplot-rot-selector">' +
|
||||
'<input type="radio" id="' + facet_id + '-rot-ccw" name="' + facet_id + '-rot" value="ccw"/><label class="rot-ccw-label" for="' + facet_id + '-rot-ccw" title="Rotated 45° Counter-Clockwise"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-rot-none" name="' + facet_id + '-rot" value="none"/><label class="rot-none-label" for="' + facet_id + '-rot-none" title="No rotation"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-rot-cw" name="' + facet_id + '-rot" value="cw"/><label class="rot-cw-label" for="' + facet_id + '-rot-cw" title="Rotated 45° Clockwise"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-rot-ccw" name="' + facet_id + '-rot" value="ccw"/><label class="rot-ccw-label" for="' + facet_id + '-rot-ccw" title="'+$.i18n._('core-facets')["rotated-counter-clock"]+'"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-rot-none" name="' + facet_id + '-rot" value="none"/><label class="rot-none-label" for="' + facet_id + '-rot-none" title="'+$.i18n._('core-facets')["no-rotation"]+'"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-rot-cw" name="' + facet_id + '-rot" value="cw"/><label class="rot-cw-label" for="' + facet_id + '-rot-cw" title="'+$.i18n._('core-facets')["rotated-clock"]+'"> </label>' +
|
||||
'</div>' +
|
||||
'<div class="buttonset scatterplot-dot-selector">' +
|
||||
'<input type="radio" id="' + facet_id + '-dot-small" name="' + facet_id + '-dot" value="small"/><label class="dot-small-label" for="' + facet_id + '-dot-small" title="Small Dot Size"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dot-regular" name="' + facet_id + '-dot" value="regular"/><label class="dot-regular-label" for="' + facet_id + '-dot-regular" title="Regular Dot Size"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dot-big" name="' + facet_id + '-dot" value="big"/><label class="dot-big-label" for="' + facet_id + '-dot-big" title="Big Dot Size"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dot-small" name="' + facet_id + '-dot" value="small"/><label class="dot-small-label" for="' + facet_id + '-dot-small" title="'+$.i18n._('core-facets')["small-dot"]+'"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dot-regular" name="' + facet_id + '-dot" value="regular"/><label class="dot-regular-label" for="' + facet_id + '-dot-regular" title="'+$.i18n._('core-facets')["regular-dot"]+'"> </label>' +
|
||||
'<input type="radio" id="' + facet_id + '-dot-big" name="' + facet_id + '-dot" value="big"/><label class="dot-big-label" for="' + facet_id + '-dot-big" title="'+$.i18n._('core-facets')["big-dot"]+'"> </label>' +
|
||||
'</div>' +
|
||||
'<div class="scatterplot-export-plot"><a bind="exportPlotLink" class="action" target="_blank">export plot</a></div>' +
|
||||
'<div class="scatterplot-export-plot"><a bind="exportPlotLink" class="action" target="_blank">'+$.i18n._('core-facets')["export-plot"]+'</a></div>' +
|
||||
'</div>' +
|
||||
'</td>' +
|
||||
'</tr></table>' +
|
||||
@ -279,7 +279,7 @@ ScatterplotFacet.prototype._formulateImageUrl = function(engineConfig, conf) {
|
||||
ScatterplotFacet.prototype.updateState = function(data) {
|
||||
if ("error" in data) {
|
||||
this._error = true;
|
||||
this._errorMessage = "error" in data ? data.error : "Unknown error.";
|
||||
this._errorMessage = "error" in data ? data.error : $.i18n._('core-facets')["unknown-error"]+".";
|
||||
} else {
|
||||
this._error = false;
|
||||
|
||||
|
@ -84,7 +84,7 @@ TextSearchFacet.prototype._initializeUI = function() {
|
||||
this._div.empty().show().html(
|
||||
'<div class="facet-title">' +
|
||||
'<div class="grid-layout layout-tightest layout-full"><table><tr>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="Remove this facet" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="'+$.i18n._('core-facets')["remove-facet"]+'" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td>' +
|
||||
'<span>' + this._config.name + '</span>' +
|
||||
'</td>' +
|
||||
@ -93,8 +93,8 @@ TextSearchFacet.prototype._initializeUI = function() {
|
||||
'<div class="facet-text-body"><div class="grid-layout layout-tightest layout-full"><table>' +
|
||||
'<tr><td colspan="4"><div class="input-container"><input bind="input" /></div></td></tr>' +
|
||||
'<tr>' +
|
||||
'<td width="1%"><input type="checkbox" bind="caseSensitiveCheckbox" /></td><td>case sensitive</td>' +
|
||||
'<td width="1%"><input type="checkbox" bind="regexCheckbox" /></td><td>regular expression</td>' +
|
||||
'<td width="1%"><input type="checkbox" bind="caseSensitiveCheckbox" /></td><td>'+$.i18n._('core-facets')["case-sensitive"]+'</td>' +
|
||||
'<td width="1%"><input type="checkbox" bind="regexCheckbox" /></td><td>'+$.i18n._('core-facets')["regular-exp"]+'</td>' +
|
||||
'</tr>' +
|
||||
'</table></div></div>'
|
||||
);
|
||||
|
@ -133,17 +133,17 @@ TimeRangeFacet.prototype._initializeUI = function() {
|
||||
.html(
|
||||
'<div class="facet-title" bind="headerDiv">' +
|
||||
'<div class="grid-layout layout-tightest layout-full"><table><tr>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="Remove this facet" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td width="1%"><a href="javascript:{}" title="'+$.i18n._('core-facets')["remove-facet"]+'" class="facet-title-remove" bind="removeButton"> </a></td>' +
|
||||
'<td>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">reset</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="changeButton">change</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="resetButton">'+$.i18n._('core-facets')["reset"]+'</a>' +
|
||||
'<a href="javascript:{}" class="facet-choice-link" bind="changeButton">'+$.i18n._('core-facets')["change"]+'</a>' +
|
||||
'<span bind="facetTitle"></span>' +
|
||||
'</td>' +
|
||||
'</tr></table></div>' +
|
||||
'</div>' +
|
||||
'<div class="facet-expression" bind="expressionDiv" title="Click to edit expression"></div>' +
|
||||
'<div class="facet-expression" bind="expressionDiv" title="'+$.i18n._('core-facets')["click-to-edit"]+'"></div>' +
|
||||
'<div class="facet-range-body">' +
|
||||
'<div class="facet-range-message" bind="messageDiv">Loading...</div>' +
|
||||
'<div class="facet-range-message" bind="messageDiv">'+$.i18n._('core-facets')["loading"]+'</div>' +
|
||||
'<div class="facet-range-slider" bind="sliderWidgetDiv">' +
|
||||
'<div class="facet-range-histogram" bind="histogramDiv"></div>' +
|
||||
'</div>' +
|
||||
@ -154,7 +154,7 @@ TimeRangeFacet.prototype._initializeUI = function() {
|
||||
this._elmts = DOM.bind(this._div);
|
||||
|
||||
this._elmts.facetTitle.text(this._config.name);
|
||||
this._elmts.changeButton.attr("title","Current Expression: " + this._config.expression).click(function() {
|
||||
this._elmts.changeButton.attr("title",$.i18n._('core-facets')["current-exp"]+": " + this._config.expression).click(function() {
|
||||
self._elmts.expressionDiv.slideToggle(100, function() {
|
||||
if (self._elmts.expressionDiv.css("display") != "none") {
|
||||
self._editExpression();
|
||||
@ -210,7 +210,7 @@ TimeRangeFacet.prototype._renderOtherChoices = function() {
|
||||
if (this._selectTime) timeCheck.attr("checked","checked");
|
||||
|
||||
var timeLabel = $('<label>').attr("for", facet_id + "-time").appendTo(timeDiv);
|
||||
$('<span>').text("Time ").addClass("facet-range-choice-label").appendTo(timeLabel);
|
||||
$('<span>').text($.i18n._('core-facets')["time"]+" ").addClass("facet-range-choice-label").appendTo(timeLabel);
|
||||
$('<div>').text(this._timeCount).addClass("facet-range-choice-count").appendTo(timeLabel);
|
||||
|
||||
// ----------------- non-Time -----------------
|
||||
@ -223,7 +223,7 @@ TimeRangeFacet.prototype._renderOtherChoices = function() {
|
||||
if (this._selectNonTime) nonTimeCheck.attr("checked","checked");
|
||||
|
||||
var nonTimeLabel = $('<label>').attr("for", facet_id + "-non-time").appendTo(nonTimeDiv);
|
||||
$('<span>').text("Non-Time ").addClass("facet-range-choice-label").appendTo(nonTimeLabel);
|
||||
$('<span>').text($.i18n._('core-facets')["non-time"]+" ").addClass("facet-range-choice-label").appendTo(nonTimeLabel);
|
||||
$('<div>').text(this._nonTimeCount).addClass("facet-range-choice-count").appendTo(nonTimeLabel);
|
||||
|
||||
if (this._baseNonTimeCount === 0) nonTimeCheck.removeAttr("checked");
|
||||
@ -238,7 +238,7 @@ TimeRangeFacet.prototype._renderOtherChoices = function() {
|
||||
if (this._selectBlank) blankCheck.attr("checked","checked");
|
||||
|
||||
var blankLabel = $('<label>').attr("for", facet_id + "-blank").appendTo(blankDiv);
|
||||
$('<span>').text("Blank ").addClass("facet-range-choice-label").appendTo(blankLabel);
|
||||
$('<span>').text($.i18n._('core-facets')["blank"]+" ").addClass("facet-range-choice-label").appendTo(blankLabel);
|
||||
$('<div>').text(this._blankCount).addClass("facet-range-choice-count").appendTo(blankLabel);
|
||||
|
||||
if (this._baseBlankCount === 0) blankCheck.removeAttr("checked");
|
||||
@ -253,7 +253,7 @@ TimeRangeFacet.prototype._renderOtherChoices = function() {
|
||||
if (this._selectError) errorCheck.attr("checked","checked");
|
||||
|
||||
var errorLabel = $('<label>').attr("for", facet_id + "-error").appendTo(errorDiv);
|
||||
$('<span>').text("Error ").addClass("facet-range-choice-label").appendTo(errorLabel);
|
||||
$('<span>').text($.i18n._('core-facets')["error"]+" ").addClass("facet-range-choice-label").appendTo(errorLabel);
|
||||
$('<div>').text(this._errorCount).addClass("facet-range-choice-count").appendTo(errorLabel);
|
||||
|
||||
if (this._baseErrorCount === 0) errorCheck.removeAttr("checked");
|
||||
@ -342,7 +342,7 @@ TimeRangeFacet.prototype.updateState = function(data) {
|
||||
this._errorCount = data.errorCount;
|
||||
} else {
|
||||
this._error = true;
|
||||
this._errorMessage = "error" in data ? data.error : "Unknown error.";
|
||||
this._errorMessage = "error" in data ? data.error : $.i18n._('core-facets')["unknown-error"]+".";
|
||||
}
|
||||
|
||||
this.render();
|
||||
@ -402,8 +402,8 @@ TimeRangeFacet.prototype._updateRest = function() {
|
||||
TimeRangeFacet.prototype._editExpression = function() {
|
||||
var self = this;
|
||||
var title = (this._config.columnName) ?
|
||||
("Edit Facet's Expression based on Column " + this._config.columnName) :
|
||||
"Edit Facet's Expression";
|
||||
($.i18n._('core-facets')["edit-based-col"]+" " + this._config.columnName) :
|
||||
$.i18n._('core-facets')["edit-facet-exp"];
|
||||
|
||||
var column = Refine.columnNameToColumn(this._config.columnName);
|
||||
var o = DataTableView.sampleVisibleRows(column);
|
||||
|
@ -37,6 +37,23 @@ var Refine = {
|
||||
actionAreas: []
|
||||
};
|
||||
|
||||
var lang = navigator.language.split("-")[0]
|
||||
|| navigator.userLanguage.split("-")[0];
|
||||
var dictionary = "";
|
||||
$.ajax({
|
||||
url : "/command/core/load-language?",
|
||||
type : "POST",
|
||||
async : false,
|
||||
data : {
|
||||
lng : lang
|
||||
},
|
||||
success : function(data) {
|
||||
dictionary = data;
|
||||
}
|
||||
});
|
||||
$.i18n.setDictionary(dictionary);
|
||||
// End internationalization
|
||||
|
||||
Refine.selectActionArea = function(id) {
|
||||
$('.action-area-tab').removeClass('selected');
|
||||
$('.action-area-tab-body').css('visibility', 'hidden').css('z-index', '50');
|
||||
@ -75,7 +92,7 @@ $(function() {
|
||||
function(data) {
|
||||
OpenRefineVersion = data;
|
||||
|
||||
$("#openrefine-version").text("Version " + OpenRefineVersion.full_version);
|
||||
$("#openrefine-version").text($.i18n._('core-index')["version"]+" " + OpenRefineVersion.full_version);
|
||||
|
||||
var script = $('<script></script>')
|
||||
.attr("src", "http://google-refine.googlecode.com/svn/support/releases.js")
|
||||
@ -88,12 +105,12 @@ $(function() {
|
||||
var container = $('<div id="notification-container">')
|
||||
.appendTo(document.body);
|
||||
var notification = $('<div id="notification">')
|
||||
.text('New version! ')
|
||||
.text($.i18n._('core-index')["new-version"]+' ')
|
||||
.appendTo(container);
|
||||
$('<a>')
|
||||
.addClass('notification-action')
|
||||
.attr("href", releases.homepage)
|
||||
.text('Download ' + releases.releases[0].description + ' now.')
|
||||
.text($.i18n._('core-index')["download"]+' ' + releases.releases[0].description + ' '+$.i18n._('core-index')["now"]+'.')
|
||||
.appendTo(notification);
|
||||
}
|
||||
} else {
|
||||
@ -173,6 +190,13 @@ $(function() {
|
||||
renderActionArea(Refine.actionAreas[i]);
|
||||
}
|
||||
Refine.selectActionArea('create-project');
|
||||
|
||||
$("#slogan").text($.i18n._('core-index')["slogan"]+".");
|
||||
$("#or-index-help").text($.i18n._('core-index')["help"]);
|
||||
$("#or-index-about").text($.i18n._('core-index')["about"]);
|
||||
$("#or-index-noProj").text($.i18n._('core-index')["no-proj"]+".");
|
||||
$("#or-index-try").text($.i18n._('core-index')["try-these"]);
|
||||
$("#or-index-sample").text($.i18n._('core-index')["sample-data"]);
|
||||
|
||||
showVersion();
|
||||
});
|
||||
|
@ -1,5 +1,5 @@
|
||||
<div id="create-project-error-panel"><div class="grid-layout layout-normal layout-full"><table>
|
||||
<tr><td id="create-project-error-message"></td></tr>
|
||||
<tr><td id="create-project-error-stack"></td></tr>
|
||||
<tr><td><button class="button button-primary" id="create-project-error-ok-button">OK</button></td></tr>
|
||||
<tr><td><button class="button button-primary" id="create-project-error-ok-button"></button></td></tr>
|
||||
</table></div></div>
|
@ -5,7 +5,7 @@
|
||||
<div id="create-project-progress-bar-frame"><div id="create-project-progress-bar-body"></div></div>
|
||||
</td></tr>
|
||||
<tr><td colspan="3">
|
||||
<button class="button" id="create-project-progress-cancel-button">Cancel</button>
|
||||
<button class="button" id="create-project-progress-cancel-button"></button>
|
||||
<span id="create-project-progress-timing"></span>
|
||||
<span id="create-project-progress-memory"></span>
|
||||
</td></tr>
|
||||
|
@ -1,16 +1,13 @@
|
||||
<div id="create-project-ui-source-selection" class="relative-frame"><table id="create-project-ui-source-selection-layout">
|
||||
<tr>
|
||||
<td colspan="2" id="create-project-ui-source-selection-message">
|
||||
<h3>Create a project by importing data. What kinds of data files can I import?</h3>
|
||||
<div>TSV, CSV, *SV, Excel (.xls and .xlsx), JSON, XML, RDF as XML, and
|
||||
Google Data documents are all supported. Support for other formats can
|
||||
be added with OpenRefine extensions.
|
||||
</div>
|
||||
<h3 id="or-create-question"></h3>
|
||||
<div id="or-create-formats"></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td id="create-project-ui-source-selection-tabs">
|
||||
<div>Get data from</div>
|
||||
<div id="or-create-from"></div>
|
||||
</td>
|
||||
<td id="create-project-ui-source-selection-tab-bodies"></td>
|
||||
</tr>
|
||||
|
@ -49,6 +49,13 @@ Refine.CreateProjectUI = function(elmt) {
|
||||
this._errorPanel = this.addCustomPanel();
|
||||
this._errorPanel.html(DOM.loadHTML("core", "scripts/index/create-project-error-panel.html"));
|
||||
|
||||
$('#or-create-question').text($.i18n._('core-index-create')["question"]);
|
||||
$('#or-create-formats').text($.i18n._('core-index-create')["formats"]);
|
||||
$('#or-create-from').text($.i18n._('core-index-create')["from"]);
|
||||
|
||||
$('#create-project-progress-cancel-button').text($.i18n._('core-buttons')["cancel"]);
|
||||
$('#create-project-error-ok-button').text($.i18n._('core-buttons')["ok"]);
|
||||
|
||||
$.post(
|
||||
"command/core/get-importing-configuration",
|
||||
null,
|
||||
@ -155,7 +162,7 @@ Refine.CreateProjectUI.prototype.showSourceSelectionPanel = function() {
|
||||
|
||||
Refine.actionAreas.push({
|
||||
id: "create-project",
|
||||
label: "Create Project",
|
||||
label: $.i18n._('core-index-create')["create-proj"],
|
||||
uiClass: Refine.CreateProjectUI
|
||||
});
|
||||
|
||||
@ -166,7 +173,7 @@ Refine.CreateProjectUI.prototype.showImportProgressPanel = function(progressMess
|
||||
|
||||
$('#create-project-progress-message').text(progressMessage);
|
||||
$('#create-project-progress-bar-body').css("width", "0%");
|
||||
$('#create-project-progress-message-left').text('Starting');
|
||||
$('#create-project-progress-message-left').text($.i18n._('core-index-create')["starting"]);
|
||||
$('#create-project-progress-message-center').empty();
|
||||
$('#create-project-progress-message-right').empty();
|
||||
$('#create-project-progress-timing').empty();
|
||||
@ -196,7 +203,7 @@ Refine.CreateProjectUI.prototype.pollImportJob = function(start, jobID, timerID,
|
||||
|
||||
onError(job);
|
||||
} else if (checkDone(job)) {
|
||||
$('#create-project-progress-message').text('Done.');
|
||||
$('#create-project-progress-message').text($.i18n._('core-index-create')["done"]);
|
||||
|
||||
window.clearInterval(timerID);
|
||||
if (callback) {
|
||||
@ -215,13 +222,13 @@ Refine.CreateProjectUI.prototype.pollImportJob = function(start, jobID, timerID,
|
||||
if (secondsRemaining > 1) {
|
||||
if (secondsRemaining > 60) {
|
||||
$('#create-project-progress-timing').text(
|
||||
Math.ceil(secondsRemaining / 60) + " minutes remaining");
|
||||
Math.ceil(secondsRemaining / 60) + " "+$.i18n._('core-index-create')["min-remaining"]);
|
||||
} else {
|
||||
$('#create-project-progress-timing').text(
|
||||
Math.ceil(secondsRemaining) + " seconds remaining");
|
||||
Math.ceil(secondsRemaining) + " "+$.i18n._('core-index-create')["sec-remaining"]);
|
||||
}
|
||||
} else {
|
||||
$('#create-project-progress-timing').text('almost done ...');
|
||||
$('#create-project-progress-timing').text($.i18n._('core-index-create')["almost-done"]);
|
||||
}
|
||||
} else {
|
||||
$('#create-project-progress-bar-body').addClass('indefinite');
|
||||
@ -230,7 +237,7 @@ Refine.CreateProjectUI.prototype.pollImportJob = function(start, jobID, timerID,
|
||||
$('#create-project-progress-message').text(progress.message);
|
||||
if ('memory' in progress) {
|
||||
var percent = progress.memory * 100.0 / progress.maxmemory;
|
||||
$('#create-project-progress-memory').text("Memory usage: "+percent.toFixed()+'% ('+progress.memory+'/'+progress.maxmemory+"MB)");
|
||||
$('#create-project-progress-memory').text($.i18n._('core-index-create')["memory-usage"]+" "+percent.toFixed()+'% ('+progress.memory+'/'+progress.maxmemory+"MB)");
|
||||
if (percent > 90) {
|
||||
$('#create-project-progress-memory').addClass('warning');
|
||||
} else {
|
||||
@ -247,7 +254,7 @@ Refine.CreateProjectUI.prototype.showImportJobError = function(message, stack) {
|
||||
var self = this;
|
||||
|
||||
$('#create-project-error-message').text(message);
|
||||
$('#create-project-error-stack').text(stack || 'No technical details.');
|
||||
$('#create-project-error-stack').text(stack || $.i18n._('core-index-create')["no-details"]);
|
||||
|
||||
this.showCustomPanel(this._errorPanel);
|
||||
$('#create-project-error-ok-button').unbind().click(function() {
|
||||
|
@ -174,7 +174,7 @@ Refine.DefaultImportingController.prototype._prepareData = function() {
|
||||
Refine.DefaultImportingController.prototype._ensureFormatParserUIHasInitializationData = function(format, onDone) {
|
||||
if (!(format in this._parserOptions)) {
|
||||
var self = this;
|
||||
var dismissBusy = DialogSystem.showBusy("Inspecting selected files ...");
|
||||
var dismissBusy = DialogSystem.showBusy($.i18n._('core-index-import')["inspecting"]);
|
||||
$.post(
|
||||
"command/core/importing-controller?" + $.param({
|
||||
"controller": "core/default-importing-controller",
|
||||
@ -263,7 +263,7 @@ Refine.DefaultImportingController.prototype._createProject = function() {
|
||||
if ((this._formatParserUI) && this._formatParserUI.confirmReadyToCreateProject()) {
|
||||
var projectName = $.trim(this._parsingPanelElmts.projectNameInput[0].value);
|
||||
if (projectName.length === 0) {
|
||||
window.alert("Please name the project.");
|
||||
window.alert($.i18n._('core-index-import')["warning-name"]);
|
||||
this._parsingPanelElmts.projectNameInput.focus();
|
||||
return;
|
||||
}
|
||||
@ -302,14 +302,14 @@ Refine.DefaultImportingController.prototype._createProject = function() {
|
||||
document.location = "project?project=" + job.config.projectID;
|
||||
},
|
||||
function(job) {
|
||||
alert('Errors:\n' + Refine.CreateProjectUI.composeErrorMessage(job));
|
||||
alert($.i18n._('core-index-import')["errors"]+'\n' + Refine.CreateProjectUI.composeErrorMessage(job));
|
||||
self._onImportJobReady();
|
||||
}
|
||||
);
|
||||
},
|
||||
1000
|
||||
);
|
||||
self._createProjectUI.showImportProgressPanel("Creating project ...", function() {
|
||||
self._createProjectUI.showImportProgressPanel($.i18n._('core-index-import')["creating-proj"], function() {
|
||||
// stop the timed polling
|
||||
window.clearInterval(timerID);
|
||||
|
||||
|
@ -1,34 +1,31 @@
|
||||
<div bind="wizardHeader" class="default-importing-wizard-header"><div class="grid-layout layout-tightest layout-full"><table><tr>
|
||||
<td width="1%"><button bind="startOverButton" class="button">« Start Over</button></td>
|
||||
<td width="98%">Select Files to Import</td>
|
||||
<td width="1%"><button bind="nextButton" class="button button-primary">Configure Parsing Options »</button></td>
|
||||
<td width="1%"><button bind="startOverButton" class="button"></button></td>
|
||||
<td width="98%" id="or-import-select"></td>
|
||||
<td width="1%"><button bind="nextButton" class="button button-primary"></button></td>
|
||||
</tr></table></div></div>
|
||||
|
||||
<div bind="controlPanel" class="default-importing-file-selection-control-panel">
|
||||
<div class="grid-layout layout-full layout-tighter"><table>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
There are several files available.
|
||||
Please select the ones to import.
|
||||
</td>
|
||||
<td colspan="3" id="or-import-severalFile"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="98%" bind="summary"></td>
|
||||
<td width="1%"><button bind="selectAllButton" class="button">Select All</button></td>
|
||||
<td width="1%"><button bind="unselectAllButton" class="button">Unselect All</button></td>
|
||||
<td width="1%"><button bind="selectAllButton" class="button"></button></td>
|
||||
<td width="1%"><button bind="unselectAllButton" class="button"></button></td>
|
||||
</tr>
|
||||
</table></div>
|
||||
|
||||
<h2>Select by Extension</h2>
|
||||
<h2 id="or-import-selExt"></h2>
|
||||
<div bind="extensionContainer" class="grid-layout layout-full layout-tightest"></div>
|
||||
|
||||
<h2>Select by Regex on File Names</h2>
|
||||
<h2 id="or-import-regex"></h2>
|
||||
<div class="grid-layout layout-full layout-tighter"><table>
|
||||
<tr><td colspan="3"><input bind="regexInput" style="width: 100%;"/></td></tr>
|
||||
<tr>
|
||||
<td bind="regexSummary"></td>
|
||||
<td width="1%"><button bind="selectRegexButton" class="button">Select</button></td>
|
||||
<td width="1%"><button bind="unselectRegexButton" class="button">Unselect</button></td>
|
||||
<td width="1%"><button bind="selectRegexButton" class="button"></button></td>
|
||||
<td width="1%"><button bind="unselectRegexButton" class="button"></button></td>
|
||||
</tr>
|
||||
</table></div>
|
||||
</div>
|
||||
|
@ -52,12 +52,25 @@ Refine.DefaultImportingController.prototype._disposeFileSelectionPanel = functio
|
||||
};
|
||||
|
||||
Refine.DefaultImportingController.prototype._prepareFileSelectionPanel = function() {
|
||||
var self = this;
|
||||
var self = this;
|
||||
|
||||
this._fileSelectionPanel.unbind().empty().html(
|
||||
DOM.loadHTML("core", "scripts/index/default-importing-controller/file-selection-panel.html"));
|
||||
|
||||
this._fileSelectionPanelElmts = DOM.bind(this._fileSelectionPanel);
|
||||
|
||||
$('#or-import-select').text($.i18n._('core-index-import')["select-file"]);
|
||||
$('#or-import-severalFile').text($.i18n._('core-index-import')["several-file"]);
|
||||
$('#or-import-selExt').text($.i18n._('core-index-import')["sel-by-extension"]);
|
||||
$('#or-import-regex').text($.i18n._('core-index-import')["sel-by-regex"]);
|
||||
|
||||
this._fileSelectionPanelElmts.startOverButton.html($.i18n._('core-buttons')["startover"]);
|
||||
this._fileSelectionPanelElmts.nextButton.html($.i18n._('core-buttons')["conf-pars-opt"]);
|
||||
this._fileSelectionPanelElmts.selectAllButton.text($.i18n._('core-buttons')["select-all"]);
|
||||
this._fileSelectionPanelElmts.unselectAllButton.text($.i18n._('core-buttons')["unselect-all"]);
|
||||
this._fileSelectionPanelElmts.selectRegexButton.text($.i18n._('core-buttons')["select"]);
|
||||
this._fileSelectionPanelElmts.unselectRegexButton.text($.i18n._('core-buttons')["unselect"]);
|
||||
|
||||
this._fileSelectionPanelElmts.startOverButton.click(function() {
|
||||
self._startOver();
|
||||
});
|
||||
@ -97,7 +110,7 @@ Refine.DefaultImportingController.prototype._renderFileSelectionPanelFileTable =
|
||||
|
||||
this._fileSelectionPanelElmts.filePanel.empty();
|
||||
|
||||
var fileTable = $('<table><tr><th>Import?</th><th>Name</th><th>Mime-type</th><th>Format</th><th>Size</th></tr></table>')
|
||||
var fileTable = $('<table><tr><th>'+$.i18n._('core-index-import')["import"]+'</th><th>'+$.i18n._('core-index-import')["name"]+'</th><th>'+$.i18n._('core-index-import')["mime-type"]+'</th><th>'+$.i18n._('core-index-import')["format"]+'</th><th>'+$.i18n._('core-index-import')["size"]+'</th></tr></table>')
|
||||
.appendTo(this._fileSelectionPanelElmts.filePanel)[0];
|
||||
|
||||
var round = function(n) {
|
||||
@ -189,7 +202,7 @@ Refine.DefaultImportingController.prototype._renderFileSelectionPanelControlPane
|
||||
$('<td>').text(extension.extension).appendTo(tr);
|
||||
$('<td>').text(extension.count + (extension.count > 1 ? " files" : " file")).appendTo(tr);
|
||||
$('<button>')
|
||||
.text("Select")
|
||||
.text($.i18n._('core-buttons')["select"])
|
||||
.addClass("button")
|
||||
.appendTo($('<td>').appendTo(tr))
|
||||
.click(function() {
|
||||
@ -207,7 +220,7 @@ Refine.DefaultImportingController.prototype._renderFileSelectionPanelControlPane
|
||||
self._updateFileSelectionSummary();
|
||||
});
|
||||
$('<button>')
|
||||
.text("Unselect")
|
||||
.text($.i18n._('core-buttons')["unselect"])
|
||||
.addClass("button")
|
||||
.appendTo($('<td>').appendTo(tr))
|
||||
.click(function() {
|
||||
@ -309,12 +322,12 @@ Refine.DefaultImportingController.prototype._updateFileSelectionSummary = functi
|
||||
|
||||
Refine.DefaultImportingController.prototype._commitFileSelection = function() {
|
||||
if (this._job.config.fileSelection.length === 0) {
|
||||
alert("Please select at least one file.");
|
||||
alert();
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
var dismissBusy = DialogSystem.showBusy("Inspecting<br/>selected files ...");
|
||||
var dismissBusy = DialogSystem.showBusy($.i18n._('core-index-import')["inspecting-files"]);
|
||||
$.post(
|
||||
"command/core/importing-controller?" + $.param({
|
||||
"controller": "core/default-importing-controller",
|
||||
@ -328,9 +341,9 @@ Refine.DefaultImportingController.prototype._commitFileSelection = function() {
|
||||
dismissBusy();
|
||||
|
||||
if (!(data)) {
|
||||
self._createProjectUI.showImportJobError("Unknown error");
|
||||
self._createProjectUI.showImportJobError($.i18n._('core-index-import')["unknown-err"]);
|
||||
} else if (data.code == "error" || !("job" in data)) {
|
||||
self._createProjectUI.showImportJobError((data.message) ? ("Error: " + data.message) : "Unknown error");
|
||||
self._createProjectUI.showImportJobError((data.message) ? ($.i18n._('core-index-import')["error"]+ ' ' + data.message) : $.i18n._('core-index-import')["unknown-err"]);
|
||||
} else {
|
||||
// Different files might be selected. We start over again.
|
||||
delete this._parserOptions;
|
||||
|
@ -1,20 +1,20 @@
|
||||
<div bind="wizardHeader" class="default-importing-wizard-header"><div class="grid-layout layout-tightest layout-full"><table><tr>
|
||||
<td width="1%"><button bind="startOverButton" class="button">« Start Over</button></td>
|
||||
<td width="1%"><button bind="previousButton" class="button">« Re-select Files</button></td>
|
||||
<td width="98%">Configure Parsing Options</td>
|
||||
<td style="text-align: right;">Project name</td>
|
||||
<td width="1%"><button bind="startOverButton" class="button"></button></td>
|
||||
<td width="1%"><button bind="previousButton" class="button"></button></td>
|
||||
<td width="98%" id="or-import-parsopt"></td>
|
||||
<td style="text-align: right;" id="or-import-projname"></td>
|
||||
<td width="1%"><input class="inline" type="text" size="30" bind="projectNameInput" /></td>
|
||||
<td width="1%"><button bind="nextButton" class="button button-primary">Create Project »</button></td>
|
||||
<td width="1%"><button bind="nextButton" class="button button-primary"></button></td>
|
||||
</tr></table></div></div>
|
||||
|
||||
<div bind="dataPanel" class="default-importing-parsing-data-panel"></div>
|
||||
<div bind="progressPanel" class="default-importing-progress-data-panel">
|
||||
<img src="images/large-spinner.gif" /> Updating preview ...
|
||||
<img src="images/large-spinner.gif" /> <span id="or-import-updating"></span>
|
||||
</div>
|
||||
|
||||
<div bind="controlPanel" class="default-importing-parsing-control-panel"><table><tr>
|
||||
<td class="default-importing-parsing-control-panel-formats">
|
||||
<div class="default-importing-parsing-control-panel-formats-message">Parse data as</div>
|
||||
<div class="default-importing-parsing-control-panel-formats-message" id="or-import-parseas"></div>
|
||||
<div bind="formatsContainer"></div>
|
||||
</td>
|
||||
<td bind="optionsContainer" class="default-importing-parsing-control-panel-options-panel"></td>
|
||||
|
@ -44,7 +44,7 @@ Refine.DefaultImportingController.prototype._showParsingPanel = function(hasFile
|
||||
this._formatParserUI.dispose();
|
||||
delete this._formatParserUI;
|
||||
}
|
||||
|
||||
|
||||
this._prepareParsingPanel();
|
||||
this._parsingPanelElmts.nextButton.click(function() {
|
||||
self._createProject();
|
||||
@ -92,6 +92,13 @@ Refine.DefaultImportingController.prototype._prepareParsingPanel = function() {
|
||||
});
|
||||
this._parsingPanelElmts.progressPanel.hide();
|
||||
|
||||
this._parsingPanelElmts.startOverButton.html($.i18n._('core-buttons')["startover"]);
|
||||
this._parsingPanelElmts.nextButton.html($.i18n._('core-buttons')["create-project"]);
|
||||
$('#or-import-parsopt').text($.i18n._('core-index-import')["parsing-options"]);
|
||||
$('#or-import-projname').html($.i18n._('core-index-import')["project-name"]);
|
||||
$('#or-import-updating').text($.i18n._('core-index-import')["updating-preview"]);
|
||||
$('#or-import-parseas').text($.i18n._('core-index-import')["parse-as"]);
|
||||
|
||||
this._parsingPanelResizer = function() {
|
||||
var elmts = self._parsingPanelElmts;
|
||||
var width = self._parsingPanel.width();
|
||||
|
@ -1,6 +1,6 @@
|
||||
<form bind="form"><div class="grid-layout layout-normal"><table>
|
||||
<tr><td>Paste data from clipboard here:</td></tr>
|
||||
<tr><td id="or-import-clipboard"></td></tr>
|
||||
<tr><td><textarea bind="textInput" name="clipboard" id="default-importing-clipboard-textarea"></textarea>
|
||||
</td></tr>
|
||||
<tr><td><button bind="nextButton" class="button button-primary" type="button">Next »</button></td></tr>
|
||||
<tr><td><button bind="nextButton" class="button button-primary" type="button"></button></td></tr>
|
||||
</table></div></form>
|
@ -1,5 +1,5 @@
|
||||
<form bind="form"><div class="grid-layout layout-normal"><table>
|
||||
<tr><td>Locate one or more files on your computer to upload:</td></tr>
|
||||
<tr><td id="or-import-locate"></td></tr>
|
||||
<tr><td><input type="file" multiple bind="fileInput" name="upload" /></td></tr>
|
||||
<tr><td><button bind="nextButton" class="button button-primary" type="button">Next »</button></td></tr>
|
||||
<tr><td><button bind="nextButton" class="button button-primary" type="button"></button></td></tr>
|
||||
</table></div></form>
|
@ -1,8 +1,8 @@
|
||||
<form bind="form"><div class="grid-layout layout-normal"><table>
|
||||
<tr><td colspan="2">Enter one or more web addresses (URLs) pointing to data to download:</td></tr>
|
||||
<tr><td colspan="2" id="or-import-enterurl"></td></tr>
|
||||
<tr bind="urlRow"><td colspan="2"><input bind="urlInput" name="download" class="default-importing-web-url" /></td></tr>
|
||||
<tr bind="buttons">
|
||||
<td width="1"><button bind="addButton" class="button" type="button">Add Another URL</button></td>
|
||||
<td><button bind="nextButton" class="button button-primary" type="button">Next »</button></td>
|
||||
<td width="1"><button bind="addButton" class="button" type="button"></button></td>
|
||||
<td><button bind="nextButton" class="button button-primary" type="button"></button></td>
|
||||
</tr>
|
||||
</table></div></form>
|
@ -35,7 +35,7 @@ function ThisComputerImportingSourceUI(controller) {
|
||||
this._controller = controller;
|
||||
}
|
||||
Refine.DefaultImportingController.sources.push({
|
||||
"label": "This Computer",
|
||||
"label": $.i18n._('core-index-import')["this-computer"],
|
||||
"id": "upload",
|
||||
"uiClass": ThisComputerImportingSourceUI
|
||||
});
|
||||
@ -46,11 +46,16 @@ ThisComputerImportingSourceUI.prototype.attachUI = function(bodyDiv) {
|
||||
bodyDiv.html(DOM.loadHTML("core", "scripts/index/default-importing-sources/import-from-computer-form.html"));
|
||||
|
||||
this._elmts = DOM.bind(bodyDiv);
|
||||
|
||||
$('#or-import-locate').text($.i18n._('core-index-import')["locate-files"]);
|
||||
$('#or-import-locate').text($.i18n._('core-index-import')["locate-files"]);
|
||||
this._elmts.nextButton.html($.i18n._('core-buttons')["next"]);
|
||||
|
||||
this._elmts.nextButton.click(function(evt) {
|
||||
if (self._elmts.fileInput[0].files.length === 0) {
|
||||
window.alert("You must specify a data file to import.");
|
||||
window.alert($.i18n._('core-index-import')["warning-data-file"]);
|
||||
} else {
|
||||
self._controller.startImportJob(self._elmts.form, "Uploading data ...");
|
||||
self._controller.startImportJob(self._elmts.form, $.i18n._('core-index-import')["uploading-data"]);
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -62,7 +67,7 @@ function UrlImportingSourceUI(controller) {
|
||||
this._controller = controller;
|
||||
}
|
||||
Refine.DefaultImportingController.sources.push({
|
||||
"label": "Web Addresses (URLs)",
|
||||
"label": $.i18n._('core-index-import')["web-address"],
|
||||
"id": "download",
|
||||
"uiClass": UrlImportingSourceUI
|
||||
});
|
||||
@ -73,11 +78,16 @@ UrlImportingSourceUI.prototype.attachUI = function(bodyDiv) {
|
||||
bodyDiv.html(DOM.loadHTML("core", "scripts/index/default-importing-sources/import-from-web-form.html"));
|
||||
|
||||
this._elmts = DOM.bind(bodyDiv);
|
||||
|
||||
$('#or-import-enterurl').text($.i18n._('core-index-import')["enter-url"]);
|
||||
this._elmts.addButton.html($.i18n._('core-buttons')["add-url"]);
|
||||
this._elmts.nextButton.html($.i18n._('core-buttons')["next"]);
|
||||
|
||||
this._elmts.nextButton.click(function(evt) {
|
||||
if ($.trim(self._elmts.urlInput[0].value).length === 0) {
|
||||
window.alert("You must specify a web address (URL) to import.");
|
||||
window.alert($.i18n._('core-index-import')["warning-web-address"]);
|
||||
} else {
|
||||
self._controller.startImportJob(self._elmts.form, "Downloading data ...");
|
||||
self._controller.startImportJob(self._elmts.form, $.i18n._('core-index-import')["downloading-data"]);
|
||||
}
|
||||
});
|
||||
this._elmts.addButton.click(function(evt) {
|
||||
@ -93,7 +103,7 @@ function ClipboardImportingSourceUI(controller) {
|
||||
this._controller = controller;
|
||||
}
|
||||
Refine.DefaultImportingController.sources.push({
|
||||
"label": "Clipboard",
|
||||
"label": $.i18n._('core-index-import')["clipboard"],
|
||||
"id": "clipboard",
|
||||
"uiClass": ClipboardImportingSourceUI
|
||||
});
|
||||
@ -104,11 +114,15 @@ ClipboardImportingSourceUI.prototype.attachUI = function(bodyDiv) {
|
||||
bodyDiv.html(DOM.loadHTML("core", "scripts/index/default-importing-sources/import-from-clipboard-form.html"));
|
||||
|
||||
this._elmts = DOM.bind(bodyDiv);
|
||||
|
||||
$('#or-import-clipboard').text($.i18n._('core-index-import')["clipboard-label"]);
|
||||
this._elmts.nextButton.html($.i18n._('core-buttons')["next"]);
|
||||
|
||||
this._elmts.nextButton.click(function(evt) {
|
||||
if ($.trim(self._elmts.textInput[0].value).length === 0) {
|
||||
window.alert("You must paste some data to import.");
|
||||
window.alert($.i18n._('core-index-import')["warning-clipboard"]);
|
||||
} else {
|
||||
self._controller.startImportJob(self._elmts.form, "Uploading pasted data ...");
|
||||
self._controller.startImportJob(self._elmts.form, $.i18n._('core-index-import')["uploading-pasted-data"]);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
@ -1,17 +1,17 @@
|
||||
<form id="project-upload-form" method="post" enctype="multipart/form-data" action="command/core/import-project" accept-charset="UTF-8">
|
||||
<div class="grid-layout layout-normal"><table>
|
||||
<tr>
|
||||
<td colspan="2">Locate an existing Refine project file (.tar or .tar.gz):</td>
|
||||
<td colspan="2" id="or-import-locate"></td>
|
||||
<tr>
|
||||
<td>Project file:</th>
|
||||
<td id="or-import-file"></th>
|
||||
<td><input type="file" id="project-tar-file-input" name="project-file" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Re-name project (optional):</th>
|
||||
<td id="or-import-rename"></th>
|
||||
<td><input type="text" size="25" id="project-name-input" name="project-name" /></td></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="submit" value="Import Project" id="import-project-button" class="button button-primary" /></td>
|
||||
<td><input type="submit" id="import-project-button" class="button button-primary" /></td>
|
||||
</tr>
|
||||
</table></div>
|
||||
</form>
|
||||
|
@ -36,11 +36,16 @@ Refine.ImportProjectUI = function(elmt) {
|
||||
|
||||
this._elmt = elmt;
|
||||
this._elmts = DOM.bind(elmt);
|
||||
|
||||
$('#or-import-locate').text($.i18n._('core-index-import')["locate"]);
|
||||
$('#or-import-file').text($.i18n._('core-index-import')["file"]);
|
||||
$('#or-import-rename').text($.i18n._('core-index-import')["rename"]);
|
||||
$('#import-project-button').attr("value",$.i18n._('core-buttons')["import-proj"]);
|
||||
};
|
||||
|
||||
Refine.actionAreas.push({
|
||||
id: "import-project",
|
||||
label: "Import Project",
|
||||
label: $.i18n._('core-index-import')["import-proj"],
|
||||
uiClass: Refine.ImportProjectUI
|
||||
});
|
||||
|
||||
|
21
main/webapp/modules/core/scripts/index/lang-settings-ui.html
Normal file
21
main/webapp/modules/core/scripts/index/lang-settings-ui.html
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
<div class="grid-layout layout-normal" id="project-upload-form">
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="2" bind="or_lang_label"></td>
|
||||
</tr>
|
||||
<tr></tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><select id="langDD">
|
||||
<option value="en" selected>English</option>
|
||||
<option value="it">Italian</option>
|
||||
</select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="submit" id="set-lang-button" bind="set_lan_btn"
|
||||
class="button button-primary" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
35
main/webapp/modules/core/scripts/index/lang-settings-ui.js
Normal file
35
main/webapp/modules/core/scripts/index/lang-settings-ui.js
Normal file
@ -0,0 +1,35 @@
|
||||
Refine.SetLanguageUI = function(elmt) {
|
||||
var self = this;
|
||||
|
||||
elmt.html(DOM.loadHTML("core", "scripts/index/lang-settings-ui.html"));
|
||||
|
||||
this._elmt = elmt;
|
||||
this._elmts = DOM.bind(elmt);
|
||||
|
||||
this._elmts.or_lang_label.text($.i18n._('core-index-lang')["label"]+":");
|
||||
this._elmts.set_lan_btn.attr("value", $.i18n._('core-index-lang')["send-req"]);
|
||||
|
||||
this._elmts.set_lan_btn.bind('click', function(e) {
|
||||
$.ajax({
|
||||
url : "/command/core/set-language?",
|
||||
type : "POST",
|
||||
async : false,
|
||||
data : {
|
||||
lng : $("#langDD option:selected").val()
|
||||
},
|
||||
success : function(data) {
|
||||
alert($.i18n._('core-index-lang')["page-reload"]);
|
||||
location.reload(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Refine.SetLanguageUI.prototype.resize = function() {
|
||||
};
|
||||
|
||||
Refine.actionAreas.push({
|
||||
id : "lang-settings",
|
||||
label : $.i18n._('core-index-lang')["lang-settings"],
|
||||
uiClass : Refine.SetLanguageUI
|
||||
});
|
@ -1,4 +1,4 @@
|
||||
<div class="relative-frame">
|
||||
<div bind="projectsContainer" id="projects-container"></div>
|
||||
<div bind="workspaceControls" id="projects-workspace-controls"><a id="projects-workspace-open" href="javascript:{}" class="secondary">Browse workspace directory</a></div>
|
||||
<div bind="workspaceControls" id="projects-workspace-controls"><a id="projects-workspace-open" href="javascript:{}" class="secondary"></a></div>
|
||||
</div>
|
||||
|
@ -57,6 +57,7 @@ Refine.OpenProjectUI = function(elmt) {
|
||||
return self._onClickUploadFileButton(evt);
|
||||
});
|
||||
|
||||
$('#projects-workspace-open').text($.i18n._('core-index-open')["browse"]);
|
||||
$('#projects-workspace-open').click(function() {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
@ -122,8 +123,8 @@ Refine.OpenProjectUI.prototype._renderProjects = function(data) {
|
||||
'<table class="list-table"><tr>' +
|
||||
'<th></th>' +
|
||||
'<th></th>' +
|
||||
'<th>Last modified</th>' +
|
||||
'<th>Name</th>' +
|
||||
'<th>'+$.i18n._('core-index-open')["last-mod"]+'</th>' +
|
||||
'<th>'+$.i18n._('core-index-open')["name"]+'</th>' +
|
||||
'</tr></table>'
|
||||
).appendTo(container)[0];
|
||||
|
||||
@ -133,12 +134,12 @@ Refine.OpenProjectUI.prototype._renderProjects = function(data) {
|
||||
|
||||
var deleteLink = $('<a></a>')
|
||||
.addClass("delete-project")
|
||||
.attr("title","Delete this project")
|
||||
.attr("title",$.i18n._('core-index-open')["del-title"])
|
||||
.attr("href","")
|
||||
.css("visibility", "hidden")
|
||||
.html("<img src='images/close.png' />")
|
||||
.click(function() {
|
||||
if (window.confirm("Are you sure you want to delete project \"" + project.name + "\"?")) {
|
||||
if (window.confirm($.i18n._('core-index-open')["del-body"] + project.name + "\"?")) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "command/core/delete-project",
|
||||
@ -157,12 +158,12 @@ Refine.OpenProjectUI.prototype._renderProjects = function(data) {
|
||||
);
|
||||
|
||||
var renameLink = $('<a></a>')
|
||||
.text("rename")
|
||||
.text($.i18n._('core-index-open')["rename"])
|
||||
.addClass("secondary")
|
||||
.attr("href", "javascript:{}")
|
||||
.css("visibility", "hidden")
|
||||
.click(function() {
|
||||
var name = window.prompt("New project name:", project.name);
|
||||
var name = window.prompt($.i18n._('core-index-open')["new-title"], project.name);
|
||||
if (name === null) {
|
||||
return;
|
||||
}
|
||||
@ -181,7 +182,7 @@ Refine.OpenProjectUI.prototype._renderProjects = function(data) {
|
||||
if (data && typeof data.code != 'undefined' && data.code == "ok") {
|
||||
nameLink.text(name);
|
||||
} else {
|
||||
alert("Failed to rename project: " + data.message);
|
||||
alert($.i18n._('core-index-open')["warning-rename"]+" " + data.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -220,10 +221,10 @@ Refine.OpenProjectUI.prototype._onClickUploadFileButton = function(evt) {
|
||||
var projectName = $("#project-name-input")[0].value;
|
||||
var dataURL = $.trim($("#project-url-input")[0].value);
|
||||
if (! $.trim(projectName).length) {
|
||||
window.alert("You must specify a project name.");
|
||||
window.alert($.i18n._('core-index-open')["warning-proj-name"]);
|
||||
|
||||
} else if ($("#project-file-input")[0].files.length === 0 && ! dataURL.length) {
|
||||
window.alert("You must specify a data file to upload or a URL to retrieve.");
|
||||
window.alert($.i18n._('core-index-open')["warning-data-file"]);
|
||||
|
||||
} else {
|
||||
$("#file-upload-form").attr("action",
|
||||
@ -248,6 +249,6 @@ Refine.OpenProjectUI.prototype._onClickUploadFileButton = function(evt) {
|
||||
|
||||
Refine.actionAreas.push({
|
||||
id: "open-project",
|
||||
label: "Open Project",
|
||||
label: $.i18n._('core-index-open')["open-proj"],
|
||||
uiClass: Refine.OpenProjectUI
|
||||
});
|
||||
|
@ -4,42 +4,42 @@
|
||||
<td><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td style="text-align: right;"> </td>
|
||||
<td width="1%"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tightest"><table bind="sheetRecordContainer">
|
||||
<tr><td colspan="3">Worksheets to Import</td></tr>
|
||||
<tr><td colspan="3" id="or-import-worksheet"></td></tr>
|
||||
</table></div></td>
|
||||
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr>
|
||||
<td width="1%"><input type="checkbox" bind="ignoreCheckbox" id="$ignore" /></td>
|
||||
<td><label for="$ignore">Ignore first</label></td>
|
||||
<td><label for="$ignore" id="or-import-ignore"></label></td>
|
||||
<td><input bind="ignoreInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$ignore">line(s) at beginning of file</label></td></tr>
|
||||
<label for="$ignore" id="or-import-lines"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="headerLinesCheckbox" id="$headers" /></td>
|
||||
<td><label for="$headers">Parse next</label></td>
|
||||
<td><label for="$headers" id="or-import-parse"></label></td>
|
||||
<td><input bind="headerLinesInput" type="text" class="lightweight" size="2" value="1" />
|
||||
<label for="$headers">line(s) as column headers</label></td></tr>
|
||||
<label for="$headers" id="or-import-header"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="skipCheckbox" id="$skip" /></td>
|
||||
<td><label for="$skip">Discard initial</label></td>
|
||||
<td><label for="$skip" id="or-import-discard"></label></td>
|
||||
<td><input bind="skipInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$skip">row(s) of data</label></td></tr>
|
||||
<label for="$skip" id="or-import-rows"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" id="or-import-load"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">row(s) of data</label></td></tr>
|
||||
<label for="$limit" id="or-import-rows2"></label></td></tr>
|
||||
</table></div></td>
|
||||
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankRowsCheckbox" id="$store-blank-rows" /></td>
|
||||
<td colspan="2"><label for="$store-blank-rows">Store blank rows</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-rows" id="or-import-blank"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankCellsAsNullsCheckbox" id="$store-blank-cells" /></td>
|
||||
<td colspan="2"><label for="$store-blank-cells">Store blank cells as nulls</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-cells" id="or-import-null"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="includeFileSourcesCheckbox" id="$include-file-sources" /></td>
|
||||
<td><label for="$include-file-sources">Store file source<br/>(file names, URLs)<br/>in each row</label></td></tr>
|
||||
<td><label for="$include-file-sources" id="or-import-source"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div>
|
@ -118,6 +118,20 @@ Refine.ExcelParserUI.prototype._initialize = function() {
|
||||
DOM.loadHTML("core", "scripts/index/parser-interfaces/excel-parser-ui.html"));
|
||||
this._optionContainerElmts = DOM.bind(this._optionContainer);
|
||||
this._optionContainerElmts.previewButton.click(function() { self._updatePreview(); });
|
||||
|
||||
this._optionContainerElmts.previewButton.html($.i18n._('core-buttons')["update-preview"]);
|
||||
$('#or-import-worksheet').text($.i18n._('core-index-import')["import-worksheet"]);
|
||||
$('#or-import-ignore').text($.i18n._('core-index-parser')["ignore-first"]);
|
||||
$('#or-import-lines').text($.i18n._('core-index-parser')["lines-beg"]);
|
||||
$('#or-import-parse').text($.i18n._('core-index-parser')["parse-next"]);
|
||||
$('#or-import-header').text($.i18n._('core-index-parser')["lines-header"]);
|
||||
$('#or-import-discard').text($.i18n._('core-index-parser')["discard-initial"]);
|
||||
$('#or-import-rows').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-load').text($.i18n._('core-index-parser')["load-at-most"]);
|
||||
$('#or-import-rows2').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-blank').text($.i18n._('core-index-parser')["store-blank"]);
|
||||
$('#or-import-null').text($.i18n._('core-index-parser')["store-nulls"]);
|
||||
$('#or-import-source').html($.i18n._('core-index-parser')["store-source"]);
|
||||
|
||||
var sheetTable = this._optionContainerElmts.sheetRecordContainer[0];
|
||||
$.each(this._config.sheetRecords, function(i, v) {
|
||||
|
@ -2,52 +2,52 @@
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tighter"><table>
|
||||
<tr>
|
||||
<td width="1%">Character encoding</td>
|
||||
<td width="1%" id="or-import-encoding"></td>
|
||||
<td><input bind="encodingInput"></input></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
<td><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td style="text-align: right;"> </td>
|
||||
<td width="1%"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td>Column widths:</td><td><input style="width: 40em;" bind="columnWidthsInput" /></td><td>comma separated numbers</td></tr>
|
||||
<tr><td>Column names:</td><td><input style="width: 40em;" bind="columnNamesInput" /></td><td>optional, comma separated</td></tr>
|
||||
<tr><td id="or-import-columnWidth"></td><td><input style="width: 40em;" bind="columnWidthsInput" /></td><td id="or-import-comma"></td></tr>
|
||||
<tr><td id="or-import-columnNames"></td><td><input style="width: 40em;" bind="columnNamesInput" /></td><td id="or-import-optional"></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="ignoreCheckbox" id="$ignore" /></td>
|
||||
<td><label for="$ignore">Ignore first</label></td>
|
||||
<td><label for="$ignore" id="or-import-ignore"></label></td>
|
||||
<td><input bind="ignoreInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$ignore">line(s) at beginning of file</label></td></tr>
|
||||
<label for="$ignore" id="or-import-lines"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="headerLinesCheckbox" id="$headers" /></td>
|
||||
<td><label for="$headers">Parse next</label></td>
|
||||
<td><label for="$headers" id="or-import-parse"></label></td>
|
||||
<td><input bind="headerLinesInput" type="text" class="lightweight" size="2" value="1" />
|
||||
<label for="$headers">line(s) as column headers</label></td></tr>
|
||||
<label for="$headers" id="or-import-header"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="skipCheckbox" id="$skip" /></td>
|
||||
<td><label for="$skip">Discard initial</label></td>
|
||||
<td><label for="$skip" id="or-import-discard"></label></td>
|
||||
<td><input bind="skipInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$skip">row(s) of data</label></td></tr>
|
||||
<label for="$skip" id="or-import-rows"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" id="or-import-load"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">row(s) of data</label></td></tr>
|
||||
<label for="$limit" id="or-import-rows2"></label></td></tr>
|
||||
</table></div></td>
|
||||
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="guessCellValueTypesCheckbox" id="$guess" /></td>
|
||||
<td><label for="$guess">Parse cell text into<br/>numbers, dates, ...</label></td></tr>
|
||||
<td><label for="$guess" id="or-import-parseCell"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankRowsCheckbox" id="$store-blank-rows" /></td>
|
||||
<td colspan="2"><label for="$store-blank-rows">Store blank rows</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-rows" id="or-import-blank"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankCellsAsNullsCheckbox" id="$store-blank-cells" /></td>
|
||||
<td colspan="2"><label for="$store-blank-cells">Store blank cells as nulls</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-cells" id="or-import-null"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="includeFileSourcesCheckbox" id="$include-file-sources" /></td>
|
||||
<td><label for="$include-file-sources">Store file source<br/>(file names, URLs)<br/>in each row</label></td></tr>
|
||||
<td><label for="$include-file-sources" id="or-import-source"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div>
|
@ -121,6 +121,26 @@ Refine.FixedWidthParserUI.prototype._initialize = function() {
|
||||
this._optionContainerElmts = DOM.bind(this._optionContainer);
|
||||
this._optionContainerElmts.previewButton.click(function() { self.updatePreview(); });
|
||||
|
||||
this._optionContainerElmts.previewButton.html($.i18n._('core-buttons')["update-preview"]);
|
||||
$('#or-import-encoding').html($.i18n._('core-index-import')["char-encoding"]);
|
||||
$('#or-import-columnWidth').text($.i18n._('core-index-import')["column-widths"]);
|
||||
$('#or-import-columnNames').text($.i18n._('core-index-import')["column-names"]);
|
||||
$('#or-import-comma').text($.i18n._('core-index-import')["comma-separated"]);
|
||||
$('#or-import-optional').text($.i18n._('core-index-import')["optional-separated"]);
|
||||
|
||||
$('#or-import-ignore').text($.i18n._('core-index-parser')["ignore-first"]);
|
||||
$('#or-import-lines').text($.i18n._('core-index-parser')["lines-beg"]);
|
||||
$('#or-import-parse').text($.i18n._('core-index-parser')["parse-next"]);
|
||||
$('#or-import-header').text($.i18n._('core-index-parser')["lines-header"]);
|
||||
$('#or-import-discard').text($.i18n._('core-index-parser')["discard-initial"]);
|
||||
$('#or-import-rows').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-load').text($.i18n._('core-index-parser')["load-at-most"]);
|
||||
$('#or-import-rows2').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-parseCell').html($.i18n._('core-index-parser')["parse-cell"]);
|
||||
$('#or-import-blank').text($.i18n._('core-index-parser')["store-blank"]);
|
||||
$('#or-import-null').text($.i18n._('core-index-parser')["store-nulls"]);
|
||||
$('#or-import-source').html($.i18n._('core-index-parser')["store-source"]);
|
||||
|
||||
this._optionContainerElmts.encodingInput
|
||||
.attr('value', this._config.encoding || '')
|
||||
.click(function() {
|
||||
|
@ -1,4 +1,2 @@
|
||||
<div class="json-parser-ui-select-message">
|
||||
Click on the first JSON { } node corresponding to the first record to load.
|
||||
</div>
|
||||
<div class="json-parser-ui-select-message" id="or-import-jsonParser"></div>
|
||||
<div class="json-parser-ui-select-dom" bind="domContainer"></div>
|
@ -3,25 +3,25 @@
|
||||
<td colspan="2"><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td style="text-align: right;"> </td>
|
||||
<td width="1%"><button class="button" bind="pickRecordElementsButton">Pick Record Nodes</button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td width="1%"><button class="button" bind="pickRecordElementsButton"></button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" id="or-import-load"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">record(s) of data</label></td></tr>
|
||||
<label for="$limit" id="or-import-rows"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeEmptyStringsCheckbox" id="$store-empty-strings" value=true/></td>
|
||||
<td colspan="2"><label for="$store-empty-strings">Preserve empty strings</label></td></tr>
|
||||
<td colspan="2"><label for="$store-empty-strings" id="or-import-preserve"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="trimStringsCheckbox" id="$trim" /></td>
|
||||
<td><label for="$guess">Trim leading & trailing whitespace from strings</label></td></tr>
|
||||
<td><label for="$guess" id="or-import-trim"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="guessCellValueTypesCheckbox" id="$guess" /></td>
|
||||
<td><label for="$guess">Parse cell text into<br/>numbers, dates, ...</label></td></tr>
|
||||
<td><label for="$guess" id="or-import-parseCell"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="includeFileSourcesCheckbox" id="$include-file-sources" /></td>
|
||||
<td colspan="2"><label for="$include-file-sources">Store file source (file names, URLs) in each row</label></td></tr>
|
||||
<td colspan="2"><label for="$include-file-sources" id="or-import-source"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div>
|
@ -61,7 +61,7 @@ Refine.JsonParserUI.prototype.confirmReadyToCreateProject = function() {
|
||||
if ((this._config.recordPath) && this._config.recordPath.length > 0) {
|
||||
return true;
|
||||
} else {
|
||||
window.alert('Please specify a record path first.');
|
||||
window.alert($.i18n._('core-index-import')["warning-record-path"]);
|
||||
}
|
||||
};
|
||||
|
||||
@ -104,6 +104,16 @@ Refine.JsonParserUI.prototype._initialize = function() {
|
||||
this._optionContainerElmts = DOM.bind(this._optionContainer);
|
||||
this._optionContainerElmts.previewButton.click(function() { self._updatePreview(); });
|
||||
|
||||
this._optionContainerElmts.pickRecordElementsButton.text($.i18n._('core-index-import')["warning-record-path"]);
|
||||
this._optionContainerElmts.previewButton.html($.i18n._('core-buttons')["update-preview"]);
|
||||
$('#or-import-load').text($.i18n._('core-index-parser')["load-at-most"]);
|
||||
$('#or-import-rows').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-preserve').text($.i18n._('core-index-parser')["preserve-empty"]);
|
||||
$('#or-import-trim').html($.i18n._('core-index-parser')["trim"]);
|
||||
$('#or-import-parseCell').html($.i18n._('core-index-parser')["parse-cell"]);
|
||||
$('#or-import-source').html($.i18n._('core-index-parser')["store-source"]);
|
||||
$('#or-import-jsonParser').text($.i18n._('core-index-parser')["json-parser"]);
|
||||
|
||||
if (this._config.limit > 0) {
|
||||
this._optionContainerElmts.limitCheckbox.attr("checked", "checked");
|
||||
this._optionContainerElmts.limitInput[0].value = this._config.limit.toString();
|
||||
|
@ -2,44 +2,44 @@
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tighter"><table>
|
||||
<tr>
|
||||
<td width="1%">Character encoding</td>
|
||||
<td width="1%" id="or-import-encoding"></td>
|
||||
<td><input bind="encodingInput"></input></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
<td><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td style="text-align: right;"> </td>
|
||||
<td width="1%"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td colspan="2">Parse every <input bind="linesPerRowInput" type="text" class="lightweight" size="2" value="0" />
|
||||
lines into one row
|
||||
<tr><td colspan="2"><span id="or-import-parseEvery"></span> <input bind="linesPerRowInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<span id="or-impor-linesIntoRow"></span>
|
||||
</td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankRowsCheckbox" id="$store-blank-rows" /></td>
|
||||
<td colspan="2"><label for="$store-blank-rows">Store blank rows</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-rows" id="or-import-blank"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankCellsAsNullsCheckbox" id="$store-blank-cells" /></td>
|
||||
<td colspan="2"><label for="$store-blank-cells">Store blank cells as nulls</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-cells" id="or-import-null"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="includeFileSourcesCheckbox" id="$include-file-sources" /></td>
|
||||
<td><label for="$include-file-sources">Store file source<br/>(file names, URLs)<br/>in each row</label></td></tr>
|
||||
<td><label for="$include-file-sources" id="or-import-source"></label></td></tr>
|
||||
</table></div></td>
|
||||
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="ignoreCheckbox" id="$ignore" /></td>
|
||||
<td><label for="$ignore">Ignore first</label></td>
|
||||
<td><label for="$ignore" id="or-import-ignore"></label></td>
|
||||
<td><input bind="ignoreInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$ignore">line(s) at beginning of file</label></td></tr>
|
||||
<label for="$ignore" id="or-import-lines"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="skipCheckbox" id="$skip" /></td>
|
||||
<td><label for="$skip">Discard initial</label></td>
|
||||
<td><label for="$skip" id="or-import-discard"></label></td>
|
||||
<td><input bind="skipInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$skip">row(s) of data</label></td></tr>
|
||||
<label for="$skip" id="or-import-rows"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" id="or-import-load"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">row(s) of data</label></td></tr>
|
||||
<label for="$limit" id="or-import-rows2"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div>
|
@ -110,6 +110,22 @@ Refine.LineBasedParserUI.prototype._initialize = function() {
|
||||
this._optionContainerElmts = DOM.bind(this._optionContainer);
|
||||
this._optionContainerElmts.previewButton.click(function() { self._updatePreview(); });
|
||||
|
||||
$('#or-import-encoding').html($.i18n._('core-index-import')["char-encoding"]);
|
||||
this._optionContainerElmts.previewButton.html($.i18n._('core-buttons')["update-preview"]);
|
||||
$('#or-import-parseEvery').html($.i18n._('core-index-parser')["parse-every"]);
|
||||
$('#or-impor-linesIntoRow').html($.i18n._('core-index-parser')["lines-into-row"]);
|
||||
$('#or-import-blank').text($.i18n._('core-index-parser')["store-blank"]);
|
||||
$('#or-import-null').text($.i18n._('core-index-parser')["store-nulls"]);
|
||||
$('#or-import-source').html($.i18n._('core-index-parser')["store-source"]);
|
||||
$('#or-import-ignore').text($.i18n._('core-index-parser')["ignore-first"]);
|
||||
$('#or-import-lines').text($.i18n._('core-index-parser')["lines-beg"]);
|
||||
$('#or-import-parse').text($.i18n._('core-index-parser')["parse-next"]);
|
||||
$('#or-import-header').text($.i18n._('core-index-parser')["lines-header"]);
|
||||
$('#or-import-discard').text($.i18n._('core-index-parser')["discard-initial"]);
|
||||
$('#or-import-rows').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-load').text($.i18n._('core-index-parser')["load-at-most"]);
|
||||
$('#or-import-rows2').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
|
||||
this._optionContainerElmts.encodingInput
|
||||
.attr('value', this._config.encoding || '')
|
||||
.click(function() {
|
||||
|
@ -2,14 +2,14 @@
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tighter"><table>
|
||||
<tr>
|
||||
<td width="1%">Character encoding</td>
|
||||
<td width="1%" id="or-import-encoding"></td>
|
||||
<td><input bind="encodingInput"></input></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
<td colspan="2"><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td style="text-align: right;"> </td>
|
||||
<td width="1%"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
|
@ -75,6 +75,9 @@ Refine.RdfTriplesParserUI.prototype._initialize = function() {
|
||||
DOM.loadHTML("core", "scripts/index/parser-interfaces/rdf-triples-parser-ui.html"));
|
||||
this._optionContainerElmts = DOM.bind(this._optionContainer);
|
||||
this._optionContainerElmts.previewButton.click(function() { self._updatePreview(); });
|
||||
|
||||
this._optionContainerElmts.previewButton.html($.i18n._('core-buttons')["update-preview"]);
|
||||
$('#or-import-encoding').html($.i18n._('core-index-import')["char-encoding"]);
|
||||
|
||||
this._optionContainerElmts.encodingInput
|
||||
.attr('value', this._config.encoding || '')
|
||||
|
@ -2,50 +2,50 @@
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tighter"><table>
|
||||
<tr>
|
||||
<td width="1%">Character encoding</td>
|
||||
<td width="1%" id="or-import-encoding"></td>
|
||||
<td><input bind="encodingInput"></input></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
<td colspan="2"><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td style="text-align: right;"> </td>
|
||||
<td width="1%"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td colspan="2">Columns are separated by</td></tr>
|
||||
<tr><td colspan="2" id="or-import-colsep"></td></tr>
|
||||
<tr><td width="1%"><input type="radio" name="column-separator" value="comma" id="$column-separator-comma" /></td>
|
||||
<td><label for="$column-separator-comma">commas (CSV)</label></td></tr>
|
||||
<td><label for="$column-separator-comma" id="or-import-commas"></label></td></tr>
|
||||
<tr><td width="1%"><input type="radio" name="column-separator" value="tab" id="$column-separator-tab" /></td>
|
||||
<td><label for="$column-separator-tab">tabs (TSV)</label></td></tr>
|
||||
<td><label for="$column-separator-tab" id="or-import-tabs"></label></td></tr>
|
||||
<tr><td width="1%"><input type="radio" name="column-separator" value="custom" id="$column-separator-custom" /></td>
|
||||
<td><label for="$column-separator-custom">custom</label>
|
||||
<td><label for="$column-separator-custom" id="or-import-custom"></label>
|
||||
<input bind="columnSeparatorInput" type="text" class="lightweight" size="5" /></td></tr>
|
||||
<tr><td colspan="2">Escape special characters with \</td></tr>
|
||||
<tr><td colspan="2" id="or-import-escape"></td></tr>
|
||||
</table></div></td>
|
||||
|
||||
<td colspan="2"><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="ignoreCheckbox" id="$ignore" /></td>
|
||||
<td><label for="$ignore">Ignore first</label></td>
|
||||
<td><label for="$ignore" id="or-import-ignore"></label></td>
|
||||
<td><input bind="ignoreInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$ignore">line(s) at beginning of file</label></td></tr>
|
||||
<label for="$ignore" id="or-import-lines"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="headerLinesCheckbox" id="$headers" /></td>
|
||||
<td><label for="$headers">Parse next</label></td>
|
||||
<td><label for="$headers" id="or-import-parse"></label></td>
|
||||
<td><input bind="headerLinesInput" type="text" class="lightweight" size="2" value="1" />
|
||||
<label for="$headers">line(s) as column headers</label></td></tr>
|
||||
<label for="$headers" id="or-import-header"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="skipCheckbox" id="$skip" /></td>
|
||||
<td><label for="$skip">Discard initial</label></td>
|
||||
<td><label for="$skip" id="or-import-discard"></label></td>
|
||||
<td><input bind="skipInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$skip">row(s) of data</label></td></tr>
|
||||
<label for="$skip" id="or-import-rows"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" id="or-import-load"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">row(s) of data</label></td></tr>
|
||||
<label for="$limit" id="or-import-rows2"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -53,20 +53,20 @@
|
||||
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="guessCellValueTypesCheckbox" id="$guess" /></td>
|
||||
<td><label for="$guess">Parse cell text into<br/>numbers, dates, ...</label></td></tr>
|
||||
<td><label for="$guess" id="or-import-parseCell"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="processQuoteMarksCheckbox" id="$quotes" /></td>
|
||||
<td><label for="$quotes">Quotation marks are used<br/>to enclose cells containing<br/>column separators</label></td></tr>
|
||||
<td><label for="$quotes" id="or-import-quote"></label></td></tr>
|
||||
</table></div></td>
|
||||
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankRowsCheckbox" id="$store-blank-rows" /></td>
|
||||
<td colspan="2"><label for="$store-blank-rows">Store blank rows</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-rows" id="or-import-blank"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeBlankCellsAsNullsCheckbox" id="$store-blank-cells" /></td>
|
||||
<td colspan="2"><label for="$store-blank-cells">Store blank cells as nulls</label></td></tr>
|
||||
<td colspan="2"><label for="$store-blank-cells" id="or-import-null"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="includeFileSourcesCheckbox" id="$include-file-sources" /></td>
|
||||
<td><label for="$include-file-sources">Store file source<br/>(file names, URLs)<br/>in each row</label></td></tr>
|
||||
<td><label for="$include-file-sources" id="or-import-source"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div>
|
@ -125,6 +125,28 @@ Refine.SeparatorBasedParserUI.prototype._initialize = function() {
|
||||
DOM.loadHTML("core", "scripts/index/parser-interfaces/separator-based-parser-ui.html"));
|
||||
this._optionContainerElmts = DOM.bind(this._optionContainer);
|
||||
this._optionContainerElmts.previewButton.click(function() { self._updatePreview(); });
|
||||
|
||||
this._optionContainerElmts.previewButton.html($.i18n._('core-buttons')["update-preview"]);
|
||||
$('#or-import-encoding').html($.i18n._('core-index-import')["char-encoding"]);
|
||||
$('#or-import-colsep').html($.i18n._('core-index-parser')["col-separated-by"]);
|
||||
$('#or-import-commas').html($.i18n._('core-index-parser')["commas"]);
|
||||
$('#or-import-tabs').html($.i18n._('core-index-parser')["tabs"]);
|
||||
$('#or-import-custom').html($.i18n._('core-index-parser')["custom"]);
|
||||
$('#or-import-escape').html($.i18n._('core-index-parser')["escape"]);
|
||||
|
||||
$('#or-import-ignore').text($.i18n._('core-index-parser')["ignore-first"]);
|
||||
$('#or-import-lines').text($.i18n._('core-index-parser')["lines-beg"]);
|
||||
$('#or-import-parse').text($.i18n._('core-index-parser')["parse-next"]);
|
||||
$('#or-import-header').text($.i18n._('core-index-parser')["lines-header"]);
|
||||
$('#or-import-discard').text($.i18n._('core-index-parser')["discard-initial"]);
|
||||
$('#or-import-rows').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-load').text($.i18n._('core-index-parser')["load-at-most"]);
|
||||
$('#or-import-rows2').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-parseCell').html($.i18n._('core-index-parser')["parse-cell"]);
|
||||
$('#or-import-quote').html($.i18n._('core-index-parser')["quotation-mark"]);
|
||||
$('#or-import-blank').text($.i18n._('core-index-parser')["store-blank"]);
|
||||
$('#or-import-null').text($.i18n._('core-index-parser')["store-nulls"]);
|
||||
$('#or-import-source').html($.i18n._('core-index-parser')["store-source"]);
|
||||
|
||||
this._optionContainerElmts.encodingInput
|
||||
.attr('value', this._config.encoding || '')
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div class="xml-parser-ui-select-message">
|
||||
Click on the first XML element corresponding to the first record to load.
|
||||
<span id="or-import-clickXML"></span>
|
||||
</div>
|
||||
<div class="xml-parser-ui-select-dom" bind="domContainer"></div>
|
@ -3,26 +3,26 @@
|
||||
<td colspan="2"><div class="grid-layout layout-tighter layout-full"><table>
|
||||
<tr>
|
||||
<td style="text-align: right;"> </td>
|
||||
<td width="1%"><button class="button" bind="pickRecordElementsButton">Pick Record Elements</button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton">Update Preview</button></td>
|
||||
<td width="1%"><button class="button" bind="pickRecordElementsButton"></button></td>
|
||||
<td width="1%"><button class="button" bind="previewButton"></button></td>
|
||||
</tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="grid-layout layout-tightest"><table>
|
||||
<tr><td width="1%"><input type="checkbox" bind="limitCheckbox" id="$limit" /></td>
|
||||
<td><label for="$limit">Load at most</label></td>
|
||||
<td><label for="$limit" id="or-import-load"></label></td>
|
||||
<td><input bind="limitInput" type="text" class="lightweight" size="2" value="0" />
|
||||
<label for="$limit">record(s) of data</label></td></tr>
|
||||
<label for="$limit" id="or-import-rows"></label></td></tr>
|
||||
|
||||
<tr><td width="1%"><input type="checkbox" bind="storeEmptyStringsCheckbox" id="$store-empty-strings" /></td>
|
||||
<td colspan="2"><label for="$store-empty-strings">Preserve empty strings</label></td></tr>
|
||||
<td colspan="2"><label for="$store-empty-strings" id="or-import-preserve"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="trimStringsCheckbox" id="$trim" /></td>
|
||||
<td><label for="$guess">Trim leading & trailing whitespace from strings</label></td></tr>
|
||||
<td><label for="$guess" id="or-import-trim"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="guessCellValueTypesCheckbox" id="$guess" /></td>
|
||||
<td><label for="$guess">Parse cell text into<br/>numbers, dates, ...</label></td></tr>
|
||||
<td><label for="$guess" id="or-import-parseCell"></label></td></tr>
|
||||
<tr><td width="1%"><input type="checkbox" bind="includeFileSourcesCheckbox" id="$include-file-sources" /></td>
|
||||
<td colspan="2"><label for="$include-file-sources">Store file source (file names, URLs) in each row</label></td></tr>
|
||||
<td colspan="2"><label for="$include-file-sources" id="or-import-store"></label></td></tr>
|
||||
</table></div></td>
|
||||
</tr>
|
||||
</table></div>
|
@ -61,7 +61,7 @@ Refine.XmlParserUI.prototype.confirmReadyToCreateProject = function() {
|
||||
if ((this._config.recordPath) && this._config.recordPath.length > 0) {
|
||||
return true;
|
||||
} else {
|
||||
window.alert('Please specify a record path first.');
|
||||
window.alert($.i18n._('core-index-import')["warning-record-path"]);
|
||||
}
|
||||
};
|
||||
|
||||
@ -102,6 +102,15 @@ Refine.XmlParserUI.prototype._initialize = function() {
|
||||
this._optionContainerElmts = DOM.bind(this._optionContainer);
|
||||
this._optionContainerElmts.previewButton.click(function() { self._updatePreview(); });
|
||||
|
||||
this._optionContainerElmts.pickRecordElementsButton.html($.i18n._('core-buttons')["pick-record"]);
|
||||
this._optionContainerElmts.previewButton.html($.i18n._('core-buttons')["update-preview"]);
|
||||
$('#or-import-rows').text($.i18n._('core-index-parser')["rows-data"]);
|
||||
$('#or-import-load').text($.i18n._('core-index-parser')["load-at-most"]);
|
||||
$('#or-import-preserve').text($.i18n._('core-index-parser')["preserve-empty"]);
|
||||
$('#or-import-trim').text($.i18n._('core-index-parser')["trim"]);
|
||||
$('#or-import-parseCell').text($.i18n._('core-index-parser')["parse-cell"]);
|
||||
$('#or-import-store').text($.i18n._('core-index-parser')["store-source"]);
|
||||
|
||||
if (this._config.limit > 0) {
|
||||
this._optionContainerElmts.limitCheckbox.attr("checked", "checked");
|
||||
this._optionContainerElmts.limitInput[0].value = this._config.limit.toString();
|
||||
@ -135,6 +144,8 @@ Refine.XmlParserUI.prototype._showPickRecordElementsUI = function() {
|
||||
this._dataContainer.unbind().empty().html(
|
||||
DOM.loadHTML("core", "scripts/index/parser-interfaces/xml-parser-select-ui.html"));
|
||||
|
||||
$('#or-import-clickXML').text($.i18n._('core-index-parser')["click-xml"]);
|
||||
|
||||
var elmts = DOM.bind(this._dataContainer);
|
||||
|
||||
var escapeElmt = $('<span>');
|
||||
|
@ -1,11 +1,11 @@
|
||||
<div class="dialog-frame" style="width: 600px;">
|
||||
<div class="dialog-border">
|
||||
<div class="dialog-header" bind="dialogHeader">Select Encoding</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<div id="select-encodings-tabs" class="refine-tabs">
|
||||
<ul>
|
||||
<li><a href="#select-encodings-tabs-common">Common Encodings</a></li>
|
||||
<li><a href="#select-encodings-tabs-all">All Encodings</a></li>
|
||||
<li><a href="#select-encodings-tabs-common" id="or-enc-common"></a></li>
|
||||
<li><a href="#select-encodings-tabs-all" id="or-enc-all"></a></li>
|
||||
</ul>
|
||||
<div id="select-encodings-tabs-common">
|
||||
<div class="select-encoding-dialog-encoding-list" bind="commonList"></div>
|
||||
@ -16,7 +16,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter">
|
||||
<button class="button" bind="cancelButton">Cancel</button>
|
||||
<button class="button" bind="cancelButton"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -44,8 +44,8 @@ function PreferenceUI(tr, key, value) {
|
||||
|
||||
var td2 = tr.insertCell(2);
|
||||
|
||||
$('<button class="button">').text("Edit").appendTo(td2).click(function() {
|
||||
var newValue = window.prompt("Change value of preference key " + key, value);
|
||||
$('<button class="button">').text($.i18n._('core-index')["edit"]).appendTo(td2).click(function() {
|
||||
var newValue = window.prompt($.i18n._('core-index')["change-value"]+" " + key, value);
|
||||
if (newValue !== null) {
|
||||
$(td1).text(newValue);
|
||||
$.post(
|
||||
@ -64,8 +64,8 @@ function PreferenceUI(tr, key, value) {
|
||||
}
|
||||
});
|
||||
|
||||
$('<button class="button">').text("Delete").appendTo(td2).click(function() {
|
||||
if (window.confirm("Delete preference key " + key + "?")) {
|
||||
$('<button class="button">').text($.i18n._('core-index')["delete"]).appendTo(td2).click(function() {
|
||||
if (window.confirm($.i18n._('core-index')["delete-key"]+" " + key + "?")) {
|
||||
$.post(
|
||||
"command/core/set-preference",
|
||||
{
|
||||
@ -94,12 +94,13 @@ function PreferenceUI(tr, key, value) {
|
||||
function populatePreferences(prefs) {
|
||||
var body = $("#body-info").empty();
|
||||
|
||||
$('<h1>').text("Preferences").appendTo(body);
|
||||
$("#or-proj-starting").text($.i18n._('core-project')["starting"]+"...");
|
||||
$('<h1>').text($.i18n._('core-index')["preferences"]).appendTo(body);
|
||||
|
||||
var table = $('<table>')
|
||||
.addClass("list-table")
|
||||
.addClass("preferences")
|
||||
.html('<tr><th>Key</th><th>Value</th><th></th></tr>')
|
||||
.html('<tr><th>'+$.i18n._('core-index')["key"]+'</th><th>'+$.i18n._('core-index')["value"]+'</th><th></th></tr>')
|
||||
.appendTo(body)[0];
|
||||
|
||||
for (var k in prefs) {
|
||||
@ -111,10 +112,10 @@ function populatePreferences(prefs) {
|
||||
var tdLast0 = trLast.insertCell(0);
|
||||
trLast.insertCell(1);
|
||||
trLast.insertCell(2);
|
||||
$('<button class="button">').text("Add Preference").appendTo(tdLast0).click(function() {
|
||||
var key = window.prompt("Preference key:");
|
||||
$('<button class="button">').text().appendTo(tdLast0).click(function() {
|
||||
var key = window.prompt($.i18n._('core-index')["add-pref"]);
|
||||
if (key) {
|
||||
var value = window.prompt("Preference key value:");
|
||||
var value = window.prompt($.i18n._('core-index')["pref-key"]);
|
||||
if (value !== null) {
|
||||
var tr = table.insertRow(table.rows.length - 1);
|
||||
preferenceUIs.push(new PreferenceUI(tr, key, value));
|
||||
|
@ -34,6 +34,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
var theProject;
|
||||
var ui = {};
|
||||
|
||||
var lang = navigator.language.split("-")[0]
|
||||
|| navigator.userLanguage.split("-")[0];
|
||||
var dictionary = "";
|
||||
$.ajax({
|
||||
url : "/command/core/load-language?",
|
||||
type : "POST",
|
||||
async : false,
|
||||
data : {
|
||||
lng : lang
|
||||
},
|
||||
success : function(data) {
|
||||
dictionary = data;
|
||||
}
|
||||
});
|
||||
$.i18n.setDictionary(dictionary);
|
||||
// End internationalization
|
||||
|
||||
var Refine = {
|
||||
refineHelperService: "http://openrefine-helper.freebaseapps.com"
|
||||
};
|
||||
@ -105,6 +122,16 @@ function initializeUI(uiState) {
|
||||
$("#project-title").show();
|
||||
$("#project-controls").show();
|
||||
$("#body").show();
|
||||
|
||||
$("#or-proj-open").text($.i18n._('core-project')["open"]+"...");
|
||||
$("#project-permalink-button").text($.i18n._('core-project')["permalink"]);
|
||||
$("#project-name-button").attr("title",$.i18n._('core-project')["proj-name"]);
|
||||
$("#or-proj-export").text($.i18n._('core-project')["export"]);
|
||||
$("#or-proj-help").text($.i18n._('core-project')["help"]);
|
||||
$("#or-proj-starting").text($.i18n._('core-project')["starting"]+"...");
|
||||
$("#or-proj-facFil").text($.i18n._('core-project')["facet-filter"]);
|
||||
$("#or-proj-undoRedo").text($.i18n._('core-project')["undo-redo"]);
|
||||
$("#or-proj-ext").text($.i18n._('core-project')["extensions"]+":");
|
||||
|
||||
$('#project-name-button').click(Refine._renameProject);
|
||||
$('#project-permalink-button').mouseenter(function() {
|
||||
@ -183,7 +210,7 @@ Refine.reinitializeProjectData = function(f, fError) {
|
||||
};
|
||||
|
||||
Refine._renameProject = function() {
|
||||
var name = window.prompt("New project name:", theProject.metadata.name);
|
||||
var name = window.prompt($.i18n._('core-index')["new-proj-name"], theProject.metadata.name);
|
||||
if (name === null) {
|
||||
return;
|
||||
}
|
||||
@ -203,7 +230,7 @@ Refine._renameProject = function() {
|
||||
theProject.metadata.name = name;
|
||||
Refine.setTitle();
|
||||
} else {
|
||||
alert("Failed to rename project: " + data.message);
|
||||
alert($.i18n._('core-index')["error-rename"]+" " + data.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -96,20 +96,20 @@ BrowsingEngine.prototype._initializeUI = function() {
|
||||
|
||||
this._div.html(
|
||||
'<div class="browsing-panel-help" bind="help">' +
|
||||
'<h1>Using facets and filters</h1>' +
|
||||
'<p>Use facets and filters to select subsets of your data to act on. Choose facet and filter methods from the menus at the top of each data column.</p>' +
|
||||
'<p>Not sure how to get started?<br /><a href="https://github.com/OpenRefine/OpenRefine/wiki/Screencasts" target="_blank"><b>Watch these screencasts</b></a></p>' +
|
||||
'<h1>'+$.i18n._('core-project')["use-facets"]+'</h1>' +
|
||||
'<p>'+$.i18n._('core-project')["use-to-select"]+'</p>' +
|
||||
'<p>'+$.i18n._('core-project')["not-sure"]+'<br /><a href="https://github.com/OpenRefine/OpenRefine/wiki/Screencasts" target="_blank"><b>'+$.i18n._('core-project')["watch-cast"]+'</b></a></p>' +
|
||||
'</div>' +
|
||||
'<div class="browsing-panel-header" bind="header">' +
|
||||
'<div class="browsing-panel-indicator" bind="indicator">' +
|
||||
'<img src="images/small-spinner.gif" /> Refreshing facets...' +
|
||||
'<img src="images/small-spinner.gif" /> '+$.i18n._('core-project')["refreshing-facet"]+'' +
|
||||
'</div>' +
|
||||
'<div class="browsing-panel-controls" bind="controls">' +
|
||||
'<div class="browsing-panel-controls-refresh">' +
|
||||
'<a href="javascript:{}" bind="refreshLink" class="button" title="Update all facets">Refresh</a>' +
|
||||
'<a href="javascript:{}" bind="refreshLink" class="button" title="'+$.i18n._('core-project')["update-facets"]+'">'+$.i18n._('core-buttons')["refresh"]+'</a>' +
|
||||
'</div>' +
|
||||
'<a href="javascript:{}" bind="resetLink" class="button button-pill-left" title="Clear selection in all facets">Reset All</a>' +
|
||||
'<a href="javascript:{}" bind="removeLink" class="button button-pill-right" title="Remove all facets">Remove All</a>' +
|
||||
'<a href="javascript:{}" bind="resetLink" class="button button-pill-left" title="'+$.i18n._('core-project')["clear-selection"]+'">'+$.i18n._('core-buttons')["reset-all"]+'</a>' +
|
||||
'<a href="javascript:{}" bind="removeLink" class="button button-pill-right" title="'+$.i18n._('core-project')["remove-all"]+'">'+$.i18n._('core-buttons')["remove-all"]+'</a>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<ul bind="facets" class="facets-container"></ul>'
|
||||
|
@ -41,55 +41,55 @@ ExporterManager.handlers = {};
|
||||
ExporterManager.MenuItems = [
|
||||
{
|
||||
"id" : "core/export-project",
|
||||
"label": "Export project",
|
||||
"label": $.i18n._('core-project')["export-project"],
|
||||
"click": function() { ExporterManager.handlers.exportProject(); }
|
||||
},
|
||||
{},
|
||||
{
|
||||
"id" : "core/export-tsv",
|
||||
"label": "Tab-separated value",
|
||||
"label": $.i18n._('core-project')["tab-value"],
|
||||
"click": function() { ExporterManager.handlers.exportRows("tsv", "tsv"); }
|
||||
},
|
||||
{
|
||||
"id" : "core/export-csv",
|
||||
"label": "Comma-separated value",
|
||||
"label": $.i18n._('core-project')["comma-sep"],
|
||||
"click": function() { ExporterManager.handlers.exportRows("csv", "csv"); }
|
||||
},
|
||||
{
|
||||
"id" : "core/export-html-table",
|
||||
"label": "HTML table",
|
||||
"label": $.i18n._('core-project')["html-table"],
|
||||
"click": function() { ExporterManager.handlers.exportRows("html", "html"); }
|
||||
},
|
||||
{
|
||||
"id" : "core/export-excel",
|
||||
"label": "Excel",
|
||||
"label": $.i18n._('core-project')["excel"],
|
||||
"click": function() { ExporterManager.handlers.exportRows("xls", "xls"); }
|
||||
},
|
||||
{
|
||||
"id" : "core/export-ods",
|
||||
"label": "ODF spreadsheet",
|
||||
"label": $.i18n._('core-project')["odf"],
|
||||
"click": function() { ExporterManager.handlers.exportRows("ods", "ods"); }
|
||||
},
|
||||
{},
|
||||
{
|
||||
"id" : "core/export-tripleloader",
|
||||
"label": "Triple loader",
|
||||
"label": $.i18n._('core-project')["triple-loader"],
|
||||
"click": function() { ExporterManager.handlers.exportTripleloader("tripleloader"); }
|
||||
},
|
||||
{
|
||||
"id" : "core/export-mqlwrite",
|
||||
"label": "MQLWrite",
|
||||
"label": $.i18n._('core-project')["mqlwrite"],
|
||||
"click": function() { ExporterManager.handlers.exportTripleloader("mqlwrite"); }
|
||||
},
|
||||
{},
|
||||
{
|
||||
"id" : "core/export-custom-tabular",
|
||||
"label": "Custom tabular exporter...",
|
||||
"label": $.i18n._('core-project')["custom-tabular"],
|
||||
"click": function() { new CustomTabularExporterDialog(); }
|
||||
},
|
||||
{
|
||||
"id" : "core/export-templating",
|
||||
"label": "Templating...",
|
||||
"label": $.i18n._('core-project')["templating"],
|
||||
"click": function() { new TemplatingExporterDialog(); }
|
||||
}
|
||||
];
|
||||
@ -109,10 +109,7 @@ ExporterManager.prototype._initializeUI = function() {
|
||||
|
||||
ExporterManager.handlers.exportTripleloader = function(format) {
|
||||
if (!theProject.overlayModels.freebaseProtograph) {
|
||||
alert(
|
||||
"You haven't done any schema alignment yet,\nso there is no triple to export.\n\n" +
|
||||
"Use the Freebase > Edit Schema Alignment Skeleton...\ncommand to align your data with Freebase schemas first."
|
||||
);
|
||||
alert($.i18n._('triple-loader')["warning-align"]);
|
||||
} else {
|
||||
ExporterManager.handlers.exportRows(format, "txt");
|
||||
}
|
||||
|
@ -1,15 +1,13 @@
|
||||
<div class="dialog-frame" style="width: 800px;">
|
||||
<div class="dialog-border">
|
||||
<div class="dialog-header" bind="dialogHeader">Apply Operation History</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<div class="dialog-instruction">
|
||||
Paste an extracted JSON history of operations to perform:
|
||||
</div>
|
||||
<div class="dialog-instruction" bind="or_proj_pasteJson"></div>
|
||||
<div class="input-container"><textarea wrap="off" bind="textarea" class="history-operation-json" /></div>
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter">
|
||||
<button class="button" bind="applyButton">Perform Operations</button>
|
||||
<button class="button" bind="cancelButton">Cancel</button>
|
||||
<button class="button" bind="applyButton"></button>
|
||||
<button class="button" bind="cancelButton"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,11 +1,11 @@
|
||||
<div class="dialog-frame" style="width: 800px;">
|
||||
<div class="dialog-border">
|
||||
<div class="dialog-header" bind="dialogHeader">Extract Operation History</div>
|
||||
<div class="dialog-header" bind="dialogHeader"></div>
|
||||
<div class="dialog-body" bind="dialogBody">
|
||||
<div class="grid-layout layout-normal layout-full"><table>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
Extract and save parts of your operation history as JSON that you can apply to this or other projects in the future.
|
||||
<td colspan="2" bind="or_proj_extractSave">
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -16,14 +16,14 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<button class="button" bind="selectAllButton">Select All</button>
|
||||
<button class="button" bind="unselectAllButton">Unselect All</button>
|
||||
<button class="button" bind="selectAllButton"></button>
|
||||
<button class="button" bind="unselectAllButton"></button>
|
||||
</td>
|
||||
</tr>
|
||||
</table></div>
|
||||
</div>
|
||||
<div class="dialog-footer" bind="dialogFooter">
|
||||
<button class="button" bind="closeButton">Close</button>
|
||||
<button class="button" bind="closeButton"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,13 +1,13 @@
|
||||
<div class="history-panel-help" bind="helpDiv">
|
||||
<h1>Infinite undo history</h1>
|
||||
<p>Don't worry about making mistakes. Every change you make will be shown here, and you can undo your changes anytime.</p>
|
||||
<p><a href="https://github.com/OpenRefine/OpenRefine/wiki/History" target="_blank"><b>Learn more »</b></a></p>
|
||||
<h1 bind="or_proj_undo"></h1>
|
||||
<p bind="or_proj_mistakes"></p>
|
||||
<p><a href="https://github.com/OpenRefine/OpenRefine/wiki/History" target="_blank"><b><span bind="or_proj_learnMore"></span></b></a></p>
|
||||
</div>
|
||||
<div class="history-panel-controls" bind="controlsDiv">
|
||||
<a class="button button-pill-left" href="javascript:{}" bind="extractLink">Extract…</a><a class="button button-pill-right" href="javascript:{}" bind="applyLink">Apply…</a>
|
||||
<a class="button button-pill-left" href="javascript:{}" bind="extractLink"></a><a class="button button-pill-right" href="javascript:{}" bind="applyLink"></a>
|
||||
</div>
|
||||
<div class="history-panel-filter" bind="bodyControlsDiv">
|
||||
Filter: <input type="text" size="30" bind="filterInput" />
|
||||
<span bind="or_proj_filter"> </span><input type="text" size="30" bind="filterInput" />
|
||||
</div>
|
||||
<div class="history-panel-body" bind="bodyDiv">
|
||||
<div class="history-past" bind="pastDiv">
|
||||
|
@ -69,11 +69,19 @@ HistoryPanel.prototype.update = function(onDone) {
|
||||
HistoryPanel.prototype._render = function() {
|
||||
var self = this;
|
||||
|
||||
this._tabHeader.html('Undo / Redo <span class="count">' + this._data.past.length + '</span>');
|
||||
this._tabHeader.html($.i18n._('core-project')["undo-redo"]+' <span class="count">' + this._data.past.length + '</span>');
|
||||
|
||||
this._div.empty().unbind().html(DOM.loadHTML("core", "scripts/project/history-panel.html"));
|
||||
|
||||
var elmts = DOM.bind(this._div);
|
||||
|
||||
elmts.or_proj_undo.html($.i18n._('core-project')["undo-history"]);
|
||||
elmts.or_proj_mistakes.html($.i18n._('core-project')["mistakes"]);
|
||||
elmts.or_proj_learnMore.html($.i18n._('core-project')["learn-more"]);
|
||||
elmts.applyLink.html($.i18n._('core-project')["apply"]);
|
||||
elmts.extractLink.html($.i18n._('core-project')["extract"]);
|
||||
elmts.or_proj_mistakes.html($.i18n._('core-project')["mistakes"]);
|
||||
elmts.or_proj_filter.html($.i18n._('core-project')["filter"]);
|
||||
|
||||
var renderEntry = function(container, index, entry, lastDoneID, past) {
|
||||
var a = $(DOM.loadHTML("core", "scripts/project/history-entry.html")).appendTo(container);
|
||||
@ -187,6 +195,12 @@ HistoryPanel.prototype._showExtractOperationsDialog = function(json) {
|
||||
var frame = $(DOM.loadHTML("core", "scripts/project/history-extract-dialog.html"));
|
||||
var elmts = DOM.bind(frame);
|
||||
|
||||
elmts.dialogHeader.html($.i18n._('core-project')["extract-history"]);
|
||||
elmts.or_proj_extractSave.html($.i18n._('core-project')["extract-save"]);
|
||||
elmts.selectAllButton.html($.i18n._('core-buttons')["select-all"]);
|
||||
elmts.unselectAllButton.html($.i18n._('core-buttons')["unselect-all"]);
|
||||
elmts.closeButton.html($.i18n._('core-buttons')["close"]);
|
||||
|
||||
var entryTable = elmts.entryTable[0];
|
||||
var createEntry = function(entry) {
|
||||
var tr = entryTable.insertRow(entryTable.rows.length);
|
||||
@ -250,6 +264,12 @@ HistoryPanel.prototype._showApplyOperationsDialog = function() {
|
||||
var self = this;
|
||||
var frame = $(DOM.loadHTML("core", "scripts/project/history-apply-dialog.html"));
|
||||
var elmts = DOM.bind(frame);
|
||||
|
||||
elmts.dialogHeader.html($.i18n._('core-project')["apply-operation"]);
|
||||
elmts.or_proj_pasteJson.html($.i18n._('core-project')["paste-json"]);
|
||||
|
||||
elmts.applyButton.html($.i18n._('core-buttons')["perform-op"]);
|
||||
elmts.cancelButton.html($.i18n._('core-buttons')["cancel"]);
|
||||
|
||||
var fixJson = function(json) {
|
||||
json = json.trim();
|
||||
@ -271,7 +291,7 @@ HistoryPanel.prototype._showApplyOperationsDialog = function() {
|
||||
json = fixJson(json);
|
||||
json = JSON.parse(json);
|
||||
} catch (e) {
|
||||
alert("The JSON you pasted is invalid.");
|
||||
alert($.i18n._('core-project')["json-invalid"]+".");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,8 @@ function ProcessPanel(div) {
|
||||
this._div.html(DOM.loadHTML("core", "scripts/project/progress-panel.html"));
|
||||
this._elmts = DOM.bind(this._div);
|
||||
|
||||
this._elmts.undoLink.html($.i18n._('core-project')["undo"]);
|
||||
|
||||
var self = this;
|
||||
$(window).keypress(function(evt) {
|
||||
if (evt.charCode == 26 || (evt.charCode == 122 && (evt.ctrlKey || evt.metaKey))) { // ctrl-z or meta-z
|
||||
@ -147,9 +149,9 @@ ProcessPanel.prototype._render = function(newData) {
|
||||
for (var i = 0; i < processes.length; i++) {
|
||||
var process = processes[i];
|
||||
if (process.status != "pending") {
|
||||
Refine.setTitle(process.progress + "% complete");
|
||||
Refine.setTitle(process.progress + "% "+elmts.or_proj_undo.html($.i18n._('core-project')["complete"]));
|
||||
this._elmts.progressDescription.text(process.description);
|
||||
this._elmts.progressSpan.text(process.progress + '% complete');
|
||||
this._elmts.progressSpan.text(process.progress + '% '+elmts.or_proj_undo.html($.i18n._('core-project')["complete"]));
|
||||
}
|
||||
if ("onDone" in process) {
|
||||
newProcessMap[process.id] = process;
|
||||
@ -158,16 +160,16 @@ ProcessPanel.prototype._render = function(newData) {
|
||||
|
||||
if (processes.length > 1) {
|
||||
var pending = processes.length - 1;
|
||||
this._elmts.countSpan.text('(' + pending + (pending > 1 ? ' other pending processes)' : ' other pending process)'));
|
||||
this._elmts.countSpan.text('(' + pending + (pending > 1 ? ' '+$.i18n._('core-project')["other-processes"]+')' : ' '+$.i18n._('core-project')["other-process"]+')'));
|
||||
} else {
|
||||
this._elmts.countSpan.empty();
|
||||
}
|
||||
this._elmts.cancelLink
|
||||
.unbind()
|
||||
.text(processes.length > 1 ? "Cancel All" : "Cancel")
|
||||
.text(processes.length > 1 ? $.i18n._('core-project')["cancel-all"] : $.i18n._('core-project')["cancel"])
|
||||
.click(function() {
|
||||
self._cancelAll();
|
||||
$(this).text("Canceling...").unbind();
|
||||
$(this).text($.i18n._('core-project')["canceling"]).unbind();
|
||||
})
|
||||
|
||||
this._div.fadeIn(200);
|
||||
@ -190,10 +192,10 @@ ProcessPanel.prototype._render = function(newData) {
|
||||
}).join('\n');
|
||||
|
||||
if (this._data.processes.length == 0) {
|
||||
window.alert('The last operation encountered some errors:\n' + messages);
|
||||
window.alert($.i18n._('core-project')["last-op-er"]+':\n' + messages);
|
||||
} else {
|
||||
if (window.confirm('The last operation encountered some errors:\n' + messages +
|
||||
'\n\nContinue with the remaining operations?')) {
|
||||
if (window.confirm($.i18n._('core-project')["last-op-er"]+':\n' + messages +
|
||||
'\n\n'+$.i18n._('core-project')["continue-remaining"]+'?')) {
|
||||
$.post(
|
||||
"command/core/apply-operations?" + $.param({ project: theProject.id }),
|
||||
{ operations: '[]' },
|
||||
|
@ -10,6 +10,6 @@
|
||||
</div>
|
||||
<div bind="undoDiv">
|
||||
<span bind="undoDescription"></span>
|
||||
<span class="notification-action"><a href="javascript:{}" bind="undoLink">Undo</a></span>
|
||||
<span class="notification-action"><a href="javascript:{}" bind="undoLink"></a></span>
|
||||
</div>
|
||||
</div>
|
@ -42,7 +42,7 @@ SummaryBar.prototype._initializeUI = function() {
|
||||
|
||||
SummaryBar.prototype.updateResultCount = function() {
|
||||
var summaryText;
|
||||
var units = theProject.rowModel.mode == "row-based" ? "rows" : "records";
|
||||
var units = theProject.rowModel.mode == "row-based" ? $.i18n._('core-views')["rows"] : $.i18n._('core-views')["records"];
|
||||
if (theProject.rowModel.filtered == theProject.rowModel.total) {
|
||||
summaryText = (theProject.rowModel.total) + ' ' + units;
|
||||
} else {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user