Extract class methods to new class VariantUnitManager

This commit is contained in:
Rohan Mitchell
2014-07-18 10:45:45 +10:00
parent 6c59ffc16f
commit eafdf85c28
5 changed files with 33 additions and 33 deletions

View File

@@ -1,6 +1,6 @@
angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
"$scope", "$http", "dataFetcher", "blankOption", "pendingChanges", "OptionValueNamer",
($scope, $http, dataFetcher, blankOption, pendingChanges, OptionValueNamer) ->
"$scope", "$http", "dataFetcher", "blankOption", "pendingChanges", "VariantUnitManager", "OptionValueNamer",
($scope, $http, dataFetcher, blankOption, pendingChanges, VariantUnitManager, OptionValueNamer) ->
$scope.initialiseVariables = ->
start = daysFromToday -7
@@ -137,7 +137,7 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
$scope.getScale = (value, unitType) ->
scaledValue = null
validScales = []
unitScales = OptionValueNamer.unitScales(unitType)
unitScales = VariantUnitManager.unitScales(unitType)
validScales.unshift scale for scale in unitScales when value/scale >= 1
if validScales.length > 0
@@ -146,13 +146,13 @@ angular.module("ofn.admin").controller "AdminOrderMgmtCtrl", [
unitScales[0]
$scope.getUnitName = (scale, unitType) ->
OptionValueNamer.getUnitName(scale, unitType)
VariantUnitManager.getUnitName(scale, unitType)
$scope.formattedValueWithUnitName = (value, unitsProduct, unitsVariant) ->
# A Units Variant is an API object which holds unit properies of a variant
if unitsProduct.hasOwnProperty("variant_unit") && (unitsProduct.variant_unit == "weight" || unitsProduct.variant_unit == "volume") && value > 0
scale = $scope.getScale(value, unitsProduct.variant_unit)
Math.round(value/scale * 1000)/1000 + " " + $scope.getUnitName(scale,unitsProduct.variant_unit)
Math.round(value/scale * 1000)/1000 + " " + $scope.getUnitName(scale, unitsProduct.variant_unit)
else
''

View File

@@ -1,6 +1,6 @@
angular.module("ofn.admin").controller "AdminProductEditCtrl", [
"$scope", "$timeout", "$http", "dataFetcher", "DirtyProducts", "OptionValueNamer",
($scope, $timeout, $http, dataFetcher, DirtyProducts, OptionValueNamer) ->
"$scope", "$timeout", "$http", "dataFetcher", "DirtyProducts", "VariantUnitManager",
($scope, $timeout, $http, dataFetcher, DirtyProducts, VariantUnitManager) ->
$scope.updateStatusMessage =
text: ""
style: {}
@@ -14,7 +14,7 @@ angular.module("ofn.admin").controller "AdminProductEditCtrl", [
taxons: {name: "Taxons", visible: false}
available_on: {name: "Available On", visible: false}
$scope.variant_unit_options = OptionValueNamer.variant_unit_options
$scope.variant_unit_options = VariantUnitManager.variant_unit_options
$scope.filterableColumns = [
{ name: "Supplier", db_column: "supplier_name" },

View File

@@ -1,5 +1,5 @@
angular.module("admin.products")
.controller "unitsCtrl", ($scope, OptionValueNamer) ->
.controller "unitsCtrl", ($scope, VariantUnitManager, OptionValueNamer) ->
$scope.product = { master: {} }
$scope.product.master.product = $scope.product
$scope.placeholder_text = ""
@@ -26,7 +26,7 @@ angular.module("admin.products")
$scope.placeholder_text = new OptionValueNamer($scope.product.master).name()
$scope.variant_unit_options = OptionValueNamer.variant_unit_options
$scope.variant_unit_options = VariantUnitManager.variant_unit_options
$scope.hasVariants = (product) ->
Object.keys(product.variants).length > 0

View File

@@ -1,28 +1,5 @@
angular.module("admin.products").factory "OptionValueNamer", ->
class OptionValueNamer
@getUnitName: (scale, unitType) ->
unitNames =
'weight': {1.0: 'g', 1000.0: 'kg', 1000000.0: 'T'}
'volume': {0.001: 'mL', 1.0: 'L', 1000.0: 'kL'}
unitNames[unitType][scale]
@unitScales: (unitType) ->
unitScales =
'weight': [1.0, 1000.0, 1000000.0]
'volume': [0.001, 1.0, 1000.0]
unitScales[unitType]
@variant_unit_options: [
["Weight (g)", "weight_1"],
["Weight (kg)", "weight_1000"],
["Weight (T)", "weight_1000000"],
["Volume (mL)", "volume_0.001"],
["Volume (L)", "volume_1"],
["Volume (kL)", "volume_1000"],
["Items", "items"]
]
constructor: (@variant) ->
name: ->

View File

@@ -0,0 +1,23 @@
angular.module("admin.products").factory "VariantUnitManager", ->
class VariantUnitManager
@getUnitName: (scale, unitType) ->
unitNames =
'weight': {1.0: 'g', 1000.0: 'kg', 1000000.0: 'T'}
'volume': {0.001: 'mL', 1.0: 'L', 1000.0: 'kL'}
unitNames[unitType][scale]
@unitScales: (unitType) ->
unitScales =
'weight': [1.0, 1000.0, 1000000.0]
'volume': [0.001, 1.0, 1000.0]
unitScales[unitType]
@variant_unit_options: [
["Weight (g)", "weight_1"],
["Weight (kg)", "weight_1000"],
["Weight (T)", "weight_1000000"],
["Volume (mL)", "volume_0.001"],
["Volume (L)", "volume_1"],
["Volume (kL)", "volume_1000"],
["Items", "items"]
]