[DE] Note settings: support start position in different formats.
This commit is contained in:
parent
59a8fb5867
commit
c490430580
|
@ -244,6 +244,10 @@ define([
|
||||||
if (this.$input) this.$input.val(value);
|
if (this.$input) this.$input.val(value);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getRawValue: function () {
|
||||||
|
return this.$input.val();
|
||||||
|
},
|
||||||
|
|
||||||
setValue: function(value, suspendchange) {
|
setValue: function(value, suspendchange) {
|
||||||
var showError = false;
|
var showError = false;
|
||||||
this._fromKeyDown = false;
|
this._fromKeyDown = false;
|
||||||
|
@ -290,6 +294,10 @@ define([
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setMask: function(value) {
|
||||||
|
this.options.maskExp = value;
|
||||||
|
},
|
||||||
|
|
||||||
onMouseDown: function (type, e) {
|
onMouseDown: function (type, e) {
|
||||||
if ( this.disabled ) return;
|
if ( this.disabled ) return;
|
||||||
|
|
||||||
|
@ -336,7 +344,7 @@ define([
|
||||||
}
|
}
|
||||||
} else if (e.keyCode==Common.UI.Keys.RETURN) {
|
} else if (e.keyCode==Common.UI.Keys.RETURN) {
|
||||||
if (this.options.defaultUnit && this.options.defaultUnit.length) {
|
if (this.options.defaultUnit && this.options.defaultUnit.length) {
|
||||||
var value = this.$input.val();
|
var value = this.getRawValue();
|
||||||
if (this.value != value) {
|
if (this.value != value) {
|
||||||
this.onEnterValue();
|
this.onEnterValue();
|
||||||
return false;
|
return false;
|
||||||
|
@ -384,7 +392,7 @@ define([
|
||||||
|
|
||||||
onEnterValue: function() {
|
onEnterValue: function() {
|
||||||
if (this.$input) {
|
if (this.$input) {
|
||||||
var val = this.$input.val();
|
var val = this.getRawValue();
|
||||||
this.setValue((val==='') ? this.value : val );
|
this.setValue((val==='') ? this.value : val );
|
||||||
this.trigger('entervalue', this);
|
this.trigger('entervalue', this);
|
||||||
}
|
}
|
||||||
|
@ -392,7 +400,7 @@ define([
|
||||||
|
|
||||||
onBlur: function(e){
|
onBlur: function(e){
|
||||||
if (this.$input) {
|
if (this.$input) {
|
||||||
var val = this.$input.val();
|
var val = this.getRawValue();
|
||||||
this.setValue((val==='') ? this.value : val );
|
this.setValue((val==='') ? this.value : val );
|
||||||
if (this.options.hold && this.switches.fromKeyDown)
|
if (this.options.hold && this.switches.fromKeyDown)
|
||||||
this._stopSpin();
|
this._stopSpin();
|
||||||
|
@ -430,7 +438,7 @@ define([
|
||||||
if (!me.readOnly) {
|
if (!me.readOnly) {
|
||||||
var val = me.options.step;
|
var val = me.options.step;
|
||||||
if (me._fromKeyDown) {
|
if (me._fromKeyDown) {
|
||||||
val = this.$input.val();
|
val = this.getRawValue();
|
||||||
val = _.isEmpty(val) ? me.oldValue : parseFloat(val);
|
val = _.isEmpty(val) ? me.oldValue : parseFloat(val);
|
||||||
} else if(me.getValue() !== '') {
|
} else if(me.getValue() !== '') {
|
||||||
if (me.options.allowAuto && me.getValue()==me.options.autoText) {
|
if (me.options.allowAuto && me.getValue()==me.options.autoText) {
|
||||||
|
@ -451,7 +459,7 @@ define([
|
||||||
if (!me.readOnly) {
|
if (!me.readOnly) {
|
||||||
var val = me.options.step;
|
var val = me.options.step;
|
||||||
if (me._fromKeyDown) {
|
if (me._fromKeyDown) {
|
||||||
val = this.$input.val();
|
val = this.getRawValue();
|
||||||
val = _.isEmpty(val) ? me.oldValue : parseFloat(val);
|
val = _.isEmpty(val) ? me.oldValue : parseFloat(val);
|
||||||
} else if(me.getValue() !== '') {
|
} else if(me.getValue() !== '') {
|
||||||
if (me.options.allowAuto && me.getValue()==me.options.autoText) {
|
if (me.options.allowAuto && me.getValue()==me.options.autoText) {
|
||||||
|
@ -520,4 +528,22 @@ define([
|
||||||
return v_out;
|
return v_out;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Common.UI.CustomSpinner = Common.UI.MetricSpinner.extend(_.extend({
|
||||||
|
initialize : function(options) {
|
||||||
|
this.options.toCustomFormat = (options.toCustomFormat) ? options.toCustomFormat : function(value) { return value; };
|
||||||
|
this.options.fromCustomFormat = (options.fromCustomFormat) ? options.fromCustomFormat : function(value) { return value; };
|
||||||
|
|
||||||
|
Common.UI.MetricSpinner.prototype.initialize.call(this, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
setRawValue: function (value) {
|
||||||
|
if (this.$input) this.$input.val(this.options.toCustomFormat(value));
|
||||||
|
},
|
||||||
|
|
||||||
|
getRawValue: function () {
|
||||||
|
return this.options.fromCustomFormat(this.$input.val());
|
||||||
|
}
|
||||||
|
|
||||||
|
}, Common.UI.CustomSpinner || {}));
|
||||||
});
|
});
|
||||||
|
|
|
@ -43,7 +43,6 @@ define([
|
||||||
'common/main/lib/util/utils',
|
'common/main/lib/util/utils',
|
||||||
'common/main/lib/component/MetricSpinner',
|
'common/main/lib/component/MetricSpinner',
|
||||||
'common/main/lib/component/ComboBox',
|
'common/main/lib/component/ComboBox',
|
||||||
'common/main/lib/component/InputField',
|
|
||||||
'common/main/lib/view/AdvancedSettingsWindow'
|
'common/main/lib/view/AdvancedSettingsWindow'
|
||||||
], function () { 'use strict';
|
], function () { 'use strict';
|
||||||
|
|
||||||
|
@ -95,7 +94,6 @@ define([
|
||||||
'<td class="padding-small">',
|
'<td class="padding-small">',
|
||||||
'<label class="input-label">', me.textStart,'</label>',
|
'<label class="input-label">', me.textStart,'</label>',
|
||||||
'<div id="note-settings-spin-start"></div>',
|
'<div id="note-settings-spin-start"></div>',
|
||||||
// '<div id="note-settings-txt-start"></div>',
|
|
||||||
'</td>',
|
'</td>',
|
||||||
'</tr>',
|
'</tr>',
|
||||||
'<tr>',
|
'<tr>',
|
||||||
|
@ -177,34 +175,19 @@ define([
|
||||||
this.cmbFormat.setValue(this.FormatType);
|
this.cmbFormat.setValue(this.FormatType);
|
||||||
this.cmbFormat.on('selected', _.bind(this.onFormatSelect, this));
|
this.cmbFormat.on('selected', _.bind(this.onFormatSelect, this));
|
||||||
|
|
||||||
this.spnStart = new Common.UI.MetricSpinner({
|
// this.spnStart = new Common.UI.MetricSpinner({
|
||||||
|
this.spnStart = new Common.UI.CustomSpinner({
|
||||||
el: $('#note-settings-spin-start'),
|
el: $('#note-settings-spin-start'),
|
||||||
step: 1,
|
step: 1,
|
||||||
width: 100,
|
width: 100,
|
||||||
defaultUnit : "",
|
defaultUnit : "",
|
||||||
value: '1',
|
value: 1,
|
||||||
maxValue: 16383,
|
maxValue: 16383,
|
||||||
minValue: 1
|
minValue: 1,
|
||||||
|
allowDecimal: false,
|
||||||
|
maskExp: /[0-9]/
|
||||||
});
|
});
|
||||||
/*
|
|
||||||
this.txtStart = new Common.UI.InputField({
|
|
||||||
el : $('#note-settings-txt-start'),
|
|
||||||
allowBlank : true,
|
|
||||||
validateOnChange: false,
|
|
||||||
style : 'width: 100px; vertical-align: middle;',
|
|
||||||
cls : 'masked-field',
|
|
||||||
maskExp : /[a-z]/,
|
|
||||||
value : 'a',
|
|
||||||
visible: false,
|
|
||||||
validation : function(value) {
|
|
||||||
if (this.options.maskExp.test(value)) {
|
|
||||||
} else
|
|
||||||
me.txtFieldNum.setValue('');
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
this.cmbNumbering = new Common.UI.ComboBox({
|
this.cmbNumbering = new Common.UI.ComboBox({
|
||||||
el: $('#note-settings-combo-numbering'),
|
el: $('#note-settings-combo-numbering'),
|
||||||
cls: 'input-group-nr',
|
cls: 'input-group-nr',
|
||||||
|
@ -260,12 +243,10 @@ define([
|
||||||
|
|
||||||
val = props.get_NumFormat();
|
val = props.get_NumFormat();
|
||||||
this.cmbFormat.setValue(val);
|
this.cmbFormat.setValue(val);
|
||||||
// this.spnStart.setVisible(val==1);
|
this.onFormatSelect(this.cmbFormat, this.cmbFormat.getSelectedRecord());
|
||||||
// this.txtStart.setVisible(val!=1);
|
|
||||||
|
|
||||||
val = props.get_NumStart();
|
val = props.get_NumStart();
|
||||||
this.spnStart.setValue(val);
|
this.spnStart.setValue(val);
|
||||||
// this.txtStart.setValue(val);
|
|
||||||
|
|
||||||
val = props.get_NumRestart();
|
val = props.get_NumRestart();
|
||||||
this.cmbNumbering.setValue(val);
|
this.cmbNumbering.setValue(val);
|
||||||
|
@ -320,44 +301,40 @@ define([
|
||||||
},
|
},
|
||||||
|
|
||||||
onFormatSelect: function(combo, record) {
|
onFormatSelect: function(combo, record) {
|
||||||
return;
|
if (!record) return;
|
||||||
|
|
||||||
this.spnStart.setVisible(record.value == 1);
|
this.spnStart.setMask(record.maskExp);
|
||||||
this.txtStart.setVisible(record.value != 1);
|
|
||||||
|
|
||||||
if (record.value !== 1)
|
var me = this;
|
||||||
this.txtStart.setMask(record.maskExp);
|
switch (record.value) {
|
||||||
|
case 3: // I, II, III, ...
|
||||||
var value = 0;
|
this.spnStart.options.toCustomFormat = this._10toRome;
|
||||||
if (this.FormatType == 1) { // from 1,2,3,
|
this.spnStart.options.fromCustomFormat = this._Rometo10;
|
||||||
this.StartValue = value = this.spnStart.getNumberValue();
|
break;
|
||||||
|
case 7: // i, ii, iii, ...
|
||||||
if (record.value == 4 || record.value == 5) {
|
this.spnStart.options.toCustomFormat = function(value) { return me._10toRome(value).toLocaleLowerCase(); };
|
||||||
value = this._10toA(value);
|
this.spnStart.options.fromCustomFormat = function(value) { return me._Rometo10(value.toLocaleUpperCase()); };
|
||||||
this.txtStart.setValue((record.value == 5) ? value.toLocaleLowerCase() : value);
|
break;
|
||||||
} else if (this.FormatType !== record.value)
|
case 4: // A, B, C, ...
|
||||||
this.txtStart.setValue(record.defValue);
|
this.spnStart.options.toCustomFormat = this._10toS;
|
||||||
} else if (this.FormatType == 4 || this.FormatType == 5) {
|
this.spnStart.options.fromCustomFormat = this._Sto10;
|
||||||
if (this.FormatType == 4 && record.value == 5)
|
break;
|
||||||
this.txtStart.setValue(this.txtStart.getValue().toLocaleLowerCase());
|
case 5: // a, b, c, ...
|
||||||
else if (this.FormatType == 5 && record.value == 4)
|
this.spnStart.options.toCustomFormat = function(value) { return me._10toS(value).toLocaleLowerCase(); };
|
||||||
this.txtStart.setValue(this.txtStart.getValue().toLocaleUpperCase());
|
this.spnStart.options.fromCustomFormat = function(value) { return me._Sto10(value.toLocaleUpperCase()); };
|
||||||
else if (record.value == 1) {
|
break;
|
||||||
value = this._Ato10((record.value == 5) ? this.txtStart.getValue().toLocaleLowerCase() : this.txtStart.getValue());
|
default: // 1, 2, 3, ...
|
||||||
this.spnStart.setValue(value);
|
this.spnStart.options.toCustomFormat = function(value) { return value; };
|
||||||
} else if (this.FormatType !== record.value)
|
this.spnStart.options.fromCustomFormat = function(value) { return value; };
|
||||||
this.txtStart.setValue(record.defValue);
|
break;
|
||||||
} else if (this.FormatType !== record.value){
|
|
||||||
if (record.value==1)
|
|
||||||
this.spnStart.setValue(this.StartValue);
|
|
||||||
else
|
|
||||||
this.txtStart.setValue(record.defValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.spnStart.setValue(this.spnStart.getValue());
|
||||||
this.FormatType = record.value;
|
this.FormatType = record.value;
|
||||||
},
|
},
|
||||||
|
|
||||||
_10toA: function(value) {
|
_10toS: function(value) {
|
||||||
|
value = parseInt(value);
|
||||||
var n = Math.ceil(value / 26),
|
var n = Math.ceil(value / 26),
|
||||||
code = String.fromCharCode((value-1) % 26 + "A".charCodeAt(0)) ,
|
code = String.fromCharCode((value-1) % 26 + "A".charCodeAt(0)) ,
|
||||||
result = '';
|
result = '';
|
||||||
|
@ -368,14 +345,85 @@ define([
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
_Ato10: function(str) {
|
_Sto10: function(str) {
|
||||||
if ( (new RegExp('[^' + str.charAt(0) + ']')).test(str) ) return 1;
|
if ( str.length<1 || (new RegExp('[^' + str.charAt(0) + ']')).test(str) || !/[A-Z]/.test(str)) return 1;
|
||||||
|
|
||||||
var n = str.length-1,
|
var n = str.length-1,
|
||||||
value = str.charCodeAt(0) - "A".charCodeAt(0) + 1;
|
result = str.charCodeAt(0) - "A".charCodeAt(0) + 1;
|
||||||
value += 26*n;
|
result += 26*n;
|
||||||
|
|
||||||
return value;
|
return result;
|
||||||
|
},
|
||||||
|
|
||||||
|
_10toRome: function(value) {
|
||||||
|
value = parseInt(value);
|
||||||
|
var result = '',
|
||||||
|
digits = [
|
||||||
|
['M', 1000],
|
||||||
|
['CM', 900],
|
||||||
|
['D', 500],
|
||||||
|
['CD', 400],
|
||||||
|
['C', 100],
|
||||||
|
['XC', 90],
|
||||||
|
['L', 50],
|
||||||
|
['XL', 40],
|
||||||
|
['X', 10],
|
||||||
|
['IX', 9],
|
||||||
|
['V', 5],
|
||||||
|
['IV', 4],
|
||||||
|
['I', 1]
|
||||||
|
];
|
||||||
|
|
||||||
|
var val = digits[0][1],
|
||||||
|
div = Math.floor(value / val),
|
||||||
|
n = 0;
|
||||||
|
|
||||||
|
for (var i=0; i<div; i++)
|
||||||
|
result += digits[n][0];
|
||||||
|
value -= div * val;
|
||||||
|
n++;
|
||||||
|
|
||||||
|
while (value>0) {
|
||||||
|
val = digits[n][1];
|
||||||
|
div = value - val;
|
||||||
|
if (div>=0) {
|
||||||
|
result += digits[n][0];
|
||||||
|
value = div;
|
||||||
|
} else
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
|
||||||
|
_Rometo10: function(str) {
|
||||||
|
if ( !/[IVXLCDM]/.test(str) || str.length<1 ) return 1;
|
||||||
|
|
||||||
|
var digits = {
|
||||||
|
'I': 1,
|
||||||
|
'V': 5,
|
||||||
|
'X': 10,
|
||||||
|
'L': 50,
|
||||||
|
'C': 100,
|
||||||
|
'D': 500,
|
||||||
|
'M': 1000
|
||||||
|
};
|
||||||
|
|
||||||
|
var n = str.length-1,
|
||||||
|
result = digits[str.charAt(n)],
|
||||||
|
prev = result;
|
||||||
|
|
||||||
|
for (var i=n-1; i>=0; i-- ) {
|
||||||
|
var val = digits[str.charAt(i)];
|
||||||
|
if (val<prev) {
|
||||||
|
if (prev/val>10) return 1;
|
||||||
|
val *= -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
result += val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
},
|
},
|
||||||
|
|
||||||
textTitle: 'Notes Settings',
|
textTitle: 'Notes Settings',
|
||||||
|
|
Loading…
Reference in a new issue