diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 587d70e3db260c5353b1014b27c2e52aed754cfd..51187c3cef3e5ebe5cfe1e2633f8608e59addced 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 0c280e38b4e05c6925c3d80bea2dab2be321fb23..eba3027b5c0851ade172f9cd7bd11e1b39ad5705 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 872aa053d0900f254e4092b0021798653d9db296..a09e33e8f53dbe4fa9bf5ffa49f2eccaeec439dd 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 0000000000000000000000000000000000000000..74fe70263290d64f3566a2806e4b2dd25bd81cf4 --- /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 456dd89531343481a6874dfafbf453889472d841..5f9dddf1ccf1de15a4bd3cc8b2be24e90f7e4c42 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 145dcfcc46b26b8ae776882a6aa6bdc06ceb0ea5..fb1cc864f955823cb6dcefdd4092361e3e086c89 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 0000000000000000000000000000000000000000..3e40deed86b0c0f1c6373dc2eecdd061fc522c1d --- /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 0000000000000000000000000000000000000000..3dba7e9213118f45f89a94245026ecf746c8ea0a --- /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 0000000000000000000000000000000000000000..0e53a27da485dc17fa02d8b82e293f0d9ca7349c --- /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); + } +}