From 887eeff98ea4b35331f1f6c315fea67707c3deed Mon Sep 17 00:00:00 2001
From: sabatale <50220345+sabatale@users.noreply.github.com>
Date: Mon, 4 Nov 2019 17:10:03 -0500
Subject: [PATCH] Add bpmn-js integration.
-- Original fork (in case you do not want to add an extra dependency for that specific use case): https://github.com/sabatale/filebrowser --
Adds bpmn-js (new dependency) integration for diagrams: https://github.com/bpmn-io/bpmn-js.
Any .bpmn file will open with the bpmn-js viewer instead of showing up as an XML file.
No side-effects to be exepected since this introduces a new getter (IsDiagrams) for .bpmn extensions.
You can drag the diagram around and zoom in/out as well. Use the folder "demo diagrams" for an actual .bpmn example as well as some extra documentation.
---
demo diagrams/bpmn-integration.md | 30 +++
demo diagrams/diagram.bpmn | 148 ++++++++++++++
files/file.go | 14 ++
frontend/package-lock.json | 187 +++++++++++++++++-
frontend/package.json | 3 +-
frontend/src/components/files/Bpmn.vue | 68 +++++++
.../src/components/files/DiagramsViewer.vue | 21 ++
frontend/src/store/getters.js | 1 +
frontend/src/views/Files.vue | 8 +-
go.mod | 2 +
10 files changed, 475 insertions(+), 7 deletions(-)
create mode 100644 demo diagrams/bpmn-integration.md
create mode 100644 demo diagrams/diagram.bpmn
create mode 100644 frontend/src/components/files/Bpmn.vue
create mode 100644 frontend/src/components/files/DiagramsViewer.vue
diff --git a/demo diagrams/bpmn-integration.md b/demo diagrams/bpmn-integration.md
new file mode 100644
index 00000000..f88174f2
--- /dev/null
+++ b/demo diagrams/bpmn-integration.md
@@ -0,0 +1,30 @@
+
+
BPMN-JS Integration
+ View diagrams in filebrowser!
+
+
+> ⚠ WARNING: **In case the .bpmn still opens in the Files Editor, try adding the mime regedit entry locally. See [the official GOlang documentation](https://golang.org/pkg/mime/) for more info about "TypeByExtension"!**
+
+
+
+
+Nowadays, business diagrams follow the universal BPMN standard.
+
+The open-source solution bpmn-js from BPMN.io makes it very easy to view and build such diagrams.
+
+This new filebrowser feature enables the integration with bpmn-js for viewing only.
+
+## Features
+
+Open any .bpmn file to view the diagram.
+
+You can click and hold the mouse in order to move the diagram around.
+
+You can also zoom with CTRL + Scroll!
+
+## To do
+
+Add bpmn-js extensions.
+
+## Author
+Alexandre S.
diff --git a/demo diagrams/diagram.bpmn b/demo diagrams/diagram.bpmn
new file mode 100644
index 00000000..9909969e
--- /dev/null
+++ b/demo diagrams/diagram.bpmn
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+ sid-52EB1772-F36E-433E-8F5B-D5DFD26E6F26
+ sid-E49425CF-8287-4798-B622-D2A7D78EF00B
+ sid-D7F237E8-56D0-4283-A3CE-4F0EFE446138
+ sid-E433566C-2289-4BEB-A19C-1697048900D2
+ sid-5134932A-1863-4FFA-BB3C-A4B4078B11A9
+ SCAN_OK
+
+
+
+ sid-4DC479E5-5C20-4948-BCFC-9EC5E2F66D8D
+ sid-EE8A7BA0-5D66-4F8B-80E3-CC2751B3856A
+
+
+ sid-8B820AF5-DC5C-4618-B854-E08B71FB55CB
+ sid-57EB1F24-BD94-479A-BF1F-57F1EAA19C6C
+
+
+ sid-7B791A11-2F2E-4D80-AFB3-91A02CF2B4FD
+
+
+ sid-57EB1F24-BD94-479A-BF1F-57F1EAA19C6C
+
+
+ sid-7B791A11-2F2E-4D80-AFB3-91A02CF2B4FD
+ sid-337A23B9-A923-4CCE-B613-3E247B773CCE
+ sid-4DC479E5-5C20-4948-BCFC-9EC5E2F66D8D
+
+
+ sid-EE8A7BA0-5D66-4F8B-80E3-CC2751B3856A
+ sid-8B820AF5-DC5C-4618-B854-E08B71FB55CB
+ sid-337A23B9-A923-4CCE-B613-3E247B773CCE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/files/file.go b/files/file.go
index 9e6671e9..e2e605c3 100644
--- a/files/file.go
+++ b/files/file.go
@@ -149,11 +149,25 @@ func (i *FileInfo) detectType(modify, saveContent bool) error {
}
mimetype := mime.TypeByExtension(i.Extension)
+ if i.Extension == ".bpmn" { //Hardcoded extension because BPMN is not available in mime-db.
+ mimetype = "bpmn"
+ }
if mimetype == "" {
mimetype = http.DetectContentType(buffer[:n])
}
switch {
+ case strings.HasPrefix(mimetype, "bpmn"):
+ i.Type = "bpmn"
+ // START - Store content from API json for further use cases
+ afs := &afero.Afero{Fs: i.Fs}
+ content, err := afs.ReadFile(i.Path)
+ if err != nil {
+ return err
+ }
+ i.Content = string(content)
+ // END - Store content from API json for further use cases
+ return nil
case strings.HasPrefix(mimetype, "video"):
i.Type = "video"
i.detectSubtitles()
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 63d2aba3..fbe8bf0a 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -2904,6 +2904,39 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true
},
+ "bpmn-font": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/bpmn-font/-/bpmn-font-0.8.0.tgz",
+ "integrity": "sha512-j8u5k7EcGkmg7WkPgObxyvMEccr0qyiCuvXGnM5G2Q+kza119vVq3gblt0Rro/UDjl7i3VmfG3ojeZ04VHeVFg=="
+ },
+ "bpmn-js": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bpmn-js/-/bpmn-js-3.5.0.tgz",
+ "integrity": "sha512-PfNM0UbztNyd7+8+hQCThQTwo3ViIAJbpGff1N93dJauwTeF1sYPdjF2w2mQi5pucoYtPmf33fsH8SD3BAjd2g==",
+ "requires": {
+ "bpmn-font": "^0.8.0",
+ "bpmn-moddle": "^5.1.6",
+ "css.escape": "^1.5.1",
+ "diagram-js": "^3.3.1",
+ "diagram-js-direct-editing": "^1.4.3",
+ "ids": "^0.2.0",
+ "inherits": "^2.0.1",
+ "min-dash": "^3.4.0",
+ "min-dom": "^3.0.0",
+ "object-refs": "^0.3.0",
+ "tiny-svg": "^2.2.1"
+ }
+ },
+ "bpmn-moddle": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/bpmn-moddle/-/bpmn-moddle-5.2.0.tgz",
+ "integrity": "sha512-MZTlpIXWcHTelp09vR4hs23diCdeHl4JbwOXGmif10qf9v/kqreiCMeo0B9w8eEmZqdRdkulTIScKavTYOxTQw==",
+ "requires": {
+ "min-dash": "^3.0.0",
+ "moddle": "^4.1.0",
+ "moddle-xml": "^7.5.0"
+ }
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -3562,6 +3595,21 @@
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
"dev": true
},
+ "closest": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/closest/-/closest-0.0.1.tgz",
+ "integrity": "sha1-JtpvgLPg4X5x+A8SeCgZ6fZTSVw=",
+ "requires": {
+ "matches-selector": "0.0.1"
+ },
+ "dependencies": {
+ "matches-selector": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-0.0.1.tgz",
+ "integrity": "sha1-HfUmIkOuNBwaCATdMCBIJnrHE7s="
+ }
+ }
+ },
"coa": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
@@ -3651,6 +3699,11 @@
"integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
"dev": true
},
+ "component-event": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/component-event/-/component-event-0.1.4.tgz",
+ "integrity": "sha1-PeePwoeCOBeH4kvyp8U2vwFCybQ="
+ },
"compressible": {
"version": "2.0.17",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
@@ -4140,6 +4193,11 @@
"integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
"dev": true
},
+ "css.escape": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+ "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s="
+ },
"cssesc": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
@@ -4573,6 +4631,15 @@
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
+ "delegate-events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/delegate-events/-/delegate-events-1.1.1.tgz",
+ "integrity": "sha1-2rSQqcHx1AykDrzSHtr3F7Zx1NQ=",
+ "requires": {
+ "closest": "*",
+ "component-event": "*"
+ }
+ },
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -4601,6 +4668,36 @@
"integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
"dev": true
},
+ "diagram-js": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/diagram-js/-/diagram-js-3.3.1.tgz",
+ "integrity": "sha512-O4jdbcajP8D82U8NvUVVIgA4FuA64D3le2yLuaLTkYbkZookU06lm80cXxomAznLuJugEUy0xWugW9bHeJxnoA==",
+ "requires": {
+ "css.escape": "^1.5.1",
+ "didi": "^4.0.0",
+ "hammerjs": "^2.0.1",
+ "inherits": "^2.0.1",
+ "min-dash": "^3.2.0",
+ "min-dom": "^3.0.0",
+ "object-refs": "^0.3.0",
+ "path-intersection": "^1.0.2",
+ "tiny-svg": "^2.2.1"
+ }
+ },
+ "diagram-js-direct-editing": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/diagram-js-direct-editing/-/diagram-js-direct-editing-1.6.0.tgz",
+ "integrity": "sha512-bO9FqB6lJm+kaA6tSrXO0jT+Fu++yJTHbBf/wYb+AfJYAB92zZJrxwHRPTRhZGB4Md7XMEba5LAuNL8u9bjf3w==",
+ "requires": {
+ "min-dash": "^3.0.0",
+ "min-dom": "^3.0.0"
+ }
+ },
+ "didi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/didi/-/didi-4.0.0.tgz",
+ "integrity": "sha512-AzMElh8mCHOPWPCWfGjoJRla31fMXUT6+287W5ef3IPmtuBcyG9+MkFS7uPP6v3t2Cl086KwWfRB9mESa0OsHQ=="
+ },
"diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@@ -4694,6 +4791,11 @@
"domelementtype": "1"
}
},
+ "domify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/domify/-/domify-1.4.0.tgz",
+ "integrity": "sha1-EUg2F/dk+GlZdbS9x5sU8IA7Yps="
+ },
"domutils": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
@@ -6583,6 +6685,11 @@
}
}
},
+ "hammerjs": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
+ "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
+ },
"handle-thing": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
@@ -6701,6 +6808,11 @@
"minimalistic-assert": "^1.0.1"
}
},
+ "hat": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/hat/-/hat-0.0.3.tgz",
+ "integrity": "sha1-uwFKnmSzeIrtgAWRdBPU/z1QLYo="
+ },
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -6962,6 +7074,14 @@
"postcss": "^7.0.14"
}
},
+ "ids": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/ids/-/ids-0.2.2.tgz",
+ "integrity": "sha512-icIO8S7A7Hat9x/59VYjS5uwfBU1xRTDxeFC4t9wNceLxZFm2JbPhO4lC/xhFqFNVaxw2idwpLgUfkVQrjsxIw==",
+ "requires": {
+ "hat": "^0.0.3"
+ }
+ },
"ieee754": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
@@ -7039,8 +7159,7 @@
"indexof": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
- "dev": true
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
},
"infer-owner": {
"version": "1.0.4",
@@ -7061,8 +7180,7 @@
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"internal-ip": {
"version": "4.3.0",
@@ -7854,6 +7972,11 @@
"object-visit": "^1.0.0"
}
},
+ "matches-selector": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/matches-selector/-/matches-selector-1.2.0.tgz",
+ "integrity": "sha512-c4vLwYWyl+Ji+U43eU/G5FwxWd4ZH0ePUsFs5y0uwD9HUEFBXUQ1zUUan+78IpRD+y4pUfG0nAzNM292K7ItvA=="
+ },
"material-design-icons": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/material-design-icons/-/material-design-icons-3.0.1.tgz",
@@ -8010,6 +8133,24 @@
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
},
+ "min-dash": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/min-dash/-/min-dash-3.5.2.tgz",
+ "integrity": "sha512-YVbJZUtnzT5QsgJUp9H9uyJTW6NJgswFqI27RI/+MSox860uIjaGMbSQBftEzbMXiJVRG24hpoIh3SG666SHgA=="
+ },
+ "min-dom": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/min-dom/-/min-dom-3.1.1.tgz",
+ "integrity": "sha512-qvURYMN2jHw9kPg1oFKdOd/VNJOsUNGV5H5j+zpJLkFVyP49tqmTQN8xWMYCDpIKetyQAC6jV5JjskNZr+JHpg==",
+ "requires": {
+ "closest": "0.0.1",
+ "component-event": "^0.1.4",
+ "delegate-events": "^1.1.1",
+ "domify": "^1.3.1",
+ "indexof": "0.0.1",
+ "matches-selector": "^1.2.0"
+ }
+ },
"mini-css-extract-plugin": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz",
@@ -8163,6 +8304,24 @@
}
}
},
+ "moddle": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/moddle/-/moddle-4.1.0.tgz",
+ "integrity": "sha512-asBaDLTTNpv4oC8iFdwonfMf/noPVvaBDXoSL7AsXZUDqwokgy8Lsf5eXwdnjXiDqm0olYi/S3Do544uVJSQDg==",
+ "requires": {
+ "min-dash": "^3.0.0"
+ }
+ },
+ "moddle-xml": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/moddle-xml/-/moddle-xml-7.5.0.tgz",
+ "integrity": "sha512-wPm3TD9910Iblp4lg1okHDRilY9gTvNBdo7ZHBmBzH4OioF5R2hvG3SMyn7cAUjOUg0kYUfChHgcUEO+qUc77Q==",
+ "requires": {
+ "min-dash": "^3.0.0",
+ "moddle": "^4.1.0",
+ "saxen": "^8.1.0"
+ }
+ },
"moment": {
"version": "2.24.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
@@ -8484,6 +8643,11 @@
"integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
"dev": true
},
+ "object-refs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/object-refs/-/object-refs-0.3.0.tgz",
+ "integrity": "sha512-eP0ywuoWOaDoiake/6kTJlPJhs+k0qNm4nYRzXLNHj6vh+5M3i9R1epJTdxIPGlhWc4fNRQ7a6XJNCX+/L4FOQ=="
+ },
"object-visit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
@@ -8850,6 +9014,11 @@
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
+ "path-intersection": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/path-intersection/-/path-intersection-1.1.1.tgz",
+ "integrity": "sha512-EdeUuXCm0+tb/2gv8PmRhd9fYYOtbDeTYkwCnzkBuAEjevEZi2mWUi1DVFF5nqSObYsxKcchvKUhnRULWOFreQ=="
+ },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -10166,6 +10335,11 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
},
+ "saxen": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/saxen/-/saxen-8.1.0.tgz",
+ "integrity": "sha512-34U5SdDUxECB5Jkwbc2mAdxHyGvbfCHv0iHgf+x2jaYLlwsPpju9651Lld9CpFpF4zJsoWcF3Q05blXXNOb/cg=="
+ },
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -11159,6 +11333,11 @@
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz",
"integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow=="
},
+ "tiny-svg": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tiny-svg/-/tiny-svg-2.2.2.tgz",
+ "integrity": "sha512-u6zCuMkDR/3VAh83X7hDRn/pi0XhwG2ycuNS0cTFtQjGdOG2tSvEb8ds65VeGWc3H6PUjJKeunueXqgkZqtMsg=="
+ },
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 8dbca728..657ca5c1 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -22,7 +22,8 @@
"vue-i18n": "^8.15.0",
"vue-router": "^3.1.3",
"vuex": "^3.1.1",
- "vuex-router-sync": "^5.0.0"
+ "vuex-router-sync": "^5.0.0",
+ "bpmn-js": "^3.2.3"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.0.5",
diff --git a/frontend/src/components/files/Bpmn.vue b/frontend/src/components/files/Bpmn.vue
new file mode 100644
index 00000000..2d8e5c31
--- /dev/null
+++ b/frontend/src/components/files/Bpmn.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
diff --git a/frontend/src/components/files/DiagramsViewer.vue b/frontend/src/components/files/DiagramsViewer.vue
new file mode 100644
index 00000000..fcaf5151
--- /dev/null
+++ b/frontend/src/components/files/DiagramsViewer.vue
@@ -0,0 +1,21 @@
+
+
+
Click and hold the mouse to move the diagram. Use CTRL+Scroll to zoom.
+
+
+
+
+
+
+
diff --git a/frontend/src/store/getters.js b/frontend/src/store/getters.js
index 9831b7b9..3e5b993c 100644
--- a/frontend/src/store/getters.js
+++ b/frontend/src/store/getters.js
@@ -3,6 +3,7 @@ const getters = {
isFiles: state => !state.loading && state.route.name === 'Files',
isListing: (state, getters) => getters.isFiles && state.req.isDir,
isEditor: (state, getters) => getters.isFiles && (state.req.type === 'text' || state.req.type === 'textImmutable'),
+ isDiagrams: state => getters.isFiles && (state.req.type === 'bpmn'), // Only required for DiagramsViewer integration.
selectedCount: state => state.selected.length
}
diff --git a/frontend/src/views/Files.vue b/frontend/src/views/Files.vue
index e937cd83..2b7d77d0 100644
--- a/frontend/src/views/Files.vue
+++ b/frontend/src/views/Files.vue
@@ -16,6 +16,7 @@
+
@@ -35,6 +36,7 @@ import Listing from '@/components/files/Listing'
import Editor from '@/components/files/Editor'
import { files as api } from '@/api'
import { mapGetters, mapState, mapMutations } from 'vuex'
+import Diagrams from '@/components/files/DiagramsViewer'
function clean (path) {
return path.endsWith('/') ? path.slice(0, -1) : path
@@ -48,14 +50,16 @@ export default {
InternalError,
Preview,
Listing,
- Editor
+ Editor,
+ Diagrams
},
computed: {
...mapGetters([
'selectedCount',
'isListing',
'isEditor',
- 'isFiles'
+ 'isFiles',
+ 'isDiagrams'
]),
...mapState([
'req',
diff --git a/go.mod b/go.mod
index 94ec21ef..1179197f 100644
--- a/go.mod
+++ b/go.mod
@@ -35,3 +35,5 @@ require (
gopkg.in/natefinch/lumberjack.v2 v2.0.0
gopkg.in/yaml.v2 v2.2.4
)
+
+go 1.13