diff --git a/server.js b/server.js index 989f4cf..57bd15d 100644 --- a/server.js +++ b/server.js @@ -29,4 +29,4 @@ app.set('port', process.env.PORT || 3000); var server = app.listen(app.get('port'), function() { console.log('Server listening on port ' + server.address().port); -}); +}); \ No newline at end of file diff --git a/www/index.js b/www/index.js index ae9639c..1c89cb3 100644 --- a/www/index.js +++ b/www/index.js @@ -15,7 +15,7 @@ // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE // UNINTERRUPTED OR ERROR FREE. ///////////////////////////////////////////////////////////////////////////////// -var defaultUrn = ''; +var defaultUrn = 'dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YmFsbGpvaW50L3B1bXAxQS5pcHQ'; $(document).ready(function () { var tokenurl = 'http://' + window.location.host + '/api/token'; diff --git a/www/upload.html b/www/upload.html new file mode 100644 index 0000000..b27ef9f --- /dev/null +++ b/www/upload.html @@ -0,0 +1,59 @@ + + + ADN Viewer Demo (client upload) + + + + + + + + + + + + + + +
+
+
+

Upload and translate a file

+
+
+ +
+
+ Translate this one for me +
+ +
+
+
+
+
+ +
+
+
+

My URNs

+
+
+
+
+ +
+ +
+ +
+ My URN list +
Click on a urn below to launch the viewer
+
+
+
+
+ + \ No newline at end of file diff --git a/www/upload.js b/www/upload.js new file mode 100644 index 0000000..6402466 --- /dev/null +++ b/www/upload.js @@ -0,0 +1,145 @@ +var oViewDataClient =null ; + +$(document).ready (function () { + oViewDataClient =new Autodesk.ADN.Toolkit.ViewData.AdnViewDataClient ( + 'https://developer.api.autodesk.com', + 'http://' + window.location.host + '/api/token' + ) ; +}) ; +var oViewDataClient =null ; + +$(document).ready (function () { + oViewDataClient =new Autodesk.ADN.Toolkit.ViewData.AdnViewDataClient ( + 'https://developer.api.autodesk.com', + 'http://' + window.location.host + '/api/token' + ) ; + + $('#btnTranslateThisOne').click (function (evt) { + var files =document.getElementById('files').files ; + if ( files.length == 0 ) + return ; + var bucket = + 'model' + + new Date ().toISOString ().replace (/T/, '-').replace (/:+/g, '-').replace (/\..+/, '') + + '-' + 'abAXdBGtQCUdptvG6bbC5AKCX9QFZmVY'.toLowerCase ().replace (/\W+/g, '') ; + + createBucket (bucket, files) + }) ; + + $('#btnAddThisOne').click (function (evt) { + var urn =$('#urn').val ().trim () ; + if ( urn == '' ) + return ; + AddThisOne (urn) ; + }) ; +}) ; + +function AddThisOne (urn) { + var id =urn.replace (/=+/g, '') ; + $('#list').append ('
' + + '' + + '
' + ) ; + $('#' + id).click (function (evt) { + window.open ('/?urn=' + $(this).text (), '_blank') ; + }) ; +} + +function createBucket (bucket, files) { + var bucketData ={ + bucketKey: bucket, + servicesAllowed: {}, + policy: 'transient' + } ; + oViewDataClient.createBucketAsync ( + bucketData, + //onSuccess + function (response) { + console.log ('Bucket creation successful:') ; + console.log (response) ; + $('#msg').text ('Bucket creation successful') ; + uploadFiles (response.key, files) ; + }, + //onError + function (error) { + console.log ('Bucket creation failed:'); + console.log (error) ; + $('#msg').text ('Bucket creation failed!') ; + } + ) ; +} + +function uploadFiles (bucket, files) { + for ( var i =0 ; i < files.length ; i++ ) { + var file =files [i] ; + //var filename =file.replace (/^.*[\\\/]/, '') ; + console.log ('Uploading file: ' + file.name + ' ...') ; + $('#msg').text ('Uploading file: ' + file.name + ' ...') ; + oViewDataClient.uploadFileAsync ( + file, + bucket, + file.name, + //onSuccess + function (response) { + console.log ('File was uploaded successfully:') ; + console.log (response) ; + $('#msg').text ('File was uploaded successfully') ; + var fileId =response.objects [0].id ; + var registerResponse =oViewDataClient.register (fileId) ; + if ( registerResponse.Result === "Success" + || registerResponse.Result === "Created" + ) { + console.log ("Registration result: " + registerResponse.Result) ; + console.log ('Starting translation: ' + fileId) ; + $('#msg').text ('Your model was uploaded successfully. Translation starting...') ; + checkTranslationStatus ( + fileId, + 1000 * 60 * 5, // 5 mins timeout + //onSuccess + function (viewable) { + console.log ("Translation was successful: " + response.file.name) ; + console.log ("Viewable: ") ; + console.log (viewable) ; + $('#msg').text ('Translation was successful: ' + response.file.name + '.') ; + //var fileId =oViewDataClient.fromBase64 (viewable.urn) ; + AddThisOne (viewable.urn) ; + } + ) ; + } + }, + //onError + function (error) { + console.log ('File upload failed:') ; + console.log (error) ; + $('#msg').text ('File upload failed!') ; + } + ) ; + } +} + +function checkTranslationStatus (fileId, timeout, onSuccess) { + var startTime =new Date ().getTime () ; + var timer =setInterval (function () { + var dt =(new Date ().getTime () - startTime) / timeout ; + if ( dt >= 1.0 ) { + clearInterval (timer) ; + } else { + oViewDataClient.getViewableAsync ( + fileId, + function (response) { + var msg ='Translation Progress ' + fileId + ': ' + response.progress ; + console.log (msg) ; + $('#msg').text (msg) ; + if ( response.progress === 'complete' ) { + clearInterval (timer) ; + onSuccess (response) ; + } + }, + function (error) { + } + ) ; + } + }, + 2000 + ) ; +} \ No newline at end of file