mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2024-11-23 15:21:25 +01:00
Pipeline fixes for json lists + delete func (#1425)
* init * revert * pipelines fixes for lists * pipeline fixes to allow json lists * formatting * pipeline changes * langs --------- Co-authored-by: a <a>
This commit is contained in:
parent
56fdf1f3a1
commit
63bdc0d59e
3
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
3
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
@ -103,6 +103,7 @@ body:
|
||||
- Chrome
|
||||
- Safari
|
||||
- Microsoft Edge
|
||||
- Other
|
||||
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
@ -111,5 +112,5 @@ body:
|
||||
description: |
|
||||
Please confirm that you have searched for similar issues and none of them match your problem.
|
||||
options:
|
||||
- label: I have verified that there are no issues related to my problem.
|
||||
- label: I have verified that there are no existing issues raised related to my problem.
|
||||
required: true
|
||||
|
43
pipeline/defaultWebUIConfigs/OCR images.json
Normal file
43
pipeline/defaultWebUIConfigs/OCR images.json
Normal file
@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "OCR images",
|
||||
"pipeline": [
|
||||
{
|
||||
"operation": "/api/v1/convert/img/pdf",
|
||||
"parameters": {
|
||||
"fitOption": "fillPage",
|
||||
"colorType": "color",
|
||||
"autoRotate": true,
|
||||
"fileInput": "automated"
|
||||
}
|
||||
},
|
||||
{
|
||||
"operation": "/api/v1/general/merge-pdfs",
|
||||
"parameters": {
|
||||
"sortType": "orderProvided",
|
||||
"fileInput": "automated"
|
||||
}
|
||||
},
|
||||
{
|
||||
"operation": "/api/v1/misc/ocr-pdf",
|
||||
"parameters": {
|
||||
"languages": [
|
||||
"eng"
|
||||
],
|
||||
"sidecar": false,
|
||||
"deskew": false,
|
||||
"clean": false,
|
||||
"cleanFinal": false,
|
||||
"ocrType": "skip-text",
|
||||
"ocrRenderType": "hocr",
|
||||
"removeImagesAfter": false,
|
||||
"fileInput": "automated"
|
||||
}
|
||||
}
|
||||
],
|
||||
"_examples": {
|
||||
"outputDir": "{outputFolder}/{folderName}",
|
||||
"outputFileName": "{filename}-{pipelineName}-{date}-{time}"
|
||||
},
|
||||
"outputDir": "{outputFolder}",
|
||||
"outputFileName": "{filename}"
|
||||
}
|
@ -105,8 +105,15 @@ public class PipelineProcessor {
|
||||
body.add("fileInput", file);
|
||||
|
||||
for (Entry<String, Object> entry : parameters.entrySet()) {
|
||||
if (entry.getValue() instanceof List) {
|
||||
List<?> list = (List<?>) entry.getValue();
|
||||
for (Object item : list) {
|
||||
body.add(entry.getKey(), item);
|
||||
}
|
||||
} else {
|
||||
body.add(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
||||
|
||||
@ -167,8 +174,15 @@ public class PipelineProcessor {
|
||||
}
|
||||
|
||||
for (Entry<String, Object> entry : parameters.entrySet()) {
|
||||
if (entry.getValue() instanceof List) {
|
||||
List<?> list = (List<?>) entry.getValue();
|
||||
for (Object item : list) {
|
||||
body.add(entry.getKey(), item);
|
||||
}
|
||||
} else {
|
||||
body.add(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
ResponseEntity<byte[]> response = sendWebRequest(url, body);
|
||||
|
||||
|
@ -4,8 +4,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
public class UrlUtils {
|
||||
|
||||
private UrlUtils() {
|
||||
}
|
||||
private UrlUtils() {}
|
||||
|
||||
public static String getOrigin(HttpServletRequest request) {
|
||||
String scheme = request.getScheme(); // http or https
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Персонализиран
|
||||
pipeline.submitButton=Подайте
|
||||
pipeline.help=Pipeline Помощ
|
||||
pipeline.scanHelp=Помощ за сканиране на папки
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Vlastní
|
||||
pipeline.submitButton=Odeslat
|
||||
pipeline.help=Pomoc s pipeline
|
||||
pipeline.scanHelp=Pomoc se skenováním adresáře
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Benutzerdefiniert
|
||||
pipeline.submitButton=Speichern
|
||||
pipeline.help=Hilfe für Pipeline
|
||||
pipeline.scanHelp=Hilfe zum Ordnerscan
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Υποβολή
|
||||
pipeline.help=Βοήθεια για το Pipeline
|
||||
pipeline.scanHelp=Βοήθεια για Σάρωση Φακέλων
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Personalizar
|
||||
pipeline.submitButton=Enviar
|
||||
pipeline.help=Ayuda de Canalización
|
||||
pipeline.scanHelp=Ayuda de escaneado de carpetas
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Personnaliser
|
||||
pipeline.submitButton=Soumettre
|
||||
pipeline.help=Aide Pipeline
|
||||
pipeline.scanHelp=Aide analyse de dossier
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Prilagođeno
|
||||
pipeline.submitButton=Pošalji
|
||||
pipeline.help=Pipeline Pomoć
|
||||
pipeline.scanHelp=Pomoć za skeniranje mapa
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Personalizzato
|
||||
pipeline.submitButton=Invia
|
||||
pipeline.help=Aiuto sulla pipeline
|
||||
pipeline.scanHelp=Aiuto per la scansione delle cartelle
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=カスタム
|
||||
pipeline.submitButton=送信
|
||||
pipeline.help=パイプラインのヘルプ
|
||||
pipeline.scanHelp=フォルダ スキャンのヘルプ
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=관습
|
||||
pipeline.submitButton=전송
|
||||
pipeline.help=파이프라인 도움말
|
||||
pipeline.scanHelp=폴더 스캔 도움말
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Aangepast
|
||||
pipeline.submitButton=Opslaan
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Tilpasset
|
||||
pipeline.submitButton=Send inn
|
||||
pipeline.help=Pipeline hjelp
|
||||
pipeline.scanHelp=Mappe skanning hjelp
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Personalizar
|
||||
pipeline.submitButton=Submeter
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Пользовательский
|
||||
pipeline.submitButton=Отправить
|
||||
pipeline.help=Справка по конвейерной обработке
|
||||
pipeline.scanHelp=Справка по сканированию папок
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Vlastné
|
||||
pipeline.submitButton=Odoslať
|
||||
pipeline.help=Pomoc s pipeline
|
||||
pipeline.scanHelp=Pomoc so skenovaním priečinka
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Prilagođeno
|
||||
pipeline.submitButton=Pošalji
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Custom
|
||||
pipeline.submitButton=Submit
|
||||
pipeline.help=Pipeline Help
|
||||
pipeline.scanHelp=Folder Scanning Help
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Özel
|
||||
pipeline.submitButton=Gönder
|
||||
pipeline.help=Çoklu İşlemler Yardım
|
||||
pipeline.scanHelp=Klasör Tarama Yardımı
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=Користувацький
|
||||
pipeline.submitButton=Надіслати
|
||||
pipeline.help=Довідка з конвеєрної обробки
|
||||
pipeline.scanHelp=Довідка зі сканування папок
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=自定义
|
||||
pipeline.submitButton=提交
|
||||
pipeline.help=工作流帮助
|
||||
pipeline.scanHelp=文件夹扫描帮助
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
@ -86,6 +86,7 @@ pipeline.defaultOption=自訂
|
||||
pipeline.submitButton=送出
|
||||
pipeline.help=管道説明
|
||||
pipeline.scanHelp=資料夾掃描説明
|
||||
pipeline.deletePrompt=Are you sure you want to delete pipeline
|
||||
|
||||
######################
|
||||
# Pipeline Options #
|
||||
|
File diff suppressed because one or more lines are too long
@ -96,7 +96,6 @@ document.getElementById("submitConfigBtn").addEventListener("click", function ()
|
||||
for (let i = 0; i < pipelineList.length; i++) {
|
||||
let operationName = pipelineList[i].querySelector(".operationName").textContent;
|
||||
let parameters = operationSettings[operationName] || {};
|
||||
|
||||
pipelineConfig.pipeline.push({
|
||||
operation: operationName,
|
||||
parameters: parameters,
|
||||
@ -104,7 +103,6 @@ document.getElementById("submitConfigBtn").addEventListener("click", function ()
|
||||
}
|
||||
|
||||
let pipelineConfigJson = JSON.stringify(pipelineConfig, null, 2);
|
||||
|
||||
let formData = new FormData();
|
||||
|
||||
let fileInput = document.getElementById("fileInput-input");
|
||||
@ -218,6 +216,41 @@ fetch("v1/api-docs")
|
||||
});
|
||||
});
|
||||
|
||||
document.getElementById('deletePipelineBtn').addEventListener('click', function(event) {
|
||||
event.preventDefault();
|
||||
let pipelineName = document.getElementById('pipelineName').value;
|
||||
if (confirm(deletePipelineText + pipelineName)) {
|
||||
removePipelineFromUI(pipelineName);
|
||||
let key = "#Pipeline-" + pipelineName;
|
||||
if (localStorage.getItem(key)) {
|
||||
localStorage.removeItem(key);
|
||||
}
|
||||
let pipelineSelect = document.getElementById("pipelineSelect");
|
||||
let modal = document.getElementById('pipelineSettingsModal');
|
||||
if (modal.style.display !== 'none') {
|
||||
$('#pipelineSettingsModal').modal('hide');
|
||||
}
|
||||
|
||||
if (pipelineSelect.options.length > 0) {
|
||||
pipelineSelect.selectedIndex = 0;
|
||||
pipelineSelect.dispatchEvent(new Event('change'));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function removePipelineFromUI(pipelineName) {
|
||||
let pipelineSelect = document.getElementById("pipelineSelect");
|
||||
for (let i = 0; i < pipelineSelect.options.length; i++) {
|
||||
console.log(pipelineSelect.options[i])
|
||||
console.log("list " + pipelineSelect.options[i].innerText + " vs " + pipelineName)
|
||||
if (pipelineSelect.options[i].innerText === pipelineName) {
|
||||
pipelineSelect.remove(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
document.getElementById("addOperationBtn").addEventListener("click", function () {
|
||||
let selectedOperation = document.getElementById("operationsDropdown").value;
|
||||
let pipelineList = document.getElementById("pipelineList");
|
||||
@ -379,10 +412,14 @@ document.getElementById("addOperationBtn").addEventListener("click", function ()
|
||||
if (defaultValue === true) parameterInput.checked = true;
|
||||
break;
|
||||
case "array":
|
||||
case "object":
|
||||
//TODO compare to doc and check if fileInput array? parameter.schema.format === 'binary'
|
||||
// If parameter.schema.format === 'binary' is to be checked, it should be checked here
|
||||
parameterInput = document.createElement("textarea");
|
||||
parameterInput.placeholder = `Enter a JSON formatted ${parameter.schema.type}, If this is a fileInput, it is not currently supported`;
|
||||
parameterInput.placeholder = 'Enter a JSON formatted array, e.g., ["item1", "item2", "item3"]';
|
||||
parameterInput.className = "form-control";
|
||||
break;
|
||||
case "object":
|
||||
parameterInput = document.createElement("textarea");
|
||||
parameterInput.placeholder = 'Enter a JSON formatted object, e.g., {"key": "value"} If this is a fileInput, it is not currently supported';
|
||||
parameterInput.className = "form-control";
|
||||
break;
|
||||
default:
|
||||
@ -445,9 +482,14 @@ document.getElementById("addOperationBtn").addEventListener("click", function ()
|
||||
settings[parameter.name] = "";
|
||||
} else {
|
||||
try {
|
||||
settings[parameter.name] = JSON.parse(value);
|
||||
} catch (err) {
|
||||
console.error(`Invalid JSON format for ${parameter.name}`);
|
||||
const parsedValue = JSON.parse(value);
|
||||
if (Array.isArray(parsedValue)) {
|
||||
settings[parameter.name] = parsedValue;
|
||||
} else {
|
||||
settings[parameter.name] = value;
|
||||
}
|
||||
} catch (e) {
|
||||
settings[parameter.name] = value;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -558,7 +600,6 @@ function configToJson() {
|
||||
parameters: parameters,
|
||||
});
|
||||
}
|
||||
|
||||
return JSON.stringify(pipelineConfig, null, 2);
|
||||
}
|
||||
|
||||
@ -642,7 +683,13 @@ async function processPipelineConfig(configString) {
|
||||
case "text":
|
||||
case "textarea":
|
||||
default:
|
||||
input.value = JSON.stringify(operationConfig.parameters[parameterName]);
|
||||
var value = operationConfig.parameters[parameterName]
|
||||
if (typeof value !== 'string') {
|
||||
input.value = JSON.stringify(value) ;
|
||||
} else {
|
||||
input.value = value;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -16,6 +16,7 @@
|
||||
/>
|
||||
<script th:inline="javascript">
|
||||
const saveSettings = /*[[#{pipelineOptions.saveSettings}]]*/ "";
|
||||
const deletePipelineText = /*[[#{pipeline.pipeline.deletePrompt}]]*/ "Are you sure you want to delete pipeline";
|
||||
</script>
|
||||
</head>
|
||||
|
||||
@ -92,7 +93,7 @@
|
||||
|
||||
<!-- The Modal -->
|
||||
<div class="modal" id="pipelineSettingsModal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content dark-card">
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
@ -158,6 +159,12 @@
|
||||
|
||||
<!-- Modal footer -->
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
id="deletePipelineBtn"
|
||||
class="btn btn-danger"
|
||||
th:text="#{delete}"
|
||||
></button>
|
||||
|
||||
<button
|
||||
id="saveBrowserPipelineBtn"
|
||||
class="btn btn-success"
|
||||
|
Loading…
Reference in New Issue
Block a user