2017-08-22 1 views
1

Je construis une application Web qui peut afficher des informations système sur un site Web. Il affiche les informations sur le matériel (temps, RAM, CPU, vitesses du ventilateur, etc.) du PC sur lequel le «serveur» fonctionne. Il ouvre un serveur web affichant cette information accessible sur le réseau. J'utilise météore, blazejs et systeminformation (https://github.com/sebhildebrandt/systeminformation) pour ce faire. Les informations système affichent les informations obtenues du serveur sous forme de nombres longs. Ceci est mon html:moyen le plus simple de mettre en forme de longs chiffres en javascript vers la bonne unité?

<template name="main"> 
{{#if subscriptionsReady}} 

    <p>cpu manufacturer: {{get (static) 'data.cpu.manufacturer'}}</p> 
    <p>cpu brand: {{get (static) 'data.cpu.brand'}}</p> 
    <p>cpu model: {{get (static) 'data.cpu.model'}}</p> 
    <p>cpu speed: {{get (static) 'data.cpu.speed'}}</p> 
    <p>cpu cores: {{get (static) 'data.cpu.cores'}}</p> 

    <p>total memory: {{get (dynamic) 'data.mem.total'}}</p> 
    <p>free memory: {{get (dynamic) 'data.mem.free'}}</p> 
    <p>used memory: {{get (dynamic) 'data.mem.used'}}</p> 
    <p>active memory: {{get (dynamic) 'data.mem.active'}}</p> 
{{/if}} 

qui montre ce sur le site

website output

Je voudrais formater les longs numéros pour ressembler « mémoire totale X.YZ Go "et similaire pour différentes données. Y at-il une bibliothèque facile à utiliser là-bas que je pourrais utiliser pour cela?

Aussi voici mon serveur fichier javascript

Meteor.startup(() => { 

si.getStaticData(Meteor.bindEnvironment(function(data){ 
    Data.update({type: 'static'}, {data: data, type: 'static'}, {upsert: true}) 
})) 

setInterval(Meteor.bindEnvironment(function() { 

    si.getDynamicData(Meteor.bindEnvironment(function(data){ 
     Data.update({type: 'dynamic'}, {data: data, type: 'dynamic'}, {upsert: true}) 
    })) 

}), 1000) 

Meteor.publish('data', function(){ 
    return Data.find({}) 
}) 
}); 

et mon client javascript

let subscriptions = [ 
    Meteor.subscribe('data') 
] 

Template.main.helpers({ 

    get: function(obj, what) { 
     console.log(obj) 
     return _.get(obj, what) 
}, 

dynamic: function() { 
    return Data.findOne({type: 'dynamic'}) 
}, 

static: function() { 
    return Data.findOne({type: 'static'}) 
}, 

subscriptionsReady: function() { 
    for (let sub of subscriptions){ 
     if (!sub.ready()) return false 
    } 
    return true 
} 
}) 
+1

Il existe un formateur 'bytes à X' qui peut vous aider à démarrer: http://codeaid.net/javascript/convert-size-in-bytes-to-human readable-format- (javascript) # comment-1 –

Répondre

1

Il y a la bibliothèque pretty-bytes très populaire (licence MIT):

Convertir octets à une chaîne lisible: 1337 → 1,34 kB

utile pour afficher la taille des fichiers pour l'homme.

Utilisation:

const prettyBytes = require('pretty-bytes'); 

prettyBytes(1337); 
//=> '1.34 kB' 

prettyBytes(100); 
//=> '100 B' 

Notez qu'il convertit en base 10 (à savoir 1 Go = 1.000.000.000 B comme ce que les fabricants utilisent le stockage en général).

Comme je suppose que vous faites référence à la mémoire RAM, qui je pense que est rapporté par les fabricants en utilisant la base 2 conversion (par exemple 1 Gio = 1,024 * 1,024 * 1,024 B), vous pourriez être intéressé à la place dans cette autre bibliothèque populaire : filesize (licence BSD 3-Clause)

+0

Merci, il fonctionne parfaitement, connaissez-vous également une bibliothèque que je peux utiliser pour le formatage des sorties de temps de l'information système pour des choses comme le temps de disponibilité? – Tanonic