mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-18 08:03:30 +02:00
* Improve explorer dir and permissions logic --------- Signed-off-by: tyopoyt <dcrouseIII@gmail.com> Co-authored-by: tyopoyt <dcrouseIII@gmail.com>
70 lines
2.0 KiB
JavaScript
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'))
|