Usage of Viewer Service
Introduction
The yuuvis® Momentum viewer service offers to display several common file types directly within a yuuvis® Momentum client application. It serves within the yuuvis® Momentum reference client and can readily be integrated in a custom client. It is designed allow for easy integration of further viewers in addition to the free ones included already.
This article is intended for administrators who want to know about the supported file types so they can decide whether to let the viewer service be extended for not supported ones.
Table of Contents
Supported Types
All of the following formats are supported by the viewer service. Some others like Microsoft Office files including MSG-formated e-mails are supported by the rendition service provided that it is installed and running.
For unsupported file types, the viewer service sends a notification and a download link, allowing for the content to be downloaded and viewed by an external application.
Audio
Used component: By default, audio files are natively played by the browser with HTML5 audio (that is a subject of the HTML5 Audio specification).
Default component: Used component.
Mimetype: mp3, ogg, wav
All played files are streamed to prevent unnecessary data downloads. The autoplay is set to false.
Image
Used component: Custom Angular Application with angular-x-image-viewer plug-in.
Default component: By default, the supported mimeTypes are rendered in the standard HTML img tag.
Mimetypes: jpeg, gif, png, svg, bmp, ico
Not supported file types are by default offered as a download.
Image (tiff/tif)
Used component: Native image rendering as base64 encoded.
Default component: By default, the supported mimeTypes are rendered in the standard HTML img tag.
Mimetypes: tiff, tif
JSON
Used component: Custom Angular application with ngx-json-viewer plugin.
Default component: Used component.
Mimetype: application/json
E-Mails
Used component: eml files are parsed by mailparser, msg files are parsed by custom parser inspired by (msgreader)
Default component: Used component.
Mimetypes : message/rfc822 (eml), beginning with 2021 Winter Alpha2: application/vnd.ms-outlook (msg)
Markdown (text/markdown)
Used component: Custom React application with markdown-to-jsx plug-in. / Custom Angular application with showdown plug-in.
Default component: Used component.
Mimetypes: x-web-markdown, markdown
Open Document Format
The ODFs are currently resolved as application/zip. The viewer analyses all such mime types additionally and reacts in this case on the file extension that must be provided.
Used component: Files are parsed and rendered with https://webodf.org/
Default component: Used component.
File extension: odt, ods, odp
Mimetypes: application/zip (as resolved by yuuvis core service)
Text (text/plain)
Used component: By default, plain text is natively rendered by the Browser.
Default component: Used component.
Mimetypes: plain
XML(text/xml)
Used component: By default xml is natively rendered as text by the Browser.
Default component: Used component.
Mimetypes: xml
Used component: PDF.js which is a Mozilla project.
Default component: Used component.
Mimetypes: application/pdf
The ranging support provided by PDF.js is supported by the Web-API Gateway as well.
Search Term Highlighting
The full-text search provided by yuuvis® Momentum is insensitive to diacritics whereas the VIEWER service's PDF preview is sensitive to diacritics. Thus, the found search term is not highlighted in the preview if it differs from the entered search term in diacritics.
Video
Used component: By default video files are natively played by the browser with HTML5 Video (that is a subject of the HTML5 Video specification).
Default component: Used component.
Mimetypes: mp4 (no support for mimetpye video/mpeg), ogg, webm
All played files are streamed to prevent unnecessary data downloads. The autoplay is set to false.
Zip
Used component: Native string rendering
Default component: Used component.
Mimetype: x-zip-compressed, zip
The content of the zip container is read and the name and paths are printed out.
Customizing
The viewer service can be extended as described in this section.
Localization
The viewer service offers a few strings with information for your users. You can change these or add some more language strings by setting them up in the translation
section of the plugin
file that can be uploaded for use in the client.
{ "translations": { "en": { "yuv.viewer.not.authorized": "Not authorized to preview file.", "yuv.viewer.not.found": "File not found.", "yuv.viewer.not.supported": "Format not supported.", "yuv.viewer.not.supported.download.content": "Unable to display format. You can click this link to download the file." }, "de": { "yuv.viewer.not.authorized": "Fehlende Authorisierung zur Anzeige der Datei.", "yuv.viewer.not.found": "Datei nicht gefunden.", "yuv.viewer.not.supported": "Dieses Format ist nicht unterstützt.", "yuv.viewer.not.supported.download.content": "Dieses Format kann nicht angezeigt werden. Ein Klick auf den Link lädt die Datei herunter." } } }
For more information about the plugin capabilities see this documentation: Extending Clients with Plug-ins
Extending the Viewer Service
Please note that this feature is currently for internal use only!
For a description about how to extend the viewer service, see the readme here: GitLab
Outlook: We are working on a new customizing concept that allows us to extend the viewer service with additional components with building and deploying the viewer service itself.
The Viewer Service API
For the viewer to process a request, a path pointing to the file to be displayed must be accessible. The mimeType or size may be omitted here if provided in the Request Header.
URL/?path={pathToTheFile}&mimeType={mimeType}&size={fileSize}
- path: the direct path from where the file can be loaded (required)
- mimeType: the file's mimeType (If not provided, the service tries to get it from request headers. If also not available there, an error page is shown.)
- fileSize: the size of the file (If not provided, the service tries to get it from request headers. If also not available there, an error page is shown.)
Custom Viewer Configuration
The viewer service can be extended by adding a few lines to its configuration.
[ { "mimeType": "text/x-web-markdown", "fileExtension": ["md"] "viewer": "{pathtoapplicationindex.html}?path=${path}#locale=${locale}&direction=${direction}&theme=${theme}&accentColor=${accentColor}" } ]
- mimeType may also be a string Array, containing multiple mime types
- file extension is not mandatory. Provide only if mimeType is ambiguous.
Additionally, non-mandatory parameters are provided (corresponding to the client settings)
- darkMode: boolean = sets class dark to the body (default = false).
- direction: string = sets the document direction to the body (default = „LTR“).
- accentColor: string = sets the accent color as css variable to the html tag (default = „“).
- local: string = sets the document locale to the html tag (default = „en-US“).
- fileExtension: string = if mimeType is ambiguous, provides a more clear file specification.
Additionally, the provided parameters will be passed to the custom viewer.
Summary
You were provided with an overview of the file types supported by the viewer service and its concept of extensibility.