mirror of
https://github.com/ascribe/onion.git
synced 2024-12-22 17:33:14 +01:00
refactor general utils
This commit is contained in:
parent
68be98c3f0
commit
366fcbf4f3
@ -1,7 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import TableColumnMixin from '../../mixins/table_column_mixin';
|
import TableColumnMixin from '../../mixins/table_column_mixin';
|
||||||
import GeneralUtils from '../../utils/general_utils';
|
|
||||||
import TableHeaderItem from './table_header_item';
|
import TableHeaderItem from './table_header_item';
|
||||||
|
|
||||||
import TableColumnContentModel from '../../models/table_column_content_model';
|
import TableColumnContentModel from '../../models/table_column_content_model';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import GeneralUtils from '../utils/general_utils';
|
import { sumNumList } from '../utils/general_utils';
|
||||||
|
|
||||||
let TableColumnMixin = {
|
let TableColumnMixin = {
|
||||||
/**
|
/**
|
||||||
@ -11,7 +11,7 @@ let TableColumnMixin = {
|
|||||||
let bootstrapClasses = ['col-xs-', 'col-sm-', 'col-md-', 'col-lg-'];
|
let bootstrapClasses = ['col-xs-', 'col-sm-', 'col-md-', 'col-lg-'];
|
||||||
|
|
||||||
let listOfRowValues = list.map((column) => column.rowWidth );
|
let listOfRowValues = list.map((column) => column.rowWidth );
|
||||||
let numOfUsedColumns = GeneralUtils.sumNumList(listOfRowValues);
|
let numOfUsedColumns = sumNumList(listOfRowValues);
|
||||||
|
|
||||||
if(numOfUsedColumns > numOfColumns) {
|
if(numOfUsedColumns > numOfColumns) {
|
||||||
throw new Error('This table has only ' + numOfColumns + ' columns to assign. You defined ' + numOfUsedColumns + '. Change this in the columnMap you\'re passing to the table.')
|
throw new Error('This table has only ' + numOfColumns + ' columns to assign. You defined ' + numOfUsedColumns + '. Change this in the columnMap you\'re passing to the table.')
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import GeneralUtils from './general_utils';
|
import { sanitize } from './general_utils';
|
||||||
|
|
||||||
|
|
||||||
// TODO: Create Unittests that test all functions
|
// TODO: Create Unittests that test all functions
|
||||||
@ -22,7 +22,7 @@ let FetchApiUtils = {
|
|||||||
*/
|
*/
|
||||||
argsToQueryParams(obj) {
|
argsToQueryParams(obj) {
|
||||||
|
|
||||||
obj = GeneralUtils.sanitize(obj);
|
obj = sanitize(obj);
|
||||||
|
|
||||||
return Object
|
return Object
|
||||||
.keys(obj)
|
.keys(obj)
|
||||||
|
@ -1,74 +1,63 @@
|
|||||||
// TODO: Create Unittests that test all functions
|
// TODO: Create Unittests that test all functions
|
||||||
|
|
||||||
let GeneralUtils = {
|
export function sanitize(obj) {
|
||||||
/**
|
Object
|
||||||
* Removes undefined and null values from an key-value object.
|
.keys(obj)
|
||||||
*/
|
.map((key) => {
|
||||||
sanitize(obj) {
|
// By matching null with a double equal, we can match undefined and null
|
||||||
Object
|
// http://stackoverflow.com/a/15992131
|
||||||
.keys(obj)
|
if(obj[key] == null || obj[key] === '') {
|
||||||
.map((key) => {
|
delete obj[key];
|
||||||
// By matching null with a double equal, we can match undefined and null
|
|
||||||
// http://stackoverflow.com/a/15992131
|
|
||||||
if(obj[key] == null || obj[key] === '') {
|
|
||||||
delete obj[key];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the values of an object.
|
|
||||||
*/
|
|
||||||
valuesOfObject(obj) {
|
|
||||||
return Object
|
|
||||||
.keys(obj)
|
|
||||||
.map(key => obj[key]);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sums up a list of numbers. Like a Epsilon-math-kinda-sum...
|
|
||||||
*/
|
|
||||||
sumNumList(l) {
|
|
||||||
let sum = 0;
|
|
||||||
l.forEach((num) => sum += parseFloat(num) || 0);
|
|
||||||
return sum;
|
|
||||||
},
|
|
||||||
|
|
||||||
/*
|
|
||||||
Taken from http://stackoverflow.com/a/4795914/1263876
|
|
||||||
Behaves like C's format string function
|
|
||||||
|
|
||||||
Does not throw errors though if a argument's type is not
|
|
||||||
matching its template's representative!!!
|
|
||||||
This essentially means you can use %d or %s for anything...
|
|
||||||
*/
|
|
||||||
formatText() {
|
|
||||||
var args = arguments,
|
|
||||||
string = args[0],
|
|
||||||
i = 1;
|
|
||||||
return string.replace(/%((%)|s|d)/g, function (m) {
|
|
||||||
// m is the matched format, e.g. %s, %d
|
|
||||||
var val = null;
|
|
||||||
if (m[2]) {
|
|
||||||
val = m[2];
|
|
||||||
} else {
|
|
||||||
val = args[i];
|
|
||||||
// A switch statement so that the formatter can be extended. Default is %s
|
|
||||||
switch (m) {
|
|
||||||
case '%d':
|
|
||||||
val = parseFloat(val);
|
|
||||||
if (isNaN(val)) {
|
|
||||||
val = 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
return val;
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
return obj;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default GeneralUtils;
|
/**
|
||||||
|
* Returns the values of an object.
|
||||||
|
*/
|
||||||
|
export function valuesOfObject(obj) {
|
||||||
|
return Object
|
||||||
|
.keys(obj)
|
||||||
|
.map(key => obj[key]);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sums up a list of numbers. Like a Epsilon-math-kinda-sum...
|
||||||
|
*/
|
||||||
|
export function sumNumList(l) {
|
||||||
|
let sum = 0;
|
||||||
|
l.forEach((num) => sum += parseFloat(num) || 0);
|
||||||
|
return sum;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Taken from http://stackoverflow.com/a/4795914/1263876
|
||||||
|
Behaves like C's format string function
|
||||||
|
*/
|
||||||
|
export function formatText() {
|
||||||
|
var args = arguments,
|
||||||
|
string = args[0],
|
||||||
|
i = 1;
|
||||||
|
return string.replace(/%((%)|s|d)/g, function (m) {
|
||||||
|
// m is the matched format, e.g. %s, %d
|
||||||
|
var val = null;
|
||||||
|
if (m[2]) {
|
||||||
|
val = m[2];
|
||||||
|
} else {
|
||||||
|
val = args[i];
|
||||||
|
// A switch statement so that the formatter can be extended. Default is %s
|
||||||
|
switch (m) {
|
||||||
|
case '%d':
|
||||||
|
val = parseFloat(val);
|
||||||
|
if (isNaN(val)) {
|
||||||
|
val = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
@ -1,19 +1,24 @@
|
|||||||
import languages from '../constants/languages';
|
import languages from '../constants/languages';
|
||||||
|
|
||||||
import GeneralUtils from './general_utils';
|
import { formatText } from './general_utils';
|
||||||
|
|
||||||
let getLangText = function(s, ...args) {
|
let getLangText = function(s, ...args) {
|
||||||
let lang = navigator.language || navigator.userLanguage;
|
let lang = navigator.language || navigator.userLanguage;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(lang in languages) {
|
if(lang in languages) {
|
||||||
return GeneralUtils.formatText(languages[lang][s], args);
|
return formatText(languages[lang][s], args);
|
||||||
} else {
|
} else {
|
||||||
// just use the english language
|
// just use the english language
|
||||||
return GeneralUtils.formatText(languages['en-US'][s], args);
|
return formatText(languages['en-US'][s], args);
|
||||||
}
|
}
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
console.error(new Error('Language-string is not in constants file.'));
|
if(!(s in languages[lang])) {
|
||||||
|
console.error(new Error('Language-string is not in constants file for string: ' + s));
|
||||||
|
} else {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user