Skip to content

Commit 7b0b2ae

Browse files
authored
Merge pull request #194 from mapswipe/dev
Use HTTPS for all images
2 parents 0cb1f11 + 5f8583e commit 7b0b2ae

File tree

12 files changed

+157
-26
lines changed

12 files changed

+157
-26
lines changed

manager_dashboard/manager_dashboard/create.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,11 @@ <h3>Basic Project Information</h3>
9999
<span>Enter the description for your project. (3-5 sentences). </span>
100100
</li>
101101
<li>
102-
<label for="image">Direct Image Link</label>
103-
<input type="text" name="image" id="image" required>
102+
<label for="image">Upload Project Image</label>
103+
<input type="file" accept="..gif,.jpg,.jpeg,.png" id="image" onchange='openImageFile(event)'>
104104
<span>Make sure you have the rights to use this image. It should end with .jpg or .png.</span>
105+
<p id="imageText"></p>
106+
<img id="imageFile" width="100%"> </img>
105107
</li>
106108
<li>
107109
<label for="verificationNumber">Verification Number</label>
@@ -327,6 +329,7 @@ <h4>Tile Server B</h4>
327329
<script src="https://www.gstatic.com/firebasejs/6.2.4/firebase-auth.js"></script>
328330
<script src="https://www.gstatic.com/firebasejs/6.2.4/firebase-firestore.js"></script>
329331
<script src="https://www.gstatic.com/firebasejs/6.2.4/firebase-database.js"></script>
332+
<script src="https://www.gstatic.com/firebasejs/6.2.4/firebase-storage.js"></script>
330333
<script src="js/app.js"></script>
331334
<script src="js/ui.js"></script>
332335
<script src="js/uploadProjects.js"></script>

manager_dashboard/manager_dashboard/js/forms.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ function clear_all_fields() {
4949
}
5050
document.getElementById('geometryContent').innerHTML = ''
5151
document.getElementById('geometryChangeDetectionContent').innerHTML = ''
52+
document.getElementById('imageText').innerHTML = ''
53+
document.getElementById('imageFile').src = ''
5254

5355
displayProjectTypeFormular(1)
5456
}
@@ -82,3 +84,24 @@ function openFile(event) {
8284
};
8385
reader.readAsText(input.files[0]);
8486
};
87+
88+
function openImageFile(event) {
89+
var input = event.target;
90+
element_id = event.target.id + 'File'
91+
92+
var reader = new FileReader();
93+
reader.onload = function(){
94+
try {
95+
var dataURL = reader.result;
96+
var output = document.getElementById(element_id);
97+
output.src = dataURL;
98+
}
99+
catch(err) {
100+
element_id = event.target.id + 'Text'
101+
var output = document.getElementById(element_id);
102+
output.innerHTML = '<b>Error reading Image file</b><br>' + err;
103+
}
104+
};
105+
reader.readAsDataURL(input.files[0]);
106+
};
107+

