Skip to content

Commit e1d6423

Browse files
Test
1 parent 9fb8791 commit e1d6423

File tree

5 files changed

+115
-35
lines changed

5 files changed

+115
-35
lines changed

app/controllers/vm_common.rb

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -298,15 +298,17 @@ def snap_pressed
298298
@active = @snap_selected.current? if @snap_selected
299299
@center_toolbar = 'x_vm_snapshot'
300300
@explorer = true
301-
render :update do |page|
302-
page << javascript_prologue
303-
page << javascript_reload_toolbars
304-
305-
page.replace("flash_msg_div", :partial => "layouts/flash_msg")
306-
page << "miqScrollTop();" if @flash_array.present?
307-
page.replace("desc_content", :partial => "/vm_common/snapshots_desc",
308-
:locals => {:selected => params[:id]})
309-
end
301+
formatted_time = format_timezone(@snap_selected[:create_time].to_time, Time.zone, "view")
302+
render :json => {:data => {:data => @snap_selected, :time => formatted_time}}, :status => 200
303+
# render :update do |page|
304+
# page << javascript_prologue
305+
# page << javascript_reload_toolbars
306+
307+
# page.replace("flash_msg_div", :partial => "layouts/flash_msg")
308+
# page << "miqScrollTop();" if @flash_array.present?
309+
# page.replace("desc_content", :partial => "/vm_common/snapshots_desc",
310+
# :locals => {:selected => params[:id]})
311+
# end
310312
end
311313

312314
def disks
Lines changed: 52 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,67 @@
1-
import React, { useState, useEffect } from 'react';
1+
import React, { useState } from 'react';
22
import PropTypes from 'prop-types';
3-
import { API } from '../../http_api';
43
import './styles.css';
54
import SnapshotTree from './snapshot-tree';
65

