1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "core/components_v2/inspector/grid_row_composed_element.h"
17
18 #include "base/log/dump_log.h"
19 #include "core/components_v2/grid_layout/grid_container_utils.h"
20 #include "core/components_v2/grid_layout/render_grid_row.h"
21 #include "core/components_v2/inspector/utils.h"
22
23 namespace OHOS::Ace::V2 {
24 namespace {
25
26 const std::unordered_map<std::string,
27 std::function<std::unique_ptr<JsonValue>(const GridRowComposedElement&)>> CREATE_JSON_MAP {
__anonf832ac990202(const GridRowComposedElement& inspector) 28 { "constructor", [](const GridRowComposedElement& inspector) { return inspector.GetConstructor(); } }
29 };
30
31 } // namespace
32
Dump()33 void GridRowComposedElement::Dump()
34 {
35 InspectorComposedElement::Dump();
36 DumpLog::GetInstance().AddDesc(
37 std::string("gutter: ").append(GetGridRowGutter()));
38 DumpLog::GetInstance().AddDesc(
39 std::string("columns: ").append(GetGridRowColumns()));
40 DumpLog::GetInstance().AddDesc(
41 std::string("breakpoints: ").append(GetGridRowBreakpoints()));
42 DumpLog::GetInstance().AddDesc(
43 std::string("direction: ").append(GetGridRowDirection()));
44 }
45
ToJsonObject() const46 std::unique_ptr<JsonValue> GridRowComposedElement::ToJsonObject() const
47 {
48 auto resultJson = InspectorComposedElement::ToJsonObject();
49 for (const auto& value : CREATE_JSON_MAP) {
50 resultJson->Put(value.first.c_str(), value.second(*this));
51 }
52 return resultJson;
53 }
54
GetConstructor() const55 std::unique_ptr<JsonValue> GridRowComposedElement::GetConstructor() const
56 {
57 auto jsonValue = JsonUtil::Create(true);
58 jsonValue->Put("gutter", GetGridRowGutter().c_str());
59 jsonValue->Put("columns", GetGridRowColumns().c_str());
60 jsonValue->Put("breakpoints", GetGridRowBreakpoints().c_str());
61 jsonValue->Put("direction", GetGridRowDirection().c_str());
62 return jsonValue;
63 }
64
65
GetGridRowSizeType() const66 std::string GridRowComposedElement::GetGridRowSizeType() const
67 {
68 auto renderNode = GetInspectorNode(GridRowElement::TypeId());
69 if (!renderNode) {
70 return "-";
71 }
72 auto renderGridRow = AceType::DynamicCast<RenderGridRow>(renderNode);
73 if (!renderGridRow) {
74 return "-";
75 }
76 auto sizeType = renderGridRow->GetCurrentSizeType();
77 switch (sizeType) {
78 case GridSizeType::UNDEFINED:
79 return std::string("SizeType.Auto");
80 case GridSizeType::XS:
81 return std::string("SizeType.XS");
82 case GridSizeType::SM:
83 return std::string("SizeType.SM");
84 case GridSizeType::MD:
85 return std::string("SizeType.MD");
86 case GridSizeType::LG:
87 return std::string("SizeType.LG");
88 default:
89 break;
90 }
91
92 return std::string("SizeType.Auto");
93 }
94
GetGridRowDirection() const95 std::string GridRowComposedElement::GetGridRowDirection() const
96 {
97 auto renderNode = GetInspectorNode(GridRowElement::TypeId());
98 if (!renderNode) {
99 return "-";
100 }
101 auto renderGridRow = AceType::DynamicCast<RenderGridRow>(renderNode);
102 if (!renderGridRow) {
103 return "-";
104 }
105 auto direction = renderGridRow->GetDirection();
106 switch (direction) {
107 case GridRowDirection::Row:
108 return "Row";
109 case GridRowDirection::RowReverse:
110 return "RowReverse";
111 default:
112 break;
113 }
114 return "Unknown";
115 }
116
GetGridRowBreakpoints() const117 std::string GridRowComposedElement::GetGridRowBreakpoints() const
118 {
119 auto renderNode = GetInspectorNode(GridRowElement::TypeId());
120 if (!renderNode) {
121 return "[]";
122 }
123 auto renderGridRow = AceType::DynamicCast<RenderGridRow>(renderNode);
124 if (!renderGridRow) {
125 return "[]";
126 }
127 auto breakpointPtr = renderGridRow->GetBreakPoints();
128 if (!breakpointPtr) {
129 return "[";
130 }
131 std::string result = "[";
132 for (auto& breakpoint : breakpointPtr->breakpoints) {
133 result.append(breakpoint);
134 result.append(", ");
135 }
136 if (result.size() > 1) {
137 result = result.substr(0, static_cast<int32_t>(result.size()) - 1).append("]");
138 } else {
139 result = result.append("]");
140 }
141 return result;
142 }
143
GetGridRowColumns() const144 std::string GridRowComposedElement::GetGridRowColumns() const
145 {
146 auto renderNode = GetInspectorNode(GridRowElement::TypeId());
147 if (!renderNode) {
148 return "-";
149 }
150 auto renderGridRow = AceType::DynamicCast<RenderGridRow>(renderNode);
151 if (!renderGridRow) {
152 return "-";
153 }
154 auto totalColumn = renderGridRow->GetTotalCol();
155 return std::to_string(totalColumn);
156 }
157
GetGridRowGutter() const158 std::string GridRowComposedElement::GetGridRowGutter() const
159 {
160 auto renderNode = GetInspectorNode(GridRowElement::TypeId());
161 if (!renderNode) {
162 return "-";
163 }
164 auto renderGridRow = AceType::DynamicCast<RenderGridRow>(renderNode);
165 if (!renderGridRow) {
166 return "-";
167 }
168 auto gutter = renderGridRow->GetGutter();
169 std::string result = "<";
170 result.append(std::to_string(gutter.first));
171 result.append(", ");
172 result.append(std::to_string(gutter.second));
173 result.append(">");
174 return result;
175 }
176
GetRenderElement() const177 RefPtr<Element> GridRowComposedElement::GetRenderElement() const
178 {
179 return GetContentElement<GridRowElement>(GridRowElement::TypeId());
180 }
181
182 } // namespace OHOS::Ace::V2