[SSE] Check settings for data validation
This commit is contained in:
parent
7e70852223
commit
42ab9d6fe2
|
@ -186,6 +186,7 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
el: $window.find('#data-validation-input-title'),
|
||||
allowBlank : true,
|
||||
validateOnBlur: false,
|
||||
maxLength: 32,
|
||||
style : 'width: 100%;'
|
||||
}).on('changed:after', function() {
|
||||
me.isInputTitleChanged = true;
|
||||
|
@ -194,6 +195,7 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
this.textareaInput = new Common.UI.TextareaField({
|
||||
el : $window.find('#data-validation-input-msg'),
|
||||
style : 'width: 100%; height: 70px;',
|
||||
maxLength : 255,
|
||||
value : ''
|
||||
});
|
||||
this.textareaInput.on('changed:after', function() {
|
||||
|
@ -228,6 +230,7 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
el: $window.find('#data-validation-error-title'),
|
||||
allowBlank : true,
|
||||
validateOnBlur: false,
|
||||
maxLength: 32,
|
||||
style : 'width: 100%;'
|
||||
}).on('changed:after', function() {
|
||||
me.isErrorTitleChanged = true;
|
||||
|
@ -236,6 +239,7 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
this.textareaError = new Common.UI.TextareaField({
|
||||
el : $window.find('#data-validation-error-msg'),
|
||||
style : 'width: 100%; height: 70px;',
|
||||
maxLength : 255,
|
||||
value : ''
|
||||
});
|
||||
this.textareaError.on('changed:after', function() {
|
||||
|
@ -326,10 +330,15 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
onRangeChange: function(type, input, newValue, oldValue, e) {
|
||||
if (newValue == oldValue) return;
|
||||
if (!this._noApply) {
|
||||
if (type==1 || type==3)
|
||||
this.props.asc_setFormula1(newValue);
|
||||
else if (type==2)
|
||||
this.props.asc_setFormula2(newValue);
|
||||
if (type==1 || type==3) {
|
||||
if (!this.props.asc_getFormula1())
|
||||
this.props.asc_setFormula1(new AscCommonExcel.CDataFormula());
|
||||
this.props.asc_getFormula1().asc_setValue(newValue);
|
||||
} else if (type==2) {
|
||||
if (!this.props.asc_getFormula2())
|
||||
this.props.asc_setFormula2(new AscCommonExcel.CDataFormula());
|
||||
this.props.asc_getFormula2().asc_setValue(newValue);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -337,18 +346,18 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
this.ShowHideElem();
|
||||
if (!this._noApply)
|
||||
this.props.asc_setType(record.value);
|
||||
this.inputRangeMin.setValue(this.props.asc_getFormula1() || '');
|
||||
this.inputRangeSource.setValue(this.props.asc_getFormula1() || '');
|
||||
this.inputRangeMax.setValue(this.props.asc_getFormula2() || '');
|
||||
this.inputRangeMin.setValue(this.props.asc_getFormula1() ? this.props.asc_getFormula1().asc_getValue() || '' : '');
|
||||
this.inputRangeSource.setValue(this.props.asc_getFormula1() ? this.props.asc_getFormula1().asc_getValue() || '' : '');
|
||||
this.inputRangeMax.setValue(this.props.asc_getFormula2() ? this.props.asc_getFormula2().asc_getValue() || '' : '');
|
||||
},
|
||||
|
||||
onDataSelect: function(combo, record) {
|
||||
this.ShowHideElem();
|
||||
if (!this._noApply)
|
||||
this.props.asc_setOperator(record.value);
|
||||
this.inputRangeMin.setValue(this.props.asc_getFormula1() || '');
|
||||
this.inputRangeSource.setValue(this.props.asc_getFormula1() || '');
|
||||
this.inputRangeMax.setValue(this.props.asc_getFormula2() || '');
|
||||
this.inputRangeMin.setValue(this.props.asc_getFormula1() ? this.props.asc_getFormula1().asc_getValue() || '' : '');
|
||||
this.inputRangeSource.setValue(this.props.asc_getFormula1() ? this.props.asc_getFormula1().asc_getValue() || '' : '');
|
||||
this.inputRangeMax.setValue(this.props.asc_getFormula2() ? this.props.asc_getFormula2().asc_getValue() || '' : '');
|
||||
},
|
||||
|
||||
onStyleSelect: function(combo, record) {
|
||||
|
@ -400,9 +409,9 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
this.cmbAllow.setValue(value!==null ? value : Asc.EDataValidationType.None, true);
|
||||
value = props.asc_getOperator();
|
||||
this.cmbData.setValue(value!==null ? value : Asc.EDataValidationOperator.Between, true);
|
||||
this.inputRangeMin.setValue(props.asc_getFormula1() || '');
|
||||
this.inputRangeSource.setValue(props.asc_getFormula1() || '');
|
||||
this.inputRangeMax.setValue(props.asc_getFormula2() || '');
|
||||
this.inputRangeMin.setValue(props.asc_getFormula1() ? props.asc_getFormula1().asc_getValue() || '' : '');
|
||||
this.inputRangeSource.setValue(props.asc_getFormula1() ? props.asc_getFormula1().asc_getValue() || '' : '');
|
||||
this.inputRangeMax.setValue(props.asc_getFormula2() ? props.asc_getFormula2().asc_getValue() || '' : '');
|
||||
|
||||
// input
|
||||
this.chShowInput.setValue(!!props.asc_getShowInputMessage());
|
||||
|
@ -437,6 +446,7 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
var me = this;
|
||||
var state = (typeof(event) == 'object') ? event.currentTarget.attributes['result'].value : event;
|
||||
if (state == 'ok') {
|
||||
if (!this.isRangeValid()) return;
|
||||
this.handler && this.handler.call(this, state, (state == 'ok') ? this.getSettings() : undefined);
|
||||
}
|
||||
|
||||
|
@ -502,6 +512,65 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
this.lblRangeMax.text(str2);
|
||||
},
|
||||
|
||||
isRangeValid: function() {
|
||||
var isvalid = Asc.c_oAscError.ID.No;
|
||||
var type = this.cmbAllow.getValue();
|
||||
if (type!==Asc.EDataValidationType.None) {
|
||||
var focusedInput,
|
||||
lblField,
|
||||
error,
|
||||
minVisible = this.inputRangeMin.isVisible();
|
||||
isvalid = this.api.asc_checkDataRange(Asc.c_oAscSelectionDialogType.DataValidation, this.props.asc_getFormula1() ? this.props.asc_getFormula1().asc_getValue() : null, true, undefined, type);
|
||||
if (isvalid !== Asc.c_oAscError.ID.No) {
|
||||
focusedInput = minVisible ? this.inputRangeMin : this.inputRangeSource;
|
||||
lblField = minVisible ? this.lblRangeMin : this.lblRangeSource;
|
||||
}
|
||||
if (isvalid === Asc.c_oAscError.ID.No) {
|
||||
isvalid = this.api.asc_checkDataRange(Asc.c_oAscSelectionDialogType.DataValidation, this.props.asc_getFormula2() ? this.props.asc_getFormula2().asc_getValue() : null, true, undefined, type);
|
||||
if (isvalid !== Asc.c_oAscError.ID.No) {
|
||||
focusedInput = this.inputRangeMax;
|
||||
lblField = this.lblRangeMax;
|
||||
}
|
||||
}
|
||||
if (isvalid === Asc.c_oAscError.ID.No) {
|
||||
isvalid = this.props.asc_checkValid();
|
||||
if (isvalid===null)
|
||||
isvalid = Asc.c_oAscError.ID.DataValidateMustEnterValue;
|
||||
else
|
||||
isvalid = isvalid ? Asc.c_oAscError.ID.No : Asc.c_oAscError.ID.DataValidateMinGreaterMax;
|
||||
(isvalid !== Asc.c_oAscError.ID.No) && (focusedInput = minVisible ? this.inputRangeMin : this.inputRangeSource);
|
||||
}
|
||||
|
||||
switch (isvalid) {
|
||||
case Asc.c_oAscError.ID.DataValidateNotNumeric:
|
||||
error = Common.Utils.String.format(this.errorNotNumeric, lblField.text());
|
||||
break;
|
||||
case Asc.c_oAscError.ID.DataValidateNegativeTextLength:
|
||||
error = Common.Utils.String.format(this.errorNegativeTextLength, this.cmbAllow.getDisplayValue(this.cmbAllow.getSelectedRecord()));
|
||||
break;
|
||||
case Asc.c_oAscError.ID.DataValidateMustEnterValue:
|
||||
error = minVisible ? Common.Utils.String.format(this.errorMustEnterBothValues, this.lblRangeMin.text(), this.lblRangeMax.text()) :
|
||||
Common.Utils.String.format(this.errorMustEnterValue, this.lblRangeSource.text());
|
||||
break;
|
||||
case Asc.c_oAscError.ID.DataValidateMinGreaterMax:
|
||||
error = Common.Utils.String.format(this.errorMinGreaterMax, this.lblRangeMin.text(), this.lblRangeMax.text());
|
||||
break;
|
||||
case Asc.c_oAscError.ID.DataValidateInvalid:
|
||||
error = Common.Utils.String.format((type==Asc.EDataValidationType.Time) ? this.errorInvalidTime : this.errorInvalidDate, lblField.text());
|
||||
break;
|
||||
}
|
||||
error && Common.UI.warning({
|
||||
msg: error,
|
||||
maxwidth: 600,
|
||||
callback: function(btn){
|
||||
focusedInput.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return (isvalid === Asc.c_oAscError.ID.No);
|
||||
},
|
||||
|
||||
strSettings: 'Settings',
|
||||
strInput: 'Input Message',
|
||||
strError: 'Error Alert',
|
||||
|
@ -552,7 +621,14 @@ define([ 'text!spreadsheeteditor/main/app/template/DataValidationDialog.templ
|
|||
textStop: 'Stop',
|
||||
textAlert: 'Alert',
|
||||
textMessage: 'Message',
|
||||
textSelectData: 'Select data'
|
||||
textSelectData: 'Select data',
|
||||
errorMustEnterBothValues: 'You must enter a value in both field \"{0}\" and field \"{1}\".',
|
||||
errorMustEnterValue: 'You must enter a value in field \"{0}\".',
|
||||
errorInvalidDate: 'The date you entered for the field \"{0}\" is invalid.',
|
||||
errorInvalidTime: 'The time you entered for the field \"{0}\" is invalid.',
|
||||
errorNotNumeric: 'The field \"{0}\" must be a numeric value, numeric expression, or refer to a cell containing a numeric value.',
|
||||
errorNegativeTextLength: 'Negative values cannot be used in conditions \"{0}\".',
|
||||
errorMinGreaterMax: 'The \"{1}\" field must be greater than or equal to the \"{0}\" field.'
|
||||
|
||||
}, SSE.Views.DataValidationDialog || {}))
|
||||
});
|
Loading…
Reference in a new issue