Preview bib files.

This commit is contained in:
Shane Kilkelly 2016-05-17 17:00:14 +01:00
parent 4f533147b1
commit eae82a2b20
3 changed files with 66 additions and 2 deletions

View file

@ -10,6 +10,7 @@ div.binary-file.full-size(
onerror="sl_binaryFilePreviewError()" onerror="sl_binaryFilePreviewError()"
onabort="sl_binaryFilePreviewError()" onabort="sl_binaryFilePreviewError()"
) )
img( img(
ng-show="!failedLoad" ng-show="!failedLoad"
ng-src="/project/{{ project_id }}/file/{{ openFile.id }}?format=png" ng-src="/project/{{ project_id }}/file/{{ openFile.id }}?format=png"
@ -17,9 +18,24 @@ div.binary-file.full-size(
onerror="sl_binaryFilePreviewError()" onerror="sl_binaryFilePreviewError()"
onabort="sl_binaryFilePreviewError()" onabort="sl_binaryFilePreviewError()"
) )
p(
ng-if="(['bib'].indexOf(extension(openFile)) > -1) && !bibtex.error"
ng-init="loadBibtexFilePreview()"
)
div(ng-if="bibtex.loading")
| #{translate('loading')}...
div.bib-preview(ng-if="!bibtex.loading && !bibtex.error")
div.scroll-container
p
| {{ bibtexPreview.data }}
p
| ...
p.no-preview( p.no-preview(
ng-if="failedLoad || ['png', 'jpg', 'jpeg', 'gif', 'pdf', 'eps'].indexOf(extension(openFile)) == -1" ng-if="failedLoad || bibtex.error || ['bib', 'png', 'jpg', 'jpeg', 'gif', 'pdf', 'eps'].indexOf(extension(openFile)) == -1"
) #{translate("no_preview_available")} ) #{translate("no_preview_available")}
a.btn.btn-info( a.btn.btn-info(
ng-href="/project/{{ project_id }}/file/{{ openFile.id }}" ng-href="/project/{{ project_id }}/file/{{ openFile.id }}"
) #{translate("download")} {{ openFile.name }} ) #{translate("download")} {{ openFile.name }}

View file

@ -1,7 +1,12 @@
define [ define [
"base" "base"
], (App) -> ], (App) ->
App.controller "BinaryFileController", ["$scope", "$rootScope", ($scope, $rootScope) -> App.controller "BinaryFileController", ["$scope", "$rootScope", "$http", "$timeout", ($scope, $rootScope, $http, $timeout) ->
$scope.bibtexPreview =
loading: false
error: false
data: ""
$scope.failedLoad = false $scope.failedLoad = false
$rootScope.$on 'entity:selected', () -> $rootScope.$on 'entity:selected', () ->
@ -13,4 +18,31 @@ define [
$scope.extension = (file) -> $scope.extension = (file) ->
return file.name.split(".").pop()?.toLowerCase() return file.name.split(".").pop()?.toLowerCase()
$scope.loadBibtexFilePreview = () ->
url = "/project/#{project_id}/file/#{$scope.openFile.id}?range=0-5000"
$scope.bibtexPreview.loading = true
$http.get(url)
.success (data) ->
$scope.bibtexPreview.loading = false
$scope.bibtexPreview.error = false
try
# remove last partial line
data = data.replace(/\n.*$/, '')
finally
$scope.bibtexPreview.data = data
$timeout($scope.setHeight, 0)
.error (err) ->
$scope.bibtexPreview.error = true
$scope.bibtexPreview.loading = false
$scope.setHeight = () ->
# Behold, a ghastly hack
guide = document.querySelector('.file-tree-inner')
table_wrap = document.querySelector('.bib-preview .scroll-container')
if table_wrap
desired_height = guide.offsetHeight - 60
if table_wrap.offsetHeight > desired_height
table_wrap.style.height = desired_height + 'px'
table_wrap.style['max-height'] = desired_height + 'px'
] ]

View file

@ -17,5 +17,21 @@
font-size: 24px; font-size: 24px;
color: @gray; color: @gray;
} }
.bib-preview {
margin-bottom: 12px;
.scroll-container {
font-size: 0.8em;
line-height: 1.1em;
overflow: auto;
border: 1px solid @gray-lighter;
padding-left: 12px;
padding-right: 12px;
padding-top: 8px;
padding-bottom: 8px;
text-align: left;
white-space: pre;
font-family: monospace;
}
}
} }