Skip to content

Commit 8249d6c

Browse files
authored
Merge pull request linode#26 from linode/development
Release RequestBody ordering
2 parents 7b66701 + 9ba42b6 commit 8249d6c

File tree

1 file changed

+75
-53
lines changed

1 file changed

+75
-53
lines changed

src/components/2_molecules/BodySchema.js

Lines changed: 75 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -14,65 +14,87 @@ export const BodySchema = props => {
1414
{data.requestBody.content.application_json &&
1515
data.requestBody.content.application_json.schema &&
1616
data.requestBody.content.application_json.schema.properties &&
17-
Object.keys(
18-
data.requestBody.content.application_json.schema.properties
19-
).map((p, i) => {
20-
const b =
21-
data.requestBody.content.application_json.schema.properties[p];
22-
return (
23-
b &&
24-
b.readOnly !== true && (
25-
<div key={i} className="response-wrapper">
26-
<div className="lg:flex mb-4 pt-2 initResponse">
27-
<div className="w-full lg:w-1/4">
28-
<div>
29-
<b className={b.deprecated && "line-through"}>{p}</b>
30-
</div>
31-
<div className="leading-xs">
32-
{data.requestBody.content.application_json.schema
33-
.required &&
34-
data.requestBody.content.application_json.schema.required.map(
35-
(req, i) => {
36-
if (p === req) {
37-
return (
38-
<span className="text-BaseRed text-sm" key={i}>
39-
Required
40-
</span>
41-
);
42-
}
43-
return false;
44-
}
45-
)}
46-
</div>
47-
{b.x_linode_filterable && (
17+
Object.keys(data.requestBody.content.application_json.schema.properties)
18+
.sort((a, b) => {
19+
const required =
20+
data.requestBody.content.application_json.schema.required || [];
21+
const r1 = required.includes(a) ? 1 : 0;
22+
const r2 = required.includes(b) ? 1 : 0;
23+
// sorting and adding required fields at the top
24+
if (r1 > r2) {
25+
return -1;
26+
}
27+
if (r1 < r2) {
28+
return 1;
29+
}
30+
if (a > b) {
31+
return 1;
32+
}
33+
if (a < b) {
34+
return -1;
35+
}
36+
return 0;
37+
})
38+
.map((p, i) => {
39+
const b =
40+
data.requestBody.content.application_json.schema.properties[p];
41+
return (
42+
b &&
43+
b.readOnly !== true && (
44+
<div key={i} className="response-wrapper">
45+
<div className="lg:flex mb-4 pt-2 initResponse">
46+
<div className="w-full lg:w-1/4">
47+
<div>
48+
<b className={b.deprecated && "line-through"}>{p}</b>
49+
</div>
4850
<div className="leading-xs">
49-
<span className="text-grey-dark text-sm">
50-
Filterable
51-
</span>
51+
{data.requestBody.content.application_json.schema
52+
.required &&
53+
data.requestBody.content.application_json.schema.required.map(
54+
(req, i) => {
55+
if (p === req) {
56+
return (
57+
<span
58+
className="text-BaseRed text-sm"
59+
key={i}
60+
>
61+
Required
62+
</span>
63+
);
64+
}
65+
return false;
66+
}
67+
)}
5268
</div>
53-
)}
54-
</div>
55-
<div className="w-full lg:w-3/4">
56-
<div className="text-sm leading-text-sm text-grey-darkest">
57-
{b.type} <CharDisplay data={b} />
58-
{b.pattern && <span className="tag">{b.pattern}</span>}
69+
{b.x_linode_filterable && (
70+
<div className="leading-xs mt-1">
71+
<span className="text-grey-dark text-sm">
72+
Filterable
73+
</span>
74+
</div>
75+
)}
5976
</div>
60-
{b.deprecated && (
61-
<div>
62-
<span className="tag tag-deprecated">Deprecated</span>
77+
<div className="w-full lg:w-3/4">
78+
<div className="text-sm leading-text-sm text-grey-darkest">
79+
{b.type} <CharDisplay data={b} />
80+
{b.pattern && <span className="tag">{b.pattern}</span>}
6381
</div>
64-
)}
65-
<Markdown
66-
source={b.description}
67-
escapeHtml={false}
68-
className="api-desc"
69-
/>
82+
{b.deprecated && (
83+
<div>
84+
<span className="tag tag-deprecated">Deprecated</span>
85+
</div>
86+
)}
87+
<Markdown
88+
source={b.description}
89+
escapeHtml={false}
90+
className="api-desc"
91+
/>
92+
</div>
7093
</div>
7194
</div>
72-
</div>
73-
)
74-
);
75-
})}
95+
)
96+
);
97+
})}
7698
{data.requestBody.content.application_json &&
7799
data.requestBody.content.application_json.schema &&
78100
data.requestBody.content.application_json.schema.allOf &&

0 commit comments

Comments
 (0)