Skip to content

Commit

Permalink
v. 0.63 (update 3)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikos M committed Jul 16, 2015
1 parent 0c9d705 commit 5147282
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 5 deletions.
52 changes: 50 additions & 2 deletions build/modelview.js
Expand Up @@ -2,7 +2,7 @@
*
* ModelView.js
* @version: 0.63
* @built on 2015-07-16 19:20:06
* @built on 2015-07-16 20:43:50
*
* A simple/extendable MV* (MVVM) framework
* optionaly integrates into both jQuery as MVVM plugin and jQueryUI as MVC widget
Expand Down Expand Up @@ -39,7 +39,7 @@
*
* ModelView.js
* @version: 0.63
* @built on 2015-07-16 19:20:06
* @built on 2015-07-16 20:43:50
*
* A simple/extendable MV* (MVVM) framework
* optionaly integrates into both jQuery as MVVM plugin and jQueryUI as MVC widget
Expand Down Expand Up @@ -2751,6 +2751,26 @@ var
}
},

modelDefaults = function modelDefaults( model, data, defaults ) {
var k, v;
for (k in defaults)
{
if ( defaults[HAS](k) )
{
v = defaults[ k ];
if ( !data[HAS]( k ) )
{
data[ k ] = v;
}
else if ( is_type( data[k], T_ARRAY_OR_OBJ ) && is_type( v, T_ARRAY_OR_OBJ ) )
{
data[ k ] = modelDefaults( model, data[k], v );
}
}
}
return data;
},

// handle sub-composite models as data, via walking the data
serializeModel = function serializeModel( model_instance, model_class, data, dataType ) {
var key, type;
Expand Down Expand Up @@ -3058,6 +3078,34 @@ model.dependencies( Object dependencies );
return model;
}

/**[DOC_MARKDOWN]
// add default values given in {key: defaults} format
model.defaults( Object defaults );
[/DOC_MARKDOWN]**/
,defaults: function( defaults ) {
var model = this, k, v, data = model.$data;
if ( is_type(defaults, T_OBJ) )
{
for (k in defaults)
{
if ( defaults[HAS](k) )
{
v = defaults[ k ];
if ( !data[HAS]( k ) )
{
data[ k ] = v;
}
else if ( is_type( data[k], T_ARRAY_OR_OBJ ) && is_type( v, T_ARRAY_OR_OBJ ) )
{
data[ k ] = modelDefaults( model, data[k], v );
}
}
}
}
return model;
}

/**[DOC_MARKDOWN]
// add typecasters given in {dottedKey: typecaster} format
model.types( Object typeCasters );
Expand Down
6 changes: 3 additions & 3 deletions build/modelview.min.js

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions manual.md
Expand Up @@ -515,6 +515,12 @@ model.dependencies( Object dependencies );



// add default values given in {key: defaults} format
model.defaults( Object defaults );




// add typecasters given in {dottedKey: typecaster} format
model.types( Object typeCasters );

Expand Down
48 changes: 48 additions & 0 deletions src/model.js
Expand Up @@ -286,6 +286,26 @@ var
}
},

modelDefaults = function modelDefaults( model, data, defaults ) {
var k, v;
for (k in defaults)
{
if ( defaults[HAS](k) )
{
v = defaults[ k ];
if ( !data[HAS]( k ) )
{
data[ k ] = v;
}
else if ( is_type( data[k], T_ARRAY_OR_OBJ ) && is_type( v, T_ARRAY_OR_OBJ ) )
{
data[ k ] = modelDefaults( model, data[k], v );
}
}
}
return data;
},

// handle sub-composite models as data, via walking the data
serializeModel = function serializeModel( model_instance, model_class, data, dataType ) {
var key, type;
Expand Down Expand Up @@ -593,6 +613,34 @@ model.dependencies( Object dependencies );
return model;
}

/**[DOC_MARKDOWN]
// add default values given in {key: defaults} format
model.defaults( Object defaults );
[/DOC_MARKDOWN]**/
,defaults: function( defaults ) {
var model = this, k, v, data = model.$data;
if ( is_type(defaults, T_OBJ) )
{
for (k in defaults)
{
if ( defaults[HAS](k) )
{
v = defaults[ k ];
if ( !data[HAS]( k ) )
{
data[ k ] = v;
}
else if ( is_type( data[k], T_ARRAY_OR_OBJ ) && is_type( v, T_ARRAY_OR_OBJ ) )
{
data[ k ] = modelDefaults( model, data[k], v );
}
}
}
}
return model;
}

/**[DOC_MARKDOWN]
// add typecasters given in {dottedKey: typecaster} format
model.types( Object typeCasters );
Expand Down

0 comments on commit 5147282

Please sign in to comment.