Skip to content
Merged

Kill #13

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions src/progress.js
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,49 @@
}
}

/**
* Remove progress bar without finishing
*
* @api private
* @method _kill
*/
function _kill() {
var target = this._targetElement[0];
if(!target) return;
var progressjsId = parseInt(target.getAttribute('data-progressjs'));

for (var i = 0, elmsLength = this._targetElement.length; i < elmsLength; i++) {
var currentElement = this._targetElement[i];
var percentElement = _getPercentElement(currentElement);

if (!percentElement)
return;

//I believe I should handle this situation with eventListener and `transitionend` event but I'm not sure
//about compatibility with IEs. Should be fixed in further versions.
(function(percentElement, currentElement) {
percentElement.parentNode.className += " progressjs-end";

setTimeout(function() {
//remove the percent element from page
percentElement.parentNode.parentNode.removeChild(percentElement.parentNode);
//and remove the attribute
currentElement.removeAttribute("data-progressjs");
}, 1000);
})(percentElement, currentElement);
}

//clean the setInterval for autoIncrease function
if (window._progressjsIntervals[progressjsId]) {
//`delete` keyword has some problems in IE
try {
clearInterval(window._progressjsIntervals[progressjsId]);
window._progressjsIntervals[progressjsId] = null;
delete window._progressjsIntervals[progressjsId];
} catch(ex) { }
}
}

/**
* Create the progress bar container
*
Expand Down Expand Up @@ -491,6 +534,10 @@
_end.call(this);
return this;
},
kill: function() {
_kill.call(this);
return this;
},
onbeforeend: function(providedCallback) {
if (typeof (providedCallback) === 'function') {
this._onBeforeEndCallback = providedCallback;
Expand Down