manager_dashboard/manager_dashboard/js/uploadProjects.js

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,42 @@
11
var database = firebase.database();
2+
3+
function upload_project_image() {
4+
var file = document.getElementById('image').files[0]
5+
console.log(file)
6+
var filename = file.name
7+
console.log(filename)
8+
// Create a reference to the image
9+
var storageRef = firebase.storage().ref();
10+
var projectImageRef = storageRef.child('projectImages/'+filename);
11+
12+
var uploadImage = projectImageRef.put(file);
13+
uploadImage.on('state_changed', function(snapshot){
14+
// Observe state change events such as progress, pause, and resume
15+
// Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded
16+
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
17+
console.log('Upload is ' + progress + '% done');
18+
switch (snapshot.state) {
19+
case firebase.storage.TaskState.PAUSED: // or 'paused'
20+
console.log('Upload is paused');
21+
break;
22+
case firebase.storage.TaskState.RUNNING: // or 'running'
23+
console.log('Upload is running');
24+
break;
25+
}
26+
}, function(error) {
27+
// Handle unsuccessful uploads
28+
}, function() {
29+
// Handle successful uploads on complete
30+
// For instance, get the download URL: https://firebasestorage.googleapis.com/...
31+
uploadImage.snapshot.ref.getDownloadURL().then(function(downloadURL) {
32+
console.log('File available at', downloadURL);
33+
return downloadURL
34+
});
35+
});
36+
37+
}
38+
39+
240
function submitInfo() {
341

442
if (currentUid == null) {
@@ -10,7 +48,7 @@ function submitInfo() {
1048
var lookFor = document.getElementById("lookFor").value;
1149
var projectDetails = document.getElementById("projectDetails").value;
1250
var projectType = document.getElementById("projectType").value;
13-
var image = document.getElementById("image").value;
51+
1452
var verificationNumber = document.getElementById("verificationNumber").value;
1553
var createdBy = currentUid;
1654
var groupSize = document.getElementById("groupSize").value;
@@ -104,7 +142,41 @@ function submitInfo() {
104142

105143
}
106144

107-
firebase.database().ref('v2/projectDrafts/').push().set(mapswipe_import)
145+
var file = document.getElementById('image').files[0]
146+
console.log(file)
147+
var filename = file.name
148+
console.log(filename)
149+
// Create a reference to the image
150+
var storageRef = firebase.storage().ref();
151+
var projectImageRef = storageRef.child('projectImages/'+filename);
152+
153+
var uploadImage = projectImageRef.put(file);
154+
uploadImage.on('state_changed', function(snapshot){
155+
// Observe state change events such as progress, pause, and resume
156+
// Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded
157+
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
158+
console.log('Upload is ' + progress + '% done');
159+
switch (snapshot.state) {
160+
case firebase.storage.TaskState.PAUSED: // or 'paused'
161+
console.log('Upload is paused');
162+
break;
163+
case firebase.storage.TaskState.RUNNING: // or 'running'
164+
console.log('Upload is running');
165+
break;
166+
}
167+
}, function(error) {
168+
// Handle unsuccessful uploads
169+
}, function() {
170+
// Handle successful uploads on complete
171+
// For instance, get the download URL: https://firebasestorage.googleapis.com/...
172+
uploadImage.snapshot.ref.getDownloadURL().then(function(downloadURL) {
173+
console.log('File available at', downloadURL);
174+
mapswipe_import.image = downloadURL
175+
console.log(mapswipe_import)
176+
177+
// upload projectDraft to firebase once image has been uploaded
178+
179+
firebase.database().ref('v2/projectDrafts/').push().set(mapswipe_import)
108180
.then(function() {
109181
clear_all_fields();
110182
displaySuccessMessage();
@@ -113,5 +185,9 @@ function submitInfo() {
113185
alert('could not upload data: ' + error);
114186
});
115187

188+
189+
190+
});
191+
});
116192
}
117193
}

mapswipe_workers/mapswipe_workers/project_types/build_area/tile_functions.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,7 @@ def quadKey_to_Bing_URL(quadKey, api_key):
213213
the url for the specific Bing tile image
214214
"""
215215

216-
tile_url = ("http://t0.tiles.virtualearth.net/tiles/a{}.jpeg?"
217-
"g=854&mkt=en-US&token={}".format(quadKey, api_key))
216+
tile_url = ("https://ecn.t0.tiles.virtualearth.net/tiles/a{}.jpeg?g=7505&mkt=en-US&token={}".format(quadKey, api_key))
218217

219218
return tile_url
220219

mapswipe_workers/mapswipe_workers/project_types/change_detection/tile_functions.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,7 @@ def quadKey_to_Bing_URL(quadKey, api_key):
213213
the url for the specific Bing tile image
214214
"""
215215

216-
tile_url = ("http://t0.tiles.virtualearth.net/tiles/a{}.jpeg?"
217-
"g=854&mkt=en-US&token={}".format(quadKey, api_key))
216+
tile_url = ("https://ecn.t0.tiles.virtualearth.net/tiles/a{}.jpeg?g=7505&mkt=en-US&token={}".format(quadKey, api_key))
218217

219218
return tile_url
220219

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.csv

postgres/scripts/v1_to_v2/copy_from_csv.sh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@ NAME="mapswipe"
55

66
for entity in projects groups tasks users results
77
do
8-
psql -h localhost -p 5432 -U ${USER} -d ${NAME} -a -f copy_${entity}_from_csv.sql
8+
psql \
9+
--host localhost \
10+
--port 5432 \
11+
--username ${USER} \
12+
--dbname ${NAME} \
13+
--echo-errors \
14+
--log-file copy_from_csv.log \
15+
--file copy_${entity}_from_csv.sql
916
done
1017

1118
# Commands if docker postgres port is not exposed:

postgres/scripts/v1_to_v2/copy_groups_from_csv.sql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
CREATE TEMP TABLE v1_groups (
77
project_id varchar,
88
v1_group_id int,
9-
group_id varchar DEFAULT NULL,
9+
group_id varchar,
1010
number_of_tasks int,
1111
finished_count int,
1212
required_count int,
@@ -29,12 +29,12 @@ WHERE required_count <= 0;
2929
UPDATE v1_groups
3030
SET group_id = cast(v1_group_id as varchar);
3131

32-
UPDATE groups
33-
SET (finished_count, required_count, progress) =
34-
(SELECT finished_count, required_count, progress
35-
FROM v1_groups
36-
WHERE groups.group_id = v1_groups.group_id
37-
AND groups.project_id = v1_groups.project_id);
32+
/* UPDATE groups */
33+
/* SET (finished_count, required_count, progress) = */
34+
/* (SELECT finished_count, required_count, progress */
35+
/* FROM v1_groups */
36+
/* WHERE groups.group_id = v1_groups.group_id */
37+
/* AND groups.project_id = v1_groups.project_id); */
3838

3939
-- Insert or update data of temp table to the permant table.
4040
-- Note that the special excluded table is used to

postgres/scripts/v1_to_v2/copy_projects_from_csv.sql

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,27 @@ FROM v1_imports
5555
WHERE v1_projects.import_id = v1_imports.import_id;
5656

5757
-- Convert geometry to postgis geometry type.
58-
UPDATE v1_projects
59-
SET geom = ST_Force2D(ST_Multi(ST_GeomFromKML(kml)));
58+
-- If Geoemtry is invalid (Exception gets raised)
59+
-- Do Nothing. Continue with the next project.
60+
do $$
61+
DECLARE
62+
r record;
63+
BEGIN
64+
-- record is a structure that contains an element for each column in the select list
65+
FOR r IN SELECT * from v1_projects
66+
LOOP
67+
BEGIN
68+
UPDATE v1_projects
69+
SET geom = ST_Force2D(ST_Multi(ST_GeomFromKML(kml)))
70+
WHERE v1_projects.project_id = r.project_id;
71+
-- note the where condition that uses the value from the record variable
72+
EXCEPTION
73+
WHEN OTHERS THEN
74+
-- do nothing
75+
END;
76+
END LOOP;
77+
END
78+
$$ LANGUAGE plpgsql;
6079

6180
-- Insert or update data of temp table to the permant table (projects)
6281
-- Note that the special excluded table is used to reference values originally proposed for insertion
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
-- Export v1 MapSwipe data to csv.
22
-- Rename attributes to conform to v2.
33
\copy (SELECT user_id, username FROM users) TO users.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4-
\copy (SELECT project_id, task_id, user_id, timestamp as "timeint", info FROM results WHERE project_id = 5549) TO results.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);
4+
\copy (SELECT project_id, task_id, user_id, timestamp as "timeint", info FROM results WHERE project_id in (SELECT project_id FROM projects GROUP BY project_id) AND user_id in (SELECT user_id FROM users)) TO results.csv WITH (FORMAT CSV, DELIMITER ",", HEADER TRUE);

0 commit comments

Comments
 (0)