Commit 8fc0590a by Zubair Afzal

set default value for empty integer/float fields

STUD-894
parent a78400a8
...@@ -49,7 +49,7 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c ...@@ -49,7 +49,7 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c
} }
integerEntry = { integerEntry = {
default_value: 5, default_value: 6,
display_name: "Inputs", display_name: "Inputs",
explicitly_set: false, explicitly_set: false,
field_name: "num_inputs", field_name: "num_inputs",
...@@ -247,6 +247,11 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c ...@@ -247,6 +247,11 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c
expect(@view.getValueFromEditor()).toBe('always') expect(@view.getValueFromEditor()).toBe('always')
describe "MetadataView.Number supports integer or float type and has clear functionality", -> describe "MetadataView.Number supports integer or float type and has clear functionality", ->
verifyValueAfterChanged = (view, value, expectedResult) ->
view.setValueInEditor(value)
view.changed()
expect(view.getValueFromEditor()).toBe(expectedResult)
beforeEach -> beforeEach ->
integerModel = new MetadataModel(integerEntry) integerModel = new MetadataModel(integerEntry)
@integerView = new MetadataView.Number({model: integerModel}) @integerView = new MetadataView.Number({model: integerModel})
...@@ -267,7 +272,7 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c ...@@ -267,7 +272,7 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c
assertCanUpdateView(@floatView, "-2.4") assertCanUpdateView(@floatView, "-2.4")
it "has a clear method to revert to the model default", -> it "has a clear method to revert to the model default", ->
assertClear(@integerView, 5, '5') assertClear(@integerView, 6, '6')
assertClear(@floatView, 2.7, '2.7') assertClear(@floatView, 2.7, '2.7')
it "has an update model method", -> it "has an update model method", ->
...@@ -290,11 +295,6 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c ...@@ -290,11 +295,6 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c
verifyAttributes(@floatView, 1.3, .1, 100.2) verifyAttributes(@floatView, 1.3, .1, 100.2)
it "corrects values that are out of range", -> it "corrects values that are out of range", ->
verifyValueAfterChanged = (view, value, expectedResult) ->
view.setValueInEditor(value)
view.changed()
expect(view.getValueFromEditor()).toBe(expectedResult)
verifyValueAfterChanged(@integerView, '-4', '1') verifyValueAfterChanged(@integerView, '-4', '1')
verifyValueAfterChanged(@integerView, '1', '1') verifyValueAfterChanged(@integerView, '1', '1')
verifyValueAfterChanged(@integerView, '0', '1') verifyValueAfterChanged(@integerView, '0', '1')
...@@ -306,6 +306,10 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c ...@@ -306,6 +306,10 @@ define ["js/models/metadata", "js/collections/metadata", "js/views/metadata", "c
verifyValueAfterChanged(@floatView, '100.2', '100.2') verifyValueAfterChanged(@floatView, '100.2', '100.2')
verifyValueAfterChanged(@floatView, '100.3', '100.2') verifyValueAfterChanged(@floatView, '100.3', '100.2')
it "sets default values for integer and float fields that are empty", ->
verifyValueAfterChanged(@integerView, '', '6')
verifyValueAfterChanged(@floatView, '', '2.7')
it "disallows invalid characters", -> it "disallows invalid characters", ->
verifyValueAfterKeyPressed = (view, character, reject) -> verifyValueAfterKeyPressed = (view, character, reject) ->
event = { event = {
......
...@@ -189,14 +189,19 @@ function(Backbone, _, MetadataModel, AbstractEditor, VideoList) { ...@@ -189,14 +189,19 @@ function(Backbone, _, MetadataModel, AbstractEditor, VideoList) {
changed: function () { changed: function () {
// Limit value to the range specified by min and max (necessary for browsers that aren't using polyfill). // Limit value to the range specified by min and max (necessary for browsers that aren't using polyfill).
// Prevent integer/float fields value to be empty (set them to their defaults)
var value = this.getValueFromEditor(); var value = this.getValueFromEditor();
if ((this.max !== undefined) && value > this.max) { if (value) {
value = this.max; if ((this.max !== undefined) && value > this.max) {
} else if ((this.min != undefined) && value < this.min) { value = this.max;
value = this.min; } else if ((this.min != undefined) && value < this.min) {
value = this.min;
}
this.setValueInEditor(value);
this.updateModel();
} else {
this.clear();
} }
this.setValueInEditor(value);
this.updateModel();
} }
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment