mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-13 08:04:27 +02:00
90 lines
2.1 KiB
JavaScript
90 lines
2.1 KiB
JavaScript
var _ = require('underscore');
|
|
var Backbone = require('backbone');
|
|
|
|
var VisBase = Backbone.Model.extend({
|
|
removeKeys: function(keys) {
|
|
_.each(keys, function(key) {
|
|
if (this.get(key)) {
|
|
this.get(key).remove();
|
|
}
|
|
}, this);
|
|
},
|
|
|
|
getNonAnimateKeys: function() {
|
|
return [
|
|
'stroke-dasharray'
|
|
];
|
|
},
|
|
|
|
getIsInOrigin: function() {
|
|
if (!this.get('gitEngine')) {
|
|
return false;
|
|
}
|
|
return this.get('gitEngine').isOrigin();
|
|
},
|
|
|
|
animateToAttr: function(attr, speed, easing) {
|
|
if (speed === 0) {
|
|
this.setAttr(attr, /* instant */ true);
|
|
return;
|
|
}
|
|
|
|
var s = speed !== undefined ? speed : this.get('animationSpeed');
|
|
var e = easing || this.get('animationEasing');
|
|
this.setAttr(attr, /* instance */ false, s, e);
|
|
},
|
|
|
|
setAttrBase: function(keys, attr, instant, speed, easing) {
|
|
_.each(keys, function(key) {
|
|
if (instant) {
|
|
this.get(key).attr(attr[key]);
|
|
} else {
|
|
this.get(key).stop();
|
|
this.get(key).animate(attr[key], speed, easing);
|
|
// some keys dont support animating too, so set those instantly here
|
|
_.forEach(this.getNonAnimateKeys(), function(nonAnimateKey) {
|
|
if (attr[key] && attr[key][nonAnimateKey] !== undefined) {
|
|
this.get(key).attr(nonAnimateKey, attr[key][nonAnimateKey]);
|
|
}
|
|
}, this);
|
|
}
|
|
|
|
if (attr.css) {
|
|
$(this.get(key).node).css(attr.css);
|
|
}
|
|
}, this);
|
|
},
|
|
|
|
animateAttrKeys: function(keys, attrObj, speed, easing) {
|
|
// either we animate a specific subset of keys or all
|
|
// possible things we could animate
|
|
keys = _.extend(
|
|
{},
|
|
{
|
|
include: ['circle', 'arrow', 'rect', 'path', 'text'],
|
|
exclude: []
|
|
},
|
|
keys || {}
|
|
);
|
|
|
|
var attr = this.getAttributes();
|
|
|
|
// safely insert this attribute into all the keys we want
|
|
_.each(keys.include, function(key) {
|
|
attr[key] = _.extend(
|
|
{},
|
|
attr[key],
|
|
attrObj
|
|
);
|
|
});
|
|
|
|
_.each(keys.exclude, function(key) {
|
|
delete attr[key];
|
|
});
|
|
|
|
this.animateToAttr(attr, speed, easing);
|
|
}
|
|
});
|
|
|
|
exports.VisBase = VisBase;
|
|
|