0
1
Fork 0
hedera-web-mindshore/package/usr/share/hedera-web/js/sql/batch.js

124 lines
1.9 KiB
JavaScript
Executable File

/**
* A map container for many Sql.Object
**/
Sql.Batch = new Class
({
Extends: Sql.Object
,Tag: 'sql-batch'
,Properties:
{
blocked:
{
type: Boolean
,set: function (x)
{
this._blocked = x;
}
,get: function ()
{
return this._blocked;
}
}
}
,params: {}
,_blocked: false
,loadXml: function (builder, node)
{
this.parent (builder, node);
var childs = node.childNodes;
for (var i = 0; i < childs.length; i++)
if (childs[i].tagName && childs[i].tagName.toLowerCase () == 'item')
{
var object;
var id = childs[i].getAttribute ('name');
if (id)
{
if (object = builder.get (childs[i].getAttribute ('param')))
this.addParam (id, object);
else if (object = builder.get (childs[i].getAttribute ('object')))
this.addObject (id, object);
}
}
}
,get: function (id)
{
if (this.params[id])
return this.params[id];
return null;
}
,add: function (id)
{
if (!this.params[id])
this.params[id] = null;
}
,remove: function (id)
{
if (this.params[id])
{
this.params[id].disconnect ('changed', this.emitChanged, this);
delete this.params[id];
}
}
,addObject: function (id, object)
{
this.remove (id);
this.params[id] = object;
object.on ('changed', this.emitChanged, this);
this.emitChanged ();
}
,addValue: function (id, value)
{
this.addObject (id,
new Sql.Value ({value: value}));
}
,addParam: function (id, param)
{
this.addObject (id,
new Sql.Value ({param: param}));
}
,block: function ()
{
this._blocked = true;
}
,unblock: function ()
{
this._blocked = false;
}
,emitChanged: function ()
{
if (!this._blocked)
this.signalEmit ('changed');
}
,changed: function ()
{
this.signalEmit ('changed');
}
,isReady: function ()
{
var id;
for (id in this.params)
if (!(this.params[id] && this.params[id].isReady ()))
return false;
return true;
}
});