Sha256: 13539921cab3f226caa5b599fdbf7064e490cbd9dd92ab49dc6d11d513780c7e

Contents?: true

Size: 1.71 KB

Versions: 9

Compression:

Stored size: 1.71 KB

Contents

# //= require material_raingular/directives/create/directive
class MrCreateModel extends AngularLinkModel
  @inject(
    '$injector'
    '$timeout'
    'factoryName'
    '$parse'
  )

  initialize: ->
    @$element.bind 'click', @create
    @CallbackCtrl = @$controller
  create: ($event) =>
    factory = @_parentFactory()?['create_' + @_modelName().singularize()] || @_factory().create
    factory @_params(), (data) =>
      @CallbackCtrl.evaluate(data) if @CallbackCtrl
      @$timeout =>
        if @_isCollection()
          @_models().last().push(data)
        else
          @_parentModel()[@_modelName()] = data

  #Private
  _modelPieces: ->
    @$attrs.mrCreate.split(/\.|\[/).map (piece) =>
      if piece.includes(']') then @$scope.$eval(piece.replace(/\]/,'')) else piece
  _models: ->
    models = [@$scope]
    for piece,index in @_modelPieces()
      models.push @$parse(piece)(models[index])
    models
  _modelName: ->
    @$attrs.mrModelName || @_modelPieces().last()
  _model: ->
    @_models().last()
  _parentModelName: ->
    @_modelPieces()[@_modelPieces().length - 2]
  _parentModel: ->
    @_models()[@_models().length - 2]
  _factory: ->
    @$injector.get @factoryName(@_modelName()).singularize()
  _parentFactory: ->
    return unless @_parentModelName()
    @$injector.get @factoryName(@_parentModelName()).singularize()
  _params: ->
    params={}
    params[@_modelName().singularize()] = {}
    if @_parentModelName()
      params[@_modelName().singularize()][@_parentModelName().singularize() + '_id'] = @_parentModel().id
      params[@_parentModelName().singularize() + '_id'] = @_parentModel().id
    params
  _isCollection: ->
    @_modelName().pluralize() == @_modelName()
  @register(Directives.MrCreate)

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
material_raingular-0.3.0 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.8.6 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.8.5 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.8 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.7 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.6.3 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.6.2 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.6.1 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee
material_raingular-0.2.6 lib/assets/javascripts/material_raingular/directives/create/linkmodel.coffee