From c19b241f4616f669164c30c769c54a281bfdf302 Mon Sep 17 00:00:00 2001 From: "zxs.zl" Date: Wed, 23 Jun 2021 10:05:57 +0800 Subject: [PATCH] =?UTF-8?q?0.2.3=20ZLRouter=20=E9=BB=98=E8=AE=A4=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=87=AA=E8=BA=AB=E5=9D=90=E6=A0=87=E6=9D=A5=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=8E=A8=E5=85=A5=E7=9A=84=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=9D=90=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/zlkit/zlview/ZLRouter.ts | 54 +++++++------------- src/zlkit/zlview/ZLUIDef.ts | 20 ++++++-- src/zlkit/zlview/ZLViewPage.ts | 92 ++++++++++++++++++++++++++++------ 3 files changed, 110 insertions(+), 56 deletions(-) diff --git a/src/zlkit/zlview/ZLRouter.ts b/src/zlkit/zlview/ZLRouter.ts index d84d9c4..16df2b8 100644 --- a/src/zlkit/zlview/ZLRouter.ts +++ b/src/zlkit/zlview/ZLRouter.ts @@ -6,7 +6,7 @@ import { BrowserRouter,HashRouter, Switch } from 'react-router-dom' -import {ZLViewPage, ZLViewPageClass} from './ZLViewPage' +import {ZLViewPage, ZLViewPageClass, ZLViewPageInitParas} from './ZLViewPage' import * as History from 'history'; import { ZLPoint, ZLRect, ZLSize } from './ZLUIDef'; @@ -74,54 +74,35 @@ function ZLRouteRenderFunction( p:any ) return page.reactElement(); } +interface ZLRouterInitParas extends ZLViewPageInitParas +{ + /** 路由匹配的根路径,默认 "/" */ + rootPath? : string; + /** 是否使用HashRouter。默认不使用 */ + useHashRouter? : boolean; +} + export class ZLRouter extends ZLViewPage { /** * 构造函数 */ - constructor(paras?:{ - /** 路由匹配的根路径,默认 "/" */ - rootPath? : string; - /** 打开新页面时的默认大小 */ - pageSize? : ZLSize, - /** 打开新页面时的默认x,y */ - pageOrigin? : ZLPoint, - /** 是否使用HashRouter。默认不使用 */ - useHashRouter? : boolean}) + constructor(paras?:ZLRouterInitParas) { - let pageSize = ZLSize.getWindowContentSize(); - let pageOrigin = ZLPoint.Zero; + super(paras); let rootPath = "/"; let useHashRouter = false; - if (arguments.length > 0 && typeof arguments[0] === "string") - { - rootPath = arguments[0]; - if (arguments.length > 1) { - pageSize = arguments[1]; - } - if (arguments.length > 2) { - useHashRouter = arguments[2]; - } - } - else if (paras) + if (paras) { if (paras.rootPath) { rootPath = paras.rootPath; } - if (paras.pageSize) { - pageSize = paras.pageSize; - } - if (paras.pageOrigin) { - pageOrigin = paras.pageOrigin; - } if (paras.useHashRouter) { useHashRouter = paras.useHashRouter; } } - super({pageSize:pageSize,pageOrigin:pageOrigin}); - if (rootPath === undefined || rootPath.length === 0) { this.__zl_router_rootPath__ = "/"; } @@ -140,10 +121,6 @@ export class ZLRouter extends ZLViewPage this.__zl_router_pathPages__ = new Map(); let v = new ZLRouterWrapperView(this); - v.width = pageSize.width; - v.height = pageSize.height; - v.x = pageOrigin.x; - v.y = pageOrigin.y; this.__zl_router_wrapperView__ = v; } /** @@ -325,7 +302,12 @@ export class ZLRouter extends ZLViewPage protected loadView(pageRect:ZLRect) : ZLView { - return this.__zl_router_wrapperView__; + let v = this.__zl_router_wrapperView__; + v.x = pageRect.x; + v.y = pageRect.y; + v.width = pageRect.width; + v.height = pageRect.height; + return v; } // /** diff --git a/src/zlkit/zlview/ZLUIDef.ts b/src/zlkit/zlview/ZLUIDef.ts index 620d3e4..a39f522 100644 --- a/src/zlkit/zlview/ZLUIDef.ts +++ b/src/zlkit/zlview/ZLUIDef.ts @@ -41,12 +41,24 @@ export class ZLSize public static getWindowContentSize() { - let sz = new ZLSize(window.document.body.clientWidth,window.innerHeight) + let sz = new ZLSize(this.getWindowContentWidth(),this.getWindowContentHeight()); + return sz; + } + public static getWindowContentWidth() + { + let w = window.document.body.clientWidth; if (ZLCurrentSizeUnit !== ZLSizeUnit.px) { - sz.width /= ZLCurrentSizeUnitOneRemToPx; - sz.height /= ZLCurrentSizeUnitOneRemToPx; + w /= ZLCurrentSizeUnitOneRemToPx; } - return sz; + return w; + } + public static getWindowContentHeight() + { + let h = window.innerHeight; + if (ZLCurrentSizeUnit !== ZLSizeUnit.px) { + h /= ZLCurrentSizeUnitOneRemToPx; + } + return h; } } diff --git a/src/zlkit/zlview/ZLViewPage.ts b/src/zlkit/zlview/ZLViewPage.ts index 0e66d88..164b30a 100644 --- a/src/zlkit/zlview/ZLViewPage.ts +++ b/src/zlkit/zlview/ZLViewPage.ts @@ -4,30 +4,90 @@ import { ZLPoint, ZLRect, ZLSize } from './ZLUIDef'; import { ZLRouter } from './ZLRouter'; import {ZLObject} from './ZLObject' -export type ZLViewPageClass = new (paras? : {pageSize?: ZLSize, pageOrigin?:ZLPoint}) => ZLViewPage + +export interface ZLViewPageInitParas +{ + /** 页面坐标*/ + x?: number; + /** 页面坐标*/ + y?: number; + /** 页面坐标*/ + width?:number; + /** 页面坐标*/ + height?:number; + + /** 页面坐标 优先使用x-y-width-height*/ + pageSize?:ZLSize; + /** 页面坐标 优先使用x-y-width-height*/ + pageOrigin?:ZLPoint; +} + +export type ZLViewPageClass = new (paras? : ZLViewPageInitParas) => ZLViewPage export class ZLViewPage extends ZLObject { /** * 构造函数 */ - constructor(paras? : {pageSize?: ZLSize, pageOrigin?:ZLPoint}) + constructor(paras? : ZLViewPageInitParas ) { super(); - if (paras) + if (paras instanceof ZLSize) { + this.__zl_defaultRect__ = new ZLRect(0,0,(paras as ZLSize).width,(paras as ZLSize).height); + } + else { - if (paras instanceof ZLSize) { - this.__zl_defaultRect__ = new ZLRect(0,0,(paras as ZLSize).width,(paras as ZLSize).height); - } else { - let sz = paras.pageSize; - let origin = paras.pageOrigin; - if (sz === undefined) { - sz = ZLSize.getWindowContentSize(); - } - if (origin === undefined) { - origin = ZLPoint.Zero; + let x : number | undefined = undefined; + let y : number | undefined = undefined; + let w : number | undefined = undefined; + let h : number | undefined = undefined; + let sz : ZLSize | undefined = undefined; + let origin : ZLPoint | undefined = undefined; + if (paras) { + x = paras.x; + y = paras.y; + w = paras.width; + h = paras.height; + sz = paras.pageSize; + origin = paras.pageOrigin; + } + if (origin !== undefined) + { + if (x === undefined ) { + x = origin.x + } + if (y === undefined ) { + y = origin.y + } + } + else + { + if (x === undefined){ + x = 0; + } + if (x === undefined){ + y = 0; + } + } + + if (sz !== undefined) + { + if (w === undefined ) { + w = sz.width + } + if (h === undefined ) { + h = sz.height + } + } + else + { + if (w === undefined){ + w = ZLSize.getWindowContentWidth(); + } + if (h === undefined){ + h = ZLSize.getWindowContentHeight(); } - this.__zl_defaultRect__ = new ZLRect(origin.x,origin.y,sz.width,sz.height); } + this.__zl_defaultRect__ = new ZLRect(x,y,w,h); } } @@ -47,7 +107,7 @@ export class ZLViewPage extends ZLObject /** * 创建视图,子类可重写 */ - protected loadView( pageRect?: ZLRect ): ZLView + protected loadView( pageRect: ZLRect ): ZLView { let v = new ZLView(); if (pageRect !== undefined ) @@ -103,7 +163,7 @@ export class ZLViewPage extends ZLObject /** * 默认尺寸 */ - private __zl_defaultRect__? : ZLRect; + private __zl_defaultRect__ : ZLRect; /** * 视图 */