From fe7e25ac59a57d243b51b43030cac0d413305a37 Mon Sep 17 00:00:00 2001 From: Juan Cisneros Date: Fri, 6 Sep 2024 12:08:14 -0500 Subject: [PATCH] New Features: New Pages: Bugs Corrected: 1.Add, Delete, Update System Service 2. Unit Test Add, Delete errors To Be Corrected: 0. On product delete, delete trace results 1. On product delete, delete flamegraph result --- .../software-testing-chooser.page.html | 8 +-- .../software-testing-chooser.page.ts | 42 ++++++++++----- src/app/services/unit-test.service.ts | 53 ++++++++++++++----- www/8711.4b5dae0a0dbcf4cc.js | 1 - www/8711.8d2bb8ceac7ccfe3.js | 1 + www/common.1ef85c0b25ade417.js | 1 + www/common.850fb337b411abca.js | 1 - www/index.html | 2 +- ...347ce36.js => runtime.1b6852e21ff6eb80.js} | 2 +- 9 files changed, 77 insertions(+), 34 deletions(-) delete mode 100644 www/8711.4b5dae0a0dbcf4cc.js create mode 100644 www/8711.8d2bb8ceac7ccfe3.js create mode 100644 www/common.1ef85c0b25ade417.js delete mode 100644 www/common.850fb337b411abca.js rename www/{runtime.df8a307a9347ce36.js => runtime.1b6852e21ff6eb80.js} (58%) diff --git a/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.html b/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.html index df4c25c..5bd0a78 100644 --- a/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.html +++ b/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.html @@ -74,16 +74,16 @@

Choose a type of test.

@if (unit.state){ - + } @if (!unit.state){ - + }
- Delete Test + Delete Test @@ -154,7 +154,7 @@

{{ failedSystemTests }}

