diff --git a/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets index 73bfd6a1cd5750d7901101240dbe9f75b22db5e8..c598af40726c7248d8730922444bf3ee1b7fa633 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/collect/nullPage.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Color, Flex, Text, FlexAlign, ItemAlign, FlexDirection, Margin } from '@ohos.arkui' +import { Color, Flex, FlexOptions, Text, FlexAlign, ItemAlign, FlexDirection, Margin } from '@ohos.arkui' @Component diff --git a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets index 59ee1ce64a47d3cb8564458f28df9b100da28774..56752b74f5db94ca95e5c3f5ce43f44437a3bb69 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage1.ets @@ -13,7 +13,7 @@ * limitations under the License. */ import { GoodsType} from '../../data/singleData'; -import { Margin, Padding, TextOverflow, TextOverflowOptions, Image, Column, Flex, Text, Row, ImageFit, FlexAlign, ItemAlign, Color, BorderOptions, FontWeight, HorizontalAlign, VerticalAlign } from "@ohos.arkui" +import { Margin, Padding, TextOverflow, TextOverflowOptions, Image, Column, ColumnOptions, FlexOptions, RowOptions, Flex, Text, Row, ImageFit, FlexAlign, ItemAlign, Color, BorderOptions, FontWeight, HorizontalAlign, VerticalAlign } from "@ohos.arkui" @Component export struct SinglePage1 { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets index bca7cfdb28cec4c1227083c3aa2d3be988eac2fe..d4b12462213cc890c2c5890091c4f8bd41a16944 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/collect/singlePage2.ets @@ -14,7 +14,7 @@ */ import { GoodsType} from '../../data/singleData'; -import { Image, Column, Flex, Text, Row, FlexAlign, ItemAlign, ImageFit, Color, TextAlign, HorizontalAlign, Margin, BorderOptions, Padding } from '@ohos.arkui' +import { Image, Column, ColumnOptions, FlexOptions, RowOptions, Flex, Text, Row, FlexAlign, ItemAlign, ImageFit, Color, TextAlign, HorizontalAlign, Margin, BorderOptions, Padding } from '@ohos.arkui' @Component export struct SinglePage2 { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets b/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets index 7e7c3bf5ef391c8dd3fafe4db3550523878e84de..2f393a2ba81697eca62b4177b6cb4d92f4766bde 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/detailPage/detail.ets @@ -15,7 +15,7 @@ //import mediaQuery from '@ohos.mediaquery'; import router from '@ohos.router' -import { TextOptions, ColumnOptions, FlexOptions, RowOptions, FlexWrap, Span, Scroller, RowOptions, ListOptions, TabsOptions, Image, Scroller, SwiperController, NavPathStack, Margin, TextOverflowOptions, Padding, NavDestination, ClickEvent, BorderOptions, Scroll, Literal_String_target_NavigationType_type, Column, BarState, Flex, Swiper, Text, HorizontalAlign, Row, Color, ForEach, FlexAlign, ItemAlign, ImageFit, TextOverflow, FlexDirection, Navigator } from "@ohos.arkui" +import { TextOptions, ColumnOptions, FlexOptions, FlexWrap, Span, RowOptions, ListOptions, TabsOptions, Image, Scroller, SwiperController, NavPathStack, Margin, TextOverflowOptions, Padding, NavDestination, ClickEvent, BorderOptions, Scroll, Literal_String_target_NavigationType_type, Column, BarState, Flex, Swiper, Text, HorizontalAlign, Row, Color, ForEach, FlexAlign, ItemAlign, ImageFit, TextOverflow, FlexDirection, Navigator } from "@ohos.arkui" import { SwiperModel, PhoneTypeModel, ShowImgModel, RecommendDataModel, GoodsInfoModel, ListDataModel } from "../../model/detailModel" import { swiperData, phoneTypeData, showImgData, recommendData, goodsInfoData, listData } from '../../data/detailData' @@ -90,7 +90,7 @@ export struct Detail { ForEach(this.swiper, (item: SwiperModel) => { Image(item.src) .objectFit(ImageFit.Contain) - }, (item: SwiperModel) => cacheId(item)) + }, (item: SwiperModel): string => cacheId(item)) } .index(0) .width('100%') @@ -370,7 +370,7 @@ export struct Detail { Image(`${item.uri}`) .objectFit(ImageFit.Contain) .width(35 * this.ratio) - }, (item: PhoneTypeModel) => cacheId(item)) + }, (item: PhoneTypeModel): string => cacheId(item)) Text('共6种机身颜色可选') .fontSize(13 * this.ratio) } @@ -463,7 +463,7 @@ export struct Detail { .objectFit(ImageFit.Cover) .width('25%') .height(100 * this.ratio) - }, (item: ShowImgModel) => cacheId(item)) + }, (item: ShowImgModel): string => cacheId(item)) } .backgroundColor(Color.Red) @@ -608,7 +608,7 @@ export struct Detail { .width('33%') .height('48%') .alignItems(HorizontalAlign.Start) - }, (item: RecommendDataModel) => cacheId(item)) + }, (item: RecommendDataModel): string => cacheId(item)) } .height('45%') } @@ -619,7 +619,7 @@ export struct Detail { Image(`${item.img}`) .width('100%') .objectFit(ImageFit.Cover) - }, (item: GoodsInfoModel) => cacheId(item)) + }, (item: GoodsInfoModel): string => cacheId(item)) } Flex({ justifyContent: FlexAlign.Start, wrap: FlexWrap.Wrap, alignContent: FlexAlign.Start }) { @@ -640,7 +640,7 @@ export struct Detail { .height('32%') .margin(5) .alignItems(HorizontalAlign.Center) - }, (item: ListDataModel) => cacheId(item)) + }, (item: ListDataModel): string => cacheId(item)) } } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets index 843db214ddefef753c708ac90e2fc28c04b04779..01b94267312df1a9316815df26a1e08349d75a87 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/User.ets @@ -19,7 +19,7 @@ import { recordData, orderData, discountData, serviceData } from '../../data/hom import { Core2 } from './core2' import { SearchParam } from '../../model/routeModel' import { cacheId } from './main' -import { Padding, FlexDirection, Image, Scroll, Scroller, Column, ColumnOptions, RowOptions, ColumnOptions, FlexOptions, Row, Flex, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent, Color, ForEach, HorizontalAlign, BarState } from '@ohos.arkui' +import { Padding, FlexDirection, Image, Scroll, Scroller, Column, ColumnOptions, RowOptions, Row, Flex, FlexOptions, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent, Color, ForEach, HorizontalAlign, BarState } from '@ohos.arkui' @Component export struct User { @@ -115,7 +115,7 @@ export struct User { } as SearchParam }) }) - }, (item: RecordModel) => cacheId(item)) + }, (item: RecordModel): string => cacheId(item)) } Flex({ justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { @@ -173,7 +173,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: OrderModel) => cacheId(item)) + }, (item: OrderModel): string => cacheId(item)) } .margin({ top: 10 } as Margin) @@ -227,7 +227,7 @@ export struct User { .fontSize(12 * this.ratio) .fontColor(Color.Grey) } - }, (item: DiscountModel) => cacheId(item)) + }, (item: DiscountModel): string => cacheId(item)) } .margin({ top: 10 } as Margin) } @@ -248,7 +248,7 @@ export struct User { Text(item.title) .fontSize(12 * this.ratio) } - }, (item: ServiceModel) => cacheId(item)) + }, (item: ServiceModel): string => cacheId(item)) } .margin({ top: 10 } as Margin) } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets index 47c4b76b713134aa7f504167c100150e5caecb2c..b3d3614838d7bb621a379a2119b2defd613a8ae1 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/boutique.ets @@ -48,7 +48,7 @@ export struct Boutique { } .width('50%') .alignItems(HorizontalAlign.Start) - }, (item: BoutiqueModel) => cacheId(item)) + }, (item: BoutiqueModel): string => cacheId(item)) } } .width('92%') diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets index 4c10c270ae6c9835a6dedeb30e9a24b1a4c110dd..e724f6f2a779ac3c5919ce11d1714e9ed4ed020c 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/cart.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { ImageFit, FlexDirection, Counter, Toggle, Image, Column, Flex, Row, Text, ItemAlign, FontWeight, HorizontalAlign, FlexAlign, Margin, ClickEvent, Color, BorderOptions, ToggleType } from '@ohos.arkui' +import { ImageFit, FlexDirection, ColumnOptions, FlexOptions, RowOptions, ToggleOptions, Counter, Toggle, Image, Column, Flex, Row, Text, ItemAlign, FontWeight, HorizontalAlign, FlexAlign, Margin, ClickEvent, Color, BorderOptions, ToggleType } from '@ohos.arkui' @Component export struct Cart { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets index 2ed0c9374588ad219aca6036901d3f6e799d6c18..98ecf55b5291e08424b49d5f7b131135d4e46682 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core1.ets @@ -16,7 +16,7 @@ import { CoreDataModel } from '../../model/homeModel' import { coreData } from '../../data/homeData' import { cacheId } from './main' -import { List, ListOptions, Image, Column, ForEach, ListItem, Grid, GridItem, Text, Margin, ImageFit, Axis } from '@ohos.arkui' +import { List, ListOptions, Image, Column, ColumnOptions, Scroller, ForEach, ListItem, Grid, GridItem, Text, Margin, ImageFit, Axis } from '@ohos.arkui' @Component export struct Core1 { @@ -44,13 +44,13 @@ export struct Core1 { } } .width('100%') - }, (item2: Number) => cacheId(item2.valueOf())) + }, (item2: Number): string => cacheId(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('20%') - }, (item1: Number) => cacheId(item1.valueOf())) + }, (item1: Number): string => cacheId(item1.valueOf())) } .listDirection(Axis.Horizontal) .height(160 * this.ratio) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets index 3e932241e82136218f852195dc5a0696810efb79..9b5f8e741a6e6356c69ec5efde9029347fed39e5 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/core2.ets @@ -16,7 +16,7 @@ import { CoreDataModel } from '../../model/homeModel' import { coreData } from '../../data/homeData' import { cacheId } from './main' -import { List, Image, ListOptions, Column, ForEach, ListItem, GridItem, Text, ImageFit, Grid, Margin, Axis } from '@ohos.arkui' +import { List, Image, ListOptions, ColumnOptions, Scroller, GridItemOptions, Column, ForEach, ListItem, GridItem, Text, ImageFit, Grid, Margin, Axis } from '@ohos.arkui' @Component export struct Core2 { @@ -44,13 +44,13 @@ export struct Core2 { } } .width('100%') - }, (item2: Number) => cacheId(item2.valueOf())) + }, (item2: Number): string => cacheId(item2.valueOf())) } .rowsTemplate('1fr 1fr') .columnsTemplate('1fr') } .width('22.5%') - }, (item1: Number) => cacheId(item1.valueOf())) + }, (item1: Number): string => cacheId(item1.valueOf())) } .listDirection(Axis.Horizontal) .height('22%') diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets index 412c084d5f6a4979eb74c36aaeb507b0f3fc833c..5afdf0552892fe8133d5d1f9e442f65e5e757c9f 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/find.ets @@ -47,7 +47,7 @@ export struct FindPage { Text(item.searchText) .fontSize(15 * this.ratio) .fontColor(Color.Grey) - }, (item: SearchTextModel) => cacheId(item)) + }, (item: SearchTextModel): string => cacheId(item)) } .width('65%') .autoPlay(false) @@ -82,7 +82,7 @@ export struct FindPage { ForEach(this.titleText, (item: FindTitleTextModel) => { Text(item.titleText) .fontSize(15 * this.ratio) - }, (item: FindTitleTextModel) => cacheId(item)) + }, (item: FindTitleTextModel): string => cacheId(item)) } .padding({ left: 15, right: 15 } as Padding) } @@ -107,7 +107,7 @@ export struct FindPage { .width('100%') .aspectRatio(1.1) .margin({ top: 10 } as Margin) - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .padding({ left: 10, right: 10 } as Padding) } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets index a11210853185a079251c2671c09330d24b56b06b..5a0e6572887e854d017db6eb920a8b066831b00f 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/goodsList.ets @@ -16,7 +16,7 @@ import { ProductDataModel } from '../../model/homeModel' import { productData } from '../../data/homeData' import { cacheId } from './main' -import { LazyForEach, Image, IDataSource, DataChangeListener, GridItem, Column, Text, Row, Margin, BorderOptions, Padding, Grid, ImageFit, Color, HorizontalAlign } from '@ohos.arkui' +import { LazyForEach, Image, IDataSource, DataChangeListener, GridItem, Column, ColumnOptions, GridItemOptions, RowOptions, GridLayoutOptions, Text, Row, Margin, BorderOptions, Padding, Grid, ImageFit, Color, HorizontalAlign } from '@ohos.arkui' class GoodListSource implements IDataSource { totalCount(): number { @@ -108,12 +108,11 @@ export struct GoodsList { @State move: number = 0 aboutToAppear() { - this.data = new GoodListSource(); } build() { Column({}) { - Grid(undefined, {}) { + Grid(undefined, undefined) { LazyForEach(this.data, (item: Number, index: number): void => { GGGItem({ data: this.productData[item.valueOf() % 14], ratio: this.ratio }) }, (item: Number, index: number): string => cacheId(item.valueOf())) @@ -121,7 +120,7 @@ export struct GoodsList { .columnsTemplate('1fr 1fr') .padding({ bottom: 60 } as Padding) .onScrollIndex((first: number, second: number) => { - this.GridIndex = Number(first) + this.GridIndex = first }) } .width('100%') diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets index caf5d3cc14b72352835b2948484af1d66267f517..19564e703f8f0eb8bb8834a27ec8cfcff4bbba52 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/imageItem.ets @@ -15,7 +15,7 @@ import { FindImgSrcModel, FindImgIntroModel, FindImgNameModel, FindIconSrcModel } from '../../model/homeModel' import { findImgSrcData, findImgIntroData, findImgNameData, findIconSrcData } from '../../data/homeData' -import { Image, ImageFit, Margin, ClickEvent, Column, Row, Flex, FlexAlign, TextOverflowOptions, ItemAlign, TextOverflow, BorderOptions, Text } from '@ohos.arkui' +import { Image, ImageFit, Margin, ClickEvent, Column, ColumnOptions, RowOptions, FlexOptions, Row, Flex, FlexAlign, TextOverflowOptions, ItemAlign, TextOverflow, BorderOptions, Text } from '@ohos.arkui' @Component export struct ImageItem { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets index 28f14f493d0124c5bff87a62f66c703d1d7e21b5..d57dda6ca4237a916ed7bfa3353c5e844ecfada5 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/informance.ets @@ -15,7 +15,7 @@ import { InformationModel } from '../../model/homeModel' import { informationData } from '../../data/homeData' -import { Button, ClickEvent, Column, Color, FlexAlign } from '@ohos.arkui' +import { Button, ClickEvent, Column, ColumnOptions, Color, FlexAlign } from '@ohos.arkui' //import { callFetchWithEACoroutine, callFetchWithCoroutine, callFetchWithTaskPool} from '../../arkcompilerPOC/concurrency' //import { callRDBWithManagedEACoroutine, callRDBWithNativeEACoroutine, GetAll } from '../../arkcompilerPOC/concurrency2' diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets index df2f8e7420b7858269f2be75f9bed29fd775e0b9..bd999c38a56e057ee255abbb4e5ddfd500f1366d 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/main.ets @@ -74,7 +74,7 @@ export struct MainPage { console.log(`Measuring...`) ForEach(perfData, (item: number) => { Stack({}).width(100).height(100).backgroundColor(Color.Red).margin(5) - }, (item: number) => String(item)) + }, (item: number): string => String(item)) let passed = Date.now() - now console.log(`Passed ${passed}ms, ${passed / count}ms per iteration`) } @@ -89,7 +89,7 @@ export struct MainPage { console.log(`Measuring...`) ForEach(perfData, (item: number) => { this.buildReal() - }, (item: number) => String(item)) + }, (item: number): string => String(item)) let passed = Date.now() - now console.log(`Passed ${passed}ms, ${passed / count}ms per iteration`) } else { @@ -132,7 +132,7 @@ export struct MainPage { } this.pathInfos.pushPath(new NavPathInfo('searchPage', searchParam)) }) - }, (item: SearchTextModel) => cacheId(item)) + }, (item: SearchTextModel):string => cacheId(item)) } .width('65%') .autoPlay(true) @@ -174,7 +174,7 @@ export struct MainPage { .lineHeight(30 * this.ratio) } .height(30 * this.ratio) - }, (item: NavDataModel) => cacheId(item)) + }, (item: NavDataModel): string => cacheId(item)) } .height(30 * this.ratio) .width('85%') @@ -208,7 +208,7 @@ export struct MainPage { this.pathInfos.pushPath(new NavPathInfo('detailPage', params)) }) - }, (item: SwiperModel) => cacheId(item)) + }, (item: SwiperModel): string => cacheId(item)) } .autoPlay(true) .loop(true) @@ -238,7 +238,7 @@ export struct MainPage { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TitleBarModel) => cacheId(item)) + }, (item: TitleBarModel): string => cacheId(item)) } .height('7%') .zIndex(2) diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets index e6aa0cb60a6c9721a922b8d6e636757ea62866fd..89bf69abf14812bf82bc527d2db8db03ae31658f 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/other.ets @@ -15,7 +15,7 @@ import { ShopCartItemDataModel } from '../../model/homeModel' import { shopCartItemData } from '../../data/homeData' -import { Image, Flex, Row, Column, Span, Text,ImageFit, TextOverflowOptions, FlexAlign, Margin, ItemAlign, TextOverflow, Color, BorderOptions, HorizontalAlign, Padding } from '@ohos.arkui' +import { Image, Flex, Row, Column, ColumnOptions, FlexOptions, RowOptions, TextOptions, Span, Text,ImageFit, TextOverflowOptions, FlexAlign, Margin, ItemAlign, TextOverflow, Color, BorderOptions, HorizontalAlign, Padding } from '@ohos.arkui' @Component export struct Other { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets index 917c5b45f9597793becaf71db6b2496c9e4f302a..8509c28ee8da70a37bf28a49dd857679ec911c7e 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/shopCart.ets @@ -16,7 +16,7 @@ import { Cart } from './cart' import { Other } from './other' import { cacheId } from './main' -import { Image, Scroll, Column, ColumnOptions, FlexOptions, RowOptions, FlexOptions, ColumnOptions, Flex, Text, FlexAlign, FontWeight, ItemAlign, Row, ForEach, BorderOptions, Color, ImageFit, Padding, Margin, VerticalAlign, BarState } from '@ohos.arkui' +import { Image, Scroll, Column, ColumnOptions, FlexOptions, RowOptions, Scroller, Flex, Text, FlexAlign, FontWeight, ItemAlign, Row, ForEach, BorderOptions, Color, ImageFit, Padding, Margin, VerticalAlign, BarState } from '@ohos.arkui' @Component export struct ShopCart { @@ -103,7 +103,7 @@ export struct ShopCart { Column({}) { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .margin(2) @@ -112,7 +112,7 @@ export struct ShopCart { Column({}) { Other({ item: item.valueOf() % 6, ratio: this.ratio }) } - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .margin(2) } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets index f8ef384607725f09d34883fc203bea200c19e633..b35231e458a236104707f3f983926207aa7649be 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/homePage/visitPage.ets @@ -14,7 +14,7 @@ */ import { FindPage } from './find' -import { Image, Column, Flex, Text, BorderOptions, ImageFit, ItemAlign, Tabs, TabContent, TabsController, FlexAlign, Padding, Margin } from '@ohos.arkui' +import { Image, Column, ColumnOptions, FlexOptions, TabsOptions, Flex, Text, BorderOptions, ImageFit, ItemAlign, Tabs, TabContent, TabsController, FlexAlign, Padding, Margin } from '@ohos.arkui' @Component export struct VisitPage { diff --git a/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets b/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets index a4f78d582782737390b554bdf7526c1b009fcd9f..c650978bb1f22e74079aa662ad0e7611a75742ca 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/index-entry.ets @@ -24,7 +24,7 @@ import { SearchPage } from './search/searchPage' //import mediaquery from '@ohos.mediaquery'; import { SearchParam } from '../model/routeModel' import { cacheId } from './homePage/main' -import { Stack, TabBarOptions, PageTransitionEnter, PageTransitionExit, RouteType, NavPathStack, Navigation, Curve, Tabs, Color, NavigationMode, BarPosition, TabContent, TabsController, ForEach, Padding, FlexDirection, Image, Scroll, Column, Row, Flex, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent } from '@ohos.arkui' +import { Stack, StackOptions, ColumnOptions, TabsOptions, FlexOptions, PageTransitionOptions, TabBarOptions, PageTransitionEnter, PageTransitionExit, RouteType, NavPathStack, Navigation, Curve, Tabs, Color, NavigationMode, BarPosition, TabContent, TabsController, ForEach, Padding, FlexDirection, Image, Scroll, Column, Row, Flex, FlexAlign, Text, ItemAlign, FontWeight,TextOverflow, TextOverflowOptions, BorderOptions, ImageFit, Margin, ClickEvent } from '@ohos.arkui' @Builder @@ -112,7 +112,7 @@ struct Index { this.tabsIndex = item.id this.controller.changeIndex(item.id) }) - }, (item: TabTitleModel) => cacheId(item)) + }, (item: TabTitleModel): string => cacheId(item)) } .height('8%') } diff --git a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets index e488031f54404ae38dfc65fe3a1a938ab9d4a0b5..00c6104ac79939f7b63618b99d64ffb5332a2680 100644 --- a/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets +++ b/arkoala-arkts/shopping/user/src/ets/pages/search/searchPage.ets @@ -19,7 +19,7 @@ import { ExampleDataModel, SearchDataModel } from '../../model/searchModel'; import { exampleData, searchData } from '../../data/searchData' import { BaseRouteParam, SearchParam } from '../../model/routeModel' import { cacheId } from '../homePage/main' -import { Image, Button, List, FontWeight, Stack, Alignment, FlexWrap, ForEach, Row, HorizontalAlign, Axis, Visibility, ListItem, ImageRepeat, SizeOptions, ItemAlign, ImageFit, Font, Color, EnterKeyType, Padding, BorderOptions, Text, NavDestination, Column, Flex, NavPathStack, TextInput, ClickEvent, FlexAlign, Margin } from '@ohos.arkui' +import { Image, Button, List, ColumnOptions, RowOptions, FlexOptions, ButtonOptions, StackOptions,TextInputOptions, ListOptions, FontWeight, Stack, Alignment, FlexWrap, ForEach, Row, HorizontalAlign, Axis, Visibility, ListItem, ImageRepeat, SizeOptions, ItemAlign, ImageFit, Font, Color, EnterKeyType, Padding, BorderOptions, Text, NavDestination, Column, Flex, NavPathStack, TextInput, ClickEvent, FlexAlign, Margin } from '@ohos.arkui' @Entry @Component @@ -145,7 +145,7 @@ export struct SearchPage { .margin(3) .height(30 * this.ratio) .backgroundColor('#f8f8f8') - }, (item: ExampleDataModel) => cacheId(item)) + }, (item: ExampleDataModel): string => cacheId(item)) } .margin({ left: 10, right: 10 } as Margin) } else { @@ -234,7 +234,7 @@ export struct SearchPage { .padding({ left: 5, right: 5 } as Padding) .width('100%') .height(40 * this.ratio) - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .width('100%') } @@ -243,7 +243,7 @@ export struct SearchPage { .padding({ top: 5 } as Padding) .backgroundColor(Color.White) .width(`60%`) - }, (item: Number) => cacheId(item.valueOf())) + }, (item: Number): string => cacheId(item.valueOf())) } .listDirection(Axis.Horizontal) .height('70%') @@ -284,7 +284,7 @@ export struct SearchPage { this.isFlag = false this.value = item }) - }, (item: string) => cacheId(item)) + }, (item: string): string => cacheId(item)) } } } diff --git a/ui2abc/libarkts/src-host/es2panda.ts b/ui2abc/libarkts/src-host/es2panda.ts index a59eb50b462da4acca470a186340e99a8e1858ce..ebc9c87515bb120d38750405ed2479fbf2ec0fe6 100644 --- a/ui2abc/libarkts/src-host/es2panda.ts +++ b/ui2abc/libarkts/src-host/es2panda.ts @@ -15,7 +15,7 @@ import * as fs from "node:fs" import * as path from "node:path" -import { checkSDK, arktsGlobal as global, ImportStorage, ETSModule, ProgramProvider } from "@koalaui/libarkts" +import { checkSDK, arktsGlobal as global, ImportStorage, ETSModule, ProgramProvider, metaDatabase } from "@koalaui/libarkts" import { CheckedBackFilter, ChainExpressionFilter, PluginContext, PluginContextImpl } from "@koalaui/libarkts" import { Command } from "commander" import { filterSource, isNumber, throwError, withWarning } from "@koalaui/libarkts" @@ -91,6 +91,7 @@ function insertPlugin( const importStorage = new ImportStorage(currentProgram.program, state == Es2pandaContextState.ES2PANDA_STATE_PARSED) stageSpecificPreFilters(ast, state) + console.log(`transform ${currentProgram.name}`) transform?.(currentProgram.program, { isMainProgram: currentProgram.program.peer == global.compilerContext.program.peer, name: currentProgram.name, stage: state }, context) stageSpecificPostFilters(ast, state) @@ -226,8 +227,8 @@ function invokeWithPlugins( const newConfigPath = `${configPath.substring(0, configPath.length - pluginNames[pluginsApplied].length - ext.length)}${pluginNames[pluginsApplied + 1]}${ext}` const newFilePath = path.resolve(outDir, pluginNames[pluginsApplied], global.filePathFromPackageRoot) global.newFilePath = newFilePath - if (fs.existsSync(`${filePath}.meta.json`)) { - fs.copyFileSync(`${filePath}.meta.json`, `${newFilePath}.meta.json`) + if (fs.existsSync(metaDatabase(filePath))) { + fs.copyFileSync(metaDatabase(filePath), metaDatabase(newFilePath)) } if (pluginsApplied == stage) { // uncomment if switch to dets generator @@ -245,6 +246,8 @@ function invokeWithPlugins( const context = new PluginContextImpl() + context.setParameter("restart", restart) + pluginsByState.get(Es2pandaContextState.ES2PANDA_STATE_PARSED)?.forEach(plugin => { insertPlugin(source, plugin, Es2pandaContextState.ES2PANDA_STATE_PARSED, dumpAst, restart, context) restartProcedure() diff --git a/ui2abc/libarkts/src/arkts-api/peers/Context.ts b/ui2abc/libarkts/src/arkts-api/peers/Context.ts index f36852a920d2d11f99c3eae460fcfc0f7f7575f9..8535e95fef9482ccd513b9db1ef12508dea87748 100644 --- a/ui2abc/libarkts/src/arkts-api/peers/Context.ts +++ b/ui2abc/libarkts/src/arkts-api/peers/Context.ts @@ -18,6 +18,8 @@ import { Program } from "../../generated" import { global } from "../static/global" import { passString } from "../utilities/private" import { KNativePointer } from "@koalaui/interop" +import { Config } from "./Config" +import * as fs from "fs" export class Context extends ArktsObject { constructor(peer: KNativePointer) { @@ -39,6 +41,24 @@ export class Context extends ArktsObject { ) } + static createFromFile(filePath: string, configPath: string): Context | undefined { + const config = Config.create([ + "", + "--arktsconfig", + configPath, + '--extension', + 'ets', + filePath + ]) + return new Context( + global.es2panda._CreateContextFromString( + config.peer, + passString(fs.readFileSync(filePath, 'utf-8')), + passString(filePath) + ) + ) + } + get program(): Program { return new Program(global.es2panda._ContextProgram(this.peer)); } diff --git a/ui2abc/libarkts/src/arkts-api/utilities/public.ts b/ui2abc/libarkts/src/arkts-api/utilities/public.ts index 46df8f56126f38098247653299670a171d0ef8cd..5406e1301f8ce753c2adb5fae54c06d450e2203d 100644 --- a/ui2abc/libarkts/src/arkts-api/utilities/public.ts +++ b/ui2abc/libarkts/src/arkts-api/utilities/public.ts @@ -41,7 +41,12 @@ export function createETSModuleFromContext(): ETSModule { if (program == nullptr) { throw new Error(`Program is null for context ${global.context.toString(16)}`) } - return new ETSModule(global.es2panda._ProgramAst(global.context, program)) + const ast = global.es2panda._ProgramAst(global.context, program) + if (ast == nullptr) { + throw new Error(`AST is null for program ${program.toString(16)}`) + + } + return new ETSModule(ast) } export function createETSModuleFromSource( @@ -59,6 +64,11 @@ export function createETSModuleFromSource( return new ETSModule(global.es2panda._ProgramAst(global.context, program)) } +export function metaDatabase(fileName: string): string { + if (fileName.endsWith(".meta.json")) throw new Error(`Must pass source, not database: ${fileName}`) + return `${fileName}.meta.json` +} + export function updateETSModuleByStatements( node: ETSModule, statements: readonly AstNode[], diff --git a/ui2abc/libarkts/src/generated/Es2pandaEnums.ts b/ui2abc/libarkts/src/generated/Es2pandaEnums.ts index fcb6562acdb71bde001cd4859962e8fde37e91ef..1754ad204f2f286fcc8b06a0420113f95da3048c 100644 --- a/ui2abc/libarkts/src/generated/Es2pandaEnums.ts +++ b/ui2abc/libarkts/src/generated/Es2pandaEnums.ts @@ -530,14 +530,13 @@ export enum Es2pandaTokenType { export enum Es2pandaAstNodeFlags { AST_NODE_FLAGS_NO_OPTS = 0, AST_NODE_FLAGS_CHECKCAST = 1, - AST_NODE_FLAGS_CONVERT_TO_STRING = 2, - AST_NODE_FLAGS_ALLOW_REQUIRED_INSTANTIATION = 4, - AST_NODE_FLAGS_HAS_EXPORT_ALIAS = 8, - AST_NODE_FLAGS_GENERATE_VALUE_OF = 16, - AST_NODE_FLAGS_RECHECK = 32, - AST_NODE_FLAGS_NOCLEANUP = 64, - AST_NODE_FLAGS_RESIZABLE_REST = 128, - AST_NODE_FLAGS_TMP_CONVERT_PRIMITIVE_CAST_METHOD_CALL = 256 + AST_NODE_FLAGS_ALLOW_REQUIRED_INSTANTIATION = 2, + AST_NODE_FLAGS_HAS_EXPORT_ALIAS = 4, + AST_NODE_FLAGS_GENERATE_VALUE_OF = 8, + AST_NODE_FLAGS_RECHECK = 16, + AST_NODE_FLAGS_NOCLEANUP = 32, + AST_NODE_FLAGS_RESIZABLE_REST = 64, + AST_NODE_FLAGS_TMP_CONVERT_PRIMITIVE_CAST_METHOD_CALL = 128 } export enum Es2pandaModifierFlags { MODIFIER_FLAGS_NONE = 0, @@ -713,7 +712,6 @@ export enum Es2pandaTypeRelationFlag { TYPE_RELATION_FLAG_NO_THROW_GENERIC_TYPEALIAS = 8388608, TYPE_RELATION_FLAG_OVERRIDING_CONTEXT = 16777216, TYPE_RELATION_FLAG_IGNORE_REST_PARAM = 33554432, - TYPE_RELATION_FLAG_STRING_TO_CHAR = 67108864, TYPE_RELATION_FLAG_ASSIGNMENT_CONTEXT = 14, TYPE_RELATION_FLAG_BRIDGE_CHECK = 17826816, TYPE_RELATION_FLAG_CASTING_CONTEXT = 524303 @@ -1308,12 +1306,11 @@ export enum Es2pandaProgramFlags { PROGRAM_FLAGS_AST_CHECK_PROCESSED = 2, PROGRAM_FLAGS_AST_ENUM_LOWERED = 4, PROGRAM_FLAGS_AST_BOXED_TYPE_LOWERED = 8, - PROGRAM_FLAGS_AST_CONST_STRING_TO_CHAR_LOWERED = 16, - PROGRAM_FLAGS_AST_CONSTANT_EXPRESSION_LOWERED = 32, - PROGRAM_FLAGS_AST_STRING_CONSTANT_LOWERED = 64, - PROGRAM_FLAGS_AST_IDENTIFIER_ANALYZED = 128, - PROGRAM_FLAGS_AST_HAS_SCOPES_INITIALIZED = 256, - PROGRAM_FLAGS_AST_HAS_OPTIONAL_PARAMETER_ANNOTATION = 512 + PROGRAM_FLAGS_AST_CONSTANT_EXPRESSION_LOWERED = 16, + PROGRAM_FLAGS_AST_STRING_CONSTANT_LOWERED = 32, + PROGRAM_FLAGS_AST_IDENTIFIER_ANALYZED = 64, + PROGRAM_FLAGS_AST_HAS_SCOPES_INITIALIZED = 128, + PROGRAM_FLAGS_AST_HAS_OPTIONAL_PARAMETER_ANNOTATION = 256 } export enum Es2pandaCompilationMode { COMPILATION_MODE_GEN_STD_LIB = 0, diff --git a/ui2abc/libarkts/src/index.ts b/ui2abc/libarkts/src/index.ts index b45f5d0259c935f8f29b73c667f0fbe9cb131ad2..f242ba396948061b69db03d54f9739aab6c7cc24 100644 --- a/ui2abc/libarkts/src/index.ts +++ b/ui2abc/libarkts/src/index.ts @@ -31,6 +31,7 @@ export * from "./arkts-api/plugins" export * from "./arkts-api/ImportStorage" export * from "./arkts-api/InferVoidReturnType" export * from "./arkts-api/ProgramProvider" +export * from "./arkts-api/node-utilities/Program" export * from "./arkts-api/peers/AstNode" export * from "./arkts-api/peers/Config" diff --git a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts index 0b73f4486e950ca473f9b56b18b37875377a600f..a422dcfe6b1aefc5bd18301d9fe2e054c8c2a770 100644 --- a/ui2abc/ui-plugins/src/parsed-stage-plugin.ts +++ b/ui2abc/ui-plugins/src/parsed-stage-plugin.ts @@ -27,10 +27,15 @@ export default function parsedTransformer( userPluginOptions?: ComponentTransformerOptions ): arkts.ProgramTransformer { return (program: arkts.Program, _compilationOptions: arkts.CompilationOptions, context: arkts.PluginContext) => { + const restart = context.parameter("restart") ?? false const importer = new Importer() - const resolver = new StructsResolver() - const structs = new StructTable(arkts.global.newFilePath ? `${arkts.global.newFilePath}.meta.json` : undefined) - context.setParameter("structsTable", resolver) + let resolver = context.parameter("structsTable") + if (!resolver) { + resolver = new StructsResolver(restart) + context.setParameter("structsTable", resolver) + } + const currentFile = restart ? arkts.global.newFilePath : arkts.global.filePath + const structs = resolver.getOrCreateTable(currentFile, restart) context.setParameter("importer", importer) const transformers: arkts.AbstractVisitor[] = [ new StructRecorder(structs), diff --git a/ui2abc/ui-plugins/src/struct-recorder.ts b/ui2abc/ui-plugins/src/struct-recorder.ts index ef40ed42bb26e2e34ed3efa12b63ff76cb2bc931..e225a971c9956fe3b22735545b32c8a4236751cf 100644 --- a/ui2abc/ui-plugins/src/struct-recorder.ts +++ b/ui2abc/ui-plugins/src/struct-recorder.ts @@ -15,7 +15,9 @@ import * as arkts from "@koalaui/libarkts" import * as fs from "fs" +import * as path from "path" import { CustomComponentNames } from "./utils" +import { programGetExternalSources, metaDatabase } from "@koalaui/libarkts" export class PropertyDescriptor { constructor(public name: string, public decorators: string[]) { } @@ -45,10 +47,35 @@ export class StructDescriptor { return this.decoratorsFor(property)?.includes(decorator) ?? false } } - export class StructsResolver { private structByFile = new Map() + constructor(private restart: boolean) { + this.init() + } + + init() { + for (let source of programGetExternalSources(arkts.global.compilerContext.program)) { + let program = source.programs[0] + let table = this.getOrCreateTable(program.sourceFilePath, this.restart) + table.recordStructs(program) + this.addTable(program.sourceFilePath, table) + } + } + + addTable(fileName: string, table: StructTable) { + this.structByFile.set(fileName, table) + } + + getOrCreateTable(fileName: string, restart: boolean) { + let result = this.structByFile.get(fileName) + if (!result) { + result = new StructTable(fileName, restart ? undefined : this) + this.addTable(fileName, result) + } + return result + } + findDeclarationFile(declaration: arkts.AstNode): string { let current: arkts.AstNode|undefined = declaration while (current && !arkts.isETSModule(current)) { @@ -64,8 +91,8 @@ export class StructsResolver { if (!declarationFile) throw new Error(`No declaration file`) let structs = this.structByFile.get(declarationFile) if (!structs) { - structs = new StructTable(`${declarationFile}.meta.json`) - this.structByFile.set(declarationFile, structs) + structs = new StructTable(declarationFile, this.restart ? undefined : this) + this.addTable(declarationFile, structs) } return structs } @@ -83,24 +110,44 @@ export class StructsResolver { if (!declaration) return undefined return this.declarationToTable(declaration).findStruct(name.name) } + + hasDefinition(filename: string): boolean { + return this.structByFile.has(filename) + } } export class StructTable { private structByName = new Map() - constructor(public database: string|undefined) { - if (database && fs.existsSync(database)) { + constructor(private fileName: string, private resolverToSync: StructsResolver|undefined) { + if (!resolverToSync) { + this.readDB() + } + } + readDB() { + const db = metaDatabase(this.fileName) + if (fs.existsSync(db)) { try { - this.addDescriptors(StructDescriptor.fromJSON(JSON.parse(fs.readFileSync(database, "utf-8")))) + this.addDescriptors( + StructDescriptor.fromJSON( + JSON.parse( + fs.readFileSync(db, "utf-8") + ) + ) + ) } catch (e: any) { console.log(e.stack) } } } + recordStructs(program: arkts.Program) { + new StructRecorder(this).visitor(program.ast) + } findStruct(name: string): StructDescriptor|undefined { return this.structByName.get(name) } addStruct(declaration: arkts.ETSStructDeclaration) { + if (this.structByName.has(declaration.definition?.ident?.name!)) return const descriptor = StructTable.toDescriptor(declaration) this.addDescriptor(descriptor) } @@ -131,14 +178,14 @@ export class StructTable { return decorators.concat(annotations) } update() { - if (!this.database) return + if (this.resolverToSync) return if (this.structByName.size == 0) return let lines = [] for (let desc of this.structByName.values()) { lines.push(desc.toJSON()) } let result = `{"structs": [ ${lines.join(",")} ]}` - fs.writeFileSync(this.database, result) + fs.writeFileSync(metaDatabase(this.fileName), result) } } @@ -155,6 +202,11 @@ export class StructRecorder extends arkts.AbstractVisitor { } if (arkts.isETSStructDeclaration(node)) { this.table.addStruct(node) + return node + } + // Do not go inside classes, structs cannot be there. + if (arkts.isClassDeclaration(node)) { + return node } return this.visitEachChild(node) }