* Copyright (c) 2023-2025 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.
*/
if (!('finalizeConstruction' in ViewPU.prototype)) {
Reflect.set(ViewPU.prototype, 'finalizeConstruction', () => {
});
}
const LengthMetrics = requireNapi('arkui.node').LengthMetrics;
const o19 = 4;
const p19 = 8;
const q19 = 24;
const r19 = 48;
const s19 = 48;
export class SplitLayout extends ViewPU {
constructor(parent, params, __localStorage, elmtId = -1, paramsLambda = undefined, extraInfo) {
super(parent, __localStorage, elmtId, extraInfo);
if (typeof paramsLambda === 'function') {
this.paramsGenerator_ = paramsLambda;
}
this.container = undefined;
this.__sizeValue = new ObservedPropertySimplePU('', this, 'sizeValue');
this.__areaWidth = new ObservedPropertySimplePU(0, this, 'areaWidth');
this.__imageBackgroundColor = new ObservedPropertySimplePU('#19000000', this, 'imageBackgroundColor');
this.__mainImage = new ObservedPropertyObjectPU(undefined, this, 'mainImage');
this.__primaryText = new SynchedPropertySimpleOneWayPU(params.primaryText, this, 'primaryText');
this.secondaryText = '';
this.tertiaryText = '';
this.setInitiallyProvidedValue(params);
this.finalizeConstruction();
}
setInitiallyProvidedValue(params) {
if (params.container !== undefined) {
this.container = params.container;
}
if (params.sizeValue !== undefined) {
this.sizeValue = params.sizeValue;
}
if (params.areaWidth !== undefined) {
this.areaWidth = params.areaWidth;
}
if (params.imageBackgroundColor !== undefined) {
this.imageBackgroundColor = params.imageBackgroundColor;
}
if (params.mainImage !== undefined) {
this.mainImage = params.mainImage;
}
if (params.primaryText === undefined) {
this.__primaryText.set('');
}
if (params.secondaryText !== undefined) {
this.secondaryText = params.secondaryText;
}
if (params.tertiaryText !== undefined) {
this.tertiaryText = params.tertiaryText;
}
}
updateStateVars(params) {
this.__primaryText.reset(params.primaryText);
}
purgeVariableDependenciesOnElmtId(rmElmtId) {
this.__sizeValue.purgeDependencyOnElmtId(rmElmtId);
this.__areaWidth.purgeDependencyOnElmtId(rmElmtId);
this.__imageBackgroundColor.purgeDependencyOnElmtId(rmElmtId);
this.__mainImage.purgeDependencyOnElmtId(rmElmtId);
this.__primaryText.purgeDependencyOnElmtId(rmElmtId);
}
aboutToBeDeleted() {
this.__sizeValue.aboutToBeDeleted();
this.__areaWidth.aboutToBeDeleted();
this.__imageBackgroundColor.aboutToBeDeleted();
this.__mainImage.aboutToBeDeleted();
this.__primaryText.aboutToBeDeleted();
SubscriberManager.Get().delete(this.id__());
this.aboutToBeDeletedInternal();
}
get sizeValue() {
return this.__sizeValue.get();
}
set sizeValue(newValue) {
this.__sizeValue.set(newValue);
}
get areaWidth() {
return this.__areaWidth.get();
}
set areaWidth(newValue) {
this.__areaWidth.set(newValue);
}
get imageBackgroundColor() {
return this.__imageBackgroundColor.get();
}
set imageBackgroundColor(newValue) {
this.__imageBackgroundColor.set(newValue);
}
get mainImage() {
return this.__mainImage.get();
}
set mainImage(newValue) {
this.__mainImage.set(newValue);
}
get primaryText() {
return this.__primaryText.get();
}
set primaryText(newValue) {
this.__primaryText.set(newValue);
}
initialRender() {
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
Column.onAreaChange((oldValue, newValue) => {
console.info(`Ace: on area change, oldValue is ${JSON.stringify(oldValue)} value is ${JSON.stringify(newValue)}`);
this.sizeValue = JSON.stringify(newValue);
this.areaWidth = parseInt(newValue.width.toString(), 0);
console.info(`pingAce: on area change, oldValue is` + this.areaWidth);
console.info(`pingAce: on area change, oldValue is` + parseInt(newValue.height.toString(), 0));
});
}, Column);
this.observeComponentCreation2((elmtId, isInitialRender) => {
If.create();
if (this.areaWidth <= 600) {
this.ifElseBranchUpdateFunction(0, () => {
this.observeComponentCreation2((elmtId, isInitialRender) => {
GridRow.create({
columns: 4,
breakpoints: {
reference: BreakpointsReference.WindowSize
},
direction: GridRowDirection.Row
});
}, GridRow);
this.observeComponentCreation2((elmtId, isInitialRender) => {
GridCol.create({
span: {
xs: 4,
sm: 4,
md: 4,
lg: 4
}
});
}, GridCol);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
}, Column);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Stack.create({ alignContent: Alignment.Bottom });
Stack.height('34%');
Stack.width('100%');
}, Stack);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Image.create(this.mainImage);
Image.height('100%');
Image.width('100%');
}, Image);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Scroll.create();
Scroll.scrollBar(BarState.On);
Scroll.nestedScroll({
scrollForward: NestedScrollMode.SELF_FIRST,
scrollBackward: NestedScrollMode.SELF_FIRST,
});
}, Scroll);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
Column.alignItems(HorizontalAlign.Center);
Column.margin({
left: {
'id': -1,
'type': 10002,
params: ['sys.float.ohos_id_max_padding_start'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
},
right: {
'id': -1,
'type': 10002,
params: ['sys.float.ohos_id_max_padding_end'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
},
});
}, Column);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.primaryText);
Text.fontWeight(FontWeight.Medium);
Text.textAlign(TextAlign.Center);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Title_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_primary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
}, Text);
Text.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.secondaryText);
Text.textAlign(TextAlign.Center);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Body_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_primary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.margin({ top: o19, bottom: p19 });
}, Text);
Text.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.tertiaryText);
Text.textAlign(TextAlign.Center);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Caption_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_secondary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.margin({ bottom: q19 });
}, Text);
Text.pop();
Column.pop();
Scroll.pop();
Stack.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
Column.height('66%');
Column.width('100%');
}, Column);
this.container.bind(this)();
Column.pop();
Column.pop();
GridCol.pop();
GridRow.pop();
});
} else if (600 < this.areaWidth && this.areaWidth <= 840) {
this.ifElseBranchUpdateFunction(1, () => {
this.observeComponentCreation2((elmtId, isInitialRender) => {
GridRow.create({
columns: 8,
breakpoints: {
reference: BreakpointsReference.WindowSize
},
direction: GridRowDirection.Row
});
}, GridRow);
this.observeComponentCreation2((elmtId, isInitialRender) => {
GridCol.create({
span: {
xs: 8,
sm: 8,
md: 8,
lg: 8
}
});
}, GridCol);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
}, Column);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Row.create();
Row.backgroundColor(this.imageBackgroundColor);
Row.height('34%');
Row.width('100%');
}, Row);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Image.create(this.mainImage);
Image.margin({ start: LengthMetrics.vp(96), end: LengthMetrics.vp(36) });
Image.height('60%');
Image.width('20%');
}, Image);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Scroll.create();
Scroll.scrollBar(BarState.On);
Scroll.nestedScroll({
scrollForward: NestedScrollMode.SELF_FIRST,
scrollBackward: NestedScrollMode.SELF_FIRST,
});
}, Scroll);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
Column.width('42%');
Column.alignItems(HorizontalAlign.Start);
Column.margin({ end: LengthMetrics.vp(96) });
}, Column);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.primaryText);
Text.fontWeight(FontWeight.Medium);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Title_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_primary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
}, Text);
Text.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.secondaryText);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Body_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_primary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.margin({ top: o19, bottom: p19 });
}, Text);
Text.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.tertiaryText);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Caption_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_secondary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.margin({ bottom: q19 });
}, Text);
Text.pop();
Column.pop();
Scroll.pop();
Row.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
Column.width('100%');
Column.height('66%');
}, Column);
this.container.bind(this)();
Column.pop();
Column.pop();
GridCol.pop();
GridRow.pop();
});
} else if (this.areaWidth > 840) {
this.ifElseBranchUpdateFunction(2, () => {
this.observeComponentCreation2((elmtId, isInitialRender) => {
GridRow.create({
columns: 12,
breakpoints: {
reference: BreakpointsReference.WindowSize
},
direction: GridRowDirection.Row
});
GridRow.width('100%');
}, GridRow);
this.observeComponentCreation2((elmtId, isInitialRender) => {
GridCol.create({
span: {
xs: 4,
sm: 4,
md: 4,
lg: 4
}
});
GridCol.height('100%');
}, GridCol);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Flex.create({
justifyContent: FlexAlign.Center,
alignItems: ItemAlign.Center,
direction: FlexDirection.Column
});
Flex.width('100%');
Flex.height('100%');
Flex.backgroundColor(this.imageBackgroundColor);
}, Flex);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Image.create(this.mainImage);
Image.height('17%');
Image.width('34%');
Image.margin({ bottom: 36 });
}, Image);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Scroll.create();
Scroll.scrollBar(BarState.On);
Scroll.nestedScroll({
scrollForward: NestedScrollMode.SELF_FIRST,
scrollBackward: NestedScrollMode.SELF_FIRST,
});
}, Scroll);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Column.create();
Column.alignItems(HorizontalAlign.Center);
Column.margin({
left: {
'id': -1,
'type': 10002,
params: ['sys.float.ohos_id_max_padding_start'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
},
right: {
'id': -1,
'type': 10002,
params: ['sys.float.ohos_id_max_padding_end'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
},
});
}, Column);
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.primaryText);
Text.textAlign(TextAlign.Center);
Text.fontWeight(FontWeight.Medium);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Title_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_primary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.margin({ left: r19, right: s19 });
}, Text);
Text.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.secondaryText);
Text.textAlign(TextAlign.Center);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Body_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_primary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.margin({
top: o19,
bottom: p19,
left: r19,
right: s19
});
}, Text);
Text.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
Text.create(this.tertiaryText);
Text.textAlign(TextAlign.Center);
Text.fontSize({
'id': -1,
'type': 10002,
params: ['sys.float.Caption_M'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.fontColor({
'id': -1,
'type': 10001,
params: ['sys.color.ohos_id_color_text_secondary'],
'bundleName': '__harDefaultBundleName__',
'moduleName': '__harDefaultModuleName__'
});
Text.margin({ left: r19, right: s19, bottom: q19 });
}, Text);
Text.pop();
Column.pop();
Scroll.pop();
Flex.pop();
GridCol.pop();
this.observeComponentCreation2((elmtId, isInitialRender) => {
GridCol.create({
span: {
xs: 8,
sm: 8,
md: 8,
lg: 8
}
});
}, GridCol);
this.container.bind(this)();
GridCol.pop();
GridRow.pop();
});
} else {
this.ifElseBranchUpdateFunction(3, () => {
});
}
}, If);
If.pop();
Column.pop();
}
rerender() {
this.updateDirtyElements();
}
}
export default { SplitLayout };