View Test Results Execute Test - Delete Test + Delete Test diff --git a/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.ts b/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.ts index 391ba4e..565974d 100644 --- a/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.ts +++ b/src/app/pages/software_testing/software-testing-chooser/software-testing-chooser.page.ts @@ -275,11 +275,10 @@ export class SoftwareTestingChooserPage implements OnInit { } /** - * Send a status update to the /unit_test_state API endpoint. + * Send a status update and save to the database. */ - async automateUnitState(title: string) { + async updateUnitState(title: string) { await this.showLoading(); - // Send a status update to the /unit_test_state API endpoint await this.unitTestService.updateUnitTestState(this.orgName, this.productObjective, this.productStep, title).then(async r => { if (r) { await this.getUnitTests(); @@ -292,6 +291,34 @@ export class SoftwareTestingChooserPage implements OnInit { await this.hideLoading(); } + /** + * Methods to delete tests. + */ + async deleteUnitTest(title: string) { + await this.showLoading() ; + let unitTest = this.unitTests.find((unitTest: { title: string; }) => unitTest.title === title); + if (!unitTest) return; + await this.unitTestService.deleteUnitTest(this.orgName, this.productObjective, this.productStep,unitTest).then(async () => { + await this.getUnitTests(); + }); + await this.hideLoading(); + } + async deleteSystemTest(title: string) { + await this.showLoading(); + let systemTest = this.systemTests.find((systemTest: { title: string; }) => systemTest.title === title); + if (!systemTest) return; + await this.systemTestService.deleteSystemTest(this.orgName, this.productObjective, this.productStep,systemTest).then(async () => { + await this.getSystemTests(); + }); + await this.calculatePassedSystemTests(); + await this.calculateGraphDataSystemTests(); + await this.graphSystemTests(); + await this.hideLoading(); + } + + + + /** @@ -305,15 +332,6 @@ export class SoftwareTestingChooserPage implements OnInit { } - async deleteTest(title: string) { - let systemTest = this.systemTests.find((systemTest: { title: string; }) => systemTest.title === title); - if (!systemTest) return; - await this.systemTestService.deleteSystemTest(this.orgName, this.productObjective, this.productStep,systemTest).then(async () => { - await this.getSystemTests(); - }); - await this.calculatePassedSystemTests(); - await this.calculateGraphDataSystemTests(); - } /** * Show a loading spinner. diff --git a/src/app/services/unit-test.service.ts b/src/app/services/unit-test.service.ts index 6d90fb2..d405124 100644 --- a/src/app/services/unit-test.service.ts +++ b/src/app/services/unit-test.service.ts @@ -24,11 +24,17 @@ export class UnitTestService { console.log('Document created with ID: ', docRef.id); return; } + + //if there is a unit test with the same title, return + for (let i = 0; i < data[productStep].length; i++){ + if (data[productStep][i].title === unitTest.title){ + return; + } + } + //add to the array - const arr = data[productStep] //get the array - console.log(arr); - arr.push(unitTest); //add the new system test - await setDoc(docRef, { [productStep]: arr }); //update the array key:productStep with the new array + data[productStep].push(unitTest); //add the new system test + await setDoc(docRef, data); console.log('Document updated with ID: ', docSnap.id); } else { console.log('No such document!'); @@ -55,19 +61,38 @@ export class UnitTestService { const docSnap = await getDoc(docRef); if (docSnap.exists()){ const data = docSnap.data(); - const arr = data[productStep]; - for (let i = 0; i < arr.length; i++){ - if (arr[i].title === title){ - arr[i].state = !arr[i].state; + for (let i = 0; i < data[productStep].length; i++){ + if (data[productStep][i].title === title){ + data[productStep][i].state = !data[productStep][i].state; const date = new Date(); - const srtDate = date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); + let pushDate = date.getDate() + '/' + date.getMonth() + '/' + date.getFullYear() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); + const last_state_change = { + date: pushDate, + state: data[productStep][i].state + } + + + + data[productStep][i].last_state_change = [...data[productStep][i].last_state_change, last_state_change]; + await setDoc(docRef, data); + + return true; + } + } + } + return false; + } - arr[i]. last_state_change.push({ - date: srtDate, - state: arr[i].state - }); - await setDoc(docRef, { [productStep]: arr }); + async deleteUnitTest(orgName: string, productObjective: string, productStep: string, unitTest: UnitTest) { + const docRef = doc(this.firestore, 'teams', orgName, 'products', productObjective, 'software_testing', 'unit_tests'); + const docSnap = await getDoc(docRef); + if (docSnap.exists()) { + const data = docSnap.data(); + for (let i = 0; i < data[productStep].length; i++) { + if (data[productStep][i].title === unitTest.title) { + data[productStep].splice(i, 1); + await setDoc(docRef, data); return true; } } diff --git a/www/8711.4b5dae0a0dbcf4cc.js b/www/8711.4b5dae0a0dbcf4cc.js deleted file mode 100644 index 2afe489..0000000 --- a/www/8711.4b5dae0a0dbcf4cc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[8711],{5553:(C,f,a)=>{a.d(f,{h:()=>p});var d=a(177),T=a(7863),c=a(4438);let p=(()=>{var o;class t{}return(o=t).\u0275fac=function(m){return new(m||o)},o.\u0275mod=c.$C({type:o}),o.\u0275inj=c.G2t({imports:[d.MD,T.bv]}),t})()},3241:(C,f,a)=>{a.d(f,{p:()=>p});var d=a(4438),T=a(177),c=a(7863);let p=(()=>{var o;class t{constructor(m){this.location=m,this.title="Header Title"}ngOnInit(){}goBack(){this.location.back()}}return(o=t).\u0275fac=function(m){return new(m||o)(d.rXU(T.aZ))},o.\u0275cmp=d.VBU({type:o,selectors:[["app-header-return"]],inputs:{title:"title"},decls:6,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"],["name","arrow-back","slot","start",1,"p-4","bigger-icon",3,"click"]],template:function(m,y){1&m&&(d.j41(0,"ion-header",0)(1,"ion-toolbar"),d.nrm(2,"ion-menu-button",1),d.j41(3,"ion-icon",2),d.bIt("click",function(){return y.goBack()}),d.k0s(),d.j41(4,"ion-title"),d.EFF(5),d.k0s()()()),2&m&&(d.Y8G("translucent",!0),d.R7$(5),d.JRh(y.title))},dependencies:[c.eU,c.iq,c.MC,c.BC,c.ai],styles:[".bigger-icon[_ngcontent-%COMP%]{font-size:1.5em}"]}),t})()},8711:(C,f,a)=>{a.r(f),a.d(f,{SoftwareTestingChooserPageModule:()=>I});var d=a(177),T=a(4341),c=a(7863),p=a(7650),o=a(467),t=a(4438),g=a(9274),m=a(2379),y=a(8453),j=a(3241),w=a(2820);function P(i,u){if(1&i){const l=t.RV6();t.nrm(0,"ion-icon",24),t.j41(1,"ion-icon",25),t.bIt("click",function(){t.eBV(l);const s=t.XpG().$implicit,n=t.XpG();return t.Njj(n.automateUnitState(s.title))}),t.k0s()}}function E(i,u){if(1&i){const l=t.RV6();t.j41(0,"ion-icon",26),t.bIt("click",function(){t.eBV(l);const s=t.XpG().$implicit,n=t.XpG();return t.Njj(n.automateUnitState(s.title))}),t.k0s(),t.nrm(1,"ion-icon",27)}}function x(i,u){if(1&i){const l=t.RV6();t.j41(0,"ion-col",11)(1,"ion-card")(2,"ion-card-header",20)(3,"ion-card-title"),t.EFF(4),t.k0s(),t.j41(5,"ion-icon",21),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.infoAutomateUnitState(s.title))}),t.k0s()(),t.j41(6,"ion-card-content",14)(7,"p"),t.EFF(8," Change the Test State: "),t.k0s(),t.j41(9,"div",22),t.DNE(10,P,2,0)(11,E,2,0),t.k0s()(),t.j41(12,"ion-card-content")(13,"ion-button",23),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.deleteTest(s.title))}),t.EFF(14,"Delete Test"),t.k0s()()()()}if(2&i){const l=u.$implicit;t.R7$(4),t.JRh(l.title),t.R7$(6),t.vxM(10,l.state?10:-1),t.R7$(),t.vxM(11,l.state?-1:11)}}function R(i,u){if(1&i){const l=t.RV6();t.j41(0,"ion-col",11)(1,"ion-card")(2,"ion-card-header")(3,"ion-card-title"),t.EFF(4),t.k0s()(),t.j41(5,"ion-card-content")(6,"ion-button",28),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.navigateToViewHistorySystemTest(s.title))}),t.EFF(7,"View Test Results"),t.k0s(),t.j41(8,"ion-button",29),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.navigateToExecuteSystemTest(s.title))}),t.EFF(9,"Execute Test"),t.k0s(),t.j41(10,"ion-button",23),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.deleteTest(s.title))}),t.EFF(11,"Delete Test"),t.k0s()()()()}if(2&i){const l=u.$implicit;t.R7$(4),t.JRh(l.title)}}const A=[{path:"",component:(()=>{var i;class u{constructor(e,s,n,r,h,_){this.activatedRoute=e,this.router=s,this.systemTestService=n,this.loadingCtrl=r,this.unitTestService=h,this.alertCtrl=_,this.productStep="",this.productObjective="",this.user={},this.orgName="",this.systemTests=[],this.unitTests=[],this.passedSystemTests=0,this.failedSystemTests=0,this.systemTestsChart={tooltip:{trigger:"axis"},legend:{data:["Passed","Failed"],left:"left"},xAxis:{type:"category",boundaryGap:!1,data:[]},yAxis:{type:"value"},series:[{name:"Passed",type:"line",data:[]},{name:"Failed",type:"line",data:[]}]}}ngOnInit(){}ionViewWillEnter(){var e=this;return(0,o.A)(function*(){yield e.showLoading(),e.getProductFromParams(),yield e.getUser(),yield e.getUnitTests();try{yield e.getSystemTests().then((0,o.A)(function*(){yield e.calculatePassedSystemTests().then((0,o.A)(function*(){yield e.calculateGraphDataSystemTests().then((0,o.A)(function*(){yield e.graphSystemTests()}))}))}))}catch(s){console.log(s)}yield e.hideLoading()})()}getProductFromParams(){this.activatedRoute.params.subscribe(e=>{this.productObjective=e.productObjective,this.productStep=e.step}),console.log(this.productObjective),console.log(this.productStep)}navigateToCreateSystemTest(){this.router.navigate(["/create-system-test",{productObjective:this.productObjective,step:this.productStep}])}navigateToCreateUnitTest(){this.router.navigate(["/create-unit-test",{productObjective:this.productObjective,step:this.productStep}])}navigateToExecuteSystemTest(e){this.router.navigate(["/execute-system-test",{productObjective:this.productObjective,step:this.productStep,testTitle:e}])}navigateToViewHistorySystemTest(e){this.router.navigate(["/view-history-system-test",{productObjective:this.productObjective,step:this.productStep,testTitle:e}])}calculatePassedUnitTests(){return(0,o.A)(function*(){})()}calculatePassedSystemTests(){var e=this;return(0,o.A)(function*(){e.passedSystemTests=0,e.failedSystemTests=0,yield e.systemTestService.getSystemTestHistoryByStep(e.orgName,e.productObjective,e.productStep).then(s=>{s.forEach(n=>{n.state?e.passedSystemTests++:e.failedSystemTests++})})})()}calculateGraphDataUnitTests(){return(0,o.A)(function*(){})()}calculateGraphDataSystemTests(){var e=this;return(0,o.A)(function*(){let s=[];const n=yield e.systemTestService.getSystemTestHistory(e.orgName,e.productObjective);return s=Object.keys(n).filter(r=>n[r].productStep===e.productStep).map(r=>({timestamp:r,systemTest:n[r].systemTest})),s})()}graphUnitTests(){return(0,o.A)(function*(){})()}graphSystemTests(){var e=this;return(0,o.A)(function*(){const s=yield e.calculateGraphDataSystemTests();let n=[];for(let r of s){let h=r.timestamp.split(" ")[0].split("-"),S=[h[2],h[1],h[0]].join("/"),M=r.timestamp.split(" ")[1],F=new Date(S+" "+M).toLocaleDateString(),k=r.systemTest.state?1:0,b=r.systemTest.state?0:1,v=n.findIndex(D=>D.date===F);-1===v?n.push({date:F,passed:k,failed:b}):(n[v].passed+=k,n[v].failed+=b)}n.sort((r,h)=>new Date(r.date)-new Date(h.date)),e.systemTestsChart.xAxis={type:"category",boundaryGap:!1,data:n.map(r=>r.date)},e.systemTestsChart.series=[{name:"Passed",type:"line",data:n.map(r=>r.passed)},{name:"Failed",type:"line",data:n.map(r=>r.failed)}],e.systemTestsChart={...e.systemTestsChart}})()}getUnitTests(){var e=this;return(0,o.A)(function*(){e.unitTestService.getUnitTests(e.orgName,e.productObjective,e.productStep).then(s=>{e.unitTests=s})})()}getSystemTests(){var e=this;return(0,o.A)(function*(){e.systemTestService.getSystemTest(e.orgName,e.productObjective,e.productStep).then(s=>{e.systemTests=s})})()}infoAutomateUnitState(e){var s=this;return(0,o.A)(function*(){yield s.showAlert("You can automate the result of this unit test ("+e+") by sending a status update to the /unit_test_state API endpoint.","Automate Unit Test State")})()}automateUnitState(e){var s=this;return(0,o.A)(function*(){yield s.showLoading(),yield s.unitTestService.updateUnitTestState(s.orgName,s.productObjective,s.productStep,e).then(function(){var n=(0,o.A)(function*(r){r?(yield s.getUnitTests(),yield s.hideLoading()):(yield s.hideLoading(),yield s.showAlert("There was an error updating the unit test state.","Error"))});return function(r){return n.apply(this,arguments)}}()),yield s.hideLoading()})()}getUser(){var e=this;return(0,o.A)(function*(){const s=localStorage.getItem("user");s&&(e.user=JSON.parse(s),e.orgName=e.user.orgName)})()}deleteTest(e){var s=this;return(0,o.A)(function*(){let n=s.systemTests.find(r=>r.title===e);n&&(yield s.systemTestService.deleteSystemTest(s.orgName,s.productObjective,s.productStep,n).then((0,o.A)(function*(){yield s.getSystemTests()})),yield s.calculatePassedSystemTests(),yield s.calculateGraphDataSystemTests())})()}showLoading(){var e=this;return(0,o.A)(function*(){yield(yield e.loadingCtrl.create({})).present()})()}hideLoading(){var e=this;return(0,o.A)(function*(){yield e.loadingCtrl.dismiss()})()}doRefresh(e){this.getSystemTests(),e.target.complete()}showAlert(e,s){var n=this;return(0,o.A)(function*(){yield(yield n.alertCtrl.create({header:s,message:e,buttons:["OK"]})).present()})()}}return(i=u).\u0275fac=function(e){return new(e||i)(t.rXU(p.nX),t.rXU(p.Ix),t.rXU(g.h),t.rXU(c.Xi),t.rXU(m.I),t.rXU(c.hG))},i.\u0275cmp=t.VBU({type:i,selectors:[["app-software-testing-chooser"]],decls:92,vars:13,consts:[[3,"title"],[3,"fullscreen"],["slot","fixed",3,"ionRefresh"],[1,"lg:m-10","md:m-10"],["size","12","size-md","4","size-lg","4",1,""],[1,"min-h-full","flex","flex-col","justify-between"],[1,"text-3xl","text-white"],[1,"text-white"],[1,"mt-auto"],["color","primary","expand","block","fill","outline",3,"click"],["color","primary","expand","block","fill","outline"],["size","12","size-md","3","size-lg","3",1,""],["size","6","size-md","6","size-lg","6",1,""],[1,"flex","flex-col","justify-center","items-center","text-green-600"],[1,"flex","flex-col","justify-center","items-center"],[1,"flex","flex-col","justify-center","items-center","text-red-800"],["size","12","size-md","12","size-lg","12",1,""],[1,"h-[25em]"],["echarts","",1,"demo-chart","h-full","w-full","p-4",3,"options"],["size","12","size-md","3","size-lg","3","class","",4,"ngFor","ngForOf"],[1,"flex-row","flex","justify-between","items-center"],["name","information-circle",1,"text-xl",3,"click"],[1,"flex","flex-row","justify-center","items-center"],["color","danger","expand","block",3,"click"],["name","checkmark-circle",1,"text-green-600","text-3xl"],["name","close-circle",1,"text-3xl",3,"click"],["name","checkmark-circle",1,"text-3xl",3,"click"],["name","close-circle",1,"text-red-800","text-3xl"],["color","primary","expand","block",3,"click"],["color","success","expand","block",3,"click"]],template:function(e,s){1&e&&(t.nrm(0,"app-header-return",0),t.j41(1,"ion-content",1)(2,"ion-refresher",2),t.bIt("ionRefresh",function(r){return s.doRefresh(r)}),t.nrm(3,"ion-refresher-content"),t.k0s(),t.j41(4,"ion-grid"),t.nrm(5,"app-title",0),t.j41(6,"ion-row",3)(7,"ion-col",4)(8,"H2"),t.EFF(9,"Choose a type of test."),t.k0s(),t.nrm(10,"p"),t.k0s()(),t.j41(11,"ion-row",3)(12,"ion-col",4)(13,"ion-card",5)(14,"ion-card-header")(15,"h1",6),t.EFF(16,"Unit Tests"),t.k0s()(),t.j41(17,"ion-card-content")(18,"p",7),t.EFF(19,"A unit test is the smallest and simplest form of software testing. These tests are employed to assess a separable unit of software, such as a class or function, for correctness independent of the larger software system that contains the unit. Unit tests are also employed as a form of specification to ensure that a function or module exactly performs the behavior required by the system. Unit tests are commonly used to introduce test-driven development concepts."),t.k0s()(),t.j41(20,"ion-card-content",8)(21,"ion-button",9),t.bIt("click",function(){return s.navigateToCreateUnitTest()}),t.EFF(22,"Create Unit Test"),t.k0s()()()(),t.j41(23,"ion-col",4)(24,"ion-card",5)(25,"ion-card-header")(26,"h1",6),t.EFF(27,"Integration Tests"),t.k0s()(),t.j41(28,"ion-card-content")(29,"p",7),t.EFF(30,"Software components that pass individual unit tests are assembled into larger components. Engineers then run an integration test on an assembled component to verify that it functions correctly. Selenium, Playwright and Cypress are popular tools for integration testing."),t.k0s()(),t.j41(31,"ion-card-content",8)(32,"ion-button",10),t.EFF(33,"Create Integration Test"),t.k0s()()()(),t.j41(34,"ion-col",4)(35,"ion-card",5)(36,"ion-card-header")(37,"h1",6),t.EFF(38,"System Tests"),t.k0s()(),t.j41(39,"ion-card-content")(40,"p",7),t.EFF(41,"A system test is the largest scale test that engineers run for an undeployed system. All modules belonging to a specific component, such as a server that passed integration tests, are assembled into the system. Then the engineer tests the end-to-end functionality of the system."),t.k0s()(),t.j41(42,"ion-card-content",8)(43,"ion-button",9),t.bIt("click",function(){return s.navigateToCreateSystemTest()}),t.EFF(44,"Create System Test"),t.k0s()()()()()(),t.nrm(45,"br"),t.j41(46,"ion-grid"),t.nrm(47,"app-title",0),t.j41(48,"ion-row",3)(49,"ion-col",4)(50,"p"),t.EFF(51),t.k0s()()(),t.j41(52,"ion-row",3),t.Z7z(53,x,15,3,"ion-col",11,t.fX1),t.k0s(),t.nrm(55,"br")(56,"app-title",0),t.j41(57,"ion-row",3)(58,"ion-col",4)(59,"p"),t.EFF(60),t.k0s()()(),t.nrm(61,"br")(62,"app-title",0),t.j41(63,"ion-row",3)(64,"ion-col",4)(65,"p"),t.EFF(66),t.k0s()()(),t.j41(67,"ion-row",3)(68,"ion-col",12)(69,"ion-card")(70,"ion-card-header")(71,"ion-card-title",13),t.EFF(72,"Passed Tests"),t.k0s()(),t.j41(73,"ion-card-content",14)(74,"h1"),t.EFF(75),t.k0s()()()(),t.j41(76,"ion-col",12)(77,"ion-card")(78,"ion-card-header")(79,"ion-card-title",15),t.EFF(80,"Failed Tests"),t.k0s()(),t.j41(81,"ion-card-content",14)(82,"h1"),t.EFF(83),t.k0s()()()()(),t.j41(84,"ion-row",3)(85,"ion-col",16)(86,"ion-card")(87,"ion-card-content",17),t.nrm(88,"div",18),t.k0s()()()()(),t.j41(89,"ion-grid")(90,"ion-row",3),t.DNE(91,R,12,1,"ion-col",19),t.k0s()()()),2&e&&(t.Y8G("title","Software Testing Chooser"),t.R7$(),t.Y8G("fullscreen",!0),t.R7$(4),t.Y8G("title","Software Testing Chooser"),t.R7$(42),t.Y8G("title","Unit Tests"),t.R7$(4),t.SpI("Created tests for product step: ",s.productStep,""),t.R7$(2),t.Dyx(s.unitTests),t.R7$(3),t.Y8G("title","Integration Tests"),t.R7$(4),t.SpI("Created tests for product step: ",s.productStep,""),t.R7$(2),t.Y8G("title","System Tests"),t.R7$(4),t.SpI("System tests results for product step: ",s.productStep,""),t.R7$(9),t.JRh(s.passedSystemTests),t.R7$(8),t.JRh(s.failedSystemTests),t.R7$(5),t.Y8G("options",s.systemTestsChart),t.R7$(3),t.Y8G("ngForOf",s.systemTests))},dependencies:[d.Sq,c.Jm,c.b_,c.I9,c.ME,c.tN,c.hU,c.W9,c.lO,c.iq,c.To,c.Ki,c.ln,y.W,j.p,w.$P]}),u})()}];let U=(()=>{var i;class u{}return(i=u).\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.$C({type:i}),i.\u0275inj=t.G2t({imports:[p.iI.forChild(A),p.iI]}),u})();var O=a(5553);let I=(()=>{var i;class u{}return(i=u).\u0275fac=function(e){return new(e||i)},i.\u0275mod=t.$C({type:i}),i.\u0275inj=t.G2t({imports:[d.MD,T.YN,c.bv,U,O.h]}),u})()}}]); \ No newline at end of file diff --git a/www/8711.8d2bb8ceac7ccfe3.js b/www/8711.8d2bb8ceac7ccfe3.js new file mode 100644 index 0000000..25dd252 --- /dev/null +++ b/www/8711.8d2bb8ceac7ccfe3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[8711],{5553:(C,g,a)=>{a.d(g,{h:()=>p});var d=a(177),T=a(7863),c=a(4438);let p=(()=>{var i;class t{}return(i=t).\u0275fac=function(m){return new(m||i)},i.\u0275mod=c.$C({type:i}),i.\u0275inj=c.G2t({imports:[d.MD,T.bv]}),t})()},3241:(C,g,a)=>{a.d(g,{p:()=>p});var d=a(4438),T=a(177),c=a(7863);let p=(()=>{var i;class t{constructor(m){this.location=m,this.title="Header Title"}ngOnInit(){}goBack(){this.location.back()}}return(i=t).\u0275fac=function(m){return new(m||i)(d.rXU(T.aZ))},i.\u0275cmp=d.VBU({type:i,selectors:[["app-header-return"]],inputs:{title:"title"},decls:6,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"],["name","arrow-back","slot","start",1,"p-4","bigger-icon",3,"click"]],template:function(m,y){1&m&&(d.j41(0,"ion-header",0)(1,"ion-toolbar"),d.nrm(2,"ion-menu-button",1),d.j41(3,"ion-icon",2),d.bIt("click",function(){return y.goBack()}),d.k0s(),d.j41(4,"ion-title"),d.EFF(5),d.k0s()()()),2&m&&(d.Y8G("translucent",!0),d.R7$(5),d.JRh(y.title))},dependencies:[c.eU,c.iq,c.MC,c.BC,c.ai],styles:[".bigger-icon[_ngcontent-%COMP%]{font-size:1.5em}"]}),t})()},8711:(C,g,a)=>{a.r(g),a.d(g,{SoftwareTestingChooserPageModule:()=>I});var d=a(177),T=a(4341),c=a(7863),p=a(7650),i=a(467),t=a(4438),f=a(9274),m=a(2379),y=a(8453),j=a(3241),w=a(2820);function P(o,u){if(1&o){const l=t.RV6();t.nrm(0,"ion-icon",24),t.j41(1,"ion-icon",25),t.bIt("click",function(){t.eBV(l);const s=t.XpG().$implicit,n=t.XpG();return t.Njj(n.updateUnitState(s.title))}),t.k0s()}}function E(o,u){if(1&o){const l=t.RV6();t.j41(0,"ion-icon",26),t.bIt("click",function(){t.eBV(l);const s=t.XpG().$implicit,n=t.XpG();return t.Njj(n.updateUnitState(s.title))}),t.k0s(),t.nrm(1,"ion-icon",27)}}function x(o,u){if(1&o){const l=t.RV6();t.j41(0,"ion-col",11)(1,"ion-card")(2,"ion-card-header",20)(3,"ion-card-title"),t.EFF(4),t.k0s(),t.j41(5,"ion-icon",21),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.infoAutomateUnitState(s.title))}),t.k0s()(),t.j41(6,"ion-card-content",14)(7,"p"),t.EFF(8," Change the Test State: "),t.k0s(),t.j41(9,"div",22),t.DNE(10,P,2,0)(11,E,2,0),t.k0s()(),t.j41(12,"ion-card-content")(13,"ion-button",23),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.deleteUnitTest(s.title))}),t.EFF(14,"Delete Test"),t.k0s()()()()}if(2&o){const l=u.$implicit;t.R7$(4),t.JRh(l.title),t.R7$(6),t.vxM(10,l.state?10:-1),t.R7$(),t.vxM(11,l.state?-1:11)}}function R(o,u){if(1&o){const l=t.RV6();t.j41(0,"ion-col",11)(1,"ion-card")(2,"ion-card-header")(3,"ion-card-title"),t.EFF(4),t.k0s()(),t.j41(5,"ion-card-content")(6,"ion-button",28),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.navigateToViewHistorySystemTest(s.title))}),t.EFF(7,"View Test Results"),t.k0s(),t.j41(8,"ion-button",29),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.navigateToExecuteSystemTest(s.title))}),t.EFF(9,"Execute Test"),t.k0s(),t.j41(10,"ion-button",23),t.bIt("click",function(){const s=t.eBV(l).$implicit,n=t.XpG();return t.Njj(n.deleteSystemTest(s.title))}),t.EFF(11,"Delete Test"),t.k0s()()()()}if(2&o){const l=u.$implicit;t.R7$(4),t.JRh(l.title)}}const U=[{path:"",component:(()=>{var o;class u{constructor(e,s,n,r,h,_){this.activatedRoute=e,this.router=s,this.systemTestService=n,this.loadingCtrl=r,this.unitTestService=h,this.alertCtrl=_,this.productStep="",this.productObjective="",this.user={},this.orgName="",this.systemTests=[],this.unitTests=[],this.passedSystemTests=0,this.failedSystemTests=0,this.systemTestsChart={tooltip:{trigger:"axis"},legend:{data:["Passed","Failed"],left:"left"},xAxis:{type:"category",boundaryGap:!1,data:[]},yAxis:{type:"value"},series:[{name:"Passed",type:"line",data:[]},{name:"Failed",type:"line",data:[]}]}}ngOnInit(){}ionViewWillEnter(){var e=this;return(0,i.A)(function*(){yield e.showLoading(),e.getProductFromParams(),yield e.getUser(),yield e.getUnitTests();try{yield e.getSystemTests().then((0,i.A)(function*(){yield e.calculatePassedSystemTests().then((0,i.A)(function*(){yield e.calculateGraphDataSystemTests().then((0,i.A)(function*(){yield e.graphSystemTests()}))}))}))}catch(s){console.log(s)}yield e.hideLoading()})()}getProductFromParams(){this.activatedRoute.params.subscribe(e=>{this.productObjective=e.productObjective,this.productStep=e.step}),console.log(this.productObjective),console.log(this.productStep)}navigateToCreateSystemTest(){this.router.navigate(["/create-system-test",{productObjective:this.productObjective,step:this.productStep}])}navigateToCreateUnitTest(){this.router.navigate(["/create-unit-test",{productObjective:this.productObjective,step:this.productStep}])}navigateToExecuteSystemTest(e){this.router.navigate(["/execute-system-test",{productObjective:this.productObjective,step:this.productStep,testTitle:e}])}navigateToViewHistorySystemTest(e){this.router.navigate(["/view-history-system-test",{productObjective:this.productObjective,step:this.productStep,testTitle:e}])}calculatePassedUnitTests(){return(0,i.A)(function*(){})()}calculatePassedSystemTests(){var e=this;return(0,i.A)(function*(){e.passedSystemTests=0,e.failedSystemTests=0,yield e.systemTestService.getSystemTestHistoryByStep(e.orgName,e.productObjective,e.productStep).then(s=>{s.forEach(n=>{n.state?e.passedSystemTests++:e.failedSystemTests++})})})()}calculateGraphDataUnitTests(){return(0,i.A)(function*(){})()}calculateGraphDataSystemTests(){var e=this;return(0,i.A)(function*(){let s=[];const n=yield e.systemTestService.getSystemTestHistory(e.orgName,e.productObjective);return s=Object.keys(n).filter(r=>n[r].productStep===e.productStep).map(r=>({timestamp:r,systemTest:n[r].systemTest})),s})()}graphUnitTests(){return(0,i.A)(function*(){})()}graphSystemTests(){var e=this;return(0,i.A)(function*(){const s=yield e.calculateGraphDataSystemTests();let n=[];for(let r of s){let h=r.timestamp.split(" ")[0].split("-"),S=[h[2],h[1],h[0]].join("/"),M=r.timestamp.split(" ")[1],F=new Date(S+" "+M).toLocaleDateString(),k=r.systemTest.state?1:0,b=r.systemTest.state?0:1,v=n.findIndex(D=>D.date===F);-1===v?n.push({date:F,passed:k,failed:b}):(n[v].passed+=k,n[v].failed+=b)}n.sort((r,h)=>new Date(r.date)-new Date(h.date)),e.systemTestsChart.xAxis={type:"category",boundaryGap:!1,data:n.map(r=>r.date)},e.systemTestsChart.series=[{name:"Passed",type:"line",data:n.map(r=>r.passed)},{name:"Failed",type:"line",data:n.map(r=>r.failed)}],e.systemTestsChart={...e.systemTestsChart}})()}getUnitTests(){var e=this;return(0,i.A)(function*(){e.unitTestService.getUnitTests(e.orgName,e.productObjective,e.productStep).then(s=>{e.unitTests=s})})()}getSystemTests(){var e=this;return(0,i.A)(function*(){e.systemTestService.getSystemTest(e.orgName,e.productObjective,e.productStep).then(s=>{e.systemTests=s})})()}infoAutomateUnitState(e){var s=this;return(0,i.A)(function*(){yield s.showAlert("You can automate the result of this unit test ("+e+") by sending a status update to the /unit_test_state API endpoint.","Automate Unit Test State")})()}updateUnitState(e){var s=this;return(0,i.A)(function*(){yield s.showLoading(),yield s.unitTestService.updateUnitTestState(s.orgName,s.productObjective,s.productStep,e).then(function(){var n=(0,i.A)(function*(r){r?(yield s.getUnitTests(),yield s.hideLoading()):(yield s.hideLoading(),yield s.showAlert("There was an error updating the unit test state.","Error"))});return function(r){return n.apply(this,arguments)}}()),yield s.hideLoading()})()}deleteUnitTest(e){var s=this;return(0,i.A)(function*(){yield s.showLoading();let n=s.unitTests.find(r=>r.title===e);n&&(yield s.unitTestService.deleteUnitTest(s.orgName,s.productObjective,s.productStep,n).then((0,i.A)(function*(){yield s.getUnitTests()})),yield s.hideLoading())})()}deleteSystemTest(e){var s=this;return(0,i.A)(function*(){yield s.showLoading();let n=s.systemTests.find(r=>r.title===e);n&&(yield s.systemTestService.deleteSystemTest(s.orgName,s.productObjective,s.productStep,n).then((0,i.A)(function*(){yield s.getSystemTests()})),yield s.calculatePassedSystemTests(),yield s.calculateGraphDataSystemTests(),yield s.graphSystemTests(),yield s.hideLoading())})()}getUser(){var e=this;return(0,i.A)(function*(){const s=localStorage.getItem("user");s&&(e.user=JSON.parse(s),e.orgName=e.user.orgName)})()}showLoading(){var e=this;return(0,i.A)(function*(){yield(yield e.loadingCtrl.create({})).present()})()}hideLoading(){var e=this;return(0,i.A)(function*(){yield e.loadingCtrl.dismiss()})()}doRefresh(e){this.getSystemTests(),e.target.complete()}showAlert(e,s){var n=this;return(0,i.A)(function*(){yield(yield n.alertCtrl.create({header:s,message:e,buttons:["OK"]})).present()})()}}return(o=u).\u0275fac=function(e){return new(e||o)(t.rXU(p.nX),t.rXU(p.Ix),t.rXU(f.h),t.rXU(c.Xi),t.rXU(m.I),t.rXU(c.hG))},o.\u0275cmp=t.VBU({type:o,selectors:[["app-software-testing-chooser"]],decls:92,vars:13,consts:[[3,"title"],[3,"fullscreen"],["slot","fixed",3,"ionRefresh"],[1,"lg:m-10","md:m-10"],["size","12","size-md","4","size-lg","4",1,""],[1,"min-h-full","flex","flex-col","justify-between"],[1,"text-3xl","text-white"],[1,"text-white"],[1,"mt-auto"],["color","primary","expand","block","fill","outline",3,"click"],["color","primary","expand","block","fill","outline"],["size","12","size-md","3","size-lg","3",1,""],["size","6","size-md","6","size-lg","6",1,""],[1,"flex","flex-col","justify-center","items-center","text-green-600"],[1,"flex","flex-col","justify-center","items-center"],[1,"flex","flex-col","justify-center","items-center","text-red-800"],["size","12","size-md","12","size-lg","12",1,""],[1,"h-[25em]"],["echarts","",1,"demo-chart","h-full","w-full","p-4",3,"options"],["size","12","size-md","3","size-lg","3","class","",4,"ngFor","ngForOf"],[1,"flex-row","flex","justify-between","items-center"],["name","information-circle",1,"text-xl",3,"click"],[1,"flex","flex-row","justify-center","items-center"],["color","danger","expand","block",3,"click"],["name","checkmark-circle",1,"text-green-600","text-3xl"],["name","close-circle",1,"text-3xl",3,"click"],["name","checkmark-circle",1,"text-3xl",3,"click"],["name","close-circle",1,"text-red-800","text-3xl"],["color","primary","expand","block",3,"click"],["color","success","expand","block",3,"click"]],template:function(e,s){1&e&&(t.nrm(0,"app-header-return",0),t.j41(1,"ion-content",1)(2,"ion-refresher",2),t.bIt("ionRefresh",function(r){return s.doRefresh(r)}),t.nrm(3,"ion-refresher-content"),t.k0s(),t.j41(4,"ion-grid"),t.nrm(5,"app-title",0),t.j41(6,"ion-row",3)(7,"ion-col",4)(8,"H2"),t.EFF(9,"Choose a type of test."),t.k0s(),t.nrm(10,"p"),t.k0s()(),t.j41(11,"ion-row",3)(12,"ion-col",4)(13,"ion-card",5)(14,"ion-card-header")(15,"h1",6),t.EFF(16,"Unit Tests"),t.k0s()(),t.j41(17,"ion-card-content")(18,"p",7),t.EFF(19,"A unit test is the smallest and simplest form of software testing. These tests are employed to assess a separable unit of software, such as a class or function, for correctness independent of the larger software system that contains the unit. Unit tests are also employed as a form of specification to ensure that a function or module exactly performs the behavior required by the system. Unit tests are commonly used to introduce test-driven development concepts."),t.k0s()(),t.j41(20,"ion-card-content",8)(21,"ion-button",9),t.bIt("click",function(){return s.navigateToCreateUnitTest()}),t.EFF(22,"Create Unit Test"),t.k0s()()()(),t.j41(23,"ion-col",4)(24,"ion-card",5)(25,"ion-card-header")(26,"h1",6),t.EFF(27,"Integration Tests"),t.k0s()(),t.j41(28,"ion-card-content")(29,"p",7),t.EFF(30,"Software components that pass individual unit tests are assembled into larger components. Engineers then run an integration test on an assembled component to verify that it functions correctly. Selenium, Playwright and Cypress are popular tools for integration testing."),t.k0s()(),t.j41(31,"ion-card-content",8)(32,"ion-button",10),t.EFF(33,"Create Integration Test"),t.k0s()()()(),t.j41(34,"ion-col",4)(35,"ion-card",5)(36,"ion-card-header")(37,"h1",6),t.EFF(38,"System Tests"),t.k0s()(),t.j41(39,"ion-card-content")(40,"p",7),t.EFF(41,"A system test is the largest scale test that engineers run for an undeployed system. All modules belonging to a specific component, such as a server that passed integration tests, are assembled into the system. Then the engineer tests the end-to-end functionality of the system."),t.k0s()(),t.j41(42,"ion-card-content",8)(43,"ion-button",9),t.bIt("click",function(){return s.navigateToCreateSystemTest()}),t.EFF(44,"Create System Test"),t.k0s()()()()()(),t.nrm(45,"br"),t.j41(46,"ion-grid"),t.nrm(47,"app-title",0),t.j41(48,"ion-row",3)(49,"ion-col",4)(50,"p"),t.EFF(51),t.k0s()()(),t.j41(52,"ion-row",3),t.Z7z(53,x,15,3,"ion-col",11,t.fX1),t.k0s(),t.nrm(55,"br")(56,"app-title",0),t.j41(57,"ion-row",3)(58,"ion-col",4)(59,"p"),t.EFF(60),t.k0s()()(),t.nrm(61,"br")(62,"app-title",0),t.j41(63,"ion-row",3)(64,"ion-col",4)(65,"p"),t.EFF(66),t.k0s()()(),t.j41(67,"ion-row",3)(68,"ion-col",12)(69,"ion-card")(70,"ion-card-header")(71,"ion-card-title",13),t.EFF(72,"Passed Tests"),t.k0s()(),t.j41(73,"ion-card-content",14)(74,"h1"),t.EFF(75),t.k0s()()()(),t.j41(76,"ion-col",12)(77,"ion-card")(78,"ion-card-header")(79,"ion-card-title",15),t.EFF(80,"Failed Tests"),t.k0s()(),t.j41(81,"ion-card-content",14)(82,"h1"),t.EFF(83),t.k0s()()()()(),t.j41(84,"ion-row",3)(85,"ion-col",16)(86,"ion-card")(87,"ion-card-content",17),t.nrm(88,"div",18),t.k0s()()()()(),t.j41(89,"ion-grid")(90,"ion-row",3),t.DNE(91,R,12,1,"ion-col",19),t.k0s()()()),2&e&&(t.Y8G("title","Software Testing Chooser"),t.R7$(),t.Y8G("fullscreen",!0),t.R7$(4),t.Y8G("title","Software Testing Chooser"),t.R7$(42),t.Y8G("title","Unit Tests"),t.R7$(4),t.SpI("Created tests for product step: ",s.productStep,""),t.R7$(2),t.Dyx(s.unitTests),t.R7$(3),t.Y8G("title","Integration Tests"),t.R7$(4),t.SpI("Created tests for product step: ",s.productStep,""),t.R7$(2),t.Y8G("title","System Tests"),t.R7$(4),t.SpI("System tests results for product step: ",s.productStep,""),t.R7$(9),t.JRh(s.passedSystemTests),t.R7$(8),t.JRh(s.failedSystemTests),t.R7$(5),t.Y8G("options",s.systemTestsChart),t.R7$(3),t.Y8G("ngForOf",s.systemTests))},dependencies:[d.Sq,c.Jm,c.b_,c.I9,c.ME,c.tN,c.hU,c.W9,c.lO,c.iq,c.To,c.Ki,c.ln,y.W,j.p,w.$P]}),u})()}];let A=(()=>{var o;class u{}return(o=u).\u0275fac=function(e){return new(e||o)},o.\u0275mod=t.$C({type:o}),o.\u0275inj=t.G2t({imports:[p.iI.forChild(U),p.iI]}),u})();var O=a(5553);let I=(()=>{var o;class u{}return(o=u).\u0275fac=function(e){return new(e||o)},o.\u0275mod=t.$C({type:o}),o.\u0275inj=t.G2t({imports:[d.MD,T.YN,c.bv,A,O.h]}),u})()}}]); \ No newline at end of file diff --git a/www/common.1ef85c0b25ade417.js b/www/common.1ef85c0b25ade417.js new file mode 100644 index 0000000..6ebfa42 --- /dev/null +++ b/www/common.1ef85c0b25ade417.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkapp=self.webpackChunkapp||[]).push([[2076],{1263:(M,p,u)=>{u.d(p,{c:()=>g});var m=u(9672),r=u(1086),v=u(8607);const g=(d,c)=>{let i,s;const e=(o,a,f)=>{if(typeof document>"u")return;const l=document.elementFromPoint(o,a);l&&c(l)&&!l.disabled?l!==i&&(t(),n(l,f)):t()},n=(o,a)=>{i=o,s||(s=i);const f=i;(0,m.w)(()=>f.classList.add("ion-activated")),a()},t=(o=!1)=>{if(!i)return;const a=i;(0,m.w)(()=>a.classList.remove("ion-activated")),o&&s!==i&&i.click(),i=void 0};return(0,v.createGesture)({el:d,gestureName:"buttonActiveDrag",threshold:0,onStart:o=>e(o.currentX,o.currentY,r.a),onMove:o=>e(o.currentX,o.currentY,r.b),onEnd:()=>{t(!0),(0,r.h)(),s=void 0}})}},8438:(M,p,u)=>{u.d(p,{g:()=>r});var m=u(8476);const r=()=>{if(void 0!==m.w)return m.w.Capacitor}},5572:(M,p,u)=>{u.d(p,{c:()=>m,i:()=>r});const m=(v,g,d)=>"function"==typeof d?d(v,g):"string"==typeof d?v[d]===g[d]:Array.isArray(g)?g.includes(v):v===g,r=(v,g,d)=>void 0!==v&&(Array.isArray(v)?v.some(c=>m(c,g,d)):m(v,g,d))},3351:(M,p,u)=>{u.d(p,{g:()=>m});const m=(c,i,s,e,n)=>v(c[1],i[1],s[1],e[1],n).map(t=>r(c[0],i[0],s[0],e[0],t)),r=(c,i,s,e,n)=>n*(3*i*Math.pow(n-1,2)+n*(-3*s*n+3*s+e*n))-c*Math.pow(n-1,3),v=(c,i,s,e,n)=>d((e-=n)-3*(s-=n)+3*(i-=n)-(c-=n),3*s-6*i+3*c,3*i-3*c,c).filter(o=>o>=0&&o<=1),d=(c,i,s,e)=>{if(0===c)return((c,i,s)=>{const e=i*i-4*c*s;return e<0?[]:[(-i+Math.sqrt(e))/(2*c),(-i-Math.sqrt(e))/(2*c)]})(i,s,e);const n=(3*(s/=c)-(i/=c)*i)/3,t=(2*i*i*i-9*i*s+27*(e/=c))/27;if(0===n)return[Math.pow(-t,1/3)];if(0===t)return[Math.sqrt(-n),-Math.sqrt(-n)];const o=Math.pow(t/2,2)+Math.pow(n/3,3);if(0===o)return[Math.pow(t/2,.5)-i/3];if(o>0)return[Math.pow(-t/2+Math.sqrt(o),1/3)-Math.pow(t/2+Math.sqrt(o),1/3)-i/3];const a=Math.sqrt(Math.pow(-n/3,3)),f=Math.acos(-t/(2*Math.sqrt(Math.pow(-n/3,3)))),l=2*Math.pow(a,1/3);return[l*Math.cos(f/3)-i/3,l*Math.cos((f+2*Math.PI)/3)-i/3,l*Math.cos((f+4*Math.PI)/3)-i/3]}},5083:(M,p,u)=>{u.d(p,{i:()=>m});const m=r=>r&&""!==r.dir?"rtl"===r.dir.toLowerCase():"rtl"===(null==document?void 0:document.dir.toLowerCase())},3126:(M,p,u)=>{u.r(p),u.d(p,{startFocusVisible:()=>g});const m="ion-focused",v=["Tab","ArrowDown","Space","Escape"," ","Shift","Enter","ArrowLeft","ArrowRight","ArrowUp","Home","End"],g=d=>{let c=[],i=!0;const s=d?d.shadowRoot:document,e=d||document.body,n=h=>{c.forEach(_=>_.classList.remove(m)),h.forEach(_=>_.classList.add(m)),c=h},t=()=>{i=!1,n([])},o=h=>{i=v.includes(h.key),i||n([])},a=h=>{if(i&&void 0!==h.composedPath){const _=h.composedPath().filter(y=>!!y.classList&&y.classList.contains("ion-focusable"));n(_)}},f=()=>{s.activeElement===e&&n([])};return s.addEventListener("keydown",o),s.addEventListener("focusin",a),s.addEventListener("focusout",f),s.addEventListener("touchstart",t,{passive:!0}),s.addEventListener("mousedown",t),{destroy:()=>{s.removeEventListener("keydown",o),s.removeEventListener("focusin",a),s.removeEventListener("focusout",f),s.removeEventListener("touchstart",t),s.removeEventListener("mousedown",t)},setFocus:n}}},1086:(M,p,u)=>{u.d(p,{I:()=>r,a:()=>i,b:()=>s,c:()=>c,d:()=>n,h:()=>e});var m=u(8438),r=function(t){return t.Heavy="HEAVY",t.Medium="MEDIUM",t.Light="LIGHT",t}(r||{});const g={getEngine(){const t=(0,m.g)();if(null!=t&&t.isPluginAvailable("Haptics"))return t.Plugins.Haptics},available(){if(!this.getEngine())return!1;const o=(0,m.g)();return"web"!==(null==o?void 0:o.getPlatform())||typeof navigator<"u"&&void 0!==navigator.vibrate},impact(t){const o=this.getEngine();o&&o.impact({style:t.style})},notification(t){const o=this.getEngine();o&&o.notification({type:t.type})},selection(){this.impact({style:r.Light})},selectionStart(){const t=this.getEngine();t&&t.selectionStart()},selectionChanged(){const t=this.getEngine();t&&t.selectionChanged()},selectionEnd(){const t=this.getEngine();t&&t.selectionEnd()}},d=()=>g.available(),c=()=>{d()&&g.selection()},i=()=>{d()&&g.selectionStart()},s=()=>{d()&&g.selectionChanged()},e=()=>{d()&&g.selectionEnd()},n=t=>{d()&&g.impact(t)}},909:(M,p,u)=>{u.d(p,{I:()=>c,a:()=>n,b:()=>d,c:()=>a,d:()=>l,f:()=>t,g:()=>e,i:()=>s,p:()=>f,r:()=>h,s:()=>o});var m=u(467),r=u(4920),v=u(4929);const d="ion-content",c=".ion-content-scroll-host",i=`${d}, ${c}`,s=_=>"ION-CONTENT"===_.tagName,e=function(){var _=(0,m.A)(function*(y){return s(y)?(yield new Promise(D=>(0,r.c)(y,D)),y.getScrollElement()):y});return function(D){return _.apply(this,arguments)}}(),n=_=>_.querySelector(c)||_.querySelector(i),t=_=>_.closest(i),o=(_,y)=>s(_)?_.scrollToTop(y):Promise.resolve(_.scrollTo({top:0,left:0,behavior:y>0?"smooth":"auto"})),a=(_,y,D,w)=>s(_)?_.scrollByPoint(y,D,w):Promise.resolve(_.scrollBy({top:D,left:y,behavior:w>0?"smooth":"auto"})),f=_=>(0,v.b)(_,d),l=_=>{if(s(_)){const D=_.scrollY;return _.scrollY=!1,D}return _.style.setProperty("overflow","hidden"),!0},h=(_,y)=>{s(_)?_.scrollY=y:_.style.removeProperty("overflow")}},3992:(M,p,u)=>{u.d(p,{a:()=>m,b:()=>a,c:()=>i,d:()=>f,e:()=>A,f:()=>c,g:()=>l,h:()=>v,i:()=>r,j:()=>E,k:()=>P,l:()=>s,m:()=>t,n:()=>h,o:()=>n,p:()=>d,q:()=>g,r:()=>O,s:()=>T,t:()=>o,u:()=>D,v:()=>w,w:()=>e,x:()=>_,y:()=>y});const m="data:image/svg+xml;utf8,",r="data:image/svg+xml;utf8,",v="data:image/svg+xml;utf8,",g="data:image/svg+xml;utf8,",d="data:image/svg+xml;utf8,",c="data:image/svg+xml;utf8,",i="data:image/svg+xml;utf8,",s="data:image/svg+xml;utf8,",e="data:image/svg+xml;utf8,",n="data:image/svg+xml;utf8,",t="data:image/svg+xml;utf8,",o="data:image/svg+xml;utf8,",a="data:image/svg+xml;utf8,",f="data:image/svg+xml;utf8,",l="data:image/svg+xml;utf8,",h="data:image/svg+xml;utf8,",_="data:image/svg+xml;utf8,",y="data:image/svg+xml;utf8,",D="data:image/svg+xml;utf8,",w="data:image/svg+xml;utf8,",O="data:image/svg+xml;utf8,",E="data:image/svg+xml;utf8,",P="data:image/svg+xml;utf8,",T="data:image/svg+xml;utf8,",A="data:image/svg+xml;utf8,"},243:(M,p,u)=>{u.d(p,{c:()=>g,g:()=>d});var m=u(8476),r=u(4920),v=u(4929);const g=(i,s,e)=>{let n,t;if(void 0!==m.w&&"MutationObserver"in m.w){const l=Array.isArray(s)?s:[s];n=new MutationObserver(h=>{for(const _ of h)for(const y of _.addedNodes)if(y.nodeType===Node.ELEMENT_NODE&&l.includes(y.slot))return e(),void(0,r.r)(()=>o(y))}),n.observe(i,{childList:!0,subtree:!0})}const o=l=>{var h;t&&(t.disconnect(),t=void 0),t=new MutationObserver(_=>{e();for(const y of _)for(const D of y.removedNodes)D.nodeType===Node.ELEMENT_NODE&&D.slot===s&&f()}),t.observe(null!==(h=l.parentElement)&&void 0!==h?h:l,{subtree:!0,childList:!0})},f=()=>{t&&(t.disconnect(),t=void 0)};return{destroy:()=>{n&&(n.disconnect(),n=void 0),f()}}},d=(i,s,e)=>{const n=null==i?0:i.toString().length,t=c(n,s);if(void 0===e)return t;try{return e(n,s)}catch(o){return(0,v.a)("Exception in provided `counterFormatter`.",o),t}},c=(i,s)=>`${i} / ${s}`},1622:(M,p,u)=>{u.r(p),u.d(p,{KEYBOARD_DID_CLOSE:()=>d,KEYBOARD_DID_OPEN:()=>g,copyVisualViewport:()=>O,keyboardDidClose:()=>_,keyboardDidOpen:()=>l,keyboardDidResize:()=>h,resetKeyboardAssist:()=>n,setKeyboardClose:()=>f,setKeyboardOpen:()=>a,startKeyboardAssist:()=>t,trackViewportChanges:()=>w});var m=u(4379);u(8438),u(8476);const g="ionKeyboardDidShow",d="ionKeyboardDidHide";let i={},s={},e=!1;const n=()=>{i={},s={},e=!1},t=E=>{if(m.K.getEngine())o(E);else{if(!E.visualViewport)return;s=O(E.visualViewport),E.visualViewport.onresize=()=>{w(E),l()||h(E)?a(E):_(E)&&f(E)}}},o=E=>{E.addEventListener("keyboardDidShow",P=>a(E,P)),E.addEventListener("keyboardDidHide",()=>f(E))},a=(E,P)=>{y(E,P),e=!0},f=E=>{D(E),e=!1},l=()=>!e&&i.width===s.width&&(i.height-s.height)*s.scale>150,h=E=>e&&!_(E),_=E=>e&&s.height===E.innerHeight,y=(E,P)=>{const A=new CustomEvent(g,{detail:{keyboardHeight:P?P.keyboardHeight:E.innerHeight-s.height}});E.dispatchEvent(A)},D=E=>{const P=new CustomEvent(d);E.dispatchEvent(P)},w=E=>{i=Object.assign({},s),s=O(E.visualViewport)},O=E=>({width:Math.round(E.width),height:Math.round(E.height),offsetTop:E.offsetTop,offsetLeft:E.offsetLeft,pageTop:E.pageTop,pageLeft:E.pageLeft,scale:E.scale})},4379:(M,p,u)=>{u.d(p,{K:()=>g,a:()=>v});var m=u(8438),r=function(d){return d.Unimplemented="UNIMPLEMENTED",d.Unavailable="UNAVAILABLE",d}(r||{}),v=function(d){return d.Body="body",d.Ionic="ionic",d.Native="native",d.None="none",d}(v||{});const g={getEngine(){const d=(0,m.g)();if(null!=d&&d.isPluginAvailable("Keyboard"))return d.Plugins.Keyboard},getResizeMode(){const d=this.getEngine();return null!=d&&d.getResizeMode?d.getResizeMode().catch(c=>{if(c.code!==r.Unimplemented)throw c}):Promise.resolve(void 0)}}},4731:(M,p,u)=>{u.d(p,{c:()=>c});var m=u(467),r=u(8476),v=u(4379);const g=i=>{if(void 0===r.d||i===v.a.None||void 0===i)return null;const s=r.d.querySelector("ion-app");return null!=s?s:r.d.body},d=i=>{const s=g(i);return null===s?0:s.clientHeight},c=function(){var i=(0,m.A)(function*(s){let e,n,t,o;const a=function(){var y=(0,m.A)(function*(){const D=yield v.K.getResizeMode(),w=void 0===D?void 0:D.mode;e=()=>{void 0===o&&(o=d(w)),t=!0,f(t,w)},n=()=>{t=!1,f(t,w)},null==r.w||r.w.addEventListener("keyboardWillShow",e),null==r.w||r.w.addEventListener("keyboardWillHide",n)});return function(){return y.apply(this,arguments)}}(),f=(y,D)=>{s&&s(y,l(D))},l=y=>{if(0===o||o===d(y))return;const D=g(y);return null!==D?new Promise(w=>{const E=new ResizeObserver(()=>{D.clientHeight===o&&(E.disconnect(),w())});E.observe(D)}):void 0};return yield a(),{init:a,destroy:()=>{null==r.w||r.w.removeEventListener("keyboardWillShow",e),null==r.w||r.w.removeEventListener("keyboardWillHide",n),e=n=void 0},isKeyboardVisible:()=>t}});return function(e){return i.apply(this,arguments)}}()},7838:(M,p,u)=>{u.d(p,{c:()=>r});var m=u(467);const r=()=>{let v;return{lock:function(){var d=(0,m.A)(function*(){const c=v;let i;return v=new Promise(s=>i=s),void 0!==c&&(yield c),i});return function(){return d.apply(this,arguments)}}()}}},9001:(M,p,u)=>{u.d(p,{c:()=>v});var m=u(8476),r=u(4920);const v=(g,d,c)=>{let i;const s=()=>!(void 0===d()||void 0!==g.label||null===c()),n=()=>{const o=d();if(void 0===o)return;if(!s())return void o.style.removeProperty("width");const a=c().scrollWidth;if(0===a&&null===o.offsetParent&&void 0!==m.w&&"IntersectionObserver"in m.w){if(void 0!==i)return;const f=i=new IntersectionObserver(l=>{1===l[0].intersectionRatio&&(n(),f.disconnect(),i=void 0)},{threshold:.01,root:g});f.observe(o)}else o.style.setProperty("width",.75*a+"px")};return{calculateNotchWidth:()=>{s()&&(0,r.r)(()=>{n()})},destroy:()=>{i&&(i.disconnect(),i=void 0)}}}},7895:(M,p,u)=>{u.d(p,{S:()=>r});const r={bubbles:{dur:1e3,circles:9,fn:(v,g,d)=>{const c=v*g/d-v+"ms",i=2*Math.PI*g/d;return{r:5,style:{top:32*Math.sin(i)+"%",left:32*Math.cos(i)+"%","animation-delay":c}}}},circles:{dur:1e3,circles:8,fn:(v,g,d)=>{const c=g/d,i=v*c-v+"ms",s=2*Math.PI*c;return{r:5,style:{top:32*Math.sin(s)+"%",left:32*Math.cos(s)+"%","animation-delay":i}}}},circular:{dur:1400,elmDuration:!0,circles:1,fn:()=>({r:20,cx:48,cy:48,fill:"none",viewBox:"24 24 48 48",transform:"translate(0,0)",style:{}})},crescent:{dur:750,circles:1,fn:()=>({r:26,style:{}})},dots:{dur:750,circles:3,fn:(v,g)=>({r:6,style:{left:32-32*g+"%","animation-delay":-110*g+"ms"}})},lines:{dur:1e3,lines:8,fn:(v,g,d)=>({y1:14,y2:26,style:{transform:`rotate(${360/d*g+(g({y1:12,y2:20,style:{transform:`rotate(${360/d*g+(g({y1:17,y2:29,style:{transform:`rotate(${30*g+(g<6?180:-180)}deg)`,"animation-delay":v*g/d-v+"ms"}})},"lines-sharp-small":{dur:1e3,lines:12,fn:(v,g,d)=>({y1:12,y2:20,style:{transform:`rotate(${30*g+(g<6?180:-180)}deg)`,"animation-delay":v*g/d-v+"ms"}})}}},7166:(M,p,u)=>{u.r(p),u.d(p,{createSwipeBackGesture:()=>d});var m=u(4920),r=u(5083),v=u(8607);u(1970);const d=(c,i,s,e,n)=>{const t=c.ownerDocument.defaultView;let o=(0,r.i)(c);const f=D=>o?-D.deltaX:D.deltaX;return(0,v.createGesture)({el:c,gestureName:"goback-swipe",gesturePriority:101,threshold:10,canStart:D=>(o=(0,r.i)(c),(D=>{const{startX:O}=D;return o?O>=t.innerWidth-50:O<=50})(D)&&i()),onStart:s,onMove:D=>{const O=f(D)/t.innerWidth;e(O)},onEnd:D=>{const w=f(D),O=t.innerWidth,E=w/O,P=(D=>o?-D.velocityX:D.velocityX)(D),A=P>=0&&(P>.2||w>O/2),L=(A?1-E:E)*O;let C=0;if(L>5){const R=L/Math.abs(P);C=Math.min(R,540)}n(A,E<=0?.01:(0,m.j)(0,E,.9999),C)}})}},2935:(M,p,u)=>{u.d(p,{w:()=>m});const m=(g,d,c)=>{if(typeof MutationObserver>"u")return;const i=new MutationObserver(s=>{c(r(s,d))});return i.observe(g,{childList:!0,subtree:!0}),i},r=(g,d)=>{let c;return g.forEach(i=>{for(let s=0;s{if(1!==g.nodeType)return;const c=g;return(c.tagName===d.toUpperCase()?[c]:Array.from(c.querySelectorAll(d))).find(s=>s.value===c.value)}},385:(M,p,u)=>{u.d(p,{l:()=>v});var m=u(4438),r=u(7863);let v=(()=>{var g;class d{constructor(){this.title="Header Title"}ngOnInit(){}}return(g=d).\u0275fac=function(i){return new(i||g)},g.\u0275cmp=m.VBU({type:g,selectors:[["app-header"]],inputs:{title:"title"},decls:5,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"]],template:function(i,s){1&i&&(m.j41(0,"ion-header",0)(1,"ion-toolbar"),m.nrm(2,"ion-menu-button",1),m.j41(3,"ion-title"),m.EFF(4),m.k0s()()()),2&i&&(m.Y8G("translucent",!0),m.R7$(4),m.JRh(s.title))},dependencies:[r.eU,r.MC,r.BC,r.ai]}),d})()},8453:(M,p,u)=>{u.d(p,{W:()=>v});var m=u(4438),r=u(7863);let v=(()=>{var g;class d{constructor(){this.title="Title"}ngOnInit(){}}return(g=d).\u0275fac=function(i){return new(i||g)},g.\u0275cmp=m.VBU({type:g,selectors:[["app-title"]],inputs:{title:"title"},decls:4,vars:1,consts:[[1,"lg:m-10"],["size","12","size-md","6","size-lg","6"],[1,"text-4xl","lg:text-6xl","font-bold"]],template:function(i,s){1&i&&(m.j41(0,"ion-row",0)(1,"ion-col",1)(2,"h1",2),m.EFF(3),m.k0s()()()),2&i&&(m.R7$(3),m.JRh(s.title))},dependencies:[r.hU,r.ln]}),d})()},4796:(M,p,u)=>{u.d(p,{u:()=>d});var m=u(467),r=u(8737),v=u(4262),g=u(4438);let d=(()=>{var c;class i{constructor(e,n){this.auth=e,this.firestore=n}registerUser(e){var n=this;return(0,m.A)(function*(){try{const t=yield(0,r.eJ)(n.auth,e.email,e.password);return t.user?(yield(0,v.BN)((0,v.H9)(n.firestore,"users",t.user.uid),{email:e.email,name:e.name,orgName:e.orgName,uid:t.user.uid}),yield(0,v.BN)((0,v.H9)(n.firestore,"teams",`${e.orgName}`),{name:e.orgName,members:[t.user.uid]}),t):null}catch{return null}})()}loginUser(e){var n=this;return(0,m.A)(function*(){try{var t;const o=yield(0,r.x9)(n.auth,e.email,e.password);if(null!==(t=o.user)&&void 0!==t&&t.uid){const a=yield(0,v.x7)((0,v.H9)(n.firestore,"users",o.user.uid));if(a.exists())return localStorage.setItem("user",JSON.stringify(a.data())),o}}catch(o){console.error(o)}return null})()}logoutUser(){var e=this;return(0,m.A)(function*(){yield e.auth.signOut()})()}addMember(e){var n=this;return(0,m.A)(function*(){try{const t=yield(0,r.eJ)(n.auth,e.email,e.password);if(!t.user)return!1;const o={email:e.email,name:e.name,orgName:e.orgName,uid:t.user.uid};return yield(0,v.BN)((0,v.H9)(n.firestore,"users",t.user.uid),o),o}catch{return!1}})()}}return(c=i).\u0275fac=function(e){return new(e||c)(g.KVO(r.Nj),g.KVO(v._7))},c.\u0275prov=g.jDH({token:c,factory:c.\u0275fac,providedIn:"root"}),i})()},6560:(M,p,u)=>{u.d(p,{x:()=>d});var m=u(467),r=u(4262),v=u(4438),g=u(1626);let d=(()=>{var c;class i{constructor(e,n){this.firestore=e,this.http=n,this.url_cpu="https://devprobeapi.onrender.com/flame_graph_date",this.url_mem="https://devprobeapi.onrender.com/flame_graph_memory_date"}getProducts(e){var n=this;return(0,m.A)(function*(){try{const t=(0,r.rJ)(n.firestore,"teams",e,"products");return(yield(0,r.GG)(t)).docs.map(a=>a.data())}catch(t){return console.log(t),[]}})()}getDates(e,n,t){var o=this;return(0,m.A)(function*(){try{t||(t="cpu_usage");const a=(0,r.rJ)(o.firestore,"teams",e,"products",n,t);return(yield(0,r.GG)(a)).docs.map(l=>l.id)}catch(a){return console.log(a),[]}})()}getFlameGraphByDate(e,n,t,o){var a=this;return(0,m.A)(function*(){try{let f={team:e,product:n,date:t};return o?yield a.http.post(a.url_mem,f).toPromise():yield a.http.post(a.url_cpu,f).toPromise()}catch{return{}}})()}}return(c=i).\u0275fac=function(e){return new(e||c)(v.KVO(r._7),v.KVO(g.Qq))},c.\u0275prov=v.jDH({token:c,factory:c.\u0275fac,providedIn:"root"}),i})()},201:(M,p,u)=>{u.d(p,{p:()=>d});var m=u(467),r=u(4262),v=u(4438),g=u(1626);let d=(()=>{var c;class i{constructor(e,n){this.firestore=e,this.httpClient=n,this.url="https://devprobeapi.onrender.com/"}syncRepo(e,n,t,o,a){var f=this;return(0,m.A)(function*(){const l=(0,r.H9)(f.firestore,"teams",e),h=yield(0,r.x7)(l);if(h.exists()){const _=h.data();_.gitHub={key:n,repo:t,branch:o,owner:a},yield(0,r.BN)(l,_)}})()}getSyncRepo(e){var n=this;return(0,m.A)(function*(){const t=(0,r.H9)(n.firestore,"teams",e),o=yield(0,r.x7)(t);return o.exists()?o.data().gitHub:null})()}getFiles(e){var n=this;return(0,m.A)(function*(){const t=yield n.httpClient.post(n.url+"github_repo",{auth:e.key,repo:e.repo,branch:e.branch,owner:e.owner}).toPromise();if(console.log(t),t){let o=t.paths;return o=o.filter(a=>!a.includes(".git")),o=o.filter(a=>!a.includes("node_modules")),o=o.filter(a=>!a.includes(".idea")),o=o.filter(a=>a.includes(".")),o}return[]})()}getContentFromFilePath(e,n){var t=this;return(0,m.A)(function*(){const o=yield t.httpClient.post(t.url+"github_file",{auth:e.key,repo:e.repo,owner:e.owner,path:n}).toPromise();return console.log(o),o?o.content:""})()}}return(c=i).\u0275fac=function(e){return new(e||c)(v.KVO(r._7),v.KVO(g.Qq))},c.\u0275prov=v.jDH({token:c,factory:c.\u0275fac,providedIn:"root"}),i})()},3661:(M,p,u)=>{u.d(p,{e:()=>d});var m=u(467),r=u(4438),v=u(4262),g=u(1626);let d=(()=>{var c;class i{constructor(e,n){this.firestore=e,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocationDestSrc(e){var n=this;return(0,m.A)(function*(){var t,o,a,f,l,h,_,y;if(!e)return e;const D=n.http.get(n.ipApiURL+e.dst_addr).toPromise(),w=n.http.get(n.ipApiURL+e.src_addr).toPromise(),O=yield D,E=yield w;return e.dst_city=null!==(t=O.city)&&void 0!==t?t:"No city found",e.dst_country=null!==(o=O.country)&&void 0!==o?o:"No country found",e.dst_latitude=null!==(a=O.lat)&&void 0!==a?a:0,e.dst_longitude=null!==(f=O.lon)&&void 0!==f?f:0,e.src_city=null!==(l=E.city)&&void 0!==l?l:"No city found",e.src_country=null!==(h=E.country)&&void 0!==h?h:"No country found",e.src_latitude=null!==(_=E.lat)&&void 0!==_?_:0,e.src_longitude=null!==(y=E.lon)&&void 0!==y?y:0,e})()}getLocationFrom(e){var n=this;return(0,m.A)(function*(){if(!e)return e;let t=e.result;for(let h=0;h{u.d(p,{N:()=>d});var m=u(467),r=u(4262),v=u(4438),g=u(1626);let d=(()=>{var c;class i{constructor(e,n){this.firestore=e,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocation(e){var n=this;return(0,m.A)(function*(){console.log(e);const o=yield n.http.get(n.ipApiURL+e[0].dst_addr).toPromise();for(let l=0;ln.http.get(n.ipApiURL+l.from).toPromise());return(yield Promise.all(a)).forEach((l,h)=>{e[h].fromLatitude=l.lat,e[h].fromLongitude=l.lon,e[h].cityFrom=l.city,e[h].countryFrom=l.country}),console.log(e),e})()}saveLocationResults(e,n,t,o){var a=this;return(0,m.A)(function*(){try{console.log(o,"ripeData");const f=(0,r.rJ)(a.firestore,"teams",e,"products",n,"ripe"),l=(0,r.H9)(f,t),h=o.map(_=>({from:_.from,dst_addr:_.dst_addr,latency:_.latency,cityFrom:_.cityFrom,countryFrom:_.countryFrom,cityTo:_.cityTo,countryTo:_.countryTo,fromLatitude:_.fromLatitude,fromLongitude:_.fromLongitude,toLatitude:_.toLatitude,toLongitude:_.toLongitude,id:_.id}));return yield(0,r.BN)(l,{data:h}),console.log("Data saved",{data:h}),!0}catch(f){return console.log(f),!1}})()}}return(c=i).\u0275fac=function(e){return new(e||c)(v.KVO(r._7),v.KVO(g.Qq))},c.\u0275prov=v.jDH({token:c,factory:c.\u0275fac,providedIn:"root"}),i})()},6241:(M,p,u)=>{u.d(p,{b:()=>g});var m=u(467),r=u(4262),v=u(4438);let g=(()=>{var d;class c{constructor(s){this.firestore=s}addProduct(s,e){var n=this;return(0,m.A)(function*(){try{console.log(s);const t=(0,r.H9)(n.firestore,"teams",e,"products",s.productObjective);return yield(0,r.BN)(t,s),!0}catch(t){return console.log(t),!1}})()}getProducts(s){var e=this;return(0,m.A)(function*(){try{const n=(0,r.rJ)(e.firestore,"teams",s,"products");return(yield(0,r.GG)(n)).docs.map(o=>o.data())}catch(n){return console.log(n),[]}})()}removeProduct(s,e){var n=this;return(0,m.A)(function*(){try{const t=(0,r.H9)(n.firestore,"teams",s,"products",e);return yield(0,r.kd)(t),!0}catch(t){return console.log(t),!1}})()}}return(d=c).\u0275fac=function(s){return new(s||d)(v.KVO(r._7))},d.\u0275prov=v.jDH({token:d,factory:d.\u0275fac,providedIn:"root"}),c})()},2588:(M,p,u)=>{u.d(p,{N:()=>d});var m=u(467),r=u(4262),v=u(4438),g=u(1626);let d=(()=>{var c;class i{constructor(e,n){this.http=e,this.firestore=n,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendTraceRequest(e,n,t,o){var a=this;return(0,m.A)(function*(){console.log("Sending trace request");try{let f={definitions:[{target:e,description:n,type:t,af:4,is_oneoff:!0,protocol:"TCP"}],probes:[]};console.log(o);let l=o.split(",").length-1,h=(o=o.slice(0,-1)).split(","),_=[];for(let w=0;w({id:a.measurementID,dst_addr:_.dst_addr,dst_city:_.dst_city,dst_country:_.dst_country,dst_latitude:_.dst_latitude,dst_longitude:_.dst_longitude,src_addr:_.src_addr,src_city:_.src_city,src_country:_.src_country,src_latitude:_.src_latitude,src_longitude:_.src_longitude,result:_.result}));return yield(0,r.BN)(l,{data:h}),!0}catch(f){return console.log(f),!1}})()}getHistoryResults(e,n){var t=this;return(0,m.A)(function*(){const a=(0,r.rJ)(t.firestore,"teams/"+e+"/products/"+n+"/ripe_trace"),f=yield(0,r.GG)(a);let l=[];return f.docs.forEach(h=>{l.push({id:h.id,data:h.data()})}),console.log(l),l})()}getAllResultsByDescription(e,n,t){var o=this;return(0,m.A)(function*(){try{let a="teams/"+e+"/products/"+n+"/ripe_trace";console.log(a);let f=(0,r.H9)(o.firestore,a,t);return(yield(0,r.x7)(f)).data()}catch(a){return console.log(a),[]}})()}}return(c=i).\u0275fac=function(e){return new(e||c)(v.KVO(g.Qq),v.KVO(r._7))},c.\u0275prov=v.jDH({token:c,factory:c.\u0275fac,providedIn:"root"}),i})()},9640:(M,p,u)=>{u.d(p,{Q:()=>c});var m=u(467),r=u(1985),v=u(4262),g=u(4438),d=u(1626);let c=(()=>{var i;class s{constructor(n,t){this.http=n,this.firestore=t,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendMeasurementRequest(n,t,o,a){var f=this;return(0,m.A)(function*(){let l=a.split(",").length-1;a=a.slice(0,-1);try{let h={definitions:[{target:n,description:"ping",type:"ping",af:4,is_oneoff:!0}],probes:[{requested:l,type:"probes",value:a}]},_={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};console.log(h);let y=yield f.http.post(f.measurementsUrl,h,{headers:_}).toPromise();return console.log(y),f.measurementID=y.measurements[0],f.measurementID}catch(h){return console.log(h),!1}})()}getMeasurementResults(n){var t=this;return(0,m.A)(function*(){n&&(t.measurementID=n);try{let o={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};return""===t.measurementID?(console.log("No measurement ID"),!1):t.http.get(t.measurementsUrl+t.measurementID+"/results/",{headers:o})}catch(o){return console.log(o),new r.c}})()}saveMeasurementResults(n,t,o,a){var f=this;return(0,m.A)(function*(){try{const l=(0,v.rJ)(f.firestore,"teams",n,"products",t,"ripe"),h=(0,v.H9)(l,o),_=a.map((y,D)=>({id:f.measurementID,from:y.from,dst_addr:y.dst_addr,latency:y.latency}));return yield(0,v.BN)(h,{data:_}),!0}catch(l){return console.log(l),!1}})()}getAllResultsByDescription(n,t,o){var a=this;return(0,m.A)(function*(){try{let f="teams/"+n+"/products/"+t+"/ripe";console.log(f);let l=(0,v.H9)(a.firestore,f,o);return(yield(0,v.x7)(l)).data()}catch(f){return console.log(f),[]}})()}getHistoryResults(n,t){var o=this;return(0,m.A)(function*(){const f=(0,v.rJ)(o.firestore,"teams/"+n+"/products/"+t+"/ripe"),l=yield(0,v.GG)(f);let h=[];return l.docs.forEach(_=>{h.push({id:_.id,data:_.data()})}),console.log(h),h})()}deleteHistory(n,t,o){var a=this;return(0,m.A)(function*(){const l=(0,v.H9)(a.firestore,"teams/"+n+"/products/"+t+"/ripe",o);try{return yield(0,v.kd)(l),!0}catch(h){return console.log(h),!1}})()}}return(i=s).\u0275fac=function(n){return new(n||i)(g.KVO(d.Qq),g.KVO(v._7))},i.\u0275prov=g.jDH({token:i,factory:i.\u0275fac,providedIn:"root"}),s})()},9274:(M,p,u)=>{u.d(p,{h:()=>g});var m=u(467),r=u(4262),v=u(4438);let g=(()=>{var d;class c{constructor(s){this.firestore=s}addSystemTest(s,e,n,t){var o=this;return(0,m.A)(function*(){const a=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests"),f=yield(0,r.x7)(a);if(f.exists()){const l=f.data();if(!l[n])return l[n]=[t],yield(0,r.BN)(a,l),void console.log("Document created with ID: ",a.id);l[n].push(t),yield(0,r.BN)(a,l),console.log("Document updated with ID: ",f.id)}else console.log("No such document!"),yield(0,r.BN)(a,{[n]:[t]}),console.log("Document created with ID: ",a.id)})()}getSystemTest(s,e,n){var t=this;return(0,m.A)(function*(){const o=(0,r.H9)(t.firestore,"teams",s,"products",e,"software_testing","system_tests"),a=yield(0,r.x7)(o);return a.exists()?a.data()[n]:[]})()}saveSystemTest(s,e,n,t){var o=this;return(0,m.A)(function*(){const a=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),f=new Date,l=`${f.getFullYear()}-${f.getMonth()+1}-${f.getDate()} ${f.getHours()}:${f.getMinutes()}:${f.getSeconds()}`;console.log(l);const h=yield(0,r.x7)(a);if(h.exists()){let _=h.data();_[l]={systemTest:t},_[l].productStep=n,yield(0,r.BN)(a,_)}else yield(0,r.BN)(a,{[l]:{systemTest:t,productStep:n}})})()}getSystemTestHistoryByStep(s,e,n){var t=this;return(0,m.A)(function*(){const o=(0,r.H9)(t.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),a=yield(0,r.x7)(o);if(a.exists()){const f=a.data();return Object.keys(f).filter(h=>f[h].productStep===n).map(h=>f[h].systemTest)}return[]})()}getSystemTestHistoryByTitle(s,e,n,t){var o=this;return(0,m.A)(function*(){const a=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),f=yield(0,r.x7)(a);let l=[];if(f.exists()){const h=f.data();for(let _ in h)h[_].systemTest.title===t&&h[_].productStep===n&&l.push({timestamp:_,systemTest:h[_].systemTest})}return l})()}getSystemTestByTimestamp(s,e,n,t,o){var a=this;return(0,m.A)(function*(){const f=(0,r.H9)(a.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),l=yield(0,r.x7)(f);if(l.exists()){const h=l.data();for(let _ in h)if(h[_].systemTest.title===t&&_===o&&h[_].productStep===n)return h[_].systemTest}return{}})()}deleteSystemTestHistoryByKey(s,e,n,t,o){var a=this;return(0,m.A)(function*(){const f=(0,r.H9)(a.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),l=yield(0,r.x7)(f);if(l.exists()){const h=l.data();for(let _ in h)h[_].systemTest.title===t&&_===o&&h[_].productStep===n&&delete h[_];yield(0,r.BN)(f,h)}})()}getSystemTestHistory(s,e){var n=this;return(0,m.A)(function*(){const t=(0,r.H9)(n.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),o=yield(0,r.x7)(t);return o.exists()?o.data():{}})()}deleteSystemTest(s,e,n,t){var o=this;return(0,m.A)(function*(){let a=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests"),f=yield(0,r.x7)(a);if(f.exists()){let l=f.data();l[n]=l[n].filter(h=>h.title!==t.title),yield(0,r.BN)(a,l)}if(a=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),f=yield(0,r.x7)(a),f.exists()){let l=f.data();for(let h in l)console.log(l[h].systemTest.title),l[h].systemTest.title===t.title&&delete l[h];yield(0,r.BN)(a,l)}})()}}return(d=c).\u0275fac=function(s){return new(s||d)(v.KVO(r._7))},d.\u0275prov=v.jDH({token:d,factory:d.\u0275fac,providedIn:"root"}),c})()},2379:(M,p,u)=>{u.d(p,{I:()=>g});var m=u(467),r=u(4262),v=u(4438);let g=(()=>{var d;class c{constructor(s){this.firestore=s}addUnitTest(s,e,n,t){var o=this;return(0,m.A)(function*(){const a=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","unit_tests"),f=yield(0,r.x7)(a);if(f.exists()){let l=f.data();if(!l[n])return l[n]=[t],yield(0,r.BN)(a,l),void console.log("Document created with ID: ",a.id);for(let h=0;h{d.d(y,{c:()=>g});var h=d(9672),r=d(1086),m=d(8607);const g=(l,a)=>{let i,s;const e=(o,c,_)=>{if(typeof document>"u")return;const f=document.elementFromPoint(o,c);f&&a(f)&&!f.disabled?f!==i&&(t(),n(f,_)):t()},n=(o,c)=>{i=o,s||(s=i);const _=i;(0,h.w)(()=>_.classList.add("ion-activated")),c()},t=(o=!1)=>{if(!i)return;const c=i;(0,h.w)(()=>c.classList.remove("ion-activated")),o&&s!==i&&i.click(),i=void 0};return(0,m.createGesture)({el:l,gestureName:"buttonActiveDrag",threshold:0,onStart:o=>e(o.currentX,o.currentY,r.a),onMove:o=>e(o.currentX,o.currentY,r.b),onEnd:()=>{t(!0),(0,r.h)(),s=void 0}})}},8438:(M,y,d)=>{d.d(y,{g:()=>r});var h=d(8476);const r=()=>{if(void 0!==h.w)return h.w.Capacitor}},5572:(M,y,d)=>{d.d(y,{c:()=>h,i:()=>r});const h=(m,g,l)=>"function"==typeof l?l(m,g):"string"==typeof l?m[l]===g[l]:Array.isArray(g)?g.includes(m):m===g,r=(m,g,l)=>void 0!==m&&(Array.isArray(m)?m.some(a=>h(a,g,l)):h(m,g,l))},3351:(M,y,d)=>{d.d(y,{g:()=>h});const h=(a,i,s,e,n)=>m(a[1],i[1],s[1],e[1],n).map(t=>r(a[0],i[0],s[0],e[0],t)),r=(a,i,s,e,n)=>n*(3*i*Math.pow(n-1,2)+n*(-3*s*n+3*s+e*n))-a*Math.pow(n-1,3),m=(a,i,s,e,n)=>l((e-=n)-3*(s-=n)+3*(i-=n)-(a-=n),3*s-6*i+3*a,3*i-3*a,a).filter(o=>o>=0&&o<=1),l=(a,i,s,e)=>{if(0===a)return((a,i,s)=>{const e=i*i-4*a*s;return e<0?[]:[(-i+Math.sqrt(e))/(2*a),(-i-Math.sqrt(e))/(2*a)]})(i,s,e);const n=(3*(s/=a)-(i/=a)*i)/3,t=(2*i*i*i-9*i*s+27*(e/=a))/27;if(0===n)return[Math.pow(-t,1/3)];if(0===t)return[Math.sqrt(-n),-Math.sqrt(-n)];const o=Math.pow(t/2,2)+Math.pow(n/3,3);if(0===o)return[Math.pow(t/2,.5)-i/3];if(o>0)return[Math.pow(-t/2+Math.sqrt(o),1/3)-Math.pow(t/2+Math.sqrt(o),1/3)-i/3];const c=Math.sqrt(Math.pow(-n/3,3)),_=Math.acos(-t/(2*Math.sqrt(Math.pow(-n/3,3)))),f=2*Math.pow(c,1/3);return[f*Math.cos(_/3)-i/3,f*Math.cos((_+2*Math.PI)/3)-i/3,f*Math.cos((_+4*Math.PI)/3)-i/3]}},5083:(M,y,d)=>{d.d(y,{i:()=>h});const h=r=>r&&""!==r.dir?"rtl"===r.dir.toLowerCase():"rtl"===(null==document?void 0:document.dir.toLowerCase())},3126:(M,y,d)=>{d.r(y),d.d(y,{startFocusVisible:()=>g});const h="ion-focused",m=["Tab","ArrowDown","Space","Escape"," ","Shift","Enter","ArrowLeft","ArrowRight","ArrowUp","Home","End"],g=l=>{let a=[],i=!0;const s=l?l.shadowRoot:document,e=l||document.body,n=v=>{a.forEach(u=>u.classList.remove(h)),v.forEach(u=>u.classList.add(h)),a=v},t=()=>{i=!1,n([])},o=v=>{i=m.includes(v.key),i||n([])},c=v=>{if(i&&void 0!==v.composedPath){const u=v.composedPath().filter(p=>!!p.classList&&p.classList.contains("ion-focusable"));n(u)}},_=()=>{s.activeElement===e&&n([])};return s.addEventListener("keydown",o),s.addEventListener("focusin",c),s.addEventListener("focusout",_),s.addEventListener("touchstart",t,{passive:!0}),s.addEventListener("mousedown",t),{destroy:()=>{s.removeEventListener("keydown",o),s.removeEventListener("focusin",c),s.removeEventListener("focusout",_),s.removeEventListener("touchstart",t),s.removeEventListener("mousedown",t)},setFocus:n}}},1086:(M,y,d)=>{d.d(y,{I:()=>r,a:()=>i,b:()=>s,c:()=>a,d:()=>n,h:()=>e});var h=d(8438),r=function(t){return t.Heavy="HEAVY",t.Medium="MEDIUM",t.Light="LIGHT",t}(r||{});const g={getEngine(){const t=(0,h.g)();if(null!=t&&t.isPluginAvailable("Haptics"))return t.Plugins.Haptics},available(){if(!this.getEngine())return!1;const o=(0,h.g)();return"web"!==(null==o?void 0:o.getPlatform())||typeof navigator<"u"&&void 0!==navigator.vibrate},impact(t){const o=this.getEngine();o&&o.impact({style:t.style})},notification(t){const o=this.getEngine();o&&o.notification({type:t.type})},selection(){this.impact({style:r.Light})},selectionStart(){const t=this.getEngine();t&&t.selectionStart()},selectionChanged(){const t=this.getEngine();t&&t.selectionChanged()},selectionEnd(){const t=this.getEngine();t&&t.selectionEnd()}},l=()=>g.available(),a=()=>{l()&&g.selection()},i=()=>{l()&&g.selectionStart()},s=()=>{l()&&g.selectionChanged()},e=()=>{l()&&g.selectionEnd()},n=t=>{l()&&g.impact(t)}},909:(M,y,d)=>{d.d(y,{I:()=>a,a:()=>n,b:()=>l,c:()=>c,d:()=>f,f:()=>t,g:()=>e,i:()=>s,p:()=>_,r:()=>v,s:()=>o});var h=d(467),r=d(4920),m=d(4929);const l="ion-content",a=".ion-content-scroll-host",i=`${l}, ${a}`,s=u=>"ION-CONTENT"===u.tagName,e=function(){var u=(0,h.A)(function*(p){return s(p)?(yield new Promise(D=>(0,r.c)(p,D)),p.getScrollElement()):p});return function(D){return u.apply(this,arguments)}}(),n=u=>u.querySelector(a)||u.querySelector(i),t=u=>u.closest(i),o=(u,p)=>s(u)?u.scrollToTop(p):Promise.resolve(u.scrollTo({top:0,left:0,behavior:p>0?"smooth":"auto"})),c=(u,p,D,w)=>s(u)?u.scrollByPoint(p,D,w):Promise.resolve(u.scrollBy({top:D,left:p,behavior:w>0?"smooth":"auto"})),_=u=>(0,m.b)(u,l),f=u=>{if(s(u)){const D=u.scrollY;return u.scrollY=!1,D}return u.style.setProperty("overflow","hidden"),!0},v=(u,p)=>{s(u)?u.scrollY=p:u.style.removeProperty("overflow")}},3992:(M,y,d)=>{d.d(y,{a:()=>h,b:()=>c,c:()=>i,d:()=>_,e:()=>A,f:()=>a,g:()=>f,h:()=>m,i:()=>r,j:()=>E,k:()=>P,l:()=>s,m:()=>t,n:()=>v,o:()=>n,p:()=>l,q:()=>g,r:()=>O,s:()=>T,t:()=>o,u:()=>D,v:()=>w,w:()=>e,x:()=>u,y:()=>p});const h="data:image/svg+xml;utf8,",r="data:image/svg+xml;utf8,",m="data:image/svg+xml;utf8,",g="data:image/svg+xml;utf8,",l="data:image/svg+xml;utf8,",a="data:image/svg+xml;utf8,",i="data:image/svg+xml;utf8,",s="data:image/svg+xml;utf8,",e="data:image/svg+xml;utf8,",n="data:image/svg+xml;utf8,",t="data:image/svg+xml;utf8,",o="data:image/svg+xml;utf8,",c="data:image/svg+xml;utf8,",_="data:image/svg+xml;utf8,",f="data:image/svg+xml;utf8,",v="data:image/svg+xml;utf8,",u="data:image/svg+xml;utf8,",p="data:image/svg+xml;utf8,",D="data:image/svg+xml;utf8,",w="data:image/svg+xml;utf8,",O="data:image/svg+xml;utf8,",E="data:image/svg+xml;utf8,",P="data:image/svg+xml;utf8,",T="data:image/svg+xml;utf8,",A="data:image/svg+xml;utf8,"},243:(M,y,d)=>{d.d(y,{c:()=>g,g:()=>l});var h=d(8476),r=d(4920),m=d(4929);const g=(i,s,e)=>{let n,t;if(void 0!==h.w&&"MutationObserver"in h.w){const f=Array.isArray(s)?s:[s];n=new MutationObserver(v=>{for(const u of v)for(const p of u.addedNodes)if(p.nodeType===Node.ELEMENT_NODE&&f.includes(p.slot))return e(),void(0,r.r)(()=>o(p))}),n.observe(i,{childList:!0,subtree:!0})}const o=f=>{var v;t&&(t.disconnect(),t=void 0),t=new MutationObserver(u=>{e();for(const p of u)for(const D of p.removedNodes)D.nodeType===Node.ELEMENT_NODE&&D.slot===s&&_()}),t.observe(null!==(v=f.parentElement)&&void 0!==v?v:f,{subtree:!0,childList:!0})},_=()=>{t&&(t.disconnect(),t=void 0)};return{destroy:()=>{n&&(n.disconnect(),n=void 0),_()}}},l=(i,s,e)=>{const n=null==i?0:i.toString().length,t=a(n,s);if(void 0===e)return t;try{return e(n,s)}catch(o){return(0,m.a)("Exception in provided `counterFormatter`.",o),t}},a=(i,s)=>`${i} / ${s}`},1622:(M,y,d)=>{d.r(y),d.d(y,{KEYBOARD_DID_CLOSE:()=>l,KEYBOARD_DID_OPEN:()=>g,copyVisualViewport:()=>O,keyboardDidClose:()=>u,keyboardDidOpen:()=>f,keyboardDidResize:()=>v,resetKeyboardAssist:()=>n,setKeyboardClose:()=>_,setKeyboardOpen:()=>c,startKeyboardAssist:()=>t,trackViewportChanges:()=>w});var h=d(4379);d(8438),d(8476);const g="ionKeyboardDidShow",l="ionKeyboardDidHide";let i={},s={},e=!1;const n=()=>{i={},s={},e=!1},t=E=>{if(h.K.getEngine())o(E);else{if(!E.visualViewport)return;s=O(E.visualViewport),E.visualViewport.onresize=()=>{w(E),f()||v(E)?c(E):u(E)&&_(E)}}},o=E=>{E.addEventListener("keyboardDidShow",P=>c(E,P)),E.addEventListener("keyboardDidHide",()=>_(E))},c=(E,P)=>{p(E,P),e=!0},_=E=>{D(E),e=!1},f=()=>!e&&i.width===s.width&&(i.height-s.height)*s.scale>150,v=E=>e&&!u(E),u=E=>e&&s.height===E.innerHeight,p=(E,P)=>{const A=new CustomEvent(g,{detail:{keyboardHeight:P?P.keyboardHeight:E.innerHeight-s.height}});E.dispatchEvent(A)},D=E=>{const P=new CustomEvent(l);E.dispatchEvent(P)},w=E=>{i=Object.assign({},s),s=O(E.visualViewport)},O=E=>({width:Math.round(E.width),height:Math.round(E.height),offsetTop:E.offsetTop,offsetLeft:E.offsetLeft,pageTop:E.pageTop,pageLeft:E.pageLeft,scale:E.scale})},4379:(M,y,d)=>{d.d(y,{K:()=>g,a:()=>m});var h=d(8438),r=function(l){return l.Unimplemented="UNIMPLEMENTED",l.Unavailable="UNAVAILABLE",l}(r||{}),m=function(l){return l.Body="body",l.Ionic="ionic",l.Native="native",l.None="none",l}(m||{});const g={getEngine(){const l=(0,h.g)();if(null!=l&&l.isPluginAvailable("Keyboard"))return l.Plugins.Keyboard},getResizeMode(){const l=this.getEngine();return null!=l&&l.getResizeMode?l.getResizeMode().catch(a=>{if(a.code!==r.Unimplemented)throw a}):Promise.resolve(void 0)}}},4731:(M,y,d)=>{d.d(y,{c:()=>a});var h=d(467),r=d(8476),m=d(4379);const g=i=>{if(void 0===r.d||i===m.a.None||void 0===i)return null;const s=r.d.querySelector("ion-app");return null!=s?s:r.d.body},l=i=>{const s=g(i);return null===s?0:s.clientHeight},a=function(){var i=(0,h.A)(function*(s){let e,n,t,o;const c=function(){var p=(0,h.A)(function*(){const D=yield m.K.getResizeMode(),w=void 0===D?void 0:D.mode;e=()=>{void 0===o&&(o=l(w)),t=!0,_(t,w)},n=()=>{t=!1,_(t,w)},null==r.w||r.w.addEventListener("keyboardWillShow",e),null==r.w||r.w.addEventListener("keyboardWillHide",n)});return function(){return p.apply(this,arguments)}}(),_=(p,D)=>{s&&s(p,f(D))},f=p=>{if(0===o||o===l(p))return;const D=g(p);return null!==D?new Promise(w=>{const E=new ResizeObserver(()=>{D.clientHeight===o&&(E.disconnect(),w())});E.observe(D)}):void 0};return yield c(),{init:c,destroy:()=>{null==r.w||r.w.removeEventListener("keyboardWillShow",e),null==r.w||r.w.removeEventListener("keyboardWillHide",n),e=n=void 0},isKeyboardVisible:()=>t}});return function(e){return i.apply(this,arguments)}}()},7838:(M,y,d)=>{d.d(y,{c:()=>r});var h=d(467);const r=()=>{let m;return{lock:function(){var l=(0,h.A)(function*(){const a=m;let i;return m=new Promise(s=>i=s),void 0!==a&&(yield a),i});return function(){return l.apply(this,arguments)}}()}}},9001:(M,y,d)=>{d.d(y,{c:()=>m});var h=d(8476),r=d(4920);const m=(g,l,a)=>{let i;const s=()=>!(void 0===l()||void 0!==g.label||null===a()),n=()=>{const o=l();if(void 0===o)return;if(!s())return void o.style.removeProperty("width");const c=a().scrollWidth;if(0===c&&null===o.offsetParent&&void 0!==h.w&&"IntersectionObserver"in h.w){if(void 0!==i)return;const _=i=new IntersectionObserver(f=>{1===f[0].intersectionRatio&&(n(),_.disconnect(),i=void 0)},{threshold:.01,root:g});_.observe(o)}else o.style.setProperty("width",.75*c+"px")};return{calculateNotchWidth:()=>{s()&&(0,r.r)(()=>{n()})},destroy:()=>{i&&(i.disconnect(),i=void 0)}}}},7895:(M,y,d)=>{d.d(y,{S:()=>r});const r={bubbles:{dur:1e3,circles:9,fn:(m,g,l)=>{const a=m*g/l-m+"ms",i=2*Math.PI*g/l;return{r:5,style:{top:32*Math.sin(i)+"%",left:32*Math.cos(i)+"%","animation-delay":a}}}},circles:{dur:1e3,circles:8,fn:(m,g,l)=>{const a=g/l,i=m*a-m+"ms",s=2*Math.PI*a;return{r:5,style:{top:32*Math.sin(s)+"%",left:32*Math.cos(s)+"%","animation-delay":i}}}},circular:{dur:1400,elmDuration:!0,circles:1,fn:()=>({r:20,cx:48,cy:48,fill:"none",viewBox:"24 24 48 48",transform:"translate(0,0)",style:{}})},crescent:{dur:750,circles:1,fn:()=>({r:26,style:{}})},dots:{dur:750,circles:3,fn:(m,g)=>({r:6,style:{left:32-32*g+"%","animation-delay":-110*g+"ms"}})},lines:{dur:1e3,lines:8,fn:(m,g,l)=>({y1:14,y2:26,style:{transform:`rotate(${360/l*g+(g({y1:12,y2:20,style:{transform:`rotate(${360/l*g+(g({y1:17,y2:29,style:{transform:`rotate(${30*g+(g<6?180:-180)}deg)`,"animation-delay":m*g/l-m+"ms"}})},"lines-sharp-small":{dur:1e3,lines:12,fn:(m,g,l)=>({y1:12,y2:20,style:{transform:`rotate(${30*g+(g<6?180:-180)}deg)`,"animation-delay":m*g/l-m+"ms"}})}}},7166:(M,y,d)=>{d.r(y),d.d(y,{createSwipeBackGesture:()=>l});var h=d(4920),r=d(5083),m=d(8607);d(1970);const l=(a,i,s,e,n)=>{const t=a.ownerDocument.defaultView;let o=(0,r.i)(a);const _=D=>o?-D.deltaX:D.deltaX;return(0,m.createGesture)({el:a,gestureName:"goback-swipe",gesturePriority:101,threshold:10,canStart:D=>(o=(0,r.i)(a),(D=>{const{startX:O}=D;return o?O>=t.innerWidth-50:O<=50})(D)&&i()),onStart:s,onMove:D=>{const O=_(D)/t.innerWidth;e(O)},onEnd:D=>{const w=_(D),O=t.innerWidth,E=w/O,P=(D=>o?-D.velocityX:D.velocityX)(D),A=P>=0&&(P>.2||w>O/2),L=(A?1-E:E)*O;let C=0;if(L>5){const R=L/Math.abs(P);C=Math.min(R,540)}n(A,E<=0?.01:(0,h.j)(0,E,.9999),C)}})}},2935:(M,y,d)=>{d.d(y,{w:()=>h});const h=(g,l,a)=>{if(typeof MutationObserver>"u")return;const i=new MutationObserver(s=>{a(r(s,l))});return i.observe(g,{childList:!0,subtree:!0}),i},r=(g,l)=>{let a;return g.forEach(i=>{for(let s=0;s{if(1!==g.nodeType)return;const a=g;return(a.tagName===l.toUpperCase()?[a]:Array.from(a.querySelectorAll(l))).find(s=>s.value===a.value)}},385:(M,y,d)=>{d.d(y,{l:()=>m});var h=d(4438),r=d(7863);let m=(()=>{var g;class l{constructor(){this.title="Header Title"}ngOnInit(){}}return(g=l).\u0275fac=function(i){return new(i||g)},g.\u0275cmp=h.VBU({type:g,selectors:[["app-header"]],inputs:{title:"title"},decls:5,vars:2,consts:[[3,"translucent"],["slot","start","menu","menu-id"]],template:function(i,s){1&i&&(h.j41(0,"ion-header",0)(1,"ion-toolbar"),h.nrm(2,"ion-menu-button",1),h.j41(3,"ion-title"),h.EFF(4),h.k0s()()()),2&i&&(h.Y8G("translucent",!0),h.R7$(4),h.JRh(s.title))},dependencies:[r.eU,r.MC,r.BC,r.ai]}),l})()},8453:(M,y,d)=>{d.d(y,{W:()=>m});var h=d(4438),r=d(7863);let m=(()=>{var g;class l{constructor(){this.title="Title"}ngOnInit(){}}return(g=l).\u0275fac=function(i){return new(i||g)},g.\u0275cmp=h.VBU({type:g,selectors:[["app-title"]],inputs:{title:"title"},decls:4,vars:1,consts:[[1,"lg:m-10"],["size","12","size-md","6","size-lg","6"],[1,"text-4xl","lg:text-6xl","font-bold"]],template:function(i,s){1&i&&(h.j41(0,"ion-row",0)(1,"ion-col",1)(2,"h1",2),h.EFF(3),h.k0s()()()),2&i&&(h.R7$(3),h.JRh(s.title))},dependencies:[r.hU,r.ln]}),l})()},4796:(M,y,d)=>{d.d(y,{u:()=>l});var h=d(467),r=d(8737),m=d(4262),g=d(4438);let l=(()=>{var a;class i{constructor(e,n){this.auth=e,this.firestore=n}registerUser(e){var n=this;return(0,h.A)(function*(){try{const t=yield(0,r.eJ)(n.auth,e.email,e.password);return t.user?(yield(0,m.BN)((0,m.H9)(n.firestore,"users",t.user.uid),{email:e.email,name:e.name,orgName:e.orgName,uid:t.user.uid}),yield(0,m.BN)((0,m.H9)(n.firestore,"teams",`${e.orgName}`),{name:e.orgName,members:[t.user.uid]}),t):null}catch{return null}})()}loginUser(e){var n=this;return(0,h.A)(function*(){try{var t;const o=yield(0,r.x9)(n.auth,e.email,e.password);if(null!==(t=o.user)&&void 0!==t&&t.uid){const c=yield(0,m.x7)((0,m.H9)(n.firestore,"users",o.user.uid));if(c.exists())return localStorage.setItem("user",JSON.stringify(c.data())),o}}catch(o){console.error(o)}return null})()}logoutUser(){var e=this;return(0,h.A)(function*(){yield e.auth.signOut()})()}addMember(e){var n=this;return(0,h.A)(function*(){try{const t=yield(0,r.eJ)(n.auth,e.email,e.password);if(!t.user)return!1;const o={email:e.email,name:e.name,orgName:e.orgName,uid:t.user.uid};return yield(0,m.BN)((0,m.H9)(n.firestore,"users",t.user.uid),o),o}catch{return!1}})()}}return(a=i).\u0275fac=function(e){return new(e||a)(g.KVO(r.Nj),g.KVO(m._7))},a.\u0275prov=g.jDH({token:a,factory:a.\u0275fac,providedIn:"root"}),i})()},6560:(M,y,d)=>{d.d(y,{x:()=>l});var h=d(467),r=d(4262),m=d(4438),g=d(1626);let l=(()=>{var a;class i{constructor(e,n){this.firestore=e,this.http=n,this.url_cpu="https://devprobeapi.onrender.com/flame_graph_date",this.url_mem="https://devprobeapi.onrender.com/flame_graph_memory_date"}getProducts(e){var n=this;return(0,h.A)(function*(){try{const t=(0,r.rJ)(n.firestore,"teams",e,"products");return(yield(0,r.GG)(t)).docs.map(c=>c.data())}catch(t){return console.log(t),[]}})()}getDates(e,n,t){var o=this;return(0,h.A)(function*(){try{t||(t="cpu_usage");const c=(0,r.rJ)(o.firestore,"teams",e,"products",n,t);return(yield(0,r.GG)(c)).docs.map(f=>f.id)}catch(c){return console.log(c),[]}})()}getFlameGraphByDate(e,n,t,o){var c=this;return(0,h.A)(function*(){try{let _={team:e,product:n,date:t};return o?yield c.http.post(c.url_mem,_).toPromise():yield c.http.post(c.url_cpu,_).toPromise()}catch{return{}}})()}}return(a=i).\u0275fac=function(e){return new(e||a)(m.KVO(r._7),m.KVO(g.Qq))},a.\u0275prov=m.jDH({token:a,factory:a.\u0275fac,providedIn:"root"}),i})()},201:(M,y,d)=>{d.d(y,{p:()=>l});var h=d(467),r=d(4262),m=d(4438),g=d(1626);let l=(()=>{var a;class i{constructor(e,n){this.firestore=e,this.httpClient=n,this.url="https://devprobeapi.onrender.com/"}syncRepo(e,n,t,o,c){var _=this;return(0,h.A)(function*(){const f=(0,r.H9)(_.firestore,"teams",e),v=yield(0,r.x7)(f);if(v.exists()){const u=v.data();u.gitHub={key:n,repo:t,branch:o,owner:c},yield(0,r.BN)(f,u)}})()}getSyncRepo(e){var n=this;return(0,h.A)(function*(){const t=(0,r.H9)(n.firestore,"teams",e),o=yield(0,r.x7)(t);return o.exists()?o.data().gitHub:null})()}getFiles(e){var n=this;return(0,h.A)(function*(){const t=yield n.httpClient.post(n.url+"github_repo",{auth:e.key,repo:e.repo,branch:e.branch,owner:e.owner}).toPromise();if(console.log(t),t){let o=t.paths;return o=o.filter(c=>!c.includes(".git")),o=o.filter(c=>!c.includes("node_modules")),o=o.filter(c=>!c.includes(".idea")),o=o.filter(c=>c.includes(".")),o}return[]})()}getContentFromFilePath(e,n){var t=this;return(0,h.A)(function*(){const o=yield t.httpClient.post(t.url+"github_file",{auth:e.key,repo:e.repo,owner:e.owner,path:n}).toPromise();return console.log(o),o?o.content:""})()}}return(a=i).\u0275fac=function(e){return new(e||a)(m.KVO(r._7),m.KVO(g.Qq))},a.\u0275prov=m.jDH({token:a,factory:a.\u0275fac,providedIn:"root"}),i})()},3661:(M,y,d)=>{d.d(y,{e:()=>l});var h=d(467),r=d(4438),m=d(4262),g=d(1626);let l=(()=>{var a;class i{constructor(e,n){this.firestore=e,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocationDestSrc(e){var n=this;return(0,h.A)(function*(){var t,o,c,_,f,v,u,p;if(!e)return e;const D=n.http.get(n.ipApiURL+e.dst_addr).toPromise(),w=n.http.get(n.ipApiURL+e.src_addr).toPromise(),O=yield D,E=yield w;return e.dst_city=null!==(t=O.city)&&void 0!==t?t:"No city found",e.dst_country=null!==(o=O.country)&&void 0!==o?o:"No country found",e.dst_latitude=null!==(c=O.lat)&&void 0!==c?c:0,e.dst_longitude=null!==(_=O.lon)&&void 0!==_?_:0,e.src_city=null!==(f=E.city)&&void 0!==f?f:"No city found",e.src_country=null!==(v=E.country)&&void 0!==v?v:"No country found",e.src_latitude=null!==(u=E.lat)&&void 0!==u?u:0,e.src_longitude=null!==(p=E.lon)&&void 0!==p?p:0,e})()}getLocationFrom(e){var n=this;return(0,h.A)(function*(){if(!e)return e;let t=e.result;for(let v=0;v{d.d(y,{N:()=>l});var h=d(467),r=d(4262),m=d(4438),g=d(1626);let l=(()=>{var a;class i{constructor(e,n){this.firestore=e,this.http=n,this.ipApiURL="https://cors-ea3m.onrender.com/http://ip-api.com/json/"}getLocation(e){var n=this;return(0,h.A)(function*(){console.log(e);const o=yield n.http.get(n.ipApiURL+e[0].dst_addr).toPromise();for(let f=0;fn.http.get(n.ipApiURL+f.from).toPromise());return(yield Promise.all(c)).forEach((f,v)=>{e[v].fromLatitude=f.lat,e[v].fromLongitude=f.lon,e[v].cityFrom=f.city,e[v].countryFrom=f.country}),console.log(e),e})()}saveLocationResults(e,n,t,o){var c=this;return(0,h.A)(function*(){try{console.log(o,"ripeData");const _=(0,r.rJ)(c.firestore,"teams",e,"products",n,"ripe"),f=(0,r.H9)(_,t),v=o.map(u=>({from:u.from,dst_addr:u.dst_addr,latency:u.latency,cityFrom:u.cityFrom,countryFrom:u.countryFrom,cityTo:u.cityTo,countryTo:u.countryTo,fromLatitude:u.fromLatitude,fromLongitude:u.fromLongitude,toLatitude:u.toLatitude,toLongitude:u.toLongitude,id:u.id}));return yield(0,r.BN)(f,{data:v}),console.log("Data saved",{data:v}),!0}catch(_){return console.log(_),!1}})()}}return(a=i).\u0275fac=function(e){return new(e||a)(m.KVO(r._7),m.KVO(g.Qq))},a.\u0275prov=m.jDH({token:a,factory:a.\u0275fac,providedIn:"root"}),i})()},6241:(M,y,d)=>{d.d(y,{b:()=>g});var h=d(467),r=d(4262),m=d(4438);let g=(()=>{var l;class a{constructor(s){this.firestore=s}addProduct(s,e){var n=this;return(0,h.A)(function*(){try{console.log(s);const t=(0,r.H9)(n.firestore,"teams",e,"products",s.productObjective);return yield(0,r.BN)(t,s),!0}catch(t){return console.log(t),!1}})()}getProducts(s){var e=this;return(0,h.A)(function*(){try{const n=(0,r.rJ)(e.firestore,"teams",s,"products");return(yield(0,r.GG)(n)).docs.map(o=>o.data())}catch(n){return console.log(n),[]}})()}removeProduct(s,e){var n=this;return(0,h.A)(function*(){try{const t=(0,r.H9)(n.firestore,"teams",s,"products",e);return yield(0,r.kd)(t),!0}catch(t){return console.log(t),!1}})()}}return(l=a).\u0275fac=function(s){return new(s||l)(m.KVO(r._7))},l.\u0275prov=m.jDH({token:l,factory:l.\u0275fac,providedIn:"root"}),a})()},2588:(M,y,d)=>{d.d(y,{N:()=>l});var h=d(467),r=d(4262),m=d(4438),g=d(1626);let l=(()=>{var a;class i{constructor(e,n){this.http=e,this.firestore=n,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendTraceRequest(e,n,t,o){var c=this;return(0,h.A)(function*(){console.log("Sending trace request");try{let _={definitions:[{target:e,description:n,type:t,af:4,is_oneoff:!0,protocol:"TCP"}],probes:[]};console.log(o);let f=o.split(",").length-1,v=(o=o.slice(0,-1)).split(","),u=[];for(let w=0;w({id:c.measurementID,dst_addr:u.dst_addr,dst_city:u.dst_city,dst_country:u.dst_country,dst_latitude:u.dst_latitude,dst_longitude:u.dst_longitude,src_addr:u.src_addr,src_city:u.src_city,src_country:u.src_country,src_latitude:u.src_latitude,src_longitude:u.src_longitude,result:u.result}));return yield(0,r.BN)(f,{data:v}),!0}catch(_){return console.log(_),!1}})()}getHistoryResults(e,n){var t=this;return(0,h.A)(function*(){const c=(0,r.rJ)(t.firestore,"teams/"+e+"/products/"+n+"/ripe_trace"),_=yield(0,r.GG)(c);let f=[];return _.docs.forEach(v=>{f.push({id:v.id,data:v.data()})}),console.log(f),f})()}getAllResultsByDescription(e,n,t){var o=this;return(0,h.A)(function*(){try{let c="teams/"+e+"/products/"+n+"/ripe_trace";console.log(c);let _=(0,r.H9)(o.firestore,c,t);return(yield(0,r.x7)(_)).data()}catch(c){return console.log(c),[]}})()}}return(a=i).\u0275fac=function(e){return new(e||a)(m.KVO(g.Qq),m.KVO(r._7))},a.\u0275prov=m.jDH({token:a,factory:a.\u0275fac,providedIn:"root"}),i})()},9640:(M,y,d)=>{d.d(y,{Q:()=>a});var h=d(467),r=d(1985),m=d(4262),g=d(4438),l=d(1626);let a=(()=>{var i;class s{constructor(n,t){this.http=n,this.firestore=t,this.measurementsUrl="https://cors-ea3m.onrender.com/https://atlas.ripe.net/api/v2/measurements/",this.measurementID=""}sendMeasurementRequest(n,t,o,c){var _=this;return(0,h.A)(function*(){let f=c.split(",").length-1;c=c.slice(0,-1);try{let v={definitions:[{target:n,description:"ping",type:"ping",af:4,is_oneoff:!0}],probes:[{requested:f,type:"probes",value:c}]},u={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};console.log(v);let p=yield _.http.post(_.measurementsUrl,v,{headers:u}).toPromise();return console.log(p),_.measurementID=p.measurements[0],_.measurementID}catch(v){return console.log(v),!1}})()}getMeasurementResults(n){var t=this;return(0,h.A)(function*(){n&&(t.measurementID=n);try{let o={Authorization:"Key 92530695-134f-4cbc-b7c3-ec130f3719b0"};return""===t.measurementID?(console.log("No measurement ID"),!1):t.http.get(t.measurementsUrl+t.measurementID+"/results/",{headers:o})}catch(o){return console.log(o),new r.c}})()}saveMeasurementResults(n,t,o,c){var _=this;return(0,h.A)(function*(){try{const f=(0,m.rJ)(_.firestore,"teams",n,"products",t,"ripe"),v=(0,m.H9)(f,o),u=c.map((p,D)=>({id:_.measurementID,from:p.from,dst_addr:p.dst_addr,latency:p.latency}));return yield(0,m.BN)(v,{data:u}),!0}catch(f){return console.log(f),!1}})()}getAllResultsByDescription(n,t,o){var c=this;return(0,h.A)(function*(){try{let _="teams/"+n+"/products/"+t+"/ripe";console.log(_);let f=(0,m.H9)(c.firestore,_,o);return(yield(0,m.x7)(f)).data()}catch(_){return console.log(_),[]}})()}getHistoryResults(n,t){var o=this;return(0,h.A)(function*(){const _=(0,m.rJ)(o.firestore,"teams/"+n+"/products/"+t+"/ripe"),f=yield(0,m.GG)(_);let v=[];return f.docs.forEach(u=>{v.push({id:u.id,data:u.data()})}),console.log(v),v})()}deleteHistory(n,t,o){var c=this;return(0,h.A)(function*(){const f=(0,m.H9)(c.firestore,"teams/"+n+"/products/"+t+"/ripe",o);try{return yield(0,m.kd)(f),!0}catch(v){return console.log(v),!1}})()}}return(i=s).\u0275fac=function(n){return new(n||i)(g.KVO(l.Qq),g.KVO(m._7))},i.\u0275prov=g.jDH({token:i,factory:i.\u0275fac,providedIn:"root"}),s})()},9274:(M,y,d)=>{d.d(y,{h:()=>g});var h=d(467),r=d(4262),m=d(4438);let g=(()=>{var l;class a{constructor(s){this.firestore=s}addSystemTest(s,e,n,t){var o=this;return(0,h.A)(function*(){const c=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests"),_=yield(0,r.x7)(c);if(_.exists()){const f=_.data();if(!f[n])return f[n]=[t],yield(0,r.BN)(c,f),void console.log("Document created with ID: ",c.id);f[n].push(t),yield(0,r.BN)(c,f),console.log("Document updated with ID: ",_.id)}else console.log("No such document!"),yield(0,r.BN)(c,{[n]:[t]}),console.log("Document created with ID: ",c.id)})()}getSystemTest(s,e,n){var t=this;return(0,h.A)(function*(){const o=(0,r.H9)(t.firestore,"teams",s,"products",e,"software_testing","system_tests"),c=yield(0,r.x7)(o);return c.exists()?c.data()[n]:[]})()}saveSystemTest(s,e,n,t){var o=this;return(0,h.A)(function*(){const c=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),_=new Date,f=`${_.getFullYear()}-${_.getMonth()+1}-${_.getDate()} ${_.getHours()}:${_.getMinutes()}:${_.getSeconds()}`;console.log(f);const v=yield(0,r.x7)(c);if(v.exists()){let u=v.data();u[f]={systemTest:t},u[f].productStep=n,yield(0,r.BN)(c,u)}else yield(0,r.BN)(c,{[f]:{systemTest:t,productStep:n}})})()}getSystemTestHistoryByStep(s,e,n){var t=this;return(0,h.A)(function*(){const o=(0,r.H9)(t.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),c=yield(0,r.x7)(o);if(c.exists()){const _=c.data();return Object.keys(_).filter(v=>_[v].productStep===n).map(v=>_[v].systemTest)}return[]})()}getSystemTestHistoryByTitle(s,e,n,t){var o=this;return(0,h.A)(function*(){const c=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),_=yield(0,r.x7)(c);let f=[];if(_.exists()){const v=_.data();for(let u in v)v[u].systemTest.title===t&&v[u].productStep===n&&f.push({timestamp:u,systemTest:v[u].systemTest})}return f})()}getSystemTestByTimestamp(s,e,n,t,o){var c=this;return(0,h.A)(function*(){const _=(0,r.H9)(c.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),f=yield(0,r.x7)(_);if(f.exists()){const v=f.data();for(let u in v)if(v[u].systemTest.title===t&&u===o&&v[u].productStep===n)return v[u].systemTest}return{}})()}deleteSystemTestHistoryByKey(s,e,n,t,o){var c=this;return(0,h.A)(function*(){const _=(0,r.H9)(c.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),f=yield(0,r.x7)(_);if(f.exists()){const v=f.data();for(let u in v)v[u].systemTest.title===t&&u===o&&v[u].productStep===n&&delete v[u];yield(0,r.BN)(_,v)}})()}getSystemTestHistory(s,e){var n=this;return(0,h.A)(function*(){const t=(0,r.H9)(n.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),o=yield(0,r.x7)(t);return o.exists()?o.data():{}})()}deleteSystemTest(s,e,n,t){var o=this;return(0,h.A)(function*(){let c=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests"),_=yield(0,r.x7)(c);if(_.exists()){let f=_.data();f[n]=f[n].filter(v=>v.title!==t.title),yield(0,r.BN)(c,f)}if(c=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","system_tests_history"),_=yield(0,r.x7)(c),_.exists()){let f=_.data();for(let v in f)console.log(f[v].systemTest.title),f[v].systemTest.title===t.title&&delete f[v];yield(0,r.BN)(c,f)}})()}}return(l=a).\u0275fac=function(s){return new(s||l)(m.KVO(r._7))},l.\u0275prov=m.jDH({token:l,factory:l.\u0275fac,providedIn:"root"}),a})()},2379:(M,y,d)=>{d.d(y,{I:()=>g});var h=d(467),r=d(4262),m=d(4438);let g=(()=>{var l;class a{constructor(s){this.firestore=s}addUnitTest(s,e,n,t){var o=this;return(0,h.A)(function*(){const c=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","unit_tests"),_=yield(0,r.x7)(c);if(_.exists()){let f=_.data();if(!f[n])return f[n]=[t],yield(0,r.BN)(c,f),void console.log("Document created with ID: ",c.id);const v=f[n];console.log(v),v.push(t),yield(0,r.BN)(c,{[n]:v}),console.log("Document updated with ID: ",_.id)}else console.log("No such document!"),yield(0,r.BN)(c,{[n]:[t]}),console.log("Document created with ID: ",c.id)})()}getUnitTests(s,e,n){var t=this;return(0,h.A)(function*(){const o=(0,r.H9)(t.firestore,"teams",s,"products",e,"software_testing","unit_tests"),c=yield(0,r.x7)(o);return c.exists()?c.data()[n]:[]})()}updateUnitTestState(s,e,n,t){var o=this;return(0,h.A)(function*(){const c=(0,r.H9)(o.firestore,"teams",s,"products",e,"software_testing","unit_tests"),_=yield(0,r.x7)(c);if(_.exists()){const v=_.data()[n];for(let u=0;u - + diff --git a/www/runtime.df8a307a9347ce36.js b/www/runtime.1b6852e21ff6eb80.js similarity index 58% rename from www/runtime.df8a307a9347ce36.js rename to www/runtime.1b6852e21ff6eb80.js index ca5dcd8..41391f8 100644 --- a/www/runtime.df8a307a9347ce36.js +++ b/www/runtime.1b6852e21ff6eb80.js @@ -1 +1 @@ -(()=>{"use strict";var e,v={},g={};function f(e){var t=g[e];if(void 0!==t)return t.exports;var a=g[e]={exports:{}};return v[e].call(a.exports,a,a.exports,f),a.exports}f.m=v,e=[],f.O=(t,a,d,b)=>{if(!a){var c=1/0;for(r=0;r=b)&&Object.keys(f.O).every(p=>f.O[p](a[n]))?a.splice(n--,1):(l=!1,b0&&e[r-1][2]>b;r--)e[r]=e[r-1];e[r]=[a,d,b]},f.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return f.d(t,{a:t}),t},(()=>{var t,e=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;f.t=function(a,d){if(1&d&&(a=this(a)),8&d||"object"==typeof a&&a&&(4&d&&a.__esModule||16&d&&"function"==typeof a.then))return a;var b=Object.create(null);f.r(b);var r={};t=t||[null,e({}),e([]),e(e)];for(var c=2&d&&a;"object"==typeof c&&!~t.indexOf(c);c=e(c))Object.getOwnPropertyNames(c).forEach(l=>r[l]=()=>a[l]);return r.default=()=>a,f.d(b,r),b}})(),f.d=(e,t)=>{for(var a in t)f.o(t,a)&&!f.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce((t,a)=>(f.f[a](e,t),t),[])),f.u=e=>(({2076:"common",7278:"polyfills-dom",9329:"polyfills-core-js"}[e]||e)+"."+{441:"c8d135e5d56e5723",839:"283ada25cfa51ac0",964:"466b88054b5c618c",1010:"2bace76a66f84131",1015:"3d449385ac057e7f",1049:"7ef232095c56e4df",1081:"724852e553670d61",1102:"010dfe13f6ca7e15",1143:"0dd15591a6841da8",1293:"ee80f2d33790618d",1313:"46ae0a0d0e94f2f8",1459:"32c41a59c0fd4cf1",1577:"f6f558490ff910b3",2075:"1971ba880d06cc30",2076:"850fb337b411abca",2144:"5d46fa3641b801f2",2348:"12b471577685ffbe",2375:"efb0d99d1467ed67",2415:"dddee43f1c9b92e7",2560:"f34ba2c5e85b55c8",2580:"dd2d37daccf76d3f",2757:"83b4060f3177be94",2885:"d64fa10bd441cbc8",3100:"be59eccfa5c9316f",3162:"825364e1635b086f",3451:"5cb648a56743fe4c",3506:"899dcc5e5d913023",3511:"16739e7034875331",3646:"554cb7eb2d8d0ce0",3814:"4f667f072e44b4e7",4171:"f5bc55c1acb0f5c1",4183:"0d54a4cc8cbc3a61",4348:"16e6409072fc8e11",4406:"03b087c2d77cb960",4443:"74ec71e1102d5a82",4463:"ce74c63a27a7a872",4591:"7a48c0cf9464e62b",4699:"01733b3942afbe92",4839:"1358f2425ffb5332",4867:"17817bc208c2836c",4914:"52404a177d9d7dd4",5054:"a36f0725f93c0766",5100:"659224ed1f94442c",5197:"cfc60de4c5213fec",5222:"9cbea5f62b0fb679",5371:"f8138eed060f579e",5399:"0706ad352f9b7c14",5712:"a9a2db8da6f1a8cd",5887:"708ea3877f30ffcd",5949:"2ed93c457aa1e9fb",5995:"2de4ee42f61961e5",6024:"3c02ab7fe82fedfe",6303:"1f016d3c5e585274",6433:"26eeba8bb230b119",6480:"2d3c5432c242ecc0",6521:"3c5b756783b6739a",6536:"a4f178f939f2d134",6695:"e05d3e953294e84a",6840:"fd32dada9c8ec44e",6975:"6d2e5de0574c6402",7030:"f2a9bf080bedfc5b",7056:"ea1f1c37ffd3186d",7076:"2b7ea8b1f54f4458",7179:"80391eb100990080",7240:"680a87741a5535b1",7278:"bf542500b6fca113",7356:"911eacb1ce959b5e",7372:"4ea07cfe7eb821be",7428:"cb325b96b92ea4c2",7720:"78509b154c08b472",7762:"6371eca429bb8376",8066:"67e76a5c3f71f306",8193:"476b12959c4b189d",8314:"52348a57ed623e38",8361:"3d466d853997fbb0",8477:"15dacf21c512c8d4",8566:"52fa7b8c5c22d53f",8584:"94ca33677cedf961",8711:"4b5dae0a0dbcf4cc",8805:"7a687270c4acd743",8814:"4175e28b98837400",8886:"87f743bcbe3c6802",8970:"402b7daea47854b9",8984:"d28cf89bc8592645",9013:"b8cefd92ba4e66d6",9070:"29b18cc91c088f3f",9273:"16673f4c5278d1b8",9329:"c76198334f717402",9344:"2d668603b6130b28",9456:"0b4cbaf1cbe8b46a",9546:"52a073ad6dd48f2b",9697:"57e559625e67bb53",9977:"948bf38bed890db4"}[e]+".js"),f.miniCssF=e=>{},f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="app:";f.l=(a,d,b,r)=>{if(e[a])e[a].push(d);else{var c,l;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{c.onerror=c.onload=null,clearTimeout(u);var y=e[a];if(delete e[a],c.parentNode&&c.parentNode.removeChild(c),y&&y.forEach(_=>_(p)),m)return m(p)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=s.bind(null,c.onerror),c.onload=s.bind(null,c.onload),l&&document.head.appendChild(c)}}})(),f.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;f.tt=()=>(void 0===e&&(e={createScriptURL:t=>t},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),f.tu=e=>f.tt().createScriptURL(e),f.p="",(()=>{var e={9121:0};f.f.j=(d,b)=>{var r=f.o(e,d)?e[d]:void 0;if(0!==r)if(r)b.push(r[2]);else if(9121!=d){var c=new Promise((o,s)=>r=e[d]=[o,s]);b.push(r[2]=c);var l=f.p+f.u(d),n=new Error;f.l(l,o=>{if(f.o(e,d)&&(0!==(r=e[d])&&(e[d]=void 0),r)){var s=o&&("load"===o.type?"missing":o.type),u=o&&o.target&&o.target.src;n.message="Loading chunk "+d+" failed.\n("+s+": "+u+")",n.name="ChunkLoadError",n.type=s,n.request=u,r[1](n)}},"chunk-"+d,d)}else e[d]=0},f.O.j=d=>0===e[d];var t=(d,b)=>{var n,i,[r,c,l]=b,o=0;if(r.some(u=>0!==e[u])){for(n in c)f.o(c,n)&&(f.m[n]=c[n]);if(l)var s=l(f)}for(d&&d(b);o{"use strict";var e,v={},g={};function f(e){var c=g[e];if(void 0!==c)return c.exports;var a=g[e]={exports:{}};return v[e].call(a.exports,a,a.exports,f),a.exports}f.m=v,e=[],f.O=(c,a,d,b)=>{if(!a){var t=1/0;for(r=0;r=b)&&Object.keys(f.O).every(p=>f.O[p](a[n]))?a.splice(n--,1):(l=!1,b0&&e[r-1][2]>b;r--)e[r]=e[r-1];e[r]=[a,d,b]},f.n=e=>{var c=e&&e.__esModule?()=>e.default:()=>e;return f.d(c,{a:c}),c},(()=>{var c,e=Object.getPrototypeOf?a=>Object.getPrototypeOf(a):a=>a.__proto__;f.t=function(a,d){if(1&d&&(a=this(a)),8&d||"object"==typeof a&&a&&(4&d&&a.__esModule||16&d&&"function"==typeof a.then))return a;var b=Object.create(null);f.r(b);var r={};c=c||[null,e({}),e([]),e(e)];for(var t=2&d&&a;"object"==typeof t&&!~c.indexOf(t);t=e(t))Object.getOwnPropertyNames(t).forEach(l=>r[l]=()=>a[l]);return r.default=()=>a,f.d(b,r),b}})(),f.d=(e,c)=>{for(var a in c)f.o(c,a)&&!f.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:c[a]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce((c,a)=>(f.f[a](e,c),c),[])),f.u=e=>(({2076:"common",7278:"polyfills-dom",9329:"polyfills-core-js"}[e]||e)+"."+{441:"c8d135e5d56e5723",839:"283ada25cfa51ac0",964:"466b88054b5c618c",1010:"2bace76a66f84131",1015:"3d449385ac057e7f",1049:"7ef232095c56e4df",1081:"724852e553670d61",1102:"010dfe13f6ca7e15",1143:"0dd15591a6841da8",1293:"ee80f2d33790618d",1313:"46ae0a0d0e94f2f8",1459:"32c41a59c0fd4cf1",1577:"f6f558490ff910b3",2075:"1971ba880d06cc30",2076:"1ef85c0b25ade417",2144:"5d46fa3641b801f2",2348:"12b471577685ffbe",2375:"efb0d99d1467ed67",2415:"dddee43f1c9b92e7",2560:"f34ba2c5e85b55c8",2580:"dd2d37daccf76d3f",2757:"83b4060f3177be94",2885:"d64fa10bd441cbc8",3100:"be59eccfa5c9316f",3162:"825364e1635b086f",3451:"5cb648a56743fe4c",3506:"899dcc5e5d913023",3511:"16739e7034875331",3646:"554cb7eb2d8d0ce0",3814:"4f667f072e44b4e7",4171:"f5bc55c1acb0f5c1",4183:"0d54a4cc8cbc3a61",4348:"16e6409072fc8e11",4406:"03b087c2d77cb960",4443:"74ec71e1102d5a82",4463:"ce74c63a27a7a872",4591:"7a48c0cf9464e62b",4699:"01733b3942afbe92",4839:"1358f2425ffb5332",4867:"17817bc208c2836c",4914:"52404a177d9d7dd4",5054:"a36f0725f93c0766",5100:"659224ed1f94442c",5197:"cfc60de4c5213fec",5222:"9cbea5f62b0fb679",5371:"f8138eed060f579e",5399:"0706ad352f9b7c14",5712:"a9a2db8da6f1a8cd",5887:"708ea3877f30ffcd",5949:"2ed93c457aa1e9fb",5995:"2de4ee42f61961e5",6024:"3c02ab7fe82fedfe",6303:"1f016d3c5e585274",6433:"26eeba8bb230b119",6480:"2d3c5432c242ecc0",6521:"3c5b756783b6739a",6536:"a4f178f939f2d134",6695:"e05d3e953294e84a",6840:"fd32dada9c8ec44e",6975:"6d2e5de0574c6402",7030:"f2a9bf080bedfc5b",7056:"ea1f1c37ffd3186d",7076:"2b7ea8b1f54f4458",7179:"80391eb100990080",7240:"680a87741a5535b1",7278:"bf542500b6fca113",7356:"911eacb1ce959b5e",7372:"4ea07cfe7eb821be",7428:"cb325b96b92ea4c2",7720:"78509b154c08b472",7762:"6371eca429bb8376",8066:"67e76a5c3f71f306",8193:"476b12959c4b189d",8314:"52348a57ed623e38",8361:"3d466d853997fbb0",8477:"15dacf21c512c8d4",8566:"52fa7b8c5c22d53f",8584:"94ca33677cedf961",8711:"8d2bb8ceac7ccfe3",8805:"7a687270c4acd743",8814:"4175e28b98837400",8886:"87f743bcbe3c6802",8970:"402b7daea47854b9",8984:"d28cf89bc8592645",9013:"b8cefd92ba4e66d6",9070:"29b18cc91c088f3f",9273:"16673f4c5278d1b8",9329:"c76198334f717402",9344:"2d668603b6130b28",9456:"0b4cbaf1cbe8b46a",9546:"52a073ad6dd48f2b",9697:"57e559625e67bb53",9977:"948bf38bed890db4"}[e]+".js"),f.miniCssF=e=>{},f.o=(e,c)=>Object.prototype.hasOwnProperty.call(e,c),(()=>{var e={},c="app:";f.l=(a,d,b,r)=>{if(e[a])e[a].push(d);else{var t,l;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i{t.onerror=t.onload=null,clearTimeout(u);var y=e[a];if(delete e[a],t.parentNode&&t.parentNode.removeChild(t),y&&y.forEach(_=>_(p)),m)return m(p)},u=setTimeout(s.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=s.bind(null,t.onerror),t.onload=s.bind(null,t.onload),l&&document.head.appendChild(t)}}})(),f.r=e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;f.tt=()=>(void 0===e&&(e={createScriptURL:c=>c},typeof trustedTypes<"u"&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("angular#bundler",e))),e)})(),f.tu=e=>f.tt().createScriptURL(e),f.p="",(()=>{var e={9121:0};f.f.j=(d,b)=>{var r=f.o(e,d)?e[d]:void 0;if(0!==r)if(r)b.push(r[2]);else if(9121!=d){var t=new Promise((o,s)=>r=e[d]=[o,s]);b.push(r[2]=t);var l=f.p+f.u(d),n=new Error;f.l(l,o=>{if(f.o(e,d)&&(0!==(r=e[d])&&(e[d]=void 0),r)){var s=o&&("load"===o.type?"missing":o.type),u=o&&o.target&&o.target.src;n.message="Loading chunk "+d+" failed.\n("+s+": "+u+")",n.name="ChunkLoadError",n.type=s,n.request=u,r[1](n)}},"chunk-"+d,d)}else e[d]=0},f.O.j=d=>0===e[d];var c=(d,b)=>{var n,i,[r,t,l]=b,o=0;if(r.some(u=>0!==e[u])){for(n in t)f.o(t,n)&&(f.m[n]=t[n]);if(l)var s=l(f)}for(d&&d(b);o