{"version":3,"file":"app-f19daf30.cd6bb4fdfa7d74ff.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/test-model-revision/download-progress.scss","webpack://client-app/./src/app/project/test-model-revision/test-model-revision.scss","webpack://client-app/./src/app/project/test-model-revision/download-progress.html","webpack://client-app/./src/app/project/test-model-revision/test-model-revision.html","webpack://client-app/./src/app/project/test-model-revision/download-progress.ts","webpack://client-app/./src/app/project/test-model-revision/test-model-revision.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `#relative_parent{position:relative;margin-bottom:25px}#absolute_label{position:absolute;z-index:99;top:30px;color:#fff;font-family:sans-serif;font-size:2em;font-weight:bolder;text-align:center;width:100%}#the_progress[value]{background:gray;width:100%;height:3em;border:3px solid #000;border-radius:2px;box-shadow:0 2px 5px rgba(0,0,0,.25) inset}#the_progress[value]::-moz-progress-bar{background:#32cd32}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/test-model-revision/download-progress.scss\"],\"names\":[],\"mappings\":\"AACA,iBACC,iBAAA,CACA,kBAAA,CAED,gBACC,iBAAA,CAAA,UAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CAAA,aAAA,CAAA,kBAAA,CACA,iBAAA,CAAA,UAAA,CAGD,qBACC,eAAA,CACA,UAAA,CAAA,UAAA,CACA,qBAAA,CACA,iBAAA,CAAA,0CAAA,CAED,wCAAA,kBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.test-model-revision{width:100%;padding:10px}.test-model-revision .headers{display:grid;grid-template-columns:50% 50%;line-height:2.5;font-weight:800}.test-model-revision .items{display:grid;grid-template-columns:50% 50%;line-height:2.5}.test-model-revision .revision-header{display:grid;grid-template-columns:auto 50px 200px 200px;line-height:2.5;font-weight:800}.test-model-revision .revision-item{display:grid;grid-template-columns:auto 50px 200px 200px;line-height:2.5;margin-top:5px}.test-model-revision .active{background-color:aqua}.test-model-revision .items:hover{background-color:#d3d3d3;cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/test-model-revision/test-model-revision.scss\"],\"names\":[],\"mappings\":\"AAAA,qBACI,UAAA,CACA,YAAA,CACI,8BACI,YAAA,CACA,6BAAA,CACA,eAAA,CACA,eAAA,CAEJ,4BACI,YAAA,CACA,6BAAA,CACA,eAAA,CAEJ,sCACI,YAAA,CACA,2CAAA,CACA,eAAA,CACA,eAAA,CAEJ,oCACI,YAAA,CACA,2CAAA,CACA,eAAA,CACA,cAAA,CAEJ,6BACI,qBAAA,CAEJ,kCACI,wBAAA,CACA,cAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = ` `;\n// Exports\nexport default code;","// Module\nvar code = ` `;\n// Exports\nexport default code;","import { DialogController } from \"aurelia-dialog\";\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\n@autoinject\r\nexport class DownloadProgress implements GoodOrBadIF {\r\n\tmodel:DownloadModel = {}; \r\n constructor(protected dialog: DialogController) {}\t\r\n\tactivate(model:DownloadModel) { this.model = model; } \r\n\tattached() { \r\n\t\tconsole.log('GGG-F, DownloadProgress.attached');\r\n\t\tthis.beginDownload(this.model.url); \r\n\t}\r\n\r\n\tasync beginDownload(url:string){ \r\n\t\tconsole.log('GGG-G, DownloadProgress.beginDownload');\r\n\t\tawait fetchWithCatch(url,this); \r\n\t}\r\n\r\n\tasync downloadDone(msg:any, arrayBuffer:ArrayBuffer):Promise { \r\n\t\tconsole.log('DownloadProgress.downloadDone()!',msg,arrayBuffer); \r\n\t\ttry {\r\n\t\t\tconst output2 = await this.model.action(this.model,arrayBuffer);\r\n\t\t\tawait this.dialog.ok(output2); \r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(e);\r\n\t\t\tawait this.bad(e);\r\n\t\t}\r\n\t}\r\n\tnumBads:number=0; // we should not do this more than once..\r\n\tasync bad(msg:any):Promise { \r\n\t\t++this.numBads;\r\n\t\tconsole.log(this.numBads, 'bad!', msg); \r\n await this.dialog.cancel();\r\n\t\treturn null;\r\n }\r\n}\r\n\r\nexport interface DownloadModel {\r\n\turl:string; \r\n\taction(inputModel: DownloadModel, arrayBuffer:ArrayBuffer): Promise; \r\n}\r\n\r\n\r\nexport interface GoodOrBadIF {\r\n\tdownloadDone(msg:any, output:ArrayBuffer):Promise;\r\n\tbad(msg:any):Promise;\r\n}\r\n\r\nlet prev_pct:number = -1;\r\nexport function update_IFC_Progress(pct:number, msg:string, reader_ID_instance:number) { \r\n\tif (pct == prev_pct) { return; } // don't waste front-end cycles that eagerly.\r\n\r\n\tprev_pct = pct;\r\n\tconsole.log('GGG-M, update pct', pct, msg, reader_ID_instance);// called from myRead.\r\n\t$('#the_progress').prop('value', pct);\r\n\t$('#absolute_label').text(msg); \r\n}\r\n\r\nlet reader_ID = 22;\r\nasync function myRead(streamController:ReadableStreamDefaultController, response:Response, total:number, rep:GoodOrBadIF) {//UB:MyUnderlyingSource.\r\n\tconst reader_ID_instance = ++reader_ID;\r\n\tconsole.log('GGG-L, reader_ID', reader_ID_instance);\r\n try {\r\n const R:ReadableStreamDefaultReader = response.body!.getReader();\r\n let loaded:number = 0;\r\n let B:ReadableStreamReadResult = await R.read();\r\n for ( ; !B.done; B = await R.read()) {\r\n loaded += B.value.byteLength;\r\n\t\t\tconst pct:number = Math.round(loaded/total*100);\r\n update_IFC_Progress(pct, `${pct}%`, reader_ID_instance);//in-myRead.\r\n streamController.enqueue(B.value); //myRead(controller);\r\n }\r\n streamController.close();\r\n } catch (error) {\r\n console.error(reader_ID_instance,error);\r\n streamController.error(error);\r\n\t\trep.bad(error); // we should be careful we don't do it twice.\r\n }\r\n}\r\n\r\nfunction MyUnderlyingSource(response:Response, total:number, rep:GoodOrBadIF):UnderlyingSource { // or UnderlyingDefaultSource?//UB:progressResponse\r\n\tconsole.log('GGG-K, DownloadProgress.MyUnderlyingSource');\r\n const underlyingSource = { start(controller:ReadableStreamDefaultController) { myRead(controller,response,total,rep); } };\r\n return underlyingSource;\r\n}\r\n\r\nfunction progressResponse(response:Response, total:number, rep:GoodOrBadIF):Response {// UB:fetchProgress\r\n\tconsole.log('GGG-J, DownloadProgress.progressResponse');\r\n const stream = new ReadableStream( MyUnderlyingSource(response,total,rep));\r\n return new Response(stream);\r\n}\r\n\r\nasync function fetchProgress(url:string, rep:GoodOrBadIF):Promise {\r\n\tconsole.log('GGG-I, DownloadProgress.fetchProgress');\r\n const initialResponse:Response = \r\n\t await fetch(url, {\r\n\t\tcache: 'force-cache'\r\n\t\t//mode: \"cors\", // no, actually works by default. the problem instead is, when we specify the cache stuff.\r\n\t\t//mode: \"cors\", // angry cors.\r\n\t\t//mode: \"no-cors\", // den nægter at hente en eneste byte.\r\n\t\t//mode: 'same-origin', // NOT same-origin.\r\n\t\t//headers: {\r\n\t\t\t//'Cache-control': 'max-age=604800, public',\r\n\t\t\t// ETag can also be used for cache-control, IF we have it.\r\n\t\t\t// Vary specifies, that a separate variant must exist for each combination of .\r\n\t\t//}\r\n\t });\r\n\r\n\tshowHeaders(initialResponse);\r\n\r\n if (!initialResponse.ok) { return rep.bad(initialResponse.status+' '+initialResponse.statusText); } \r\n if (!initialResponse.body) { return rep.bad('ReadableStream not yet supported in this browser.'); } \r\n // to access headers, server must send CORS header \"Access-Control-Expose-Headers: content-encoding, content-length x-file-size\"\r\n // server must send custom x-file-size header if gzip or other content-encoding is used\r\n const contentEncoding = initialResponse.headers.get('content-encoding');\r\n const contentLength = initialResponse.headers.get(contentEncoding ? 'x-file-size' : 'content-length');\r\n if (contentLength === null) { return rep.bad('Response size header unavailable'); } \r\n\t// (read more at https://stackoverflow.com/questions/35711724/upload-progress-indicators-for-fetch)\r\n\r\n const total:number = parseInt(contentLength, 10);\r\n const response:Response = progressResponse(initialResponse,total,rep); \r\n\r\n //const data:Blob = await response.blob();\r\n\tconst data:ArrayBuffer = await response.arrayBuffer();\r\n\r\n\tconst success = `download completed, size: ${data.byteLength}`; // size.\r\n console.log(success); // document.getElementById('img').src = URL.createObjectURL(data); \r\n\tshowHeaders(initialResponse);\r\n\trep.downloadDone(success,data);\r\n\treturn data;\r\n}\r\n\r\nexport async function fetchWithCatch(url:string, rep:GoodOrBadIF):Promise { \r\n\tconsole.log('GGG-H, DownloadProgress.fetchWithCatch');\r\n\ttry { \r\n\t\treturn await fetchProgress(url,rep); \r\n\t} catch (e) { \r\n\t\tconsole.error(e); \r\n\t\trep.bad(e);\r\n\t\treturn null;\r\n\t} \r\n}\r\n\r\n\r\nconst url0 = 'https://fetch-progress.anthum.com/30kbps/images/sunrise-baseline.jpg';\r\n\r\nfunction showHeaders(response:Response) {\r\n\tconsole.log('resp headers:', Array.from( response.headers.keys() ));\r\n\tconsole.log('resp headers, ETag:', response.headers.get('ETag'));\r\n\t/* Weirdly, we only see 3 standard-headers here: \"content-length\", \"content-type\", \"last-modified\"\r\n\tMaybe the problem is, that Etag should be requested separately/deliberately?\r\n\tOr even, that the way to use it is to send your EXPECTED ETag in a header,\r\n\twhich the server will then judge for you.\r\n\tThat way, the check for whether download should proceed, is protected server-side,\r\n\tand can't be faked by someone not really knowing the proper Etag..?\r\n\t */\t\r\n}\r\n// fetchWithCatch(url);\r\n\r\n/*\r\nhttps://javascript.info/fetch-progress\r\nhttps://www.bram.us/2021/12/25/show-a-progress-indicator-for-a-fetch-request-with-the-streams-api/\r\nhttps://dev.to/tqbit/how-to-monitor-the-progress-of-a-javascript-fetch-request-and-cancel-it-on-demand-107f\r\nhttps://stackoverflow.com/questions/35711724/upload-progress-indicators-for-fetch\r\n*/\r\n","import { BimViewerFileDtoSplitView, BimViewerRevisionDto, CheckRevisionSyncStatusResponseDto } from \"app/models/viewer-dtos/Dtos/bimviewer-dtos\";\r\nimport { ApiClient} from \"app/services/api-client\"; // , BimClient \r\nimport { AppContextService } from \"app/services/app-context-service\";\r\nimport { DialogService, DialogSettings } from \"aurelia-dialog\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { DownloadProgress } from \"./download-progress\";\r\n\r\n@autoinject\r\nexport class TestModelRevision {\r\n private projectId: string = \"\";\r\n private models: BimViewerFileDtoSplitView[] = [];\r\n private revisions: BimViewerRevisionDto[] = []\r\n private selectedModelId: string = \"\";\r\n\r\n constructor(\r\n\t\tprivate api: ApiClient, \r\n\t\tpublic appContext: AppContextService,\r\n\t\tprivate dlg: DialogService\r\n\t) {}\r\n\r\n async activate(params: any): Promise {\r\n if (params.projectId) {\r\n this.appContext.setProject(params.projectId);//in activate.\r\n this.projectId = params.projectId; \r\n }\r\n await this.getModels();\r\n }\r\n async getModels(): Promise {\r\n\t\tconsole.log('TestModelRevision.getModels');\r\n this.models = await this.api.project(this.appContext.projectId).get('BimViewer/GetFilesForProject').jsonResult();//TestModelRevision.getModels\r\n\t\tconsole.log('test-model-revision,getModels, this.models:', this.models);\r\n }\r\n\r\n\tasync openDialogClicked(){ \r\n\t\tconsole.log('openDialogClicked'); \r\n\t\tconst url0 = 'https://fetch-progress.anthum.com/30kbps/images/sunrise-baseline.jpg';\r\n\t\tconst dlgSettings:DialogSettings = {\r\n\t\t\tmodel:url0,\r\n\t\t\tviewModel: DownloadProgress, //'download-progress', // Den vinder: 'Unable to find module with ID: myViewModel'\r\n\t\t\trejectOnCancel:true,\r\n\t\t\t// context.viewModel\r\n\t\t\t//view:'myView',\r\n\t\t\t//model:'myModel'\r\n\t\t};\r\n\t\tconst dlgResult = await this.dlg.open(dlgSettings);\r\n\t}\r\n\r\n async selectModel(model: BimViewerFileDtoSplitView): Promise {\r\n this.selectedModelId = model.id;\r\n\r\n\t\tconsole.log('TMR-selectModel, this.appContext.projectId?', this.appContext.projectId);\r\n this.revisions = await this.api.project(this.appContext.projectId).get(`BimViewer/GetRevisionsForFile?fileId=${model.id}`).jsonResult();\r\n\t\tconsole.log('test-model-revision.selectModel, BimViewer/GetRevisionsForFile, this.revisions:', this.revisions);\r\n\r\n this.revisions.sort((a: BimViewerRevisionDto, b: BimViewerRevisionDto) => {\r\n return b.revision - a.revision;\r\n })\r\n }\r\n\r\n async downloadFile(revision: BimViewerRevisionDto, original: boolean): Promise {\r\n\t\tthrow 'Not implemented yet in the OpenBim version.'\r\n //await this.bimSyncClient.setTokenAndProject(this.projectId);\r\n let result: CheckRevisionSyncStatusResponseDto = await this.api.project(this.appContext.projectId).get(`BimViewer/GetCatendaRevision?revisionId=${revision.id}`).jsonResult();\r\n console.log(result);\r\n if (result != undefined && result.isSynced == true) {\r\n //this.bimSyncClient.downloadRevisionFile(result, original);\r\n }\r\n }\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","DownloadProgress","constructor","dialog","model","numBads","activate","this","attached","console","log","beginDownload","url","async","rep","initialResponse","fetch","cache","showHeaders","ok","bad","status","statusText","body","contentEncoding","headers","get","contentLength","response","total","stream","ReadableStream","underlyingSource","start","controller","streamController","reader_ID_instance","reader_ID","R","getReader","loaded","B","read","done","value","byteLength","pct","Math","round","update_IFC_Progress","enqueue","close","error","myRead","MyUnderlyingSource","Response","progressResponse","parseInt","data","arrayBuffer","success","downloadDone","fetchProgress","e","fetchWithCatch","msg","output2","action","cancel","autoinject","DialogController","prev_pct","$","prop","text","Array","from","keys","TestModelRevision","api","appContext","dlg","projectId","models","revisions","selectedModelId","params","setProject","getModels","project","jsonResult","openDialogClicked","dlgSettings","viewModel","rejectOnCancel","open","selectModel","sort","a","b","revision","downloadFile","original","DialogService"],"sourceRoot":""}