http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductCatalogThumbnail.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductCatalogThumbnail.mxml b/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductCatalogThumbnail.mxml deleted file mode 100755 index 7b415da..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductCatalogThumbnail.mxml +++ /dev/null @@ -1,220 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---> -<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:js="library://ns.apache.org/flexjs/basic" - width="{COL_WIDTH_4}" height="{COL_HEIGHT_4}" height.compare="502" - width.x4cols="{COL_WIDTH_4}" height.x4cols="{COL_HEIGHT_4}" - width.x3cols="{COL_WIDTH_3}" height.x3cols="{COL_HEIGHT_3}" - width.x2cols="{COL_WIDTH_2}" height.x2cols="{COL_HEIGHT_2}" - rollOver="rollOverHandler(event)" - rollOut="rollOutHandler(event)" - mouseDown="mouseDownHandler(event)" - mouseMove="mouseMoveHandler(event)" - mouseUp="mouseUpHandler(event)" - click="clickHandler(event)" - currentState="x4cols" - > - <!-- automationName="{product.name}" --> - <js:beads> - <js:ContainerDataBinding /> - <js:LayoutChangeNotifier watchedProperty="{borderStyles.borderColor}" initialValue="#FFFFFF" /> - </js:beads> - <js:style> - <js:BindableCSSStyles id="borderStyles" borderStyle="solid" borderWidth="1" - borderColor="#FFFFFF" backgroundColor="#FFFFFF"/> - </js:style> - <fx:Metadata> - [Event(name="purchase", type="samples.flexstore.ProductThumbEvent")] - [Event(name="compare", type="samples.flexstore.ProductThumbEvent")] - [Event(name="details", type="samples.flexstore.ProductThumbEvent")] - </fx:Metadata> - - <fx:Script> - <![CDATA[ - - import org.apache.flex.events.*; - import org.apache.flex.utils.PointUtils; - - import samples.flexstore.Product; - import samples.flexstore.ProductThumbEvent; - - public static const COL_WIDTH_4:int = 162; - public static const COL_HEIGHT_4:int = 122; - public static const COL_WIDTH_3:int = 217; - public static const COL_HEIGHT_3:int = 165; - public static const COL_WIDTH_2:int = 327; - public static const COL_HEIGHT_2:int = 250; - public static const COMPARE_WIDTH:int = 162; - public static const HORIZONTAL_GAP:int = 2; - public static const VERTICAL_GAP:int = 3; - - [Bindable] - public var product:Product; - - private function rollOverHandler(event:MouseEvent):void - { - borderStyles.borderColor = "#CCCCCC"; - //style["dropShadowEnabled"] = true; - buttons.visible = true; - } - - private function rollOutHandler(event:MouseEvent):void - { - borderStyles.borderColor = "#FFFFFF"; - //style["dropShadowEnabled"] = false; - buttons.visible = false; - } - - private var dragStartPoint:Point; - - public function mouseDownHandler(event:MouseEvent):void - { - if (event.target != purchase && - event.target != compare && - event.target != details) - { - dragStartPoint = new Point(event.clientX, event.clientY); - } - } - - public function mouseMoveHandler(event:MouseEvent):void - { - if (dragStartPoint != null) - { - var dragEvent:DragEvent = new DragEvent(DragEvent.DRAG_START, true); - dragEvent.clientX = dragStartPoint.x; - dragEvent.clientY = dragStartPoint.y; - dragEvent.buttonDown = true; - dispatchEvent(dragEvent); - - rollOutHandler(event); - - dragStartPoint = null; - } - } - - public function mouseUpHandler(event:MouseEvent):void - { - if (dragStartPoint != null) - { - dragStartPoint = null; - } - } - - public function clickHandler(event:org.apache.flex.events.MouseEvent):void - { - if (event.target != purchase && - event.target != compare && - event.target != details) - { - dispatchEvent(new ProductThumbEvent(ProductThumbEvent.DETAILS, product)); - } - } - - ]]> - </fx:Script> - <fx:Declarations> - <js:CurrencyFormatter currencySymbol="$" id="cf" fractionalDigits="2"/> - </fx:Declarations> - - <js:VContainer id="vb" width="100%" height="100%"> - <js:style> - <js:SimpleCSSStyles paddingLeft="6" paddingTop="4" paddingRight="8" paddingBottom="4" /> - <!-- gap="0"> --> - </js:style> - - - <js:Label text="{product.name}" style="fontWeight:bold"/> - - <js:HContainer width="100%" > - <js:style> - <js:SimpleCSSStyles paddingTop="0" /> <!-- gap="4 -->" - </js:style> - - <js:Image id="img" height="45" width="45" - width.x3cols="60" height.x3cols="60" - width.x2cols="60" height.x2cols="60" - source="{product.image}" /> - - <js:VContainer id="descr" height="100%" > - <js:style> - <js:SimpleCSSStyles paddingTop="0" right="0" /> <!-- gap="0" --> - </js:style> - <js:Label text="{product.featureString}" width="60" height="48" /> - <js:Label text="{cf.format(product.price)}" style="fontWeight:bold"/> - <js:Spacer height="4"/> - <js:Label text="{product.highlight1}" style="color:#EE8D0C" includeIn="x3cols, x2cols"/> - <js:Label text="{product.highlight2}" style="color:#EE8D0C" includeIn="x3cols, x2cols"/> - </js:VContainer> - - </js:HContainer> - - <js:Spacer height="8"/> - - <js:Label id="compYears" text="Years: {product.experience}" includeIn="compare"/> - <js:Label id="compBlaze" text="BlazeDS: {product.blazeds}" includeIn="compare"/> - <js:Label id="compMobile" text="Mobile: {product.mobile}" includeIn="compare"/> - <js:Label id="compVideo" text="Video: {product.video}" includeIn="compare"/> - <js:Label id="compHigh1" text="Highlight: {product.highlight1}" includeIn="compare"/> - <js:Label id="compHigh2" text="Highlight: {product.highlight2}" includeIn="compare"/> - <js:Label text="Description:" includeIn="compare"/> - <js:MultilineLabel id="compDesc" text="{product.description}" width="100%" includeIn="compare"/> - </js:VContainer> - - - <js:VContainer id="buttons" visible="false" width="30"> - <js:style> - <js:SimpleCSSStyles paddingRight="8" right="8" top="12" /> <!-- gap="4" --> - </js:style> - <js:ImageButton id="purchase" source="assets/button_cart_empty.png" className="hoverButton" - click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.PURCHASE, product))" - width="30"> - <js:beads> - <js:ToolTipBead toolTip="Add to cart"/> - </js:beads> - </js:ImageButton> - <js:ImageButton id="compare" source="assets/button_compare.png" className="hoverButton" - click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.COMPARE, product))" - width="30"> - <js:beads> - <js:ToolTipBead toolTip="Add to compare list"/> - </js:beads> - </js:ImageButton> - <js:ImageButton id="details" source="assets/button_details.png" className="hoverButton" - click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.DETAILS, product))" - width="30"> - <js:beads> - <js:ToolTipBead toolTip="Show details"/> - </js:beads> - </js:ImageButton> - </js:VContainer> - - <js:states> - - <js:State name="compare" /> - - <js:State name="x4cols" /> - - <js:State name="x3cols" /> - - <js:State name="x2cols"/> - </js:states> - -</js:Container>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductDetails.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductDetails.mxml b/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductDetails.mxml deleted file mode 100755 index fa32497..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductDetails.mxml +++ /dev/null @@ -1,145 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---> -<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:js="library://ns.apache.org/flexjs/basic" - xmlns:productsView="productsView.*" - > - <js:beads> - <js:ContainerDataBinding /> - </js:beads> - - <fx:Metadata> - [Event(name="purchase", type="samples.flexstore.ProductThumbEvent")] - [Event(name="compare", type="samples.flexstore.ProductThumbEvent")] - [Event(name="browse", type="samples.flexstore.ProductThumbEvent")] - </fx:Metadata> - - <fx:Script> - <![CDATA[ - - import samples.flexstore.Product; - import samples.flexstore.ProductThumbEvent; - - private var _product:Product; - - [Bindable] - public function get product():Product - { - return _product; - } - - public function set product(p:Product):void - { - _product = p; - tn.selectedIndex = 0; - } - - ]]> - </fx:Script> - - <fx:Declarations> - <js:CurrencyFormatter currencySymbol="$" id="cf" fractionalDigits="2"/> - </fx:Declarations> - - <js:states> - <js:State name="Features" /> - <js:State name="Support" /> - </js:states> - - <js:transitions> - <js:Transition> - <js:Fade /> - </js:Transition> - </js:transitions> - - <js:ButtonBar id="tn" width="100%" change="currentState = tn.selectedItem as String"> - <js:dataProvider> - <fx:Array> - <fx:String>Features</fx:String> - <fx:String>Support</fx:String> - </fx:Array> - </js:dataProvider> - </js:ButtonBar> - <js:Container > - <js:style> - <js:SimpleCSSStyles left="4" right="8" top="34" bottom="4" /> - </js:style> - - - <js:VContainer includeIn="Features" > - <js:style> - <!--<js:SimpleCSSStyles gap="8"--> - <js:SimpleCSSStyles - left="8" top="8" right="8" bottom="8"/> - </js:style> - <js:Container style="left:0px;right:0px"> - - <js:Image id="img" width="101" height="101" source="{product.image}"/> - - <js:VContainer id="descr" > - <js:style> - <js:SimpleCSSStyles top="0" left="105" right="0" bottom="20" /> - <!--<js:SimpleCSSStyles paddingTop="0" gap="4" />--> - </js:style> - - <js:Label text="{product.name}" style="fontSize:11;fontWeight:'bold'"/> - - <js:Label text="{product.featureString}" width="80" height="48" /> - - <js:Label text="{product.highlight1}" style="color:#EE8D0C"/> - - <js:Label text="{product.highlight2}" style="color:#EE8D0C"/> - - <js:Label text="{cf.format(product.price)}" style="fontWeight:'bold'"/> - - </js:VContainer> - </js:Container> - - <js:Label id="descriptionText" style="left:0px;right:0px;bottom:0px" text="{product.description}"/> - - </js:VContainer> - - <productsView:ProductSupport width="100%" height="100%" includeIn="Support" /> - - </js:Container> - - <js:VContainer> - <js:style> - <js:SimpleCSSStyles marginTop="4" right="16" top="36" /> - </js:style> - <js:Spacer width="100%"/> - <js:ImageButton id="purchase" source="assets/button_cart_empty.png" click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.PURCHASE, product))" width="30"> - <js:beads> - <js:ToolTipBead toolTip="Add to cart"/> - </js:beads> - </js:ImageButton> - <js:ImageButton id="compare" source="assets/button_compare.png" click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.COMPARE, product))" width="30"> - <js:beads> - <js:ToolTipBead toolTip="Add to compare list"/> - </js:beads> - </js:ImageButton> - <js:ImageButton id="tiles" source="assets/button_tiles.png" click="dispatchEvent(new ProductThumbEvent(ProductThumbEvent.BROWSE, product));" width="30"> - <js:beads> - <js:ToolTipBead toolTip="Back to thumbnail view"/> - </js:beads> - </js:ImageButton> - </js:VContainer> - -</js:Container> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductFilterPanel.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductFilterPanel.mxml b/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductFilterPanel.mxml deleted file mode 100755 index 26deaa9..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductFilterPanel.mxml +++ /dev/null @@ -1,215 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---> -<js:VContainer xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:js="library://ns.apache.org/flexjs/basic" - xmlns:productsView="productsView.*" - xmlns:flexstore="samples.flexstore.*" - height="100%" - currentState="showingThumbnails" - initComplete="series.selectedIndex = 0"> - <js:style> - <js:SimpleCSSStyles paddingLeft="4" - paddingRight="12" - paddingTop="12" - paddingBottom="8" - /> - - </js:style> - - <fx:Metadata> - [Event(name="filter", type="samples.flexstore.ProductFilterEvent")] - [Event("compare")] - </fx:Metadata> - - <fx:Script> - <![CDATA[ - import org.apache.flex.html.Slider; - import org.apache.flex.html.SimpleAlert; - import samples.flexstore.ProductFilterEvent; - - private var thumbBeingPressed:Boolean; - - private function dispatchFilter():void - { - var event:ProductFilterEvent = - new ProductFilterEvent(filter, thumbBeingPressed); - dispatchEvent(event); - currentState = "showingThumbnails"; - } - - private function sliderValue(values:Array, index:int):Number - { - return values[index]; - } - - private function productRemoved():void - { - if (currentState == "showingComparison") - { - if (productList.items.length == 0) - { - dispatchFilter(); - } - else - { - attemptCompare(); - } - } - } - - private function attemptCompare():void - { - if (productList.items.length > 0) - { - dispatchEvent(new Event("compare")); - currentState = "showingComparison"; - } - else - { - SimpleAlert.show("There are no items to compare.", "Compare"); - } - } - - ]]> - </fx:Script> - <fx:Declarations> - <flexstore:ProductFilter id="filter"> - <flexstore:experience>{series.selectedItem}</flexstore:experience> - <flexstore:minPrice>{loPrice.value}</flexstore:minPrice> - <flexstore:maxPrice>{hiPrice.value}</flexstore:maxPrice> - <flexstore:blazeds>{cbBlazeDS.selected}</flexstore:blazeds> - <flexstore:mobile>{cbMobile.selected}</flexstore:mobile> - <flexstore:video>{cbVideo.selected}</flexstore:video> - </flexstore:ProductFilter> - - <js:CurrencyFormatter currencySymbol="$" id="cf"/> - - </fx:Declarations> - <js:beads> - <js:ContainerDataBinding /> - </js:beads> - - <js:Label text="Find" className="sectionHeader"/> - - <js:Container width="100%"> - <js:beads> - <js:FlexibleFirstChildHorizontalLayout /> - </js:beads> - <js:TextInput className="glass" width="100%"/> - <js:TextButton className="glass" text="Go" click="SimpleAlert.show('This feature is not implemented in this sample', 'Find')"/> - </js:Container> - - <js:Spacer height="18"/> - - <js:HRule width="100%"/> - - <js:Spacer height="8"/> - - <js:HContainer> - <js:style> - <js:SimpleCSSStyles paddingTop="0" paddingLeft="0" verticalAlign="bottom" /> - </js:style> - <js:Label text="Filter" className="sectionHeader"/> - <js:Label text="({filter.count} items selected)" > - <js:style> - <js:SimpleCSSStyles fontWeight="bold" /> - <!--<js:SimpleCSSStyles color="{getStyle('themeColor')}" fontWeight="bold" />--> - </js:style> - </js:Label> - </js:HContainer> - - <js:Spacer height="8"/> - - <js:Label text="Years of Experience"/> - - <js:DropDownList id="series" className="glass" width="140" change="dispatchFilter();"> - <js:dataProvider> - <fx:Array> - <fx:String>All</fx:String> - <fx:String>3</fx:String> - <fx:String>5</fx:String> - <fx:String>7</fx:String> - <fx:String>9</fx:String> - </fx:Array> - </js:dataProvider> - </js:DropDownList> - - <js:Spacer height="18"/> - - <js:Label text="Price"/> - - <!--<s:HSlider id="priceSlider" className="glassSlider" minimum="0" maximum="200" tickInterval="10" snapInterval="10" - width="100%" thumbCount="2" values="[0,200]" labels="[$0,$200]" liveDragging="true" dataTipFormatFunction="{cf.format}" - change="dispatchFilter()" - thumbPress="thumbBeingPressed=true" - thumbRelease="thumbBeingPressed=false;dispatchFilter()" - />--> - <js:HContainer id="nsholder" width="100%"> - <js:NumericStepper width="48%" id="loPrice" minimum="0" maximum="{hiPrice.value}" value="0" valueChange="dispatchFilter()" /> - <js:NumericStepper width="48%" id="hiPrice" minimum="{loPrice.value}" maximum="200" value="200" valueChange="dispatchFilter()" /> - </js:HContainer> - - <js:Spacer height="18"/> - - <js:Label text="Required Features"/> - - <js:Spacer height="4"/> - - <js:CheckBox id="cbBlazeDS" className="glass" text="BlazeDS" click="dispatchFilter();"/> - <js:Spacer height="4"/> - <js:CheckBox id="cbMobile" className="glass" text="Mobile" click="dispatchFilter()"/> - <js:Spacer height="4"/> - <js:CheckBox id="cbVideo" className="glass" text="Video" click="dispatchFilter();"/> - - <js:Spacer height="18"/> - - <js:HRule width="100%"/> - - <js:Spacer height="8"/> - - <js:HContainer> - <js:Label text="Compare" className="sectionHeader"/> - <js:Label text="(Drag items here to compare)" className="instructions"/> - </js:HContainer> - - - <js:Spacer height="4"/> - - <!-- height is maxItems * ProductListItem.HEIGHT + 2px border --> - <productsView:ProductList id="productList" height="{productList.maxItems * ProductListItem.HEIGHT + 2}" width="100%" - newItemStartX="300" newItemStartY="-100" maxItems="4" - removeProduct="productRemoved()"/> - - <js:Spacer height="8"/> - - <js:ImageAndTextButton id="compareButton" className="glass" - click.showingThumbnails="attemptCompare()" - click.showingComparison="dispatchFilter()" - text.showingComparison="Back to thumbnail view" - text.showingThumbnails="Compare Items" - image.showingThumbnails="assets/icon_compare.png" - image.showingComparison="assets/icon_tiles.png" /> - - <js:states> - <js:State name="showingThumbnails" /> - <js:State name="showingComparison" /> - </js:states> - -</js:VContainer> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductList.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductList.mxml b/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductList.mxml deleted file mode 100755 index 951b1fa..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductList.mxml +++ /dev/null @@ -1,219 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---> -<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:js="library://ns.apache.org/flexjs/basic" - > - <js:style> - <js:SimpleCSSStyles borderStyle="solid" borderWidth="1" backgroundColor="#BCB29F" /> - </js:style> - <!-- need a background color for drag and drop but can set alpha to 0 --> - - <fx:Metadata> - [Event(name="addProduct", type="samples.flexstore.ProductListEvent")] - [Event(name="duplicateProduct", type="samples.flexstore.ProductListEvent")] - [Event(name="productQtyChange", type="samples.flexstore.ProductListEvent")] - [Event(name="removeProduct", type="samples.flexstore.ProductListEvent")] - </fx:Metadata> - - <fx:Script> - <![CDATA[ - import org.apache.flex.effects.Effect; - import org.apache.flex.effects.Move; - import org.apache.flex.effects.Sequence; - import org.apache.flex.core.DropType; - import org.apache.flex.core.IUIBase; - import org.apache.flex.events.DragEvent; - - import samples.flexstore.Product; - import samples.flexstore.ProductListEvent; - - public var items:Array; - - public var newItemStartX:int; - public var newItemStartY:int; - [Bindable] - public var maxItems:int = 0; - public var showQuantity:Boolean; - - private var playingEffects:Object = new Object(); - - public function addProduct(product:Product):void - { - if (items == null) - items = []; - - var index:int = indexOf(product.productId); - var event:ProductListEvent; - var item:ProductListItem; - - if (index != -1) - { - item = items[index] as ProductListItem; - //if we don't keep track of what's playing a double-click can - //cause the list item to keep rising - if (playingEffects[item.uid] == null) - { - var jump:Sequence = new Sequence(); - var m1:Move = new Move(item) - m1.yBy = -5; - var m2:Move = new Move(item) - m2.yBy = 5; - jump.addChild(m1); - jump.addChild(m2); - jump.duration = 150; - playingEffects[item.uid] = jump; - jump.addEventListener(Effect.EFFECT_END, function(event:Event):void - { - delete playingEffects[item.uid]; - }); - jump.play(); - } - event = new ProductListEvent(ProductListEvent.DUPLICATE_PRODUCT); - event.product = item.product; - dispatchEvent(event); - } - else - { - index = items.length; - if (maxItems <= 0 || index < maxItems) - { - item = new ProductListItem(); - if (showQuantity) - { - item.currentState = 'showQuantity'; - } - item.product = product; - item.percentWidth = 100; - item.addEventListener(ProductListEvent.REMOVE_PRODUCT, removeItemHandler); - items[index] = item; - viewport.addElement(item); - layoutItems(index, true); - event = new ProductListEvent(ProductListEvent.ADD_PRODUCT); - event.product = product; - dispatchEvent(event); - } - } - } - - public function getProducts():Array - { - var ret:Array = []; - for (var i:int = 0; i < items.length; i++) - { - ret[i] = ProductListItem(items[i]).product; - } - return ret; - } - - private function removeItemHandler(event:Event):void - { - var item:ProductListItem = event.target as ProductListItem; - var index:int = indexOf(item.product.productId); - items.splice(index, 1); - viewport.removeElement(item); - layoutItems(index); - } - - private function layoutItems(startIndex:int, scrollToBottom:Boolean=false):void - { - var n:int = items.length; - var e:Move; - for (var i:int = startIndex; i < n ; i++) - { - var item:ProductListItem = items[i]; - var yTo:Number = i * (item.height); - //still need to prevent items that are already in motion from getting - //jumpy - if (playingEffects[item.uid] == null) - { - e = new Move(item); - if (item.x == 0 && item.y == 0) - { - e.xFrom = newItemStartX; - e.yFrom = newItemStartY; - } - - e.xTo = 0; - e.yTo = yTo; - playingEffects[item.uid] = e; - e.addEventListener(Effect.EFFECT_END, function(event:Event):void - { - delete playingEffects[item.uid]; - }); - e.play(); - } - else - { - playingEffects[item.uid].pause(); - playingEffects[item.uid].yTo = yTo; - playingEffects[item.uid].play(); - } - } - //get the last event and if we should scroll make sure we can validate - //and scroll to maxVPosition - if (scrollToBottom) - { - e.addEventListener(Effect.EFFECT_END, function(event:Event):void - { - //TODO scrollingView.model.verticalScrollPosition = scrollingView.maxVerticalScrollPosition; - }); - } - } - - private function indexOf(productId:int):int - { - var index:int = -1; - - var n:int = items.length; - for (var i:int = 0; i < items.length; i++) - { - if (ProductListItem(items[i]).product.productId == productId) - { - index = i; - break; - } - } - - return index; - } - - private function doDragEnter(event:DragEvent):void - { - trace("doDragEnter"); - dmc.acceptDragDrop(event.target as IUIBase, DropType.COPY); - } - - private function doDragDrop(event:DragEvent):void - { - trace("doDragDrop"); - var product:Product = DragEvent.dragSource as Product; - addProduct(product); - } - - ]]> - </fx:Script> - <js:beads> - <js:DropMouseController id="dmc" dragEnter="doDragEnter(event)" dragDrop="doDragDrop(event)" /> - <js:VerticalLayout /> - <js:ScrollingViewport id="scrollingView" /> - </js:beads> - <js:Container id="viewport" width="100%" height="100%" > - </js:Container> -</js:Container> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductListItem.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductListItem.mxml b/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductListItem.mxml deleted file mode 100755 index 8e98c3b..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductListItem.mxml +++ /dev/null @@ -1,140 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---> -<js:Container xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:js="library://ns.apache.org/flexjs/basic" - className="listItem" - height="{HEIGHT}" implements="org.apache.flex.core.IItemRenderer"> - <!--automationName="{product.name}">--> - - <fx:Metadata> - [Event(name="productQtyChange", type="samples.flexstore.ProductListEvent")] - [Event(name="removeProduct", type="samples.flexstore.ProductListEvent")] - </fx:Metadata> - - <fx:Script> - <![CDATA[ - - import samples.flexstore.Product; - import samples.flexstore.ProductListEvent; - - private static var idCounter:int = 0; - public var uid:String = (idCounter++).toString(); - - public static const HEIGHT:int = 30; - - [Bindable("__NoChangeEvent__")] - public function get product():Product - { - return _data as Product; - } - public function set product(value:Product):void - { - _data = value; - } - - private var _data:Object; - - public function get data():Object - { - return _data; - } - - public function set data(value:Object):void - { - _data = value; - } - - public function get listData():Object - { - return null; - } - - public function set listData(value:Object):void - { - // not used - } - - private var _itemRendererParent:Object; - - public function get itemRendererParent():Object - { - return _itemRendererParent; - } - - public function set itemRendererParent(value:Object):void - { - _itemRendererParent = value; - } - - private function qtyChange():void - { - product.qty = int(qty.text); - var event:ProductListEvent = new ProductListEvent(ProductListEvent.PRODUCT_QTY_CHANGE); - event.product = product; - dispatchEvent(event); - } - - private function removeItem():void - { - var event:ProductListEvent = new ProductListEvent(ProductListEvent.REMOVE_PRODUCT); - event.product = product; - dispatchEvent(event); - } - - ]]> - </fx:Script> - - <fx:Declarations> - <js:CurrencyFormatter currencySymbol="$" id="cf" fractionalDigits="2"/> - </fx:Declarations> - - <js:beads> - <js:ContainerDataBinding /> - </js:beads> - - <js:ImageButton id="removeButton" source="assets/trashcan.png" - width="14" height="14" y="5" - click="removeItem()"> - <js:beads> - <js:ToolTipBead toolTip="Remove from cart" /> - </js:beads> - </js:ImageButton> - - <js:Image id="productImage" x="16" y="6" width="12" height="12" source="{product.image}"/> - - <js:Label id="productName" x="30" width="100" y="4" text="{product.name}"/> - - <js:Label id="productPrice" width="60" y="4" - text="{cf.format(product.price)}" style="textAlign:right;right:0" - style.showQuantity="textAlign:right;right:25"/> - - <js:TextInput id="qty" width="25" y="3" text="{product.qty}" includeIn="showQuantity" - style="textAlign:right;right:0;marginTop:0" change="qtyChange()" > - <js:beads> - <js:NumericOnlyTextInputBead maxChars="3" /> - </js:beads> - </js:TextInput> - - <js:states> - <js:State name="compare" /> - <js:State name="showQuantity" /> - </js:states> - -</js:Container> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductSupport.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductSupport.mxml b/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductSupport.mxml deleted file mode 100755 index b3c8429..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/productsView/ProductSupport.mxml +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---> -<js:HContainer xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:js="library://ns.apache.org/flexjs/basic" - > - <js:style> - <js:SimpleCSSStyles paddingLeft="4" paddingRight="8" paddingBottom="4" /> - </js:style> - <js:beads> - <js:ContainerDataBinding /> - </js:beads> - - <fx:Script> - <![CDATA[ - - private function toggle():void - { - /* - if (vd.playing) - { - vd.stop(); - list.visible = true; - } - else - { - list.visible = false; - vd.play(); - } - */ - } - - ]]> - </fx:Script> - - <fx:Declarations> - <js:Parallel id="hideList"> - <js:children> - <fx:Array> - <js:Resize target="{list}" widthTo="0"/> - <!--<mx:Resize target="{vd}" widthTo="400" heightTo="314"/>--> - </fx:Array> - </js:children> - </js:Parallel> - - <js:Parallel id="showList"> - <js:children> - <fx:Array> - <js:Resize target="{list}" widthTo="130"/> - <!--<mx:Resize target="{vd}" widthTo="270" heightTo="217"/>--> - </fx:Array> - </js:children> - </js:Parallel> - </fx:Declarations> - <js:List id="list" width="130" height="100%" selectedIndex="0"> - <js:dataProvider> - <fx:Array> - <fx:Object label="Install SIM Card"/> - </fx:Array> - </js:dataProvider> - </js:List> - - <js:Container width="100%"> - - <!--<mx:VideoDisplay id="vd" width="270" height="217" source="assets/phone.flv" - autoPlay="false" complete="list.visible=true"/> - - <mx:Button label="{vd.playing ? 'Stop' : 'Play'}" click="toggle()" left="8" bottom="8" includeInLayout="false"> - </mx:Button> - --> - </js:Container> - - -</js:HContainer> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ButtonBarButtonSkin.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ButtonBarButtonSkin.as b/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ButtonBarButtonSkin.as deleted file mode 100755 index 5e94b58..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ButtonBarButtonSkin.as +++ /dev/null @@ -1,298 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// - -package samples.flexstore -{ - -import flash.display.GradientType; -import mx.containers.BoxDirection; -import mx.controls.Button; -import mx.controls.ButtonBar; -import mx.skins.Border; -import mx.skins.halo.*; -import mx.styles.StyleManager; -import mx.utils.ColorUtil; - -/** - * Adapted from mx.skins.halo.ButtonBarButtonSkin. - * This version of the ButtonBarButtonSkin is applied for the - * selectedOver, selectedUp, and over states to use the 2nd two - * values of the fillColors for the selected state of the - * button. The over state then uses a computed value from - * the themeColor to show emphasis. The border of the selected - * button also uses a computed value from the themeColor, but - * is partially transparent. - */ -public class ButtonBarButtonSkin extends Border -{ - //-------------------------------------------------------------------------- - // - // Class variables - // - //-------------------------------------------------------------------------- - - /** - * @private - */ - private static var cache:Object = {}; - - //-------------------------------------------------------------------------- - // - // Class methods - // - //-------------------------------------------------------------------------- - - /** - * @private - * Several colors used for drawing are calculated from the base colors - * of the component (themeColor, borderColor and fillColors). - * Since these calculations can be a bit expensive, - * we calculate once per color set and cache the results. - */ - private static function calcDerivedStyles(themeColor:uint, - fillColor0:uint, - fillColor1:uint):Object - { - var key:String = HaloColors.getCacheKey(themeColor, - fillColor0, fillColor1); - - if (!cache[key]) - { - var o:Object = cache[key] = {}; - - // Cross-component styles. - HaloColors.addHaloColors(o, themeColor, fillColor0, fillColor1); - - // Button-specific styles. - o.innerEdgeColor1 = ColorUtil.adjustBrightness2(fillColor0, -10); - o.innerEdgeColor2 = ColorUtil.adjustBrightness2(fillColor1, -25); - } - - return cache[key]; - } - - //-------------------------------------------------------------------------- - // - // Constructor - // - //-------------------------------------------------------------------------- - - /** - * @private - * Constructor. - */ - public function ButtonBarButtonSkin() - { - super(); - } - - //-------------------------------------------------------------------------- - // - // Overridden properties - // - //-------------------------------------------------------------------------- - - //---------------------------------- - // measuredWidth - //---------------------------------- - - /** - * @private - */ - override public function get measuredWidth():Number - { - return 50; - } - - //---------------------------------- - // measuredHeight - //---------------------------------- - - /** - * @private - */ - override public function get measuredHeight():Number - { - return 22; - } - - //-------------------------------------------------------------------------- - // - // Overridden methods - // - //-------------------------------------------------------------------------- - - /** - * @private - */ - override protected function updateDisplayList(w:Number, h:Number):void - { - super.updateDisplayList(w, h); - - // User-defined styles. - var borderColor:uint = getStyle("borderColor"); - var cornerRadius:Number = getStyle("cornerRadius"); - var fillAlphas:Array = getStyle("fillAlphas"); - var fillColors:Array = getStyle("fillColors"); - styleManager.getColorNames(fillColors); - var highlightAlphas:Array = getStyle("highlightAlphas"); - var themeColor:uint = getStyle("themeColor"); - - // Derivative styles. - var derStyles:Object = calcDerivedStyles(themeColor, fillColors[0], - fillColors[1]); - - var borderColorDrk1:Number = - ColorUtil.adjustBrightness2(borderColor, -50); - - var themeColorDrk1:Number = - ColorUtil.adjustBrightness2(themeColor, -25); - - var emph:Boolean = false; - - if (parent is Button) - emph = (parent as Button).emphasized; - - var tmp:Number; - - var bar:ButtonBar = parent ? ButtonBar(parent.parent) : null; - var horizontal:Boolean = true; - var pos:int = 0; - - if (bar) - { - if (bar.direction == BoxDirection.VERTICAL) - horizontal = false; - - // first: -1, middle: 0, last: 1 - var index:int = bar.getChildIndex(parent); - pos = (index == 0 ? -1 : (index == bar.numChildren - 1 ? 1 : 0)); - } - - var radius:Object = getCornerRadius(pos, horizontal, cornerRadius); - var cr:Object = getCornerRadius(pos, horizontal, cornerRadius); - var cr1:Object = getCornerRadius(pos, horizontal, cornerRadius - 1); - var cr2:Object = getCornerRadius(pos, horizontal, cornerRadius - 2); - var cr3:Object = getCornerRadius(pos, horizontal, cornerRadius - 3); - - graphics.clear(); - - switch (name) - { - case "selectedUpSkin": - case "selectedOverSkin": - { - var overFillColors:Array; - if (fillColors.length > 2) - overFillColors = [ fillColors[2], fillColors[3] ]; - else - overFillColors = [ fillColors[0], fillColors[1] ]; - - var overFillAlphas:Array; - if (fillAlphas.length > 2) - overFillAlphas = [ fillAlphas[2], fillAlphas[3] ]; - else - overFillAlphas = [ fillAlphas[0], fillAlphas[1] ]; - - // button border/edge - drawRoundRect( - 0, 0, w, h, cr, - [ themeColor, derStyles.themeColDrk1 ], 0.5, - verticalGradientMatrix(0, 0, w , h), - GradientType.LINEAR, null, - { x: 1, y: 1, w: w - 2, h: h - 2, r: cr1 }); - - // button fill - drawRoundRect( - 1, 1, w - 2, h - 2, cr1, - overFillColors, overFillAlphas, - verticalGradientMatrix(0, 0, w - 2, h - 2)); - - // top highlight - if (!(radius is Number)) - { radius.bl = radius.br = 0;} - drawRoundRect( - 1, 1, w - 2, (h - 2) / 2, radius, - [ 0xFFFFFF, 0xFFFFFF ], highlightAlphas, - verticalGradientMatrix(1, 1, w - 2, (h - 2) / 2)); - break; - } - - case "overSkin": - { - // button border/edge - drawRoundRect( - 0, 0, w, h, cr, - [ themeColor, derStyles.themeColDrk1 ], 0.5, - verticalGradientMatrix(0, 0, w, h)); - - // button fill - drawRoundRect( - 1, 1, w - 2, h - 2, cr1, - [ derStyles.fillColorPress1, derStyles.fillColorPress2 ], 1, - verticalGradientMatrix(0, 0, w - 2, h - 2)); - - // top highlight - if (!(radius is Number)) - { radius.bl = radius.br = 0;} - drawRoundRect( - 1, 1, w - 2, (h - 2) / 2, radius, - [ 0xFFFFFF, 0xFFFFFF ], highlightAlphas, - verticalGradientMatrix(1, 1, w - 2, (h - 2) / 2)); - - break; - } - } - } - - //-------------------------------------------------------------------------- - // - // Methods - // - //-------------------------------------------------------------------------- - - /** - * @private - */ - private function getCornerRadius(pos:int, horizontal:Boolean, - radius:Number):Object - { - if (pos == 0) - return 0; - - radius = Math.max(0, radius); - - if (horizontal) - { - if (pos == -1) - return { tl: radius, tr: 0, bl: radius, br: 0 }; - else // pos == 1 - return { tl: 0, tr: radius, bl: 0, br: radius }; - } - else - { - if (pos == -1) - return { tl: radius, tr: radius, bl: 0, br: 0 }; - else // pos == 1 - return { tl: 0, tr: 0, bl: radius, br: radius }; - } - } -} - -} http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/Product.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/Product.as b/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/Product.as deleted file mode 100755 index 040fb8f..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/Product.as +++ /dev/null @@ -1,78 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package samples.flexstore -{ - -[Bindable] -public class Product -{ - - public var productId:int; - public var name:String; - public var description:String; - public var price:Number; - public var image:String; - public var experience:String; - public var blazeds:Boolean; - public var mobile:Boolean; - public var video:Boolean; - public var highlight1:String; - public var highlight2:String; - public var qty:int; - - public function Product() - { - - } - - public function fill(obj:Object):void - { - for (var i:String in obj) - { - this[i] = obj[i]; - } - } - - [Bindable(event="propertyChange")] - public function get featureString():String - { - var str:String = ""; - if (blazeds) - str += "BlazeDS"; - - if (mobile) - { - if (str.length > 0) - str += "\n"; - str += "Mobile"; - } - - if (video) - { - if (str.length > 0) - str += "\n"; - str += "Video"; - } - - return str; - } - -} - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilter.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilter.as b/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilter.as deleted file mode 100755 index d182371..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilter.as +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package samples.flexstore -{ - -[Bindable] -public class ProductFilter -{ - public var count:int; - public var experience:String; - public var minPrice:Number; - public var maxPrice:Number; - public var blazeds:Boolean; - public var mobile:Boolean; - public var video:Boolean; - - public function ProductFilter() - { - super(); - } - - public function accept(product:Product):Boolean - { - //price is often the first test so let's fail fast if possible - if (minPrice > product.price || maxPrice < product.price) - return false; - if (experience != "All" && experience > product.experience) - return false; - if (blazeds && !product.blazeds) - return false; - if (mobile && !product.mobile) - return false; - if (video && !product.video) - return false; - - return true; - } -} - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilterEvent.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilterEvent.as b/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilterEvent.as deleted file mode 100755 index 28129e7..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductFilterEvent.as +++ /dev/null @@ -1,39 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package samples.flexstore -{ - -import org.apache.flex.events.Event; - -public class ProductFilterEvent extends Event -{ - public static const FILTER:String = "filter"; - - public var live:Boolean; - public var filter:ProductFilter; - - public function ProductFilterEvent(filter:ProductFilter, live:Boolean) - { - super(FILTER); - this.filter = filter; - this.live = live; - } -} - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductListEvent.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductListEvent.as b/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductListEvent.as deleted file mode 100755 index b6b9371..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductListEvent.as +++ /dev/null @@ -1,42 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package samples.flexstore -{ - -import org.apache.flex.events.Event; - -public class ProductListEvent extends Event -{ - public static const ADD_PRODUCT:String = "addProduct"; - public static const DUPLICATE_PRODUCT:String = "duplicateProduct"; - public static const REMOVE_PRODUCT:String = "removeProduct"; - public static const PRODUCT_QTY_CHANGE:String = "productQtyChange"; - - public var product:Product; - - //making the default bubbles behavior of the event to true since we want - //it to bubble out of the ProductListItem and beyond - public function ProductListEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) - { - super(type, bubbles, cancelable); - } - -} - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductThumbEvent.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductThumbEvent.as b/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductThumbEvent.as deleted file mode 100755 index f92dc7f..0000000 --- a/examples/flexjs/FlexJSStore_jquery/src/samples/flexstore/ProductThumbEvent.as +++ /dev/null @@ -1,45 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package samples.flexstore -{ - -import org.apache.flex.events.Event; - -public class ProductThumbEvent extends Event -{ - public static const PURCHASE:String = "purchase"; - public static const COMPARE:String = "compare"; - public static const DETAILS:String = "details"; - public static const BROWSE:String = "browse"; - - public var product:Product; - - public function ProductThumbEvent(type:String, product:Product) - { - super(type); - this.product = product; - } - - override public function cloneEvent():Event - { - return new ProductThumbEvent(type, product); - } -} - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/FlexWebsiteStatsViewer.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/FlexWebsiteStatsViewer.mxml b/examples/flexjs/FlexWebsiteStatsViewer/src/FlexWebsiteStatsViewer.mxml deleted file mode 100644 index 9aafac9..0000000 --- a/examples/flexjs/FlexWebsiteStatsViewer/src/FlexWebsiteStatsViewer.mxml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!--- -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// ---> -<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:local="*" - xmlns:models="models.*" - xmlns:controllers="controllers.*" - xmlns:js="library://ns.apache.org/flexjs/basic" - initialize="trace('app initialized')" - > - <js:valuesImpl> - <js:SimpleCSSValuesImpl /> - </js:valuesImpl> - <js:initialView> - <local:StatsView /> - </js:initialView> - <js:model> - <models:StatsModel /> - </js:model> - <js:controller> - <controllers:StatsController /> - </js:controller> - <js:beads> - <js:BrowserScroller /> - <js:HTTPService id="service"> - <js:LazyCollection id="collection"> - <js:inputParser> - <controllers:GAJSONInputParser /> - </js:inputParser> - <js:itemConverter> - <controllers:GAStatsDataJSONItemConverter /> - </js:itemConverter> - </js:LazyCollection> - </js:HTTPService> - <js:CSSFontFaceBead /> - </js:beads> -</js:Application> - http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/StatsView.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/StatsView.mxml b/examples/flexjs/FlexWebsiteStatsViewer/src/StatsView.mxml deleted file mode 100644 index 0636dda..0000000 --- a/examples/flexjs/FlexWebsiteStatsViewer/src/StatsView.mxml +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - ---> -<js:View xmlns:fx="http://ns.adobe.com/mxml/2009" - xmlns:js="library://ns.apache.org/flexjs/basic" - initComplete="testit()" - > - <fx:Script> - <![CDATA[ - import org.apache.flex.events.MouseEvent; - - private function testit():void { - trace(); - } - - private function onRefreshBtnClick(event:MouseEvent):void { - var e:Event = new Event("refresh", true); - dispatchEvent(e); - } - ]]> - </fx:Script> - - <fx:Style> - @namespace js "library://ns.apache.org/flexjs/basic"; - .AllCharts { - border-width: 0px; - padding-left: 2px; - padding-top: 10px; - padding-bottom: 2px; - padding-right: 10px; - } - </fx:Style> - - - <js:Label text="Number of users on flex.apache.org for last 30 days" x="10" y="10" /> - <js:TextButton id="refreshButton" text="Refresh" x="300" y="10" click="onRefreshBtnClick(event)"/> - - <js:ColumnChart id="columnChart" x="40" y="40" width="2000" height="768" className="AllCharts"> - <js:beads> - <js:SimpleBinding - sourceID="applicationModel" - sourcePropertyName="lastThirtyDaysUsers" - destinationPropertyName="dataProvider" - eventName="lastThirtyDaysDataChanged" - /> - <js:HorizontalCategoryAxisBead categoryField="date" /> - <js:VerticalLinearAxisBead valueField="users" /> - </js:beads> - <js:series> - <js:ColumnSeries yField="users"> - <js:itemRenderer> - <fx:Component> - <js:BoxItemRenderer> - <js:fill> - <js:SolidColor color="#7CB5EC" alpha="1.0" /> - </js:fill> - <!--<js:fill> - <js:LinearGradient rotation="90"> - <js:entries> - <js:GradientEntry color="#7CB5EC" ratio="0" /> - <js:GradientEntry color="#EFF7FF" ratio="0.5" /> - </js:entries> - </js:LinearGradient> - </js:fill>--> - </js:BoxItemRenderer> - </fx:Component> - </js:itemRenderer> - </js:ColumnSeries> - </js:series> - </js:ColumnChart> -</js:View> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAJSONInputParser.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAJSONInputParser.as b/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAJSONInputParser.as deleted file mode 100644 index c443de5..0000000 --- a/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAJSONInputParser.as +++ /dev/null @@ -1,38 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package controllers -{ - import org.apache.flex.collections.parsers.JSONInputParser; - - public class GAJSONInputParser extends JSONInputParser - { - public function GAJSONInputParser() - { - } - - override public function parseItems(s:String):Array - { - var rowsArrayStartIndex:int = s.indexOf('"rows": [', 0); - var rowsArrayEndIndex:int = s.indexOf("]]", rowsArrayStartIndex); - var rowsArrayString:String = s.slice(rowsArrayStartIndex + 9,rowsArrayEndIndex); - var rowsArray:Array = rowsArrayString.split("],"); - return rowsArray; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAStatsDataJSONItemConverter.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAStatsDataJSONItemConverter.as b/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAStatsDataJSONItemConverter.as deleted file mode 100644 index 608db8f..0000000 --- a/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/GAStatsDataJSONItemConverter.as +++ /dev/null @@ -1,41 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package controllers -{ - import org.apache.flex.collections.converters.JSONItemConverter; - - public class GAStatsDataJSONItemConverter extends JSONItemConverter - { - public function GAStatsDataJSONItemConverter() - { - super(); - } - - override public function convertItem(data:String):Object - { - var obj:Object = {}; - var a:Array = data.split(","); - var dateStr:String = a[0]; - var usersStr:String = a[1]; - obj.date = dateStr.substring(dateStr.indexOf("[") + 2 , dateStr.lastIndexOf('"')); - obj.users = parseInt(usersStr.substring(usersStr.indexOf(' "') + 2, usersStr.lastIndexOf('"'))); - return obj; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/StatsController.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/StatsController.as b/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/StatsController.as deleted file mode 100644 index b4a054c..0000000 --- a/examples/flexjs/FlexWebsiteStatsViewer/src/controllers/StatsController.as +++ /dev/null @@ -1,77 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Licensed to the Apache Software Foundation (ASF) under one or more -// contributor license agreements. See the NOTICE file distributed with -// this work for additional information regarding copyright ownership. -// The ASF licenses this file to You under the Apache License, Version 2.0 -// (the "License"); you may not use this file except in compliance with -// the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -//////////////////////////////////////////////////////////////////////////////// -package controllers -{ - - import models.StatsModel; - - import org.apache.flex.core.Application; - import org.apache.flex.core.IDocument; - import org.apache.flex.events.Event; - - public class StatsController implements IDocument - { - public function StatsController(a:Application = null) - { - if (a) - { - this.app = a as FlexWebsiteStatsViewer; - this.app.addEventListener("viewChanged", viewChangeHandler); - } - } - - private var lastThirtyDaysUsers:String = 'https://apache-flex-dashboard.appspot.com/query?id=ahdzfmFwYWNoZS1mbGV4LWRhc2hib2FyZHIVCxIIQXBpUXVlcnkYgICAgICAgAoM&format=json' - - private var app:FlexWebsiteStatsViewer; - - private function viewChangeHandler(event:Event):void - { - app.initialView.addEventListener("refresh", buttonClickHandler); - } - - private function buttonClickHandler(event:Event):void - { - app.service.url = lastThirtyDaysUsers; - app.service.send(); - app.service.addEventListener("complete", completeHandler); - } - - private function completeHandler(event:Event):void - { - var lastThirtyDaysUsers:Array = []; - if(app.collection) - { - for (var i:int = 0; i < app.collection.length; i++) - { - lastThirtyDaysUsers.push(app.collection.getItemAt(i)) - } - - } - - StatsModel(app.model).lastThirtyDaysUsers = lastThirtyDaysUsers; - } - - public function setDocument(document:Object, id:String = null):void - { - this.app = document as FlexWebsiteStatsViewer; - app.addEventListener("viewChanged", viewChangeHandler); - } - - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/FlexWebsiteStatsViewer.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/FlexWebsiteStatsViewer.mxml b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/FlexWebsiteStatsViewer.mxml new file mode 100644 index 0000000..9aafac9 --- /dev/null +++ b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/FlexWebsiteStatsViewer.mxml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<!--- +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +--> +<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009" + xmlns:local="*" + xmlns:models="models.*" + xmlns:controllers="controllers.*" + xmlns:js="library://ns.apache.org/flexjs/basic" + initialize="trace('app initialized')" + > + <js:valuesImpl> + <js:SimpleCSSValuesImpl /> + </js:valuesImpl> + <js:initialView> + <local:StatsView /> + </js:initialView> + <js:model> + <models:StatsModel /> + </js:model> + <js:controller> + <controllers:StatsController /> + </js:controller> + <js:beads> + <js:BrowserScroller /> + <js:HTTPService id="service"> + <js:LazyCollection id="collection"> + <js:inputParser> + <controllers:GAJSONInputParser /> + </js:inputParser> + <js:itemConverter> + <controllers:GAStatsDataJSONItemConverter /> + </js:itemConverter> + </js:LazyCollection> + </js:HTTPService> + <js:CSSFontFaceBead /> + </js:beads> +</js:Application> + http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/StatsView.mxml ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/StatsView.mxml b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/StatsView.mxml new file mode 100644 index 0000000..0636dda --- /dev/null +++ b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/StatsView.mxml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +--> +<js:View xmlns:fx="http://ns.adobe.com/mxml/2009" + xmlns:js="library://ns.apache.org/flexjs/basic" + initComplete="testit()" + > + <fx:Script> + <![CDATA[ + import org.apache.flex.events.MouseEvent; + + private function testit():void { + trace(); + } + + private function onRefreshBtnClick(event:MouseEvent):void { + var e:Event = new Event("refresh", true); + dispatchEvent(e); + } + ]]> + </fx:Script> + + <fx:Style> + @namespace js "library://ns.apache.org/flexjs/basic"; + .AllCharts { + border-width: 0px; + padding-left: 2px; + padding-top: 10px; + padding-bottom: 2px; + padding-right: 10px; + } + </fx:Style> + + + <js:Label text="Number of users on flex.apache.org for last 30 days" x="10" y="10" /> + <js:TextButton id="refreshButton" text="Refresh" x="300" y="10" click="onRefreshBtnClick(event)"/> + + <js:ColumnChart id="columnChart" x="40" y="40" width="2000" height="768" className="AllCharts"> + <js:beads> + <js:SimpleBinding + sourceID="applicationModel" + sourcePropertyName="lastThirtyDaysUsers" + destinationPropertyName="dataProvider" + eventName="lastThirtyDaysDataChanged" + /> + <js:HorizontalCategoryAxisBead categoryField="date" /> + <js:VerticalLinearAxisBead valueField="users" /> + </js:beads> + <js:series> + <js:ColumnSeries yField="users"> + <js:itemRenderer> + <fx:Component> + <js:BoxItemRenderer> + <js:fill> + <js:SolidColor color="#7CB5EC" alpha="1.0" /> + </js:fill> + <!--<js:fill> + <js:LinearGradient rotation="90"> + <js:entries> + <js:GradientEntry color="#7CB5EC" ratio="0" /> + <js:GradientEntry color="#EFF7FF" ratio="0.5" /> + </js:entries> + </js:LinearGradient> + </js:fill>--> + </js:BoxItemRenderer> + </fx:Component> + </js:itemRenderer> + </js:ColumnSeries> + </js:series> + </js:ColumnChart> +</js:View> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAJSONInputParser.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAJSONInputParser.as b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAJSONInputParser.as new file mode 100644 index 0000000..c443de5 --- /dev/null +++ b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAJSONInputParser.as @@ -0,0 +1,38 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package controllers +{ + import org.apache.flex.collections.parsers.JSONInputParser; + + public class GAJSONInputParser extends JSONInputParser + { + public function GAJSONInputParser() + { + } + + override public function parseItems(s:String):Array + { + var rowsArrayStartIndex:int = s.indexOf('"rows": [', 0); + var rowsArrayEndIndex:int = s.indexOf("]]", rowsArrayStartIndex); + var rowsArrayString:String = s.slice(rowsArrayStartIndex + 9,rowsArrayEndIndex); + var rowsArray:Array = rowsArrayString.split("],"); + return rowsArray; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAStatsDataJSONItemConverter.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAStatsDataJSONItemConverter.as b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAStatsDataJSONItemConverter.as new file mode 100644 index 0000000..608db8f --- /dev/null +++ b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/GAStatsDataJSONItemConverter.as @@ -0,0 +1,41 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package controllers +{ + import org.apache.flex.collections.converters.JSONItemConverter; + + public class GAStatsDataJSONItemConverter extends JSONItemConverter + { + public function GAStatsDataJSONItemConverter() + { + super(); + } + + override public function convertItem(data:String):Object + { + var obj:Object = {}; + var a:Array = data.split(","); + var dateStr:String = a[0]; + var usersStr:String = a[1]; + obj.date = dateStr.substring(dateStr.indexOf("[") + 2 , dateStr.lastIndexOf('"')); + obj.users = parseInt(usersStr.substring(usersStr.indexOf(' "') + 2, usersStr.lastIndexOf('"'))); + return obj; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e75059f7/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/StatsController.as ---------------------------------------------------------------------- diff --git a/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/StatsController.as b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/StatsController.as new file mode 100644 index 0000000..b4a054c --- /dev/null +++ b/examples/flexjs/FlexWebsiteStatsViewer/src/main/flex/controllers/StatsController.as @@ -0,0 +1,77 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//////////////////////////////////////////////////////////////////////////////// +package controllers +{ + + import models.StatsModel; + + import org.apache.flex.core.Application; + import org.apache.flex.core.IDocument; + import org.apache.flex.events.Event; + + public class StatsController implements IDocument + { + public function StatsController(a:Application = null) + { + if (a) + { + this.app = a as FlexWebsiteStatsViewer; + this.app.addEventListener("viewChanged", viewChangeHandler); + } + } + + private var lastThirtyDaysUsers:String = 'https://apache-flex-dashboard.appspot.com/query?id=ahdzfmFwYWNoZS1mbGV4LWRhc2hib2FyZHIVCxIIQXBpUXVlcnkYgICAgICAgAoM&format=json' + + private var app:FlexWebsiteStatsViewer; + + private function viewChangeHandler(event:Event):void + { + app.initialView.addEventListener("refresh", buttonClickHandler); + } + + private function buttonClickHandler(event:Event):void + { + app.service.url = lastThirtyDaysUsers; + app.service.send(); + app.service.addEventListener("complete", completeHandler); + } + + private function completeHandler(event:Event):void + { + var lastThirtyDaysUsers:Array = []; + if(app.collection) + { + for (var i:int = 0; i < app.collection.length; i++) + { + lastThirtyDaysUsers.push(app.collection.getItemAt(i)) + } + + } + + StatsModel(app.model).lastThirtyDaysUsers = lastThirtyDaysUsers; + } + + public function setDocument(document:Object, id:String = null):void + { + this.app = document as FlexWebsiteStatsViewer; + app.addEventListener("viewChanged", viewChangeHandler); + } + + } +} \ No newline at end of file
