Tag attributes are auto-initialized via directive if not present on object

This commit is contained in:
Rob Harrington
2016-05-26 23:54:54 +10:00
parent 011c8c74d9
commit cb9e3b43f9
4 changed files with 13 additions and 6 deletions

View File

@@ -48,7 +48,7 @@ angular.module('admin.orderCycles').factory 'OrderCycle', ($resource, $window, S
this.order_cycle.incoming_exchanges.push({enterprise_id: new_supplier_id, incoming: true, active: true, variants: {}, enterprise_fees: []})
addDistributor: (new_distributor_id) ->
this.order_cycle.outgoing_exchanges.push({enterprise_id: new_distributor_id, incoming: false, active: true, variants: {}, enterprise_fees: [], tags: [], tag_list: ""})
this.order_cycle.outgoing_exchanges.push({enterprise_id: new_distributor_id, incoming: false, active: true, variants: {}, enterprise_fees: []})
removeExchange: (exchange) ->
if exchange.incoming

View File

@@ -10,12 +10,15 @@ angular.module("admin.utils").directive "tagsWithTranslation", ($timeout) ->
link: (scope, element, attrs) ->
scope.findTags = undefined unless attrs.hasOwnProperty("findTags")
compileTagList = ->
scope.object[scope.tagListAttr] = (tag.text for tag in scope.object[scope.tagsAttr]).join(",")
$timeout ->
# Initialize properties if necessary
scope.tagsAttr ||= "tags"
scope.tagListAttr ||= "tag_list"
compileTagList = ->
scope.object[scope.tagListAttr] = (tag.text for tag in scope.object[scope.tagsAttr]).join(",")
scope.object[scope.tagsAttr] ||= []
compileTagList()
scope.tagAdded = ->
compileTagList()

View File

@@ -1,5 +1,9 @@
class Api::Admin::ShippingMethodSerializer < ActiveModel::Serializer
attributes :id, :name, :tags
attributes :id, :name, :tag_list, :tags
def tag_list
object.tag_list.join(",")
end
def tags
object.tag_list.map{ |t| { text: t } }

View File

@@ -568,7 +568,7 @@ describe 'OrderCycle services', ->
it 'adds the distributor to outgoing exchanges', ->
OrderCycle.addDistributor('123')
expect(OrderCycle.order_cycle.outgoing_exchanges).toEqual [
{enterprise_id: '123', incoming: false, active: true, variants: {}, enterprise_fees: [], tags: [], tag_list: ""}
{enterprise_id: '123', incoming: false, active: true, variants: {}, enterprise_fees: []}
]
describe 'removing exchanges', ->