elevenetc/device-manager-back-end

View on GitHub
src/view/view-slack.js

Summary

Maintainability
A
2 hrs
Test Coverage
/**
 * Created by eugene.levenetc on 28/11/2016.
 */

const utils = require('../utils/utils');
const OrderedMap = require('../utils/ordered-map');

/**
 *
 * @param type
 * @param devices
 * @param {String} [filters]
 * @return {*}
 */
exports.renderDevices = function (type, devices, filters) {
    devices = utils.filterDevices(devices, filters);
    let verbose = utils.contains(filters, 'v:true');
    if (type === 'slack') {
        return render(devices, verbose, filters);
    } else if (type === 'json') {
        return devices;
    } else {
        throw new Error(`Invalid view type param: ${type}`);
    }
};

function render(devices, verbose, filters) {

    let map = new OrderedMap();
    let result = '';
    if(utils.isDefined(filters) && '' !== filters) result = 'Filters: `' + filters + '`, ';
    result += 'Result: ' + devices.length + ' devices\n';

    for (let i = 0; i < devices.length; i++) {

        result += (i + 1) + '. ';

        let device = devices[i];

        if (utils.isDeviceValid(device)) {
            let deviceId = device.deviceId;
            let deviceName = utils.capitalize(device.manufacturer + ' ' + device.model);
            let osVersion = device.osVersion;
            let lat = device.lat;
            let lon = device.lon;
            let locAndDeviceName = '<https://www.google.com/maps/@' + lat + ',' + lon + ',18z|' + deviceName + '>';
            let wifiSSID = device.wifiSSID;
            let screenWidth = device.screenWidth;
            let screenHeight = device.screenHeight;
            let screenSize = device.screenSize;
            let hasNfc = device.hasNfc;
            let hasBluetooth = device.hasBluetooth;
            let hasBluetoothLowEnergy = device.hasBluetoothLowEnergy;
            let hasFingerprintScanner = device.hasFingerprintScanner;
            let batteryLevel = device.batteryLevel;
            let isOnline = device.isOnline ? ' `on` ' : ' `off` ';

            map.put('fingerprint', hasFingerprintScanner);
            map.put('ble', hasBluetoothLowEnergy);
            map.put('bt', hasBluetooth);
            map.put('nfc', hasNfc);
            map.put('screenSize', screenSize);
            map.put('screenWidth', screenWidth);
            map.put('screenHeight', screenHeight);
            map.put('wifi', wifiSSID);
            map.put('cpuArch', device.cpuArch);
            map.put('cpuCoreNum', device.cpuCoreNum);

            result += locAndDeviceName + isOnline + `\`os: ${osVersion}\` \`battery: ${batteryLevel}%\` `;

            map.iterate(function (key, value) {

                if (verbose) {
                    result += `\`${key}: ${value}\` `;
                } else {
                    if (filters.indexOf(key) >= 0) result += `\`${key}: ${value}\` `;
                }

            });
        } else {
            result += 'Error: Not valid device';
        }

        result += '\n';
    }

    return result;
}