Adjust behaviour of numberEditor - add clear button, and explanitory text for when...
authorAndy Allan <gravitystorm@gmail.com>
Fri, 3 Sep 2010 12:37:56 +0000 (12:37 +0000)
committerAndy Allan <gravitystorm@gmail.com>
Fri, 3 Sep 2010 12:37:56 +0000 (12:37 +0000)
TODO.txt
net/systemeD/potlatch2/mapfeatures/editors/NumberEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/NumberEditorFactory.as
styles/Application.css

index dfaed15..e822e40 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
@@ -32,6 +32,7 @@ Potlatch 2: main outstanding issues
 * GPS loading should have a loading... label
 * Pressing undo/redo sometimes doesn't change controllerstate. (e.g. create POI + undo leaves the tag panel still referring to POI)
 * Can't use + for second tag
+* Tag panel jumps up and down when number spinner is used on bike parking
 
 == Miscellaneous data model ==
 
@@ -63,7 +64,6 @@ Requested enhancements
 
 * Ability to specify that a node should be a point in a way, for example for crossings
 * Ability to say that it's unlikely/impossible to have a way that is a bridge and a tunnel at the same time.
-* It would be useful to have fields that only allow numbers in a non-destructive way, for example for step_count or capacity.
 * Dynamic reloading of stylesheet/map_features, so that you don't need to reload the full page when editing them
 * The area of pois for dragging on to the map should have a search, with synonyms.
 * If you have both inputSets names and buildingAddress, and name= key is filled in then the basic tab will get both, surely only name should be shown and building name should be ignored e.g. cafes. [Actually this was an issue of addr: being missing from one of them, however this may still be a problem for other overlapping inputSets]
index a80dd14..e35e419 100755 (executable)
 
        <mx:Label text="{fieldName}:"/>
     <mx:HBox horizontalGap="3" verticalAlign="middle">
+        <!-- it would be great if the numericStepper showed something other than zero when unset -->
            <mx:NumericStepper id="input"
                  minimum="{minimum}" maximum="{maximum}"
                  stepSize="{stepSize}"
                  value="{translatedValue}"
                  enabled="{isValueValid}"
                                 change="value = input.value.toString()" />
-        <mx:Label text="{prompt}" visible="{value == null || value == ''}"/>
+        <mx:LinkButton label="Clear" click="clear()" enabled="{isValueClearable}" />
+        <mx:Label text="{prompt}" visible="{value == null || value == ''}" includeInLayout="{value == null || value == ''}" styleName="promptText"/>
+        <mx:Label text="{warning}" visible="{!isValueValid}" includeInLayout="{!isValueValid}" styleName="warningText" />
     </mx:HBox>
 
   <mx:Script><![CDATA[
     protected function get prompt():String {
         return _factory == null ? null : NumberEditorFactory(_factory).notPresentText;
     }
+    
+    [Bindable(event="factory_set")]
+    protected function get warning():String {
+        return _factory == null ? null : NumberEditorFactory(_factory).notValidText;
+    }
 
     [Bindable(event="factory_set")]
     public function get minimum():Number {
         var validatedValue:Number = getValidatedValue();
         return !(isNaN(validatedValue) && value != null && value != "");
     }
+    
+    [Bindable(event="tag_changed")]
+    private function get isValueClearable():Boolean {
+        var validatedValue:Number = getValidatedValue();
+        return !isNaN(validatedValue);
+    }
 
     private function getValidatedValue():Number {
         var valueStr:String = value;
             return Number.NaN;
         return parsed;
     }
+    
+    private function clear():void {
+        value = null;
+    }
        
   ]]></mx:Script>
 </edit:SingleTagEditor>
index f35b266..ec117da 100755 (executable)
@@ -9,6 +9,7 @@ package net.systemeD.potlatch2.mapfeatures.editors {
         private var _maximum:Number;
         private var _stepSize:Number;
            private var _notPresentText:String;
+        private var _notValidText:String;
 
         public function NumberEditorFactory(inputXML:XML) {
             super(inputXML);
@@ -16,6 +17,7 @@ package net.systemeD.potlatch2.mapfeatures.editors {
             _maximum = parseFloat(inputXML.hasOwnProperty("@maximum") ? String(inputXML.@maximum) : "100");
             _stepSize = parseFloat(inputXML.hasOwnProperty("@stepSize") ? String(inputXML.@stepSize) : "1");
             _notPresentText = inputXML.hasOwnProperty("@absenceText") ? String(inputXML.@absenceText) : "Unset";
+            _notValidText = inputXML.hasOwnProperty("@notValidText") ? String(inputXML.@notValidText) : "(existing value not recognised)";
         }
         
         override protected function createSingleTagEditor():SingleTagEditor {
@@ -26,6 +28,7 @@ package net.systemeD.potlatch2.mapfeatures.editors {
         public function get maximum():Number { return _maximum; }
         public function get stepSize():Number { return _stepSize; }
         public function get notPresentText():String { return _notPresentText; }
+        public function get notValidText():String { return _notValidText; }
     }
 
 }
index 6785979..e5fbaad 100644 (file)
@@ -27,6 +27,14 @@ TitleWindow {
   color: red;
 }
 
+.warningText {
+  color: #ff4500;
+}
+
+.promptText {
+  fontStyle: italic;
+}
+
 .header {
                fillColors: haloSilver, x222222;
                fillAlphas: 1.0, 1.0;