Files
stf-DeviceFarmer/res/app/control-panes/explorer/index.js
David f376c4de75 Explorer directory fix (#670)
* Improve explorer dir and permissions logic

---------

Signed-off-by: tyopoyt <dcrouseIII@gmail.com>
Co-authored-by: tyopoyt <dcrouseIII@gmail.com>
2023-06-09 01:01:27 +02:00

70 lines
2.0 KiB
JavaScript

require('./explorer.css')
const S_IFMT = 0o0170000 // Bit mask for checking file types
const S_IFDIR = 0o040000 // Directory type
const S_IFLNK = 0o120000 // Symlink type
module.exports = angular.module('stf.explorer', [])
.run(['$templateCache', function($templateCache) {
$templateCache.put('control-panes/explorer/explorer.pug',
require('./explorer.pug')
)
}])
.filter('formatPermissionMode', function() {
return function(mode) {
if (mode !== null) {
var res = []
var s = ['x', 'w', 'r']
for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
if ((mode >> (i * 3 + j)) & 1 !== 0) {
res.unshift(s[j])
} else {
res.unshift('-')
}
}
}
if ((mode & S_IFMT) === S_IFDIR) {
res.unshift('d')
} else if ((mode & S_IFMT) === S_IFLNK) {
res.unshift('l')
} else {
res.unshift('-')
}
return res.join('')
}
}
})
.filter('fileIsDir', function() {
return function(m) {
var mode = m
if (mode !== null) {
mode = parseInt(mode, 10)
return ((mode & S_IFMT) === S_IFDIR) || ((mode & S_IFMT) === S_IFLNK)
}
}
})
.filter('formatFileSize', function() {
return function(size) {
var formattedSize
if (size < 1024) {
formattedSize = size + ' B'
} else if (size >= 1024 && size < 1024 * 1024) {
formattedSize = Math.round(size / 1024, 1) + ' Kb'
} else {
formattedSize = Math.round(size / (1024 * 1024), 1) + ' Mb'
}
return formattedSize
}
})
.filter('formatFileDate', function() {
return function(inputString) {
var input = new Date(inputString)
return input instanceof Date ?
input.toISOString().substring(0, 19).replace('T', ' ') :
(input.toLocaleString || input.toString).apply(input)
}
})
.controller('ExplorerCtrl', require('./explorer-controller'))