Index: lams_flash/src/common/flex/com/visualempathy/display/controls/datetime/DateTimePicker.mxml
===================================================================
diff -u
--- lams_flash/src/common/flex/com/visualempathy/display/controls/datetime/DateTimePicker.mxml (revision 0)
+++ lams_flash/src/common/flex/com/visualempathy/display/controls/datetime/DateTimePicker.mxml (revision 275c1e79dec8acc5121f05540f7453fa216ada61)
@@ -0,0 +1,89 @@
+
+
+
+
+ [Event(name="change", type="flash.events.Event")]
+
+
+
+ = 12)
+ {
+ this.ampm.selectedValue = 2;
+ }
+ else
+ {
+ this.ampm.selectedValue = 1;
+ }
+
+ if(value.getHours() < 13 )
+ this.hours.value = value.getHours()
+ else
+ this.hours.value = value.getHours() - 12
+
+ if(value.getHours() == 0)
+ this.hours.value = 12;
+
+ this.minutes.value = value.getMinutes()
+ this.validateNow();
+ }
+
+ override public function validateProperties():void
+ {
+ super.validateProperties();
+
+ }
+
+ public function handleChange():void
+ {
+
+ var militaryHours:int = hours.value;
+ if(ampm.selectedValue == 2 && hours.value != 12)
+ militaryHours = hours.value+12;
+ else if(ampm.selectedValue == 1 && hours.value == 12)
+ militaryHours = 0;
+ var selDate:Date = this.date.selectedDate;
+ var date:Date = new Date(
+ selDate.getFullYear(),
+ selDate.getMonth(),
+ selDate.getDate(),
+ militaryHours,
+ minutes.value)
+ this.selectedDate = date;
+
+ this.invalidateProperties();
+ this.validateNow();
+ this.dispatchEvent(new Event("change"));
+
+ }
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
Index: lams_flash/src/common/flex/org/lamsfoundation/lams/common/util/WDDXParser.as
===================================================================
diff -u
--- lams_flash/src/common/flex/org/lamsfoundation/lams/common/util/WDDXParser.as (revision 0)
+++ lams_flash/src/common/flex/org/lamsfoundation/lams/common/util/WDDXParser.as (revision 275c1e79dec8acc5121f05540f7453fa216ada61)
@@ -0,0 +1,38 @@
+package org.lamsfoundation.lams.common.util
+{
+
+ import flash.xml.XMLNode;
+
+ import pl.cfml.coldfusion.as3.utils.WDDX;
+
+ public class WDDXParser
+ {
+
+ public function WDDXParser()
+ {
+ }
+
+ public function parseObject(node:XMLNode):Object {
+ var xml:XML = new XML(node);
+ if(node == null)
+ return null;
+
+ var data:Object = WDDX.fromWDDX(xml.toXMLString());
+
+
+ return data.messageValue;
+ }
+
+ public function createWDDX(data:Object):XML {
+ if(data == null)
+ return null;
+
+ var xml:String = WDDX.toWDDX(data);
+ var returnXML:XML = new XML(unescape(xml));
+
+ trace('xml: ' + returnXML);
+ return returnXML;
+ }
+
+ }
+}
\ No newline at end of file
Index: lams_flash/src/common/flex/org/lamsfoundation/lams/common/util/WDDXUtil.as
===================================================================
diff -u
--- lams_flash/src/common/flex/org/lamsfoundation/lams/common/util/WDDXUtil.as (revision 0)
+++ lams_flash/src/common/flex/org/lamsfoundation/lams/common/util/WDDXUtil.as (revision 275c1e79dec8acc5121f05540f7453fa216ada61)
@@ -0,0 +1,72 @@
+package org.lamsfoundation.lams.common.util
+{
+ public class WDDXUtil
+ {
+ //nulls
+ public static var STRING_NULL_VALUE:String = "string_null_value";
+ public static var NUMERIC_NULL_VALUE:Number = -111111;
+ public static var DATE_NULL_VALUE:Date = new Date(0);
+ public static var BOOLEAN_NULL_VALUE:String = "boolean_null_value";
+
+ public function WDDXUtil()
+ {
+ }
+
+ /**
+ * If the value passed in is any null type value or LAMS NULL VALUE then blank string is returned
+ * Used to prevent "undefined" or "string_null_value" appearing in the UI
+ * @usage var myStr = WDDXUtils.cleanNull(WDDXOBJ)
+ * @param obj
+ * @return clean string or null value.
+ */
+ public static function cleanNull(obj:Object):Object {
+
+ if(obj is String && obj == STRING_NULL_VALUE){
+ return "";
+ } else if(obj is Number && obj == NUMERIC_NULL_VALUE){
+ obj = null;
+ } else if(obj is Boolean && obj == BOOLEAN_NULL_VALUE) {
+ obj = null;
+ }
+
+ return obj;
+
+ }
+
+ /**
+ * Checks to see if the value passed in is any of the null values defined in Config.
+ * @usage
+ * @param v
+ * @return boolean true if null
+ */
+ public static function isWDDXNull(v:Object):Boolean{
+ if(v==STRING_NULL_VALUE){
+ return true;
+ }
+ if(v==NUMERIC_NULL_VALUE){
+ return true;
+ }
+ if(v==STRING_NULL_VALUE){
+ return true;
+ }
+ if(v==DATE_NULL_VALUE){
+ return true;
+ }
+ if(v==BOOLEAN_NULL_VALUE){
+ return true;
+ }
+ return false;
+ }
+
+ public static function toWDDXNull(obj:Object):Object {
+ if(obj is String && (obj == "" || obj == null))
+ return STRING_NULL_VALUE;
+ else if(obj is Number || obj is int || obj is uint)
+ if(obj == 0 || obj == null)
+ return NUMERIC_NULL_VALUE;
+
+ return obj;
+ }
+
+ }
+}
\ No newline at end of file
Index: lams_flash/src/common/flex/pl/cfml/coldfusion/as3/utils/ArrayUtils.as
===================================================================
diff -u
--- lams_flash/src/common/flex/pl/cfml/coldfusion/as3/utils/ArrayUtils.as (revision 0)
+++ lams_flash/src/common/flex/pl/cfml/coldfusion/as3/utils/ArrayUtils.as (revision 275c1e79dec8acc5121f05540f7453fa216ada61)
@@ -0,0 +1,114 @@
+/*
+THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT
+ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ALSO, THERE IS NO WARRANTY OF
+NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT. IN NO EVENT SHALL MACROMEDIA
+OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+package pl.cfml.coldfusion.as3.utils
+{
+ import mx.utils.ArrayUtil;
+ import mx.collections.ArrayCollection;
+
+ /**
+ * Class provides utility metods for Array and ArrayCollection.
+ */
+ public class ArrayUtils
+ {
+
+ /**
+ * Check for element existence in Array.
+ *
+ * @param array The array which will be checked.
+ * @param value Object to be found.
+ * @return Boolean; true if element was found, false if not.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ public static function inArray(array:Array, value:Object):Boolean
+ {
+ if (ArrayUtil.getItemIndex(value, array) == -1)
+ return false;
+ return true;
+ }
+
+ /**
+ * Check for element existence in ArrayCollection by key name of ArrayCollection items.
+ *
+ * @param array The ArrayCollection which will be checked.
+ * @param key Key to be checked.
+ * @param value Object to be found.
+ * @return Boolean; true if element was found, false if not.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ public static function inArrayCollection(array:ArrayCollection, key:String, value:String):Boolean
+ {
+ for (var i:int=0; i -1)
+ indexes.push(i);
+ }
+ else
+ {
+ if ((this._columns[column] as Array)[i].toString().toLowerCase().indexf(value.toLowerCase()) > -1)
+ indexes.push(i);
+ }
+ break;
+ case 1:
+ if (likeCaseSensitive)
+ {
+ if ((this._columns[column] as Array)[i].toString().substr(0,value.length) == value)
+ indexes.push(i);
+ }
+ else
+ {
+ if ((this._columns[column] as Array)[i].toString().toLowerCase().substr(0,value.length) == value.toLowerCase())
+ indexes.push(i);
+ }
+ break;
+ case 2:
+ if (likeCaseSensitive)
+ {
+ if ((this._columns[column] as Array)[i].toString().substr( (this._columns[column] as Array)[i].toString().length-value.length ,value.length) == value)
+ indexes.push(i);
+ }
+ else
+ {
+ if ((this._columns[column] as Array)[i].toString().substr( (this._columns[column] as Array)[i].toString().length-value.length ,value.length).toLowerCase() == value.toLowerCase())
+ indexes.push(i);
+ }
+ break;
+ }
+ }
+ }
+ this.doDeleteRows( indexes );
+ }
+
+ /**
+ * Gets Recordset field value.
+ *
+ * @param column Recordset column.
+ * @param index Row number. If 0 row number is obtained by currentRow else index is used.
+ * @return Field value.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ public function getValue(column:String, index:Number=0):String
+ {
+ if (this._rowsNum == 0)
+ throw new Error("Recordset doesn't contain any row. Use addRow().");
+ if (index < 0)
+ throw new Error("Minimum row number for Recordset is 1.");
+ return (this._columns[column] as Array)[((index==0) ? this._currentRow-1 : index)];
+ }
+
+ /**
+ * Sets Recordset field value.
+ *
+ * @param column Recordset column.
+ * @param index Row number.
+ * @return Field value.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ public function setValue(column:String, value:String, row:Number=1):void
+ {
+ this.testColumn(column);
+ if (row < 1)
+ throw new Error("Minimum row number for Recordset is 1.");
+ if (row > this._rowsNum)
+ throw new Error("Row "+row+" doesn't exist. Use addRow().");
+ this._columns[column][(row-1)] = value;
+ }
+
+ /**
+ * Returns string representation of Recordset.
+ *
+ * @return String representation of Recordset.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ public function toString():String
+ {
+ var ret:String = "Recordset:\n";
+ for (var s:String in this._columns)
+ {
+ ret += " " + s + ":\n";
+ for(var i:Number=0; ithis.recordCount)
+ return -1;
+ this._currentRow++;
+ return this._currentRow;
+ }
+
+ /**
+ * Iterator-type method - returns prev available currentRow.
+ *
+ * @return Prev currentRow or -1 if beggining of Recordset reached.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ public function prev():Number
+ {
+ if ((this._currentRow-1)<0)
+ return -1;
+ this._currentRow--;
+ return this._currentRow;
+ }
+
+ /**
+ * Parses ColdFusion WDDX query representation to Recordset.
+ *
+ * @param data WDDX representation of ColdFusion query as XML.
+ * @return New Recordset.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ * @see pl.cfml.coldfusion.as3.utils.WDDX#fromWDDX()
+ */
+ public static function fromWDDXXML(data:XML):Recordset
+ {
+ var r:Recordset = new Recordset(data.@fieldNames.toString());
+ r.addRow( parseInt(data.@rowCount.toString()) );
+ var _cl:Array = r.columnList.split(",");
+ for (var i:Number=0; i<_cl.length; i++)
+ {
+ var values:XMLList = data.field.(@name.toString() == _cl[i]).children();
+ var counter:Number = 1;
+ for each (var val:XML in values)
+ {
+ if (val.name().toString() == "null")
+ r.setValue(_cl[i], "", counter);
+ else
+ r.setValue(_cl[i], val.text().toString(), counter);
+ counter++;
+ }
+ }
+ return r;
+ }
+
+ /**
+ * @private
+ * Checks for column existence.
+ *
+ * @param cName Name of the column.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ private function testColumn(cName:String):void
+ {
+ if (this._columns[cName] == null)
+ throw new Error("Column "+cName+" doesn't exists in Recordset.");
+ }
+
+ /**
+ * @private
+ * Delete rows.
+ *
+ * @param indexes Array of row numbers to be removed.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ */
+ private function doDeleteRows( indexes:Array ):void
+ {
+ var _tmpCols:Object = {};
+ for (var s:String in this._columns)
+ {
+ _tmpCols[s] = [];
+ for (var i:Number=0; i0)
+ result.push(_s);
+ break;
+ }
+ }
+ for (var j:int=0; j
+ * String to string
+ * Number to number
+ * Boolean to boolean
+ * Date to date
+ * Array to array
+ * ArrayCollection to array of structs
+ * Recordset to query
+ * Object to struct
+ *
+ *
+ * @param data AS3 object.
+ * @return WDDX representation of the object.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ * @see pl.cfml.coldfusion.as3.utils.Recordset
+ */
+ public static function toWDDX(data:Object):String
+ {
+ var o:String = "";
+ o += _toWDDX(data);
+ o += "";
+ return o;
+ }
+
+ private static function _toWDDX(data:Object):String
+ {
+ var o:String = "";
+ if ( data is String )
+ o = _toString(data);
+ else if ( data is Number || data is uint || data is int)
+ o = _toNumber(data);
+ else if ( data is Boolean )
+ o = _toBoolean(data);
+ else if ( data is Date )
+ o = _toDate(data);
+ else if ( data is Array )
+ o = _toArray(data);
+ else if ( data is ArrayCollection )
+ o = _toArrayCollection(data);
+ else if ( data is Recordset )
+ o = _toRecordset(data);
+ else if ( data is Object )
+ o = _toStruct(data);
+ return o;
+ }
+
+ private static function _toString(data:Object):String
+ {
+ return ""+data.toString()+"";
+ }
+ private static function _toNumber(data:Object):String
+ {
+ return ""+data.toString()+"";
+ }
+ private static function _toBoolean(data:Object):String
+ {
+ return "";
+ }
+ private static function _toDate(data:Object):String
+ {
+ return ""+data.toString()+"";
+ }
+ private static function _toArray(data:Object):String
+ {
+ var o:Array = data as Array;
+ var s:String = "";
+ for (var i:Number=0; i";
+ return s;
+ }
+ private static function _toArrayCollection(data:Object):String
+ {
+ var o:ArrayCollection = data as ArrayCollection;
+ var s:String = "";
+ for (var i:Number=0; i";
+ return s;
+ }
+ private static function _toRecordset(data:Object):String
+ {
+ var o:Recordset = data as Recordset;
+ o.reset();
+ var s:String = "";
+ var _cl:Array = o.columnList.split(",");
+ var i:Number = -1;
+ for (var j:Number=0; j<_cl.length; j++)
+ {
+ s += "";
+ while ((i=o.next())>-1)
+ {
+ s += ((o.getValue(_cl[j]) == "") ? "" : WDDX._toString(o.getValue(_cl[j])) );
+ }
+ s += "";
+ o.reset();
+ }
+ s += "";
+ return s;
+ }
+ private static function _toStruct(data:Object):String
+ {
+ var s:String = "";
+ for (var i:String in data)
+ {
+ s += "";
+ s += _toWDDX( data[i] );
+ s += "";
+ }
+ s += "";
+ return s;
+ }
+
+ /**
+ * Decompiles WDDX to AS3 objects.
+ * Type are mapped against these rules:
+ *
+ *
+ * - string, number to String
+ * - boolean to Boolean
+ * - array to Array
+ * - struct to Object
+ * - query to Recordset
+ *
+ *
+ * @param data WDDX representation as XML.
+ * @return AS3 WDDX representation.
+ * @langversion ActionScript 3.0
+ * @playerversion Flash 9.0
+ * @tiptext
+ * @see pl.cfml.coldfusion.as3.utils.Recordset
+ */
+ public static function fromWDDX(wddx:String):Object
+ {
+ var x:XML = new XML(wddx);
+ return WDDX._fromWDDX(x.data.children()[0]);
+ }
+
+ private static function _fromWDDX(data:XML):Object
+ {
+ var o:Object = {};
+ switch (data.name().toString().toLowerCase())
+ {
+ case "string":
+ o = _fromString(data);
+ break;
+ case "boolean":
+ o = _fromBoolean(data);
+ break;
+ case "array":
+ o = _fromArray(data);
+ break;
+ case "struct":
+ o = _fromStruct(data);
+ break;
+ case "dateTime":
+ o = _fromString(data);
+ break;
+ case "recordset":
+ o = Recordset.fromWDDXXML(data);
+ break;
+ default:
+ o = _fromString(data);
+ break;
+ }
+ return o;
+ }
+
+ private static function _fromString(data:XML):String
+ {
+ return data.text();
+ }
+ private static function _fromBoolean(data:XML):Boolean
+ {
+ return data.@value;
+ }
+ private static function _fromArray(data:XML):ArrayCollection
+ {
+ var o:ArrayCollection = new ArrayCollection();
+ for (var i:int=0; i