From eb5be3f90ff82ad449a7b97dd0711fb0656f30cc Mon Sep 17 00:00:00 2001 From: Markus Escher <m.escher@adito.de> Date: Mon, 26 Nov 2018 15:56:33 +0100 Subject: [PATCH] add document download/delete process add DocumentPreview_view --- entity/Document_entity/Document_entity.aod | 9 ++-- entity/Document_entity/contentProcess.js | 16 ++++--- .../downloadfilesaction/onActionProcess.js | 8 +--- entity/Document_entity/onDelete.js | 2 + entity/Document_entity/onInsert.js | 3 +- .../Document_context/Document_context.aod | 5 +++ .../DocumentPreview_view.aod | 20 +++++++++ process/Document_lib/Document_lib.aod | 6 +++ process/Document_lib/process.js | 43 +++++++++++++++++++ 9 files changed, 95 insertions(+), 17 deletions(-) create mode 100644 entity/Document_entity/onDelete.js create mode 100644 neonView/DocumentPreview_view/DocumentPreview_view.aod create mode 100644 process/Document_lib/Document_lib.aod create mode 100644 process/Document_lib/process.js diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 587d70e3db..51187c3cef 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -17,6 +17,7 @@ <contentProcess>%aditoprj%/entity/Document_entity/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/Document_entity/onInsert.js</onInsert> <onUpdate>%aditoprj%/entity/Document_entity/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/Document_entity/onDelete.js</onDelete> <entityFields> <entityIncomingField> <name>#INCOMING</name> @@ -25,7 +26,6 @@ <name>NAME</name> <title>Dateiname</title> <fieldName>FILENAME</fieldName> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/name/valueProcess.js</valueProcess> </entityField> <entityField> <name>TYPE</name> @@ -44,11 +44,10 @@ <contentType>DATE</contentType> </entityField> <entityField> - <name>PREVIEW</name> + <name>PREVIEW_IMAGE</name> <title>Vorschau</title> <fieldName>PREVIEW</fieldName> <contentType>IMAGE</contentType> - <state>READONLY</state> </entityField> <entityIncomingField> <name>OrgDocument_dfi</name> @@ -109,5 +108,9 @@ </entityDependency> </dependencies> </entityIncomingField> + <entityField> + <name>ID</name> + <fieldName>UID</fieldName> + </entityField> </entityFields> </entity> diff --git a/entity/Document_entity/contentProcess.js b/entity/Document_entity/contentProcess.js index 0c280e38b4..eba3027b5c 100644 --- a/entity/Document_entity/contentProcess.js +++ b/entity/Document_entity/contentProcess.js @@ -1,4 +1,3 @@ -import("system.logging"); import("system.vars"); import("system.result"); import("system.db"); @@ -11,15 +10,18 @@ if(vars.exists("$param.AssignmentTable_param") && var assignmentName = vars.get("$param.AssignmentName_param"); var assignmentRowId = vars.get("$param.AssignmentRowId_param"); var alias = db.getCurrentAlias(); - - var tab = []; - metadata = db.getBinaryMetadata(assignmentTable, assignmentName, assignmentRowId, false, alias); + var documents = []; - // going through the metadata and push the data into the result array. get the bindata via db.getBinaryContent() + // Check for Selection + if(vars.exists("$local.idvalues") && vars.get("$local.idvalues") != '') + metadata = db.getBinaryMetadataForIds(vars.get("$local.idvalues"), true, alias) + else + metadata = db.getBinaryMetadata(assignmentTable, assignmentName, assignmentRowId, false, alias); + for( var i = 0; i < metadata.length; i++) { - tab.push( [metadata[i].id, metadata[i].filename, metadata[i].size, metadata[i].edit, metadata[i].preview, metadata[i].mimetype]); + documents.push( [metadata[i].id, metadata[i].filename, metadata[i].size, metadata[i].edit, metadata[i].preview, metadata[i].mimetype]); } - result.object(tab); + result.object(documents); } diff --git a/entity/Document_entity/entityfields/document_actions/children/downloadfilesaction/onActionProcess.js b/entity/Document_entity/entityfields/document_actions/children/downloadfilesaction/onActionProcess.js index 872aa053d0..a09e33e8f5 100644 --- a/entity/Document_entity/entityfields/document_actions/children/downloadfilesaction/onActionProcess.js +++ b/entity/Document_entity/entityfields/document_actions/children/downloadfilesaction/onActionProcess.js @@ -1,6 +1,2 @@ -import("system.result"); -import("system.db"); -import("system.logging"); -import("system.vars"); - -//logging.log(db.getBinaryContent(vars.get("$local.idvalue"), null)); \ No newline at end of file +import("Document_lib"); +DocumentUtil.downloadSelectedDocuments(); diff --git a/entity/Document_entity/onDelete.js b/entity/Document_entity/onDelete.js new file mode 100644 index 0000000000..74fe702632 --- /dev/null +++ b/entity/Document_entity/onDelete.js @@ -0,0 +1,2 @@ +import("Document_lib"); +DocumentUtil.deleteCurrentDocument(); diff --git a/entity/Document_entity/onInsert.js b/entity/Document_entity/onInsert.js index 456dd89531..5f9dddf1cc 100644 --- a/entity/Document_entity/onInsert.js +++ b/entity/Document_entity/onInsert.js @@ -9,4 +9,5 @@ var bindata = vars.get("$field.BINDATA_UPLOAD"); var filename = vars.get("$field.NAME"); var alias = db.getCurrentAlias(); -db.insertBinary(assignmentTable, assignmentName, assignmentRowId, "", bindata, filename, "", "", alias); +if(bindata != '' && filename != '') + db.insertBinary(assignmentTable, assignmentName, assignmentRowId, "", bindata, filename, "", "", alias); diff --git a/neonContext/Document_context/Document_context.aod b/neonContext/Document_context/Document_context.aod index 145dcfcc46..fb1cc864f9 100644 --- a/neonContext/Document_context/Document_context.aod +++ b/neonContext/Document_context/Document_context.aod @@ -6,6 +6,7 @@ <icon>VAADIN:FILE_TEXT_O</icon> <filterview>DocumentFilter_view</filterview> <editview>DocumentEdit_view</editview> + <preview>DocumentPreview_view</preview> <entity>Document_entity</entity> <references> <neonViewReference> @@ -16,5 +17,9 @@ <name>fcc99fdd-5524-4f32-a418-a88a4b7c0c09</name> <view>DocumentEdit_view</view> </neonViewReference> + <neonViewReference> + <name>c3a522f3-897e-4d02-862b-6e44c4873714</name> + <view>DocumentPreview_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/DocumentPreview_view/DocumentPreview_view.aod b/neonView/DocumentPreview_view/DocumentPreview_view.aod new file mode 100644 index 0000000000..3e40deed86 --- /dev/null +++ b/neonView/DocumentPreview_view/DocumentPreview_view.aod @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.0"> + <name>DocumentPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <cardViewTemplate> + <name>DocumentPreview_card</name> + <iconField>PREVIEW_IMAGE</iconField> + <titleField>NAME</titleField> + <descriptionField>DATE_EDIT</descriptionField> + <favoriteAction1>downloadFilesAction</favoriteAction1> + <entityField>#ENTITY</entityField> + </cardViewTemplate> + </children> +</neonView> diff --git a/process/Document_lib/Document_lib.aod b/process/Document_lib/Document_lib.aod new file mode 100644 index 0000000000..3dba7e9213 --- /dev/null +++ b/process/Document_lib/Document_lib.aod @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7"> + <name>Document_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/Document_lib/process.js</process> +</process> diff --git a/process/Document_lib/process.js b/process/Document_lib/process.js new file mode 100644 index 0000000000..0e53a27da4 --- /dev/null +++ b/process/Document_lib/process.js @@ -0,0 +1,43 @@ +import("system.result"); +import("system.db"); +import("system.vars"); +import("system.neon"); + +function DocumentUtil(){ +} + +DocumentUtil.downloadSelectedDocuments = function(){ + var alias = db.getCurrentAlias(); + + // Multiple Files (=not oppened) + if(vars.exists("$local.uids")) + { + var rows = JSON.parse(vars.get("$local.rows")); + var uids = JSON.parse(vars.get("$local.uids")); + var binaryContents = db.getBinaryContents(uids, alias); + + for(var i = 0; i < binaryContents.length; i++) + { + var base64data = binaryContents[i]; + var filename = rows[i]["NAME"]; + neon.download(base64data, filename); + } + } + // Single File (=already opened) + else if(vars.exists("$field.ID")) + { + var id = vars.get("$field.ID"); + var name = vars.get("$field.NAME"); + var binaryContent = db.getBinaryContent(id, alias); + neon.download(binaryContent, name); + } +} + +DocumentUtil.deleteCurrentDocument = function(){ + if(vars.exists("$local.uid")) + { + var uid = vars.get("$local.uid"); + var alias = db.getCurrentAlias(); + db.deleteBinary(uid, alias); + } +} -- GitLab