78 lines
1.3 KiB
JavaScript
78 lines
1.3 KiB
JavaScript
|
|
module.exports = new Class
|
|
({
|
|
Extends: Htk.Widget
|
|
,Tag: 'htk-social-bar'
|
|
,Properties:
|
|
{
|
|
conn:
|
|
{
|
|
type: Db.Connection
|
|
,set: function (x)
|
|
{
|
|
this._conn = x;
|
|
this._refresh ();
|
|
}
|
|
,get: function ()
|
|
{
|
|
return this._conn;
|
|
}
|
|
},
|
|
priority:
|
|
{
|
|
type: Number
|
|
,set: function (x)
|
|
{
|
|
this._priority = x;
|
|
this._refresh ();
|
|
}
|
|
,get: function ()
|
|
{
|
|
return this._priority;
|
|
}
|
|
}
|
|
}
|
|
|
|
,_priority: 0
|
|
|
|
,initialize: function ()
|
|
{
|
|
var node = this.createRoot ('div');
|
|
node.className = 'htk-social-bar';
|
|
}
|
|
|
|
,_refresh: function ()
|
|
{
|
|
if (!this._conn || this._priority === null)
|
|
return;
|
|
|
|
var batch = new Sql.Batch ();
|
|
batch.addValue ('priority', this._priority);
|
|
|
|
var query = 'SELECT title, link, icon FROM social '
|
|
+'WHERE priority >= #priority ORDER BY priority';
|
|
this._conn.execQuery (query, this._onQueryDone.bind (this), batch);
|
|
}
|
|
|
|
,_onQueryDone: function (resultSet)
|
|
{
|
|
Vn.Node.removeChilds (this._node);
|
|
var res = resultSet.fetchResult ();
|
|
|
|
while (res.next ())
|
|
{
|
|
var a = this.createElement ('a');
|
|
a.href = res.get ('link');
|
|
a.target = '_blank';
|
|
this._node.appendChild (a);
|
|
|
|
var img = this.createElement ('img');
|
|
img.src = 'image/social/'+ res.get ('icon');
|
|
img.alt = res.get ('title');
|
|
img.title = res.get ('title');
|
|
a.appendChild (img);
|
|
}
|
|
}
|
|
});
|
|
|