diff options
Diffstat (limited to 'pyload/web/app/scripts/helpers')
| -rw-r--r-- | pyload/web/app/scripts/helpers/fileHelper.js | 55 | ||||
| -rw-r--r-- | pyload/web/app/scripts/helpers/formatSize.js | 15 | ||||
| -rw-r--r-- | pyload/web/app/scripts/helpers/formatTime.js | 17 | ||||
| -rw-r--r-- | pyload/web/app/scripts/helpers/gettext.js | 16 | ||||
| -rw-r--r-- | pyload/web/app/scripts/helpers/pluginIcon.js | 14 | ||||
| -rw-r--r-- | pyload/web/app/scripts/helpers/truncate.js | 25 | 
6 files changed, 142 insertions, 0 deletions
| diff --git a/pyload/web/app/scripts/helpers/fileHelper.js b/pyload/web/app/scripts/helpers/fileHelper.js new file mode 100644 index 000000000..156be58f0 --- /dev/null +++ b/pyload/web/app/scripts/helpers/fileHelper.js @@ -0,0 +1,55 @@ +// Helpers to render the file view +define('helpers/fileHelper', ['handlebars', 'utils/apitypes', 'helpers/formatTime'], +    function(Handlebars, Api, formatTime) { +        'use strict'; + +        function fileClass(file, options) { +            if (file.finished) +                return 'finished'; +            else if (file.failed) +                return 'failed'; +            else if (file.offline) +                return 'offline'; +            else if (file.online) +                return 'online'; +            else if (file.waiting) +                return 'waiting'; +            else if (file.downloading) +                return 'downloading'; + +            return ''; +        } + +        // TODO +        function fileIcon(media, options) { +            return 'icon-music'; +        } + +        // TODO rest of the states +        function fileStatus(file, options) { +            var s; +            var msg = file.download.statusmsg; + +            if (file.failed) { +                s = '<i class="icon-remove"></i> '; +                if (file.download.error) +                    s += file.download.error; +                else s += msg; +            } else if (file.finished) +                s = '<i class="icon-ok"></i> ' + msg; +            else if (file.downloading) +                s = '<div class="progress"><div class="bar" style="width: ' + file.progress + '%">  ' + +                    formatTime(file.eta) + '</div></div>'; +            else if (file.waiting) +                s = '<i class="icon-time"></i> ' + formatTime(file.eta); +            else +                s = msg; + +            return new Handlebars.SafeString(s); +        } + +        Handlebars.registerHelper('fileClass', fileClass); +        Handlebars.registerHelper('fileIcon', fileIcon); +        Handlebars.registerHelper('fileStatus', fileStatus); +        return fileClass; +    });
\ No newline at end of file diff --git a/pyload/web/app/scripts/helpers/formatSize.js b/pyload/web/app/scripts/helpers/formatSize.js new file mode 100644 index 000000000..3b62e74c7 --- /dev/null +++ b/pyload/web/app/scripts/helpers/formatSize.js @@ -0,0 +1,15 @@ +// Format bytes in human readable format +define('helpers/formatSize', ['handlebars'], function(Handlebars) { +    'use strict'; + +    var sizes = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB']; +    function formatSize(bytes, options) { +        if (!bytes || bytes === 0) return '0 B'; +        var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10); +        // round to two digits +        return (bytes / Math.pow(1024, i)).toFixed(2) + ' ' + sizes[i]; +    } + +    Handlebars.registerHelper('formatSize', formatSize); +    return formatSize; +});
\ No newline at end of file diff --git a/pyload/web/app/scripts/helpers/formatTime.js b/pyload/web/app/scripts/helpers/formatTime.js new file mode 100644 index 000000000..757ff73ad --- /dev/null +++ b/pyload/web/app/scripts/helpers/formatTime.js @@ -0,0 +1,17 @@ +// Format bytes in human readable format +define('helpers/formatTime', ['handlebars', 'vendor/remaining'], function(Handlebars, Remaining) { +    'use strict'; + +    function formatTime(seconds, options) { +        if (seconds === Infinity) +            return '∞'; +        else if (!seconds || seconds <= 0) +            return '-'; + +        // TODO: digital or written string +        return Remaining.getStringDigital(seconds, window.dates); +    } + +    Handlebars.registerHelper('formatTime', formatTime); +    return formatTime; +});
\ No newline at end of file diff --git a/pyload/web/app/scripts/helpers/gettext.js b/pyload/web/app/scripts/helpers/gettext.js new file mode 100644 index 000000000..d73b5e378 --- /dev/null +++ b/pyload/web/app/scripts/helpers/gettext.js @@ -0,0 +1,16 @@ +require(['underscore', 'handlebars', 'utils/i18n'], function(_, Handlebars, i18n) { +    'use strict'; +    // These methods binds additional content directly to translated message +    function ngettext(single, plural, n) { +        return i18n.sprintf(i18n.ngettext(single, plural, n), n); +    } + +    function gettext(key, message) { +        return i18n.sprintf(i18n.gettext(key), message); +    } + +    Handlebars.registerHelper('_', gettext); +    Handlebars.registerHelper('gettext', gettext); +    Handlebars.registerHelper('ngettext', ngettext); +    return gettext; +});
\ No newline at end of file diff --git a/pyload/web/app/scripts/helpers/pluginIcon.js b/pyload/web/app/scripts/helpers/pluginIcon.js new file mode 100644 index 000000000..6b2fdc67f --- /dev/null +++ b/pyload/web/app/scripts/helpers/pluginIcon.js @@ -0,0 +1,14 @@ +// Resolves name of plugin to icon path +define('helpers/pluginIcon', ['handlebars', 'app'], function(Handlebars, App) { +    'use strict'; + +    function pluginIcon(name) { +        if (typeof name === 'object' && typeof name.get === 'function') +            name = name.get('plugin'); + +        return App.apiUrl('icons/' + name); +    } + +    Handlebars.registerHelper('pluginIcon', pluginIcon); +    return pluginIcon; +});
\ No newline at end of file diff --git a/pyload/web/app/scripts/helpers/truncate.js b/pyload/web/app/scripts/helpers/truncate.js new file mode 100644 index 000000000..fb351b776 --- /dev/null +++ b/pyload/web/app/scripts/helpers/truncate.js @@ -0,0 +1,25 @@ +require(['underscore','handlebars'], function(_, Handlebars) { +    'use strict'; + +    function truncate(fullStr, options) { +        var strLen = 30; +        if (_.isNumber(options)) +            strLen = options; + +        if (fullStr.length <= strLen) return fullStr; + +        var separator = options.separator || '…'; + +        var sepLen = separator.length, +            charsToShow = strLen - sepLen, +            frontChars = Math.ceil(charsToShow / 2), +            backChars = Math.floor(charsToShow / 2); + +        return fullStr.substr(0, frontChars) + +            separator + +            fullStr.substr(fullStr.length - backChars); +    } + +    Handlebars.registerHelper('truncate', truncate); +    return truncate; +});
\ No newline at end of file | 