7-
const VMSnapshotTreeSelect = ({ recordId, tree }) => {
8-
const [{ initialValues, isLoading }, setState] = useState({
9-
isLoading: !!recordId,
10-
});
11-
12-
useEffect(() => {
13-
console.log(recordId);
14-
console.log(tree);
15-
}, []);
6+
const VMSnapshotTreeSelect = ({ tree, selected, time }) => {
7+
// const [{ initialValues, isLoading }, setState] = useState({});
8+
const [snapshot, setSnapshot] = useState({ ...selected, time });
169

1710
// eslint-disable-next-line react/prop-types
18-
return (<SnapshotTree nodes={tree.tree_nodes} />);
11+
return (
12+
<div>
13+
<div className="snapshot-details-div">
14+
<div className="snapshot-details">
15+
<div className="snapshot-detail-title">
16+
<p>
17+
<b>
18+
Description
19+
</b>
20+
</p>
21+
</div>
22+
<div className="snapshot-detail-value">
23+
{snapshot.description || ''}
24+
</div>
25+
</div>
26+
<div className="snapshot-details">
27+
<div className="snapshot-detail-title" id="size-title">
28+
<p>
29+
<b>
30+
Size
31+
</b>
32+
</p>
33+
</div>
34+
<div className="snapshot-detail-value">
35+
{snapshot.size || ''}
36+
</div>
37+
</div>
38+
<div className="snapshot-details">
39+
<div className="snapshot-detail-title" id="created-title">
40+
<p>
41+
<b>
42+
Created
43+
</b>
44+
</p>
45+
</div>
46+
<div className="snapshot-detail-value">
47+
{snapshot.time || ''}
48+
</div>
49+
</div>
50+
</div>
51+
<SnapshotTree nodes={tree.tree_nodes} setSnapshot={setSnapshot} />
52+
</div>
53+
);
1954
};
2055

2156
VMSnapshotTreeSelect.propTypes = {
22-
recordId: PropTypes.any,
57+
tree: PropTypes.objectOf(PropTypes.any).isRequired,
58+
selected: PropTypes.objectOf(PropTypes.any),
59+
time: PropTypes.string,
2360
};
2461

2562
VMSnapshotTreeSelect.defaultProps = {
26-
recordId: undefined,
63+
selected: {},
64+
time: '',
2765
};
2866

2967
export default VMSnapshotTreeSelect;

app/javascript/components/vm-snapshot-tree-select/snapshot-tree.jsx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ const convertData = (node) => {
7272
return treeData;
7373
};
7474

75-
const SnapshotTree = ({ nodes }) => {
75+
const SnapshotTree = ({ nodes, setSnapshot }) => {
7676
const [selectedNode, setSelectedNode] = useState('');
77+
7778
const data = {
7879
name: '',
7980
children: nodes.map(convertData),
@@ -101,21 +102,35 @@ const SnapshotTree = ({ nodes }) => {
101102
return;
102103
}
103104

104-
// Remove 'selected' class from all elements
105-
const selectedElements = document.querySelectorAll('.selected-snapshot');
106-
selectedElements.forEach((el) => {
107-
el.classList.remove('selected-snapshot');
105+
const ids = node.id.split('-');
106+
const shortId = ids[ids.length - 1];
107+
miqSparkleOn();
108+
http.post(`/${ManageIQ.controller}/snap_pressed/${encodeURIComponent(shortId)}`).then((response) => {
109+
if (response.data) {
110+
const tempData = response.data;
111+
tempData.time = response.data.time;
112+
setSnapshot(tempData);
113+
}
114+
miqSparkleOff();
108115
});
109116

117+
// Remove 'selected' class from all elements
118+
// const selectedElements = document.querySelectorAll('.selected-snapshot');
119+
// selectedElements.forEach((el) => {
120+
// el.classList.remove('selected-snapshot');
121+
// });
122+
110123
e.stopPropagation();
111-
if (node.id === selectedNode) {
112-
setSelectedNode('');
113-
} else {
114-
setSelectedNode(e.target.id);
115-
}
124+
setSelectedNode(e.target.id);
116125
};
117126

118127
const addSelectedClassName = () => {
128+
// Remove 'selected' class from all elements
129+
const selectedElements = document.querySelectorAll('.selected-snapshot');
130+
selectedElements.forEach((el) => {
131+
el.classList.remove('selected-snapshot');
132+
});
133+
119134
const selectedElement = document.getElementById(selectedNode);
120135
if (selectedElement) {
121136
selectedElement.parentNode.classList.add('selected-snapshot');
@@ -203,6 +218,7 @@ const SnapshotTree = ({ nodes }) => {
203218

204219
SnapshotTree.propTypes = {
205220
nodes: PropTypes.arrayOf(PropTypes.any).isRequired,
221+
setSnapshot: PropTypes.func.isRequired,
206222
};
207223

208224
SnapshotTree.defaultProps = {

app/javascript/components/vm-snapshot-tree-select/styles.css

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
1-
.checkbox {
1+
.snapshot-details-div {
2+
.snapshot-details {
3+
margin-left: 30px;
4+
margin-bottom: 20px;
5+
}
6+
7+
.snapshot-detail-title {
8+
width: 80px;
9+
justify-content: right;
10+
display: inline-flex;
11+
margin-right: 30px;
12+
}
13+
14+
#size-title {
15+
}
16+
17+
#created-title {
18+
}
19+
20+
.snapshot-detail-value {
21+
display: inline-flex;
22+
}
23+
}
24+
25+
.checkbox {
226
font-size: 16px;
327
user-select: none;
428
min-height: 320px;

app/views/vm_common/_snapshots_desc.html.haml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
- unless session[:snap_selected].nil?
55
- selected_id = Snapshot.find(session[:snap_selected])
66

7-
= react('VmSnapshotTreeSelect', {recordId: @record, tree: @snapshot_tree})
7+
= react('VmSnapshotTreeSelect', {tree: @snapshot_tree, selected: selected_id, time: format_timezone(selected_id[:create_time].to_time, Time.zone, "view")})
88

99
#desc_content.desc_content
1010
- if session[:snap_selected].present? || @record.snapshots.count > 0

0 commit comments

Comments
 (0)