rsercano/mongoclient

View on GitHub
client/imports/helpers/helper.js

Summary

Maintainability
A
55 mins
Test Coverage
import { TAPi18n } from 'meteor/tap:i18n';
import $ from 'jquery';

const Helper = function () {
};

Helper.prototype = {
  sortObjectByKey(obj) {
    const keys = [];
    const sortedObject = {};

    Object.keys(obj).forEach(key => keys.push(key));

    keys.sort();
    $.each(keys, (i, key) => {
      sortedObject[key] = obj[key];
    });

    return sortedObject;
  },

  loadFile(currentVal, input, done, readAsString) {
    const fileInput = input.siblings('.bootstrap-filestyle').children('input');
    if (input[0].files.length === 0 && currentVal && fileInput.val()) done(currentVal);
    else if (input[0].files.length !== 0) {
      const fileReader = new FileReader();
      fileReader.onload = function (file) {
        if (readAsString) done(file.target.result);
        else done(new Uint8Array(file.target.result));
      };

      if (readAsString) fileReader.readAsText(input[0].files[0], 'UTF-8');
      else fileReader.readAsArrayBuffer(input[0].files[0]);
    } else {
      done([]);
    }
  },

  translate({ key, options, language }) {
    return TAPi18n.__(key, options, language);
  },

  populateComboboxData(result, key) {
    const data = {};
    result.forEach((col) => {
      if (key) data[col[key]] = col[key];
      else data[col] = col;
    });

    return data;
  },

  getScaleAndText(settingsScale, isMBOne) {
    let scale;
    let text;
    switch (settingsScale) {
      case 'MegaBytes':
        scale = isMBOne ? 1 : 1024 * 1024;
        text = 'MB';
        break;
      case 'KiloBytes':
        scale = 1024;
        text = 'KB';
        break;
      default:
        scale = isMBOne ? 1024 * 1024 : 1;
        text = 'Bytes';
        break;
    }

    return { scale, text };
  }
};

const helper = new Helper();
export default helper;