keeweb/app/scripts/views/details/details-attachment-view.js

41 lines
1.4 KiB
JavaScript
Raw Normal View History

2015-10-17 23:49:24 +02:00
'use strict';
var Backbone = require('backbone'),
FeatureDetector = require('../../util/feature-detector');
var DetailsAttachmentView = Backbone.View.extend({
2015-12-16 22:50:45 +01:00
template: require('templates/details/details-attachment.hbs'),
2015-10-17 23:49:24 +02:00
events: {
},
render: function(complete) {
this.renderTemplate({}, true);
var shortcut = this.$el.find('.details__attachment-preview-download-text-shortcut');
shortcut.html(FeatureDetector.actionShortcutSymbol(false));
var blob = new Blob([this.model.getBinary()], {type: this.model.mimeType});
var dataEl = this.$el.find('.details__attachment-preview-data');
switch ((this.model.mimeType || '').split('/')[0]) {
case 'text':
var reader = new FileReader();
2016-07-17 13:30:38 +02:00
reader.addEventListener('loadend', () => {
2015-10-17 23:49:24 +02:00
$('<pre/>').text(reader.result).appendTo(dataEl);
complete();
2016-07-17 13:30:38 +02:00
});
2015-10-17 23:49:24 +02:00
reader.readAsText(blob);
return this;
case 'image':
$('<img/>').attr('src', URL.createObjectURL(blob)).appendTo(dataEl);
complete();
return this;
}
this.$el.addClass('details__attachment-preview--empty');
this.$el.find('.details__attachment-preview-icon').addClass('fa-' + this.model.icon);
complete();
return this;
}
});
module.exports = DetailsAttachmentView;