mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-10-06 03:44:56 +08:00
110 lines
2.2 KiB
JavaScript
110 lines
2.2 KiB
JavaScript
|
|
var
|
|
_ = require('_'),
|
|
ko = require('ko'),
|
|
|
|
Enums = require('Common/Enums'),
|
|
Utils = require('Common/Utils'),
|
|
|
|
AbstractModel = require('Knoin/AbstractModel');
|
|
|
|
/**
|
|
* @constructor
|
|
*/
|
|
function FilterConditionModel()
|
|
{
|
|
AbstractModel.call(this, 'FilterConditionModel');
|
|
|
|
this.field = ko.observable(Enums.FilterConditionField.From);
|
|
this.type = ko.observable(Enums.FilterConditionType.Contains);
|
|
this.value = ko.observable('');
|
|
this.value.error = ko.observable(false);
|
|
|
|
this.valueSecond = ko.observable('');
|
|
this.valueSecond.error = ko.observable(false);
|
|
|
|
this.template = ko.computed(function() {
|
|
|
|
var sTemplate = '';
|
|
switch (this.field())
|
|
{
|
|
case Enums.FilterConditionField.Size:
|
|
sTemplate = 'SettingsFiltersConditionSize';
|
|
break;
|
|
case Enums.FilterConditionField.Header:
|
|
sTemplate = 'SettingsFiltersConditionMore';
|
|
break;
|
|
default:
|
|
sTemplate = 'SettingsFiltersConditionDefault';
|
|
break;
|
|
}
|
|
|
|
return sTemplate;
|
|
|
|
}, this);
|
|
|
|
this.field.subscribe(function() {
|
|
this.value('');
|
|
this.valueSecond('');
|
|
}, this);
|
|
|
|
this.regDisposables([this.template]);
|
|
}
|
|
|
|
_.extend(FilterConditionModel.prototype, AbstractModel.prototype);
|
|
|
|
FilterConditionModel.prototype.verify = function()
|
|
{
|
|
if ('' === this.value())
|
|
{
|
|
this.value.error(true);
|
|
return false;
|
|
}
|
|
|
|
if (Enums.FilterConditionField.Header === this.field() && '' === this.valueSecond())
|
|
{
|
|
this.valueSecond.error(true);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
};
|
|
|
|
FilterConditionModel.prototype.parse = function(oItem)
|
|
{
|
|
if (oItem && oItem.Field && oItem.Type)
|
|
{
|
|
this.field(Utils.pString(oItem.Field));
|
|
this.type(Utils.pString(oItem.Type));
|
|
this.value(Utils.pString(oItem.Value));
|
|
this.valueSecond(Utils.pString(oItem.ValueSecond));
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
};
|
|
|
|
FilterConditionModel.prototype.toJson = function()
|
|
{
|
|
return {
|
|
Field: this.field(),
|
|
Type: this.type(),
|
|
Value: this.value(),
|
|
ValueSecond: this.valueSecond()
|
|
};
|
|
};
|
|
|
|
FilterConditionModel.prototype.cloneSelf = function()
|
|
{
|
|
var oClone = new FilterConditionModel();
|
|
|
|
oClone.field(this.field());
|
|
oClone.type(this.type());
|
|
oClone.value(this.value());
|
|
oClone.valueSecond(this.valueSecond());
|
|
|
|
return oClone;
|
|
};
|
|
|
|
module.exports = FilterConditionModel;
|