Add support for digital units.
parent
5271eae25b
commit
92f0323456
|
@ -6,7 +6,7 @@
|
|||
<select class="frm__select--left"></select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="equals-sign tx-clr--slate">=</div>
|
||||
|
||||
<div class="input__wrap input__wrap--right shadow">
|
||||
|
|
|
@ -14,11 +14,6 @@ DDH.conversions = DDH.conversions || {};
|
|||
$unitSelector,
|
||||
$selects;
|
||||
|
||||
// a capitalize method to string literals
|
||||
String.prototype.capitalize = function() {
|
||||
return this.charAt(0).toUpperCase() + this.slice(1);
|
||||
}
|
||||
|
||||
var Converter = {
|
||||
|
||||
// the local vars
|
||||
|
@ -74,23 +69,21 @@ DDH.conversions = DDH.conversions || {};
|
|||
|
||||
updateUnitSelectors: function( key ) {
|
||||
|
||||
// resets the selects state
|
||||
this.emptySelects();
|
||||
var formatted_option_name;
|
||||
|
||||
// sort the keys alphabetically
|
||||
Units[key].units.sort();
|
||||
|
||||
// adds the new conversion units to the selects
|
||||
for(var i = 0 ; i < Units[key].units.length ; i++) {
|
||||
formatted_option_name = (Units[key].units[i].length > 3) ? Units[key].units[i].capitalize() : Units[key].units[i];
|
||||
$selects.append(
|
||||
'<option value="' + Units[key].units[i] + '">'
|
||||
+ formatted_option_name
|
||||
'<option value="' + Units[key].units[i].symbol + '">'
|
||||
+ Units[key].units[i].name
|
||||
+ '</option>'
|
||||
);
|
||||
}
|
||||
|
||||
// set defaults. written this way for readability
|
||||
// set defaults. these should match Units[key].units[i].symbol
|
||||
$select_left.val(Units[key].defaults[0]);
|
||||
$select_right.val(Units[key].defaults[1]);
|
||||
},
|
||||
|
@ -110,13 +103,28 @@ DDH.conversions = DDH.conversions || {};
|
|||
|
||||
var Utils = {
|
||||
|
||||
// custom unit support
|
||||
setUpCustomUnits: function() {
|
||||
// custom unit support
|
||||
// support for custom energy conversions
|
||||
|
||||
// CUSTOM ENERGY UNITS
|
||||
math.createUnit('kilojoule', '1000 joules');
|
||||
math.createUnit('gramcalorie', '4.184 joules');
|
||||
math.createUnit('kilocalorie', '4184 joules');
|
||||
// math.createUnit('killowatt/hr', '3.6e+6 joules');
|
||||
|
||||
// CUSTOM DIGITAL UNITS
|
||||
math.createUnit('kb', '1000 b');
|
||||
math.createUnit('mb', '1000000 b');
|
||||
math.createUnit('gb', '1000000000 b');
|
||||
math.createUnit('Tb', '1000000000000 b');
|
||||
math.createUnit('KB', '1000 B');
|
||||
math.createUnit('MB', '1000000 B');
|
||||
math.createUnit('GB', '1000000000 B');
|
||||
math.createUnit('TB', '1000 GB');
|
||||
math.createUnit('PB', '1000 TB');
|
||||
|
||||
|
||||
// math.createUnit('')
|
||||
|
||||
},
|
||||
|
||||
// caches the local DOM vars
|
||||
|
@ -136,202 +144,203 @@ DDH.conversions = DDH.conversions || {};
|
|||
length: {
|
||||
name: "Length",
|
||||
units: [
|
||||
'decameter',
|
||||
'millimeter',
|
||||
'micrometer',
|
||||
'nanometer',
|
||||
'picometer',
|
||||
'kilometer',
|
||||
'meter',
|
||||
'cm',
|
||||
'hectometer',
|
||||
'chains',
|
||||
'mm',
|
||||
'inch',
|
||||
'foot',
|
||||
'yard',
|
||||
'mile',
|
||||
'link',
|
||||
'rod',
|
||||
'angstrom',
|
||||
'mil'
|
||||
{ symbol: 'decameter', name: 'Decameter' },
|
||||
{ symbol: 'millimeter', name: 'Millimeter' },
|
||||
{ symbol: 'micrometer', name: 'Micrometer' },
|
||||
{ symbol: 'micrometer', name: 'Micrometer' },
|
||||
{ symbol: 'nanometer', name: 'Nanometer' },
|
||||
{ symbol: 'picometer', name: 'Picometer' },
|
||||
{ symbol: 'kilometer', name: 'Kilometer' },
|
||||
{ symbol: 'meter', name: 'Meter' },
|
||||
{ symbol: 'cm', name: 'Centimeter' },
|
||||
{ symbol: 'hectometer', name: 'Hectometer' },
|
||||
{ symbol: 'chains', name: 'Chains' },
|
||||
{ symbol: 'inch', name: 'Inch' },
|
||||
{ symbol: 'foot', name: 'Feet' },
|
||||
{ symbol: 'yard', name: 'Yard' },
|
||||
{ symbol: 'mile', name: 'Mile' },
|
||||
{ symbol: 'link', name: 'Link' },
|
||||
{ symbol: 'rod', name: 'Rod' },
|
||||
{ symbol: 'angstrom', name: 'Angstrom' },
|
||||
{ symbol: 'mil', name: 'Mil'}
|
||||
],
|
||||
defaults: ['meter', 'cm']
|
||||
},
|
||||
area: {
|
||||
name: "Area",
|
||||
units: [
|
||||
'm2',
|
||||
'sqin',
|
||||
'sqft',
|
||||
'sqyd',
|
||||
'sqmi',
|
||||
'sqrd',
|
||||
'sqch',
|
||||
'sqmil',
|
||||
'acre',
|
||||
'hectare'
|
||||
{ symbol: 'm2', name: 'Square Meter' },
|
||||
{ symbol: 'sqin', name: 'Square Inch' },
|
||||
{ symbol: 'sqft', name: 'Square Feet' },
|
||||
{ symbol: 'sqyd', name: 'Square Yard' },
|
||||
{ symbol: 'sqmi', name: 'Square Mile' },
|
||||
{ symbol: 'acre', name: 'Acre' },
|
||||
{ symbol: 'hectare', name: 'Hectare' }
|
||||
],
|
||||
defaults: ['m2', 'sqin']
|
||||
},
|
||||
volume: {
|
||||
name: "Volume",
|
||||
units: [
|
||||
'litre',
|
||||
'millilitre',
|
||||
'hectolitre',
|
||||
'decalitre',
|
||||
'deciliter',
|
||||
'centilitre',
|
||||
'cc',
|
||||
'cuin',
|
||||
'cuft',
|
||||
'cups',
|
||||
'cuyd',
|
||||
'pints',
|
||||
'teaspoon',
|
||||
'tablespoon'
|
||||
{ symbol: 'litre', name: 'Litre' },
|
||||
{ symbol: 'millilitre', name: 'Millilitre' },
|
||||
{ symbol: 'hectolitre', name: 'Hectolitre' },
|
||||
{ symbol: 'decalitre', name: 'Decalitre' },
|
||||
{ symbol: 'deciliter', name: 'Deciliter' },
|
||||
{ symbol: 'centilitre', name: 'Centilitre' },
|
||||
{ symbol: 'cc', name: 'CC' },
|
||||
{ symbol: 'cuin', name: 'Cuin' },
|
||||
{ symbol: 'cuft', name: 'Cuft' },
|
||||
{ symbol: 'cups', name: 'Cups' },
|
||||
{ symbol: 'cuyd', name: 'Cubic Yard' },
|
||||
{ symbol: 'pints', name: 'Pints' },
|
||||
{ symbol: 'teaspoon', name: 'Teaspoon' },
|
||||
{ symbol: 'tablespoon', name: 'Tablespoon' },
|
||||
],
|
||||
defaults: ['litre', 'millilitre']
|
||||
},
|
||||
liquid_volume: {
|
||||
liquid_volume: { // double check this works
|
||||
name: "Liquid Volume",
|
||||
units: ['minim', 'fluiddram', 'fluidounce', 'gill', 'cup', 'pint', 'quart', 'gallon', 'beerbarrel', 'oilbarrel', 'hogshead', 'drop'],
|
||||
units: [
|
||||
{ symbol: 'minim', name: 'Minim' }, // add in proper name
|
||||
{ symbol: 'fluiddram', name: 'Fluid Dram' },
|
||||
{ symbol: 'fluidounce', name: 'Fluid Ounce' },
|
||||
{ symbol: 'gill', name: 'Gill' },
|
||||
{ symbol: 'cup', name: 'Cup' },
|
||||
{ symbol: 'pint', name: 'Pint'},
|
||||
{ symbol: 'quart', name: 'Quart'},
|
||||
{ symbol: 'gallon', name: 'Gallon'},
|
||||
{ symbol: 'beerbarrel', name: 'Beerbarrel'},
|
||||
{ symbol: 'oilbarrel', name: 'oilbarrel'},
|
||||
{ symbol: 'hogshead', name: 'Hogshead'},
|
||||
{ symbol: 'drop', name: 'Drop'},
|
||||
],
|
||||
defaults: ['minim', 'fluiddram']
|
||||
},
|
||||
angle: {
|
||||
name: "Angle",
|
||||
units: [
|
||||
'rad',
|
||||
'deg',
|
||||
'grad',
|
||||
'cycle',
|
||||
'arcsec',
|
||||
'arcmin',
|
||||
'millirad',
|
||||
{ symbol: 'rad', name: 'Radians' },
|
||||
{ symbol: 'deg', name: 'Degrees' },
|
||||
{ symbol: 'grad', name: 'Gradians' },
|
||||
{ symbol: 'cycle', name: 'Cycles' },
|
||||
{ symbol: 'arcsec', name: 'Arcsecs' }, // update to proper name
|
||||
{ symbol: 'arcmin', name: 'Arcmin' }, // update to proper name
|
||||
{ symbol: 'millirad', name: 'Milliradian' },
|
||||
],
|
||||
defaults: ['deg', 'rad']
|
||||
},
|
||||
duration: {
|
||||
name: "Duration",
|
||||
units: [
|
||||
'nanosecond',
|
||||
'microsecond',
|
||||
'millisecond',
|
||||
'second',
|
||||
'minute',
|
||||
'hour',
|
||||
'day',
|
||||
'week',
|
||||
'month',
|
||||
'year',
|
||||
'decade',
|
||||
'century',
|
||||
'millennium'
|
||||
{ symbol: 'nanosecond', name: 'Nanoseconds' },
|
||||
{ symbol: 'microsecond', name: 'Microseconds' },
|
||||
{ symbol: 'millisecond', name: 'Milliseconds' },
|
||||
{ symbol: 'second', name: 'Seconds' },
|
||||
{ symbol: 'minute', name: 'Minutes' },
|
||||
{ symbol: 'hour', name: 'Hours' },
|
||||
{ symbol: 'day', name: 'Days' },
|
||||
{ symbol: 'week', name: 'Weeks' },
|
||||
{ symbol: 'month', name: 'Months'},
|
||||
{ symbol: 'year', name: 'Years' },
|
||||
{ symbol: 'decade', name: 'Decade' },
|
||||
{ symbol: 'century', name: 'Century' },
|
||||
{ symbol: 'millennium', name: 'Millennium' },
|
||||
],
|
||||
defaults: ['minute', 'second']
|
||||
},
|
||||
mass: {
|
||||
name: "Mass",
|
||||
units: [
|
||||
'microgram',
|
||||
'kilogram',
|
||||
'milligram',
|
||||
'gram',
|
||||
'ton',
|
||||
'grain',
|
||||
'dram',
|
||||
'ounce',
|
||||
'poundmass',
|
||||
'hundredweight',
|
||||
'stick',
|
||||
'stone'
|
||||
{ symbol: 'microgram', name: 'Microgram' },
|
||||
{ symbol: 'kilogram', name: 'Kilogram' },
|
||||
{ symbol: 'milligram', name: 'Milligram' },
|
||||
{ symbol: 'gram', name: 'Gram' },
|
||||
{ symbol: 'ton', name: 'Ton' },
|
||||
{ symbol: 'grain', name: 'Grain' },
|
||||
{ symbol: 'dram', name: 'Dram' },
|
||||
{ symbol: 'ounce', name: 'Ounce' },
|
||||
{ symbol: 'poundmass', name: 'Pound' },
|
||||
{ symbol: 'hundredweight', name: 'Hundredweight' },
|
||||
{ symbol: 'stick', name: 'Stick' },
|
||||
{ symbol: 'stone', name: 'Stone' },
|
||||
],
|
||||
defaults: ['kilogram', 'gram']
|
||||
},
|
||||
temperature: {
|
||||
name: "Temperature",
|
||||
units: [
|
||||
'kelvin',
|
||||
'celsius',
|
||||
'fahrenheit',
|
||||
'rankine'
|
||||
{ symbol: 'kelvin', name: 'Kelvin' },
|
||||
{ symbol: 'celsius', name: 'Celsius' },
|
||||
{ symbol: 'fahrenheit', name: 'Fahrenheit' },
|
||||
{ symbol: 'rankine', name: 'Rankine' },
|
||||
],
|
||||
defaults: ['celsius', 'fahrenheit']
|
||||
},
|
||||
force: {
|
||||
name: "Force",
|
||||
units: [
|
||||
'newton',
|
||||
'dyne',
|
||||
'poundforce',
|
||||
'kip'
|
||||
{ symbol: 'newton', name: 'Newton' },
|
||||
{ symbol: 'dyne', name: 'Dyne'},
|
||||
{ symbol: 'poundforce', name: 'Pound Force'},
|
||||
{ symbol: 'kip', name: 'Kip'},
|
||||
],
|
||||
defaults: ['newton', 'dyne']
|
||||
},
|
||||
energy: {
|
||||
name: "Energy",
|
||||
units: [
|
||||
'joule',
|
||||
'kilojoule',
|
||||
'gramcalorie',
|
||||
'kilocalorie',
|
||||
// 'killowatt/hr',
|
||||
'Wh',
|
||||
'erg',
|
||||
'BTU',
|
||||
'electronvolt'
|
||||
{ symbol: 'joule', name: 'Joule' },
|
||||
{ symbol: 'kilojoule', name: 'kilojoule' },
|
||||
{ symbol: 'gramcalorie', name: 'Gram Calorie'},
|
||||
{ symbol: 'kilocalorie', name: 'Kilo Calorie'},
|
||||
// 'killowatt/hr', ~~ add in support for this
|
||||
{ symbol: 'Wh', name: 'Wh' }, // add in the proper name for this
|
||||
{ symbol: 'erg', name: 'erg' },
|
||||
{ symbol: 'BTU', name: 'British Thermal Unit'},
|
||||
{ symbol: 'electronvolt', name: 'Electronvolt'},
|
||||
],
|
||||
defaults: ['joule', 'Wh']
|
||||
},
|
||||
power: {
|
||||
name: "Power",
|
||||
units: [
|
||||
'watt',
|
||||
'hp'
|
||||
{ symbol: 'watt', name: 'Watt'},
|
||||
{ symbol: 'hp', name: 'HP' }
|
||||
],
|
||||
defaults: ['watt', 'hp']
|
||||
},
|
||||
pressure: {
|
||||
name: "Pressure",
|
||||
units: [
|
||||
'Pa',
|
||||
'psi',
|
||||
'atm',
|
||||
'torr',
|
||||
'mmHg',
|
||||
'mmH2O',
|
||||
'cmH2O',
|
||||
'bar',
|
||||
{ symbol: 'Pa', name: 'Pascal' },
|
||||
{ symbol: 'psi', name: 'Pounds per Square Inch' },
|
||||
{ symbol: 'atm', name: 'atm' }, // add in propert name
|
||||
{ symbol: 'torr', name: 'Torr' },
|
||||
{ symbol: 'mmHg', name: 'mmHg' }, // add in proper name
|
||||
{ symbol: 'mmH2O', name: 'mmH2O' }, // add in proper name
|
||||
{ symbol: 'cmH20', name: 'cmH20' }, // add in proper name
|
||||
{ symbol: 'bar', name: 'Bars' },
|
||||
],
|
||||
defaults: ['Pa', 'psi']
|
||||
},
|
||||
/*
|
||||
* There seems to be math js issues regarding the electricity and magnetism
|
||||
* options. I can't get them to trigger via the command line either.
|
||||
electricity_magnetism: {
|
||||
name: "Electricity and Magnetism",
|
||||
digital: {
|
||||
name: "Digital Storage",
|
||||
units: [
|
||||
'ampere',
|
||||
'coulomb',
|
||||
'watt',
|
||||
'volt',
|
||||
'ohm',
|
||||
'farad',
|
||||
'weber',
|
||||
'tesla',
|
||||
'henry',
|
||||
'siemens',
|
||||
{ symbol: 'b', name: 'Bit' },
|
||||
{ symbol: 'B', name: 'Byte' },
|
||||
{ symbol: 'kb', name: 'Kilobit' },
|
||||
{ symbol: 'mb', name: 'Megabit'},
|
||||
{ symbol: 'gb', name: 'Gigabit'},
|
||||
{ symbol: 'Tb', name: 'Terrabit'},
|
||||
{ symbol: 'KB', name: 'Kilobyte'},
|
||||
{ symbol: 'MB', name: 'Megabyte'},
|
||||
{ symbol: 'GB', name: 'Gigabyte'},
|
||||
{ symbol: 'TB', name: 'Terabyte'},
|
||||
{ symbol: 'PB', name: 'Petabyte'},
|
||||
],
|
||||
defaults: ['ampere', 'coulomb']
|
||||
defaults: ['b', 'B']
|
||||
},
|
||||
*/
|
||||
// TODO: Support digital conversions. @pjhampton - there were math.js api issues
|
||||
// digital: {
|
||||
// name: "Binary",
|
||||
// units: ['bit', 'byte'],
|
||||
// defaults: ['bit', 'byte']
|
||||
// }
|
||||
} // Units
|
||||
|
||||
DDH.conversions.build = function(ops) {
|
||||
|
@ -385,6 +394,14 @@ DDH.conversions = DDH.conversions || {};
|
|||
Converter.convert("left");
|
||||
}
|
||||
});
|
||||
|
||||
$convert_left.click(function() {
|
||||
this.select()
|
||||
});
|
||||
|
||||
$convert_right.click(function() {
|
||||
this.select()
|
||||
});
|
||||
|
||||
$select_right.change(function() {
|
||||
Converter.convert("right");
|
||||
|
@ -408,6 +425,9 @@ DDH.conversions = DDH.conversions || {};
|
|||
}; // return
|
||||
}; // DDH.conversions.build
|
||||
|
||||
// module.exports = { Converter: Converter, Utils: Utils };
|
||||
// checks we are not in the browser and exposes Converter for testing
|
||||
if (typeof window === 'undefined') {
|
||||
module.exports = { Converter: Converter };
|
||||
}
|
||||
|
||||
})(DDH);
|
||||
|
|
|
@ -880,3 +880,94 @@ aliases:
|
|||
type: temperature
|
||||
unit: rankine
|
||||
symbols: [°Ra]
|
||||
---
|
||||
aliases:
|
||||
- b
|
||||
- bit
|
||||
- bits
|
||||
type: digital
|
||||
unit: b
|
||||
---
|
||||
aliases:
|
||||
- B
|
||||
- Byte
|
||||
- Bytes
|
||||
- byte
|
||||
- bytes
|
||||
type: digital
|
||||
unit: B
|
||||
---
|
||||
aliases:
|
||||
- kb
|
||||
- Kilobit
|
||||
- Kilobits
|
||||
- kilobit
|
||||
- kilobits
|
||||
type: digital
|
||||
unit: kb
|
||||
---
|
||||
aliases:
|
||||
- mb
|
||||
- megabit
|
||||
- megabits
|
||||
type: digital
|
||||
unit: mb
|
||||
---
|
||||
aliases:
|
||||
- gb
|
||||
- gigabit
|
||||
- gigabits
|
||||
- Gigabit
|
||||
- Gigabits
|
||||
type: digital
|
||||
unit: gb
|
||||
---
|
||||
aliases:
|
||||
- Tb
|
||||
- tb
|
||||
- terrabit
|
||||
- terrabits
|
||||
- Terrabit
|
||||
- Terrabits
|
||||
type: digital
|
||||
unit: Tb
|
||||
---
|
||||
aliases:
|
||||
- KB
|
||||
- KBs
|
||||
- Kilobyte
|
||||
- Kilobytes
|
||||
- kilobyte
|
||||
- kilobytes
|
||||
type: digital
|
||||
unit: KB
|
||||
---
|
||||
aliases:
|
||||
- MB
|
||||
- MBs
|
||||
- Megabyte
|
||||
- Megabytes
|
||||
- megabyte
|
||||
- megabytes
|
||||
type: digital
|
||||
unit: MB
|
||||
---
|
||||
aliases:
|
||||
- GB
|
||||
- GBs
|
||||
- Gigabyte
|
||||
- Gigabytes
|
||||
- gigabyte
|
||||
- gigabytes
|
||||
type: digital
|
||||
unit: GB
|
||||
---
|
||||
aliases:
|
||||
- TB
|
||||
- TBs
|
||||
- Terabyte
|
||||
- Terabytes
|
||||
- terabyte
|
||||
- terabytes
|
||||
type: digital
|
||||
unit: TB
|
Loading…
Reference in New Issue