Sha256: 94fc22f51be24e2eb5cf0dd037498c44ffd56bd26dafcf045fffc8c5d95a7ac0

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 KB

Contents

class RailsUpdate
  constructor: ($injector,$parse,factoryName,scope,controllers,model,override)->
    @injector    = $injector
    @factoryName = factoryName
    @scope       = scope
    modelName    = (override || model)
    if parts = modelName.match(/(.+)\[(.+)\]/)
      @modelName = parts[1]
      @atomName  = $parse(parts[2])
    else
      [@modelName,@atomName] = modelName.split('.')
    @override    = !!override
    @factory     = @injector.get(@factoryName(@modelName))
    @controllers = controllers.slice(0)
    @ngModelCtrl = @controllers.shift()
    return @
  equiv: (left,right) ->
    return true if left == right
    return true if (!!left && !!right) == false
    false
  update: (value) ->
    atomName = if typeof @atomName == 'function' then @atomName(@scope) else @atomName
    @value = if @override then scope.$eval(atomName) else value
    object = {id: @scope.$eval(@modelName).id}
    object[@modelName] = {}
    object[@modelName][atomName] = value
    unless @scope[@modelName].currently_updating
      @scope[@modelName].currently_updating = true
      up = @
      @factory.update object, (returnData) ->
        up.scope[up.modelName].currently_updating = false
        unless up.equiv(up.ngModelCtrl.$viewValue,returnData[up.atomName])
          up.ngModelCtrl.$setModelValue = returnData[up.atomName]
          up.ngModelCtrl.$render()
        for controller in up.controllers
          controller.evaluate(returnData) if !!controller
angular.module 'RailsUpdater',  ['Factories', 'FactoryName']
  .factory 'RailsUpdater', ($injector,factoryName,$parse) ->
    new: (scope,controllers,model,override)->
      return new RailsUpdate($injector,$parse,factoryName,scope,controllers,model,override)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
material_raingular-0.0.3.2 lib/assets/javascripts/rails_updater.coffee
material_raingular-0.0.3.1 lib/assets/javascripts/rails_updater.coffee
material_raingular-0.0.3 lib/assets/javascripts/rails_updater.coffee