a03158ab创建于 2024年4月13日历史提交
/*
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 * Licensed 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.
 */

import web_webview from '@ohos.web.webview';
import baseData from '../../common/baseData'
import logger from '../../common/logger'
import returnInfo from '../component/autoManager/returnInfo'
import utils from '../../common/utils'

const TAG = 'UnitManagerShowPage';

@Entry
@Component
struct UnitManagerShowPage {
  @StorageLink('manageUrl') manageUrl: string = AppStorage.Get('manageUrl') as string;
  webviewController: web_webview.WebviewController = new web_webview.WebviewController();

  build() {
    Column() {
      GridContainer({
        columns: utils.isLargeDevice(),
        sizeType: SizeType.Auto,
        gutter: '12vp',
        margin: '12vp'
      }) {
        Column() {
          returnInfo({ headName: $r('app.string.manageInfo') })
        }
        .useSizeType({
          xs: { span: 8, offset: 0 }, sm: { span: 8, offset: 0 },
          md: { span: 8, offset: 0 }, lg: { span: 12, offset: 0 }
        })
      }

      GridContainer({
        columns: utils.isLargeDevice(),
        sizeType: SizeType.Auto,
        gutter: '12vp',
        margin: '12vp'
      }) {
        Column() {
          Web({ src: this.manageUrl, controller: this.webviewController })
            .cacheMode(CacheMode.Online)
            .fileAccess(false)
            .javaScriptAccess(false)
            .onErrorReceive((event?: ErrorReceiveEvent) => {
              logger.warn(TAG, 'error code=' + event?.error.getErrorCode() + ', error info=' +
              event?.error.getErrorInfo())
            })
            .onHttpErrorReceive((event?: HttpErrorReceiveEvent) => {
              logger.warn(TAG, 'response code=' + event?.response.getResponseCode() + ', response message=' +
              event?.response.getReasonMessage())
            })
            .onRenderExited((event?: RenderExitedEvent) => {
              logger.warn(TAG, 'renderExitReason=' + event?.renderExitReason);
            })
            .useSizeType({
              xs: { span: 4, offset: 2 }, sm: { span: 4, offset: 2 },
              md: { span: 4, offset: 2 }, lg: { span: 4, offset: 2 }
            })
        }
        .useSizeType({
          xs: { span: 8, offset: 0 }, sm: { span: 8, offset: 0 },
          md: { span: 8, offset: 0 }, lg: { span: 8, offset: 2 }
        })
      }
    }
    .backgroundColor(0xF1F3F5)
    .alignItems(HorizontalAlign.Center)
    .width('100%')
    .height('100%')
  }

  aboutToAppear() {
    logger.info(TAG, 'enter UnitManagerShowPage')
    if (!this.manageUrl.startsWith(baseData.HTTPS)) {
      this.manageUrl = '';
    }
  }
}

interface ErrorReceiveEvent {
  request: WebResourceRequest,
  error: WebResourceError
}

interface HttpErrorReceiveEvent {
  request: WebResourceRequest,
  response: WebResourceResponse
}

interface RenderExitedEvent {
  renderExitReason: RenderExitReason
}