1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.6 KiB

/*jslint laxbreak:true */
/*jslint laxcomma:true */
/*jslint loopfunc:true */
/*jslint strict:true */
/*jslint browser:true */
/*jslint devel:true */
define([
"underscore"
, "backbone"
, "models/client"
]
, function (_, Backbone, Client) {
"use strict";
var Model = Backbone.Model.extend({
client: null
, idAttribute: "hostname"
, initialize: function (attributes, options) {
_.bindAll(this, "destroy", "getName", "relayEvent");
var that = this
;
this.client = new Client(attributes);
this.client.on("inited", function __fnServerModelClientInitedEvent(serverInfo) {
if (serverInfo && serverInfo.get("dmap_itemname")) {
that.set(_.extend({}, that.attributes, {name: serverInfo.get("dmap_itemname")}));
// We could save here, but it is debatable if we want to leep the name attribute locally
// that.save();
}
that.trigger("inited", that);
//that.client.fetchDatabases(that.client.fetchDatabase);
});
//this.client.on("all", this.relayEvent);
return Model.__super__.initialize.call(this, arguments);
}
/*
, relayEvent: function () {
var eventName = arguments[0]
;
delete arguments[0];
console.log(eventName);
this.trigger("client:" + eventName, _.values(arguments));
}
*/
, destroy: function () {
if (this.client && this.client.deinit) {
this.client.deinit();
}
return Model.__super__.destroy.call(this, arguments);
}
, getName: function () {
if (this.get("name")) {
return this.get("name");
} else if (this.client && this.client.urlHost) {
return this.client.urlHost();
} else {
return this.get("hostname");
}
}
});
return Model;
});