提交 68c60a5c 编写于 作者: H hdx

feat(pageStyle): 调整数据结构,确保属性在多平台下排序一致以便自动化截图对比

上级 994f0f88
<template> <template>
<!-- #ifdef APP --> <!-- #ifdef APP -->
<scroll-view class="page-scroll-view"> <scroll-view class="page-scroll-view">
<!-- #endif --> <!-- #endif -->
<page-head title="getCurrentPages"></page-head> <page-head title="getCurrentPages"></page-head>
<view class="uni-padding-wrap"> <view class="uni-padding-wrap">
<button @click="_getCurrentPages">getCurrentPages</button> <button @click="_getCurrentPages">getCurrentPages</button>
<view v-if="pages.length" style="padding: 15px 0px"> <view v-if="pages.length" style="padding: 15px 0px">
<text>当前页面栈中 {{ pages.length }} 个页面,列表如下:</text> <text>当前页面栈中 {{ pages.length }} 个页面,列表如下:</text>
<template v-for="(page, index) in pages" :key="page.route"> <template v-for="(page, index) in pages" :key="page.route">
<text style="margin-top: 5px">index: {{ index }}, route: {{ page.route }}</text> <text style="margin-top: 5px">index: {{ index }}, route: {{ page.route }}</text>
</template> </template>
</view> </view>
</view> </view>
<page-head title="currentPageStyle"></page-head> <page-head title="currentPageStyle"></page-head>
<view class="page-style-item" v-for="(value, key) in currentPageStyle" :key="key"> <template v-for="(item, index) in PageStyleArray">
<view class="item-text"> <view class="page-style-item" v-if="currentPageStyle[item.key]!=null" :key="index">
<text class="item-text-key">{{key}}:</text> <view class="item-text">
<text class="item-text-value">{{value}}</text> <text class="item-text-key">{{item.key}}:</text>
</view> <text class="item-text-value">{{currentPageStyle[item.key]}}</text>
<view class="set-value" v-if="typeof value == 'boolean'"> </view>
<switch :checked="getStyleValue(key).getBoolean('oldValue')" <view class="set-value" v-if="item.type == 'boolean'">
@change="switchChange(key, $event as UniSwitchChangeEvent)"> <switch :checked="item.value.getBoolean('oldValue')"
</switch> @change="switchChange(item.key, $event as UniSwitchChangeEvent)">
</view> </switch>
<view class="set-value" v-if="typeof value == 'number'"> </view>
<slider :value="getStyleValue(key).getNumber('oldValue')" :show-value="true" <view class="set-value" v-else-if="item.type == 'number'">
@change="sliderChange(key, $event as UniSliderChangeEvent)" /> <slider :value="item.value.getNumber('oldValue')" :show-value="true"
</view> @change="sliderChange(item.key, $event as UniSliderChangeEvent)" />
<view class="set-value" v-else-if="typeof value == 'string'"> </view>
<radio-group class="radio-set-value" @change="radioChange(key, $event as RadioGroupChangeEvent)"> <view class="set-value" v-else-if="item.type == 'string'">
<radio :value="getStyleValue(key).getString('oldValue')">{{getStyleValue(key).getString('oldValue')}}</radio> <radio-group class="radio-set-value" @change="radioChange(item.key, $event as RadioGroupChangeEvent)">
<text class="split-h"></text> <radio :value="item.value.getString('oldValue')">{{item.value.getString('oldValue')}}</radio>
<radio :value="getStyleValue(key).getString('newValue')">{{getStyleValue(key).getString('newValue')}}</radio> <text class="split-h"></text>
</radio-group> <radio :value="item.value.getString('newValue')">{{item.value.getString('newValue')}}</radio>
</view> </radio-group>
</view> </view>
<!-- #ifdef APP --> </view>
</scroll-view> </template>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif --> <!-- #endif -->
</template> </template>
<script> <script>
import { PageStyleItem, PageStyleMap } from './page-style.uts'; import { PageStyleItem, PageStyleArray } from './page-style.uts';
class Page { class Page {
constructor(public route : string) { constructor(public route : string) {
...@@ -53,8 +55,8 @@ ...@@ -53,8 +55,8 @@
data() { data() {
return { return {
checked: false, checked: false,
pages: [] as Page[], pages: [] as Page[],
PageStyleMap: PageStyleMap as Map<string, PageStyleItem>, PageStyleArray: PageStyleArray as PageStyleItem[],
currentPageStyle: {} as UTSJSONObject, currentPageStyle: {} as UTSJSONObject,
} }
}, },
...@@ -62,18 +64,18 @@ ...@@ -62,18 +64,18 @@
pageStyleText() : string { pageStyleText() : string {
return JSON.stringify(this.currentPageStyle) return JSON.stringify(this.currentPageStyle)
} }
}, },
onLoad() { onLoad() {
this.getPageStyle(); this.getPageStyle();
}, },
onPullDownRefresh() { onPullDownRefresh() {
setTimeout(() => { setTimeout(() => {
uni.stopPullDownRefresh() uni.stopPullDownRefresh()
}, 2000) }, 2000)
}, },
methods: { methods: {
startPullDownRefresh() { startPullDownRefresh() {
uni.startPullDownRefresh() uni.startPullDownRefresh()
}, },
_getCurrentPages: function () { _getCurrentPages: function () {
this.pages.length = 0 this.pages.length = 0
...@@ -88,40 +90,34 @@ ...@@ -88,40 +90,34 @@
this.checked = false this.checked = false
} }
} }
}, },
/// get-set-page-style /// get-set-page-style
radioChange(key : string, e : RadioGroupChangeEvent) { radioChange(key : string, e : RadioGroupChangeEvent) {
this.setStyleValue(key, e.detail.value); this.setStyleValue(key, e.detail.value);
}, },
sliderChange(key : string, e : UniSliderChangeEvent) { sliderChange(key : string, e : UniSliderChangeEvent) {
this.setStyleValue(key, e.detail.value); this.setStyleValue(key, e.detail.value);
}, },
switchChange(key : string, e : UniSwitchChangeEvent) { switchChange(key : string, e : UniSwitchChangeEvent) {
this.setStyleValue(key, e.detail.value); this.setStyleValue(key, e.detail.value);
}, },
setStyleValue(key : string, value : any) { setStyleValue(key : string, value : any) {
const style = {} const style = {}
style[key] = value style[key] = value
this.setPageStyle(style) this.setPageStyle(style)
this.getPageStyle() this.getPageStyle()
}, },
getStyleValue(key : string) : UTSJSONObject { getPageStyle() : UTSJSONObject {
if (PageStyleMap.has(key)) const pages = getCurrentPages();
return PageStyleMap.get(key)!.value; const currentPage = pages[pages.length - 1];
else this.currentPageStyle = currentPage.$getPageStyle()
return {} return this.currentPageStyle;
}, },
getPageStyle() : UTSJSONObject { setPageStyle(style : UTSJSONObject) {
const pages = getCurrentPages(); console.log('setPageStyle:', style);
const currentPage = pages[pages.length - 1]; const pages = getCurrentPages();
this.currentPageStyle = currentPage.$getPageStyle() const currentPage = pages[pages.length - 1];
return this.currentPageStyle; currentPage.$setPageStyle(style);
},
setPageStyle(style : UTSJSONObject) {
console.log('setPageStyle:', style);
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
currentPage.$setPageStyle(style);
}, },
// getCurrentPage(): Page { // getCurrentPage(): Page {
// const pages = getCurrentPages(); // const pages = getCurrentPages();
...@@ -133,43 +129,43 @@ ...@@ -133,43 +129,43 @@
</script> </script>
<style> <style>
.page { .page {
flex: 1; flex: 1;
padding: 10px; padding: 10px;
} }
.page-style { .page-style {
margin-top: 15px; margin-top: 15px;
}
.page-style-item {
padding: 10px;
margin-top: 10px;
background-color: #ffffff;
border-radius: 5px;
}
.item-text {
flex-direction: row;
}
.item-text-key {
font-weight: bold;
}
.item-text-value {
margin-left: 32px;
}
.set-value {
margin-top: 10px;
} }
.page-style-item { .radio-set-value {
padding: 10px; flex-direction: row;
margin-top: 10px; }
background-color: #ffffff;
border-radius: 5px; .split-h {
} width: 15px;
.item-text {
flex-direction: row;
}
.item-text-key {
font-weight: bold;
}
.item-text-value {
margin-left: 32px;
}
.set-value {
margin-top: 10px;
}
.radio-set-value {
flex-direction: row;
}
.split-h {
width: 15px;
} }
</style> </style>
export type PageStyleItem = { export type PageStyleItem = {
key : string
type : string type : string
value : UTSJSONObject value : UTSJSONObject
} }
export const PageStyleMap = new Map<string, PageStyleItem>([ export const PageStyleArray = [
["navigationBarBackgroundColor", { {
key: "navigationBarBackgroundColor",
type: "string", type: "string",
value: { value: {
oldValue: "#F8F8F8", oldValue: "#F8F8F8",
newValue: "#F0F0F0", newValue: "#F0F0F0",
} }
} as PageStyleItem], },
["navigationBarTextStyle", { {
key: "navigationBarTextStyle",
type: "string", type: "string",
value: { value: {
oldValue: "white", oldValue: "white",
newValue: "black", newValue: "black",
} }
} as PageStyleItem], },
["navigationBarTitleText", { {
key: "navigationBarTitleText",
type: "string", type: "string",
value: { value: {
oldValue: "old title", oldValue: "old title",
newValue: "new title", newValue: "new title",
} }
} as PageStyleItem], },
["navigationStyle", { {
key: "navigationStyle",
type: "string", type: "string",
value: { value: {
oldValue: "default", oldValue: "default",
newValue: "custom", newValue: "custom",
} }
} as PageStyleItem], },
["backgroundColor", { {
key: "backgroundColor",
type: "string", type: "string",
value: { value: {
oldValue: "#ffffff", oldValue: "#ffffff",
newValue: "#000000", newValue: "#000000",
} }
} as PageStyleItem], },
["backgroundColorContent", { {
key: "backgroundColorContent",
type: "string", type: "string",
value: { value: {
oldValue: "#ffffff", oldValue: "#ffffff",
newValue: "#000000", newValue: "#000000",
} }
} as PageStyleItem], },
["backgroundTextStyle", { {
key: "backgroundTextStyle",
type: "string", type: "string",
value: { value: {
oldValue: "dark", oldValue: "dark",
newValue: "light", newValue: "light",
} }
} as PageStyleItem], },
["enablePullDownRefresh", { {
key: "enablePullDownRefresh",
type: "boolean", type: "boolean",
value: { value: {
oldValue: true, oldValue: true,
newValue: false, newValue: false,
} }
} as PageStyleItem], },
["onReachBottomDistance", { {
key: "onReachBottomDistance",
type: "number", type: "number",
value: { value: {
oldValue: 50, oldValue: 50,
newValue: 100, newValue: 100,
} }
} as PageStyleItem], },
["pageOrientation", { {
key: "pageOrientation",
type: "string", type: "string",
value: { value: {
oldValue: "auto", oldValue: "auto",
newValue: "portrait", newValue: "portrait",
} }
} as PageStyleItem], },
["backgroundColorTop", { {
key: "backgroundColorTop",
type: "string", type: "string",
value: { value: {
oldValue: "#ffffff", oldValue: "#ffffff",
newValue: "#000000", newValue: "#000000",
} }
} as PageStyleItem], },
["backgroundColorBottom", { {
key: "backgroundColorBottom",
type: "string", type: "string",
value: { value: {
oldValue: "#ffffff", oldValue: "#ffffff",
newValue: "#000000", newValue: "#000000",
} }
} as PageStyleItem], },
["navigationBarAutoBackButton", { {
key: "navigationBarAutoBackButton",
type: "boolean", type: "boolean",
value: { value: {
oldValue: true, oldValue: true,
newValue: false, newValue: false,
} }
} as PageStyleItem], }] as PageStyleItem[]
])
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册