This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/components/auto-close-form.js.es6
2014-10-10 18:21:44 +02:00

41 lines
1.3 KiB
JavaScript

export default Ember.Component.extend({
autoCloseValid: false,
limited: false,
autoCloseUnits: function() {
var key = this.get("limited") ? "composer.auto_close.limited.units"
: "composer.auto_close.all.units";
return I18n.t(key);
}.property("limited"),
autoCloseExamples: function() {
var key = this.get("limited") ? "composer.auto_close.limited.examples"
: "composer.auto_close.all.examples";
return I18n.t(key);
}.property("limited"),
_updateAutoCloseValid: function() {
var isValid = this._isAutoCloseValid(this.get("autoCloseTime"), this.get("limited"));
this.set("autoCloseValid", isValid);
}.observes("autoCloseTime", "limited"),
_isAutoCloseValid: function(autoCloseTime, limited) {
var t = (autoCloseTime || "").trim();
if (t.length === 0) {
// "empty" is always valid
return true;
} else if (limited) {
// only # of hours in limited mode
return t.match(/^(\d+\.)?\d+$/);
} else {
if (t.match(/^\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{2}(\s?[AP]M)?$/i)) {
// timestamp must be in the future
return moment(t).isAfter();
} else {
// either # of hours or absolute time
return (t.match(/^(\d+\.)?\d+$/) || t.match(/^\d{1,2}:\d{2}(\s?[AP]M)?$/i)) !== null;
}
}
}
});