2.0.0 • Published 2 years ago
pickaxe-utils v2.0.0
Install
$ npm install --save pickaxe-utils
Usage
const { AttributeUtils } = require('pickaxe-utils')
// initialize new AttributeUtils with attribute categories
// and order attribute categories (and optional productRules
// for newer product definitions that have them defined).
const attUtils = new AttributeUtils(attCats, orderAttCats, { productRules })
const selections = {
envelopes: 'bronze_pearl',
paper_types: 'bamboo',
gloss_coating: 'front_only',
foil_pressed_designs: 'snowflakes',
quantity: 150,
shipping: {
'shipping_options': 'studio',
'studio_shipping_options': 'studio_one_day_standard'
},
packaging: 'pkg_charcoal'
}
AttributeUtils.getProductPrice
/**
* Returns price based on current selected attributes
* @param {Object<string, *>} selected - current selected attributes
* @return {PriceObj} - current price
*/
const price = attUtils.getProductPrice(selections)
AttributeUtils.getTotalPrice
/**
* Returns total price/subtotals based on selected attributes
* @param {Object} selected - current selected attributes
* @return {Object} - { total: Price, subtotals: Object }
*/
const price = attUtils.getTotalPrice(selections)
AttributeUtils.getVolumePrices
/**
* Returns price breaks for current selected attributes
* @param {Object<string, *>} selected - current selected attributes
* @return {Object<number, PriceObj>}
*/
const price = attUtils.getVolumePrices(selections)
AttributeUtils.sanitizeSelections
/**
* Returns updated selections that eliminate any values that aren't legitimate
* values for that attribute.
* @param {Object<string, *>} selected - current selected attributes
* @return {{ selected: Object, invalid?: Object, ignored?: Object }}
*/
const cleanedSelections = attUtils.sanitizeSelections(selected)
AttributeUtils.enforceRules
/**
* Returns updated attributes and selections based on current selection.
* This only enforces visibility rules and valid attribute values, it doesn't
* update prices like updateAttributes does.
* @param {Object<string, *>} selected - current selected attributes
* @param {Object<string, *>} [defaultSelections] - optional default values
* @param {Object<string, *>} [newSelections] - optional 'new' selections, to determine rule enforcement order
* @return {{ attCats: Object, selected: Object, invalid?: Object, ignored?: Object, conflict?: Object }}
*/
const cleanedFilteredSelections = attUtils.enforceRules(selected)
AttributeUtils.updateAttributes
/**
* Returns updated attributes and selections based on current selection
* @param {Object<string, *>} selected - current selected attributes
* @return {{ attCats: Object, selected: Object }}
*/
const result = attUtils.updateAttributes(selections)
AttributeUtils.validateOrder
/**
* Indicates whether current selected attributes represent a valid order
* @param {Object<string, *>} selected - current selected attributes
* @return {boolean}
*/
const isValid = attUtils.validateOrder(selections)
AttributeUtils.formatCurrency
/**
* Returns formatted price (eg. $0.40)
* @param {PriceObj}
* @param {boolean} [showCode=false]
* @return {string}
*/
const price = { value: 6.136558, code: 'USD' }
console.log(attUtils.formatCurrency(price))
// output: 6.14
console.log(attUtils.formatCurrency(price, true))
// output: $6.14
Administration
A summary of how rules are defined in the product definitions can be found in the README_rules document.
2.0.0
2 years ago
1.10.2
2 years ago
1.10.1
4 years ago
1.10.0
4 years ago
1.9.0
5 years ago
1.8.4
5 years ago
1.8.3
5 years ago
1.8.2
5 years ago
1.8.1
5 years ago
1.8.0
5 years ago
1.7.6
5 years ago
1.7.5
5 years ago
1.7.4
5 years ago
1.7.3
5 years ago
1.7.2
5 years ago
1.7.1
6 years ago
1.7.0
6 years ago
1.6.0
6 years ago
1.5.5
6 years ago
1.5.4
6 years ago
1.5.3
6 years ago
1.5.2
6 years ago
1.5.1
6 years ago
1.5.0
6 years ago
1.4.10
6 years ago
1.4.9
6 years ago
1.4.8
6 years ago
1.4.7
6 years ago
1.4.6
6 years ago
1.4.5
6 years ago
1.4.4
6 years ago
1.4.3
6 years ago
1.4.2
7 years ago
1.4.1
7 years ago
1.4.0
7 years ago
1.3.7
7 years ago
1.3.6
7 years ago
1.3.5
7 years ago
1.3.4
7 years ago
1.3.3
7 years ago
1.3.2
7 years ago
1.3.1
7 years ago
1.3.0
7 years ago
1.2.0
7 years ago
1.1.2
7 years ago
1.1.1
7 years ago
1.1.0
7 years ago
1.0.1
7 years ago
1.0.0
7 years ago