Skip to content

Commit 8483ce0

Browse files
authored
v.1.10.2 - Upload Zip
Test
2 parents 8c9c10a + 8708bd3 commit 8483ce0

File tree

18 files changed

+838
-44
lines changed

18 files changed

+838
-44
lines changed

spid-validator/client/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
"file-loader": "1.1.6",
2020
"html-loader": "0.5.4",
2121
"html-webpack-plugin": "2.30.1",
22-
"node-sass": "^4.13.1",
22+
"sass": "1.35.2",
2323
"rimraf": "2.6.2",
24-
"sass-loader": "6.0.6",
24+
"sass-loader": "^7.3.1",
2525
"source-list-map": "2.0.0",
2626
"style-loader": "0.19.1",
2727
"uglify-js": "3.3.7",

spid-validator/client/src/components/AceEditor/index.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,32 @@ class AceEditor extends Component {
77

88
constructor(props) {
99
super(props);
10-
this.state = {code: format((props.code!=null)? props.code:"")};
10+
this.state = {
11+
mode: 'xml',
12+
code: ""
13+
};
1114
}
1215

1316
static getDerivedStateFromProps(props, state) {
14-
Utility.log("State", props.code)
17+
18+
let mode = props.mode;
19+
let code = props.code;
20+
21+
switch(props.mode) {
22+
case 'json':
23+
code = JSON.stringify(props.code, null, 4);
24+
break;
25+
26+
case 'xml':
27+
default:
28+
mode = 'xml';
29+
code = format((props.code!=null)? props.code : "");
30+
break;
31+
}
32+
1533
return {
16-
code: format((props.code!=null)? props.code:"")
34+
code: code,
35+
mode: mode
1736
}
1837
}
1938

spid-validator/client/src/components/AceEditor/view.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
import React from 'react';
22
import AceEditor from 'react-ace';
33
import 'brace/mode/xml';
4+
import 'brace/mode/json';
45
import 'brace/theme/cobalt';
56
import "./style.css";
67

78
function view(me) {
89

910
return(
1011
<AceEditor
11-
mode="xml"
12+
mode={me.state.mode}
1213
theme="cobalt"
1314
name="AceEditor"
1415
className="AceEditor"
1516
defaultValue={me.state.code}
1617
value={me.state.code}
1718
readOnly={true}
1819
maxLines={10000}
20+
showPrintMargin={false}
1921
wrapEnabled={true}
2022
editorProps={{$blockScrolling: true}}
2123
/>

spid-validator/client/src/components/Sidebar/_nav.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default {
77
sessionRequired: false,
88
children: [
99
{
10-
name: 'Download',
10+
name: 'Download from URL',
1111
url: '/metadata-sp-download',
1212
sessionRequired: false,
1313
},
@@ -35,6 +35,19 @@ export default {
3535
}
3636
]
3737
},
38+
{
39+
name: 'Pacchetto ZIP',
40+
icon: 'icon-folder',
41+
open: true,
42+
sessionRequired: false,
43+
children: [
44+
{
45+
name: 'Upload ZIP',
46+
url: '/metadata-sp-upload-zip',
47+
sessionRequired: false,
48+
}
49+
]
50+
},
3851
{
3952
name: 'Request',
4053
icon: 'icon-cursor',

spid-validator/client/src/containers/Main/Main.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Breadcrumb from '../../components/Breadcrumb/';
99
import Aside from '../../components/Aside/';
1010
import Footer from '../../components/Footer/';
1111
import MetadataSpDownload from '../../views/MetadataSpDownload/';
12+
import MetadataSpUploadZip from '../../views/MetadataSpUploadZip/';
1213
import MetadataSpCheck from '../../views/MetadataSpCheck/';
1314
import Request from '../../views/Request/';
1415
import RequestCheck from '../../views/RequestCheck/';
@@ -158,7 +159,8 @@ class Main extends Component {
158159
<Breadcrumb />
159160
<Container fluid>
160161
<Switch>
161-
<Route path="/metadata-sp-download" name="Metadata Service Provider / Download" component={MetadataSpDownload}/>
162+
<Route path="/metadata-sp-download" name="Metadata Service Provider / Download from URL" component={MetadataSpDownload}/>
163+
<Route path="/metadata-sp-upload-zip" name="Metadata Service Provider / Upload from ZIP" component={MetadataSpUploadZip}/>
162164
<Route path="/metadata-sp-check-xsd" key="metadata-sp-check-xsd" render={()=><MetadataSpCheck test="xsd" />} />
163165
<Route path="/metadata-sp-check-strict" key="metadata-sp-check-strict" render={()=><MetadataSpCheck test="strict" />} />
164166
<Route path="/metadata-sp-check-certs" key="metadata-sp-check-certs" render={()=><MetadataSpCheck test="certs" />} />

spid-validator/client/src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ ReactDOM.render((
2525
<HashRouter>
2626
<Switch>
2727
<Route path="/metadata-sp-download" component={Main}/>
28+
<Route path="/metadata-sp-upload-zip" component={Main}/>
2829
<Route path="/metadata-sp-check-xsd" component={Main}/>
2930
<Route path="/metadata-sp-check-strict" component={Main}/>
3031
<Route path="/metadata-sp-check-certs" component={Main}/>

spid-validator/client/src/routes.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const routes = {
22
'/': 'Home',
3-
'/metadata-sp-download': 'Metadata Service Provider / Download',
3+
'/metadata-sp-download': 'Metadata Service Provider / Download from URL',
4+
'/metadata-sp-upload-zip': 'Metadata Service Provider / Upload ZIP',
45
'/metadata-sp-checl-xsd': 'Metadata Service Provider / Check XSD',
56
'/metadata-sp-check-strict': 'Metadata Service Provider / Check Strict',
67
'/metadata-sp-check-certs': 'Metadata Service Provider / Check Certificates',

spid-validator/client/src/services.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,39 @@ class MainService {
140140
});
141141
}
142142

143+
uploadFile(file, check, profile, production, callback_progress_upload, callback_progress_download, callback_response, callback_error) {
144+
Utility.log("POST: /api/metadata-sp/upload/zip");
145+
const formData = new FormData();
146+
formData.append('file', file);
147+
formData.append('check', check);
148+
formData.append('profile', profile);
149+
formData.append('production', production);
150+
axios.post(' /api/metadata-sp/upload/zip?apikey=' + Utility.getApikey(), formData, {
151+
headers: { 'Content-Type': 'multipart/form-data' },
152+
onUploadProgress: (progressEvent)=>callback_progress_upload(progressEvent),
153+
onDownloadProgress: (progressEvent)=>callback_progress_download(progressEvent)
154+
})
155+
.then(function(response) {
156+
callback_response(response.data);
157+
})
158+
.catch(function(error) {
159+
callback_error((error.response!=null) ? error.response.data : "Service not available");
160+
});
161+
}
162+
163+
setSessionMetadata(metadata, callback_response, callback_error) {
164+
Utility.log("PUT /api/metadata-sp");
165+
axios.put('/api/metadata-sp?apikey=' + Utility.getApikey(), {metadata: metadata})
166+
.then(function(response) {
167+
Utility.log("setSessionMetadata Success", response.data);
168+
callback_response(response.data);
169+
})
170+
.catch(function(error) {
171+
Utility.log("setSessionMetadata Error", error.response.data);
172+
callback_error((error.response!=null) ? error.response.data : "Service not available");
173+
});
174+
}
175+
143176
getLastCheckMetadataSp(test, callback_response, callback_error) {
144177
Utility.log("GET /api/metadata-sp/lastcheck/" + test);
145178
axios.get('/api/metadata-sp/lastcheck/' + test + '?apikey=' + Utility.getApikey(), {timeout: 900000})

spid-validator/client/src/views/MetadataSpDownload/view.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ function view(me) {
1212
<div className="col-sm-12">
1313
<b>Metadata URL</b>
1414
</div>
15-
<div className="col-sm-12">
15+
<div className="col-sm-12 mt-3">
1616
<input type="text"
1717
ref="inputMetadata"
1818
className="metadata"
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
import React, { Component } from 'react';
2+
import view from "./view.js";
3+
import Utility from '../../utility';
4+
import Services from '../../services';
5+
import ReduxStore from "../../redux/store";
6+
import Actions from "../../redux/main/actions";
7+
8+
9+
class MetadataSpUploadZip extends Component {
10+
11+
constructor(props) {
12+
super(props);
13+
14+
this.state = {
15+
detailview: false,
16+
file: null,
17+
loading: false,
18+
loaded: false,
19+
fileName: null,
20+
fileSize: null,
21+
fileType: null,
22+
check: "extra",
23+
profile: "spid-sp-ag-public-full",
24+
production: true,
25+
report: null
26+
};
27+
}
28+
29+
componentDidMount() {
30+
let service = Services.getMainService();
31+
let store = ReduxStore.getMain();
32+
let storeState = store.getState();
33+
}
34+
35+
render() {
36+
return view(this);
37+
}
38+
39+
setDetailView(detailed) {
40+
this.setState({
41+
detailview: detailed
42+
});
43+
}
44+
45+
setCheck(check) {
46+
this.setState({
47+
check: check
48+
});
49+
}
50+
51+
setProfile(profile) {
52+
this.setState({
53+
profile: profile
54+
});
55+
}
56+
57+
setProduction(production) {
58+
this.setState({
59+
production: production
60+
});
61+
this.setState({
62+
production: production
63+
}, ()=> {
64+
this.uploadMetadataZip(this.state.file);
65+
});
66+
}
67+
68+
69+
uploadMetadataZip(metadata_zip) {
70+
71+
let service = Services.getMainService();
72+
73+
this.setState({
74+
file: metadata_zip,
75+
loading: true,
76+
loaded: false,
77+
fileName: metadata_zip.name,
78+
fileSize: metadata_zip.size,
79+
fileType: metadata_zip.type,
80+
report: null
81+
});
82+
83+
Utility.blockUI(true);
84+
service.uploadFile(
85+
metadata_zip,
86+
this.state.check,
87+
this.state.profile,
88+
this.state.production? 'Y':'N',
89+
90+
(progress)=> {
91+
let progress_percent = Math.round((parseInt(progress.loaded)*100)/parseInt(progress.total));
92+
if(progress_percent<100) {
93+
this.setState({
94+
progress_message: "Uploading ZIP file...",
95+
progress: progress_percent + "%"
96+
});
97+
} else {
98+
this.setState({
99+
progress_message: "Validating all metadata. Please wait...",
100+
progress: ""
101+
});
102+
}
103+
},
104+
(progress)=> {
105+
let progress_percent = Math.round((parseInt(progress.loaded)*100)/parseInt(progress.total));
106+
this.setState({
107+
progress_message: "Downloading report...",
108+
progress: progress_percent + '%'
109+
});
110+
},
111+
(report)=> {
112+
this.setState({
113+
file: metadata_zip,
114+
loading: false,
115+
loaded: true,
116+
progress: 0,
117+
check: report.check,
118+
profile: report.profile,
119+
production: report.production,
120+
report: report
121+
});
122+
123+
Utility.blockUI(false);
124+
},
125+
(error)=> {
126+
Utility.showModal({
127+
title: "Errore",
128+
body: error,
129+
isOpen: true
130+
});
131+
this.setState({
132+
file: null,
133+
loading: false,
134+
loaded: false,
135+
fileName: null,
136+
fileSize: null,
137+
fileType: null,
138+
check: "extra",
139+
profile: "spid-sp-ag-public-full",
140+
production: true,
141+
report: null
142+
});
143+
144+
Utility.blockUI(false);
145+
}
146+
);
147+
}
148+
149+
openMetadata(metadata) {
150+
let service = Services.getMainService();
151+
let store = ReduxStore.getMain();
152+
153+
Utility.blockUI(true);
154+
service.setSessionMetadata(metadata,
155+
(success)=> {
156+
store.dispatch(Actions.setMetadataSpURL(metadata.url));
157+
store.dispatch(Actions.setMetadataSpXML(metadata.xml));
158+
this.props.history.push('/metadata-sp-download');
159+
Utility.blockUI(false);
160+
},
161+
(error)=> {
162+
Utility.showModal({
163+
title: "Errore",
164+
body: error,
165+
isOpen: true
166+
});
167+
Utility.blockUI(false);
168+
}
169+
);
170+
}
171+
172+
print() {
173+
Utility.print(this.state.fileName);
174+
}
175+
176+
}
177+
178+
export default MetadataSpUploadZip;

0 commit comments

Comments
 (0)