openc3-cosmos-tool-bucketexplorer 5.19.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/plugin.txt +1 -1
  3. data/tools/bucketexplorer/ArrayWidget-By62tXtU-8f33e8321ef1d3fe7d37.js +2 -0
  4. data/tools/bucketexplorer/BarColumn-Dm3D1Lhp-c2c3ce1466eec0a3fe11.js +1 -0
  5. data/tools/bucketexplorer/BlockWidget-CrT45ode-2679087bb254510a1933.js +2 -0
  6. data/tools/bucketexplorer/BucketExplorer-5b537808950cfdb2d967.js +1424 -0
  7. data/tools/bucketexplorer/ButtonWidget-CKyBBv6m-f0e78fd47ef48e139a32.js +2 -0
  8. data/tools/bucketexplorer/CanvasWidget-PqkppHC7-4e170504201c5d5da660.js +1 -0
  9. data/tools/bucketexplorer/CanvasdotWidget-BUbJgM2d-43ebb055d8dca6562047.js +1 -0
  10. data/tools/bucketexplorer/CanvasimageWidget-DPVBY7mi-373a581e892ee8d25151.js +1 -0
  11. data/tools/bucketexplorer/CanvasimagevalueWidget-GX37zzNc-bf3ecd8b0face0e8e57d.js +1 -0
  12. data/tools/bucketexplorer/CanvaslabelWidget-P2_Y6Edw-b3a96ce1ee07320799cc.js +1 -0
  13. data/tools/bucketexplorer/CanvaslabelvalueWidget-Cuas1i9P-e1d5a85ff01854b3ed2d.js +1 -0
  14. data/tools/bucketexplorer/CanvaslineWidget-BYOYgPya-a78c8160cccbbec9c086.js +1 -0
  15. data/tools/bucketexplorer/CanvaslinevalueWidget-3cVJMFo7-aa1a15f703557486b807.js +1 -0
  16. data/tools/bucketexplorer/CheckbuttonWidget-B3wgSMuB-940809ed24ffaf77baad.js +1 -0
  17. data/tools/bucketexplorer/ComboboxWidget-Dzr4Scvf-3901799f4c7b9538f037.js +1 -0
  18. data/tools/bucketexplorer/DateWidget-BWh76Ibb-20d6aafc770af85671ad.js +1 -0
  19. data/tools/bucketexplorer/DetailsDialog-EWjtBjle-5ba775af5588b02a6ed6.js +1 -0
  20. data/tools/bucketexplorer/DynamicWidget-m9EliUR2-83b4b626f38bce472413.js +1 -0
  21. data/tools/bucketexplorer/FormatvalueWidget-Rk0_eeIm-1e274b4dc1511553b08d.js +1 -0
  22. data/tools/bucketexplorer/GraphWidget-LqekkNDr-da173601574048e1a1fc.js +1 -0
  23. data/tools/bucketexplorer/HorizontalWidget-BcfJ24Zn-f7660bcb488e69ef9c9c.js +1 -0
  24. data/tools/bucketexplorer/HorizontalboxWidget-CQy1Hv9E-9175f81379b610b7f6e0.js +1 -0
  25. data/tools/bucketexplorer/HorizontallineWidget-BdlNB951-7ae6b6e1b2ce5d970652.js +1 -0
  26. data/tools/bucketexplorer/IframeWidget-BBaDrRLo-84cf059c641c1b6956e6.js +1 -0
  27. data/tools/bucketexplorer/ImageLoader-CDLQopxJ-e62f22afdfda9e31d682.js +1 -0
  28. data/tools/bucketexplorer/ImageviewerWidget-BgO3Pq6I-70f67593e2a277b5380d.js +1 -0
  29. data/tools/bucketexplorer/LabelWidget-B_C6lKOE-4df235a597dafa77d277.js +1 -0
  30. data/tools/bucketexplorer/LabelledWidget-B_UGivhr-26b7aae3e3d1f17987ca.js +1 -0
  31. data/tools/bucketexplorer/LabelprogressbarWidget-BJWCmsYC-e102ec760120df1f31d3.js +1 -0
  32. data/tools/bucketexplorer/LabelsparklineWidget-DILCIh3q-861da511567c33a45af0.js +1 -0
  33. data/tools/bucketexplorer/LabelvalueWidget-CCZd1NXE-cec6c130ee113eab9a22.js +1 -0
  34. data/tools/bucketexplorer/LabelvaluedescWidget-Bsllq8W6-7ef06ad09ae65430e18a.js +1 -0
  35. data/tools/bucketexplorer/LabelvaluelimitsbarWidget-BV-cfaD--f3f911842b22632d7d18.js +1 -0
  36. data/tools/bucketexplorer/LabelvaluelimitscolumnWidget-DwA0eRBw-24b769bde34bd6ea7f6d.js +1 -0
  37. data/tools/bucketexplorer/LabelvaluerangebarWidget-3GDJz3dj-b8e8efd98495e4e74314.js +1 -0
  38. data/tools/bucketexplorer/Layout-klOVw-YN-36ded4f02b701947153d.js +1 -0
  39. data/tools/bucketexplorer/LedWidget-BAt02s0J-675593ca2bd521e0b825.js +1 -0
  40. data/tools/bucketexplorer/LimitsbarWidget-JJiyzZjb-8e568c13daceebfafb30.js +1 -0
  41. data/tools/bucketexplorer/LimitscolorWidget-CYzXKbYd-f0a0a05a473d0f7b06b1.js +1 -0
  42. data/tools/bucketexplorer/LimitscolumnWidget-Cd76tBo7-506f3ee3bba6cb39bdfe.js +1 -0
  43. data/tools/bucketexplorer/LinegraphWidget-DWRtO6Ej-c5b90cf915cd6ed5d76d.js +1 -0
  44. data/tools/bucketexplorer/MatrixbycolumnsWidget-cwsyjNV2-9369719ed5db578a8d5c.js +1 -0
  45. data/tools/bucketexplorer/ProgressbarWidget-CYDziFej-f5d05b41e872fd03741c.js +1 -0
  46. data/tools/bucketexplorer/RadiobuttonWidget-U6jcQZoD-cee759169498f19f2f88.js +1 -0
  47. data/tools/bucketexplorer/RadiogroupWidget-HTPJnsB0-38beec3493bb72dd7e0c.js +1 -0
  48. data/tools/bucketexplorer/RangebarWidget-DW0FJK6y-c984a69595fe0bb8514d.js +1 -0
  49. data/tools/bucketexplorer/RollupWidget-B2qrx55f-5f145f0e8bd4e2ea657a.js +1 -0
  50. data/tools/bucketexplorer/ScrollwindowWidget-CwIDxgO6-3298f14b80a3ca255e72.js +1 -0
  51. data/tools/bucketexplorer/SignalWidget-Bosa3AbW-d7555d2f2bca8455dea8.js +1 -0
  52. data/tools/bucketexplorer/SpacerWidget-DYAlt5mt-9a223f8267dd8db957c0.js +1 -0
  53. data/tools/bucketexplorer/SparklineWidget-CDrVXOFV-cddc3cbe8e053f160dcc.js +1 -0
  54. data/tools/bucketexplorer/TabbookWidget-DDdlzCkv-270a99fbda6ea8535d33.js +1 -0
  55. data/tools/bucketexplorer/TextboxWidget-5euFelEq-11605b662c6d4f59775c.js +1 -0
  56. data/tools/bucketexplorer/TextfieldWidget-BFripYeh-9dfc598664182529c356.js +1 -0
  57. data/tools/bucketexplorer/TimeWidget-BBSbsUYJ-5800c5223fdaac181c42.js +1 -0
  58. data/tools/bucketexplorer/TitleWidget-p8cjo-Bs-4080e5e107d426060e14.js +1 -0
  59. data/tools/bucketexplorer/VWidget-Dmqf_jKM-9036168adfc98945614f.js +1 -0
  60. data/tools/bucketexplorer/ValueWidget-CZh7JWwT-1b5cd369cb847f4db4e7.js +1 -0
  61. data/tools/bucketexplorer/ValuelimitsbarWidget-DU7ybswC-c952ab6d66ff7e5b17e2.js +1 -0
  62. data/tools/bucketexplorer/ValuelimitscolumnWidget-DMw-h5jM-c79abafbd299609b2887.js +1 -0
  63. data/tools/bucketexplorer/ValuerangebarWidget-DPpofDpA-c552ad527bd6a006445f.js +1 -0
  64. data/tools/bucketexplorer/VerticalWidget-Ch7VAEmz-ac356c2b467349921d10.js +1 -0
  65. data/tools/bucketexplorer/VerticalboxWidget-DYx-TFT4-fffa9647d711f819e877.js +1 -0
  66. data/tools/bucketexplorer/Widget-orNSvnOh-3bb7e80962cb50dfe65f.js +1 -0
  67. data/tools/bucketexplorer/main-1e9165296521295ce8cd.js +8 -0
  68. data/tools/bucketexplorer/main.js +1 -0
  69. metadata +68 -9
  70. data/tools/bucketexplorer/index.html +0 -4
  71. data/tools/bucketexplorer/js/388.js +0 -2
  72. data/tools/bucketexplorer/js/388.js.map +0 -1
  73. data/tools/bucketexplorer/js/570.js +0 -2
  74. data/tools/bucketexplorer/js/570.js.map +0 -1
  75. data/tools/bucketexplorer/js/app.js +0 -2
  76. data/tools/bucketexplorer/js/app.js.map +0 -1
@@ -0,0 +1 @@
1
+ System.register(["./BucketExplorer-5b537808950cfdb2d967.js"],function(o,d){"use strict";var p,r;return{setters:[n=>{p=n.z,r=n.a}],execute:function(){const n=o("o",{mixins:[p],props:{widgetIndex:{type:Number,default:null},parameters:{type:Array,default:()=>[]},settings:{type:Array,default:()=>[]},screenValues:{type:Object,default:()=>{}},screenTimeZone:{type:String,default:"local"},namedWidgets:{type:Object,default:{}},line:{type:String,default:""},lineNumber:{type:Number,default:0}},data(){return{appliedSettings:[],appliedStyle:{},widgetName:null,screenId:"NO_SCREEN"}},computed:{computedStyle:function(){return this.appliedSettings.forEach(t=>{this.applyStyleSetting(t)}),this.appliedStyle.width===void 0&&this.appliedStyle.height===void 0&&(this.appliedStyle.flex="0 10 100%"),this.appliedStyle},screen:function(){const t=this;return{getNamedWidget:function(e){return t.$store.getters.namedWidget(t.toQualifiedWidgetName(e))},open:function(e,i){t.$emit("open",e,i)},close:function(e,i){t.$emit("close",e,i)},closeAll:function(){t.$emit("closeAll")}}},listeners:function(){return Object.entries(this.$attrs).reduce((t,e)=>e[0].startsWith("on")?{...t,[e[0]]:e[1]}:t,{})}},watch:{widgetName:function(t,e){this.$store.commit("clearNamedWidget",this.toQualifiedWidgetName(e)),this.$store.commit("setNamedWidget",{[this.toQualifiedWidgetName(t)]:this})}},created(){var t,e;this.screenId=(t=this.settings.find(i=>i[0]==="__SCREEN_ID__"))==null?void 0:t.at(1),this.widgetName=(e=this.settings.find(i=>i[0]==="NAMED_WIDGET"))==null?void 0:e.at(1),this.appliedSettings=this.settings.map(i=>{const s=parseInt(i[0]);if(isNaN(s)||this.widgetIndex===null)return i;if(this.widgetIndex===s)return i.slice(1)}).filter(i=>i!==void 0)},beforeUnmount(){this.widgetName&&this.$store.commit("clearNamedWidget",this.toQualifiedWidgetName(this.widgetName))},methods:{applyStyleSetting(t){switch(t[0]){case"TEXTALIGN":this.appliedStyle["text-align"]=t[1].toLowerCase()+" !important",this.appliedStyle["--text-align"]=t[1].toLowerCase();break;case"PADDING":isNaN(Number(t[1]))||(t[1]+="px"),this.appliedStyle.padding=t[1]+" !important";break;case"MARGIN":isNaN(Number(t[1]))||(t[1]+="px"),this.appliedStyle.margin=t[1]+" !important";break;case"BACKCOLOR":this.appliedStyle["background-color"]=this.getColor(t.slice(1))+" !important";break;case"TEXTCOLOR":this.appliedStyle.color=this.getColor(t.slice(1))+" !important";break;case"BORDERCOLOR":this.appliedStyle["border-width"]="1px!important",this.appliedStyle["border-style"]="solid!important",this.appliedStyle["border-color"]=this.getColor(t.slice(1))+" !important";break;case"WIDTH":isNaN(Number(t[1]))||(t[1]+="px"),this.appliedStyle.width=t[1]+" !important";break;case"HEIGHT":isNaN(Number(t[1]))||(t[1]+="px"),this.appliedStyle.height=t[1]+" !important";break;case"RAW":this.appliedStyle[t[1].toLowerCase()]=t[2]+" !important";break}},verifyNumParams(t,e,i,s=""){let a={line:this.line,lineNumber:this.lineNumber,keyword:t,parameters:this.parameters};for(let l=1;l<=e;l++)if(this.parameters[l-1]===void 0)throw new r(a,`Not enough parameters for ${t}.`,s,"https://docs.openc3.com/docs/configuration");if(i!==null&&this.parameters.length>i)throw new r(a,`Too many parameters for ${t}.`,s,"https://docs.openc3.com/docs/configuration")},setWidth(t,e="px",i="120"){let s=this.appliedSettings.find(a=>a[0]==="WIDTH");return s?s.WIDTH:t?(this.appliedSettings.push(["WIDTH",`${t}${e}`]),parseInt(t)):(this.appliedSettings.push(["WIDTH",`${i}${e}`]),parseInt(i))},setHeight(t,e="px",i="20"){let s=null;return s=this.appliedSettings.find(a=>a[0]==="HEIGHT"),s?s.HEIGHT:t?(this.appliedSettings.push(["HEIGHT",`${t}${e}`]),parseInt(t)):(this.appliedSettings.push(["HEIGHT",`${i}${e}`]),parseInt(i))},getColor(t){switch(t.length){case 1:return t[0].toLowerCase();case 3:return`rgb(${t[0]},${t[1]},${t[2]})`}},toQualifiedWidgetName(t){return`${this.screenId}:${t}`}}})}}});
@@ -0,0 +1,8 @@
1
+ System.register(["vue","vue-router","vuex","vuetify"],function(x,ve){"use strict";var d,m,g,f,u,O,_,y,q,U,z,G,H,Y,Z,R,J,K,Q,b,h,F,T,X,ee,te,oe,ne,se;return{setters:[l=>{d=l.resolveComponent,m=l.openBlock,g=l.createBlock,f=l.withCtx,u=l.createVNode,O=l.h,_=l.normalizeStyle,y=l.createElementBlock,q=l.mergeProps,U=l.defineComponent,z=l.warn,G=l.inject,H=l.computed,Y=l.shallowRef,Z=l.watchEffect,R=l.createApp,J=l.getCurrentInstance,K=l.provide,Q=l.withDirectives,b=l.createTextVNode,h=l.toDisplayString,F=l.createElementVNode,T=l.createCommentVNode,X=l.withModifiers,ee=l.vShow},l=>{te=l.createRouter,oe=l.createWebHistory},l=>{ne=l.createStore},l=>{se=l.createVuetify}],execute:function(){var l=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(s){return Object.getOwnPropertyDescriptor(e,s).enumerable})),n.push.apply(n,o)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?re(Object(n),!0).forEach(function(o){ye(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function ye(e,t,n){return(t=function(o){var s=function(r,i){if(C(r)!=="object"||r===null)return r;var a=r[Symbol.toPrimitive];if(a!==void 0){var c=a.call(r,i||"default");if(C(c)!=="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(i==="string"?String:Number)(r)}(o,"string");return C(s)==="symbol"?s:String(s)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function C(e){return C=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},C(e)}(function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(n){if(arguments.length==0)throw new TypeError("`CSS.escape` requires an argument.");for(var o,s=String(n),r=s.length,i=-1,a="",c=s.charCodeAt(0);++i<r;)(o=s.charCodeAt(i))!=0?a+=o>=1&&o<=31||o==127||i==0&&o>=48&&o<=57||i==1&&o>=48&&o<=57&&c==45?"\\"+o.toString(16)+" ":i==0&&r==1&&o==45||!(o>=128||o==45||o==95||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122)?"\\"+s.charAt(i):s.charAt(i):a+="�";return a};e.CSS||(e.CSS={}),e.CSS.escape=t})(l);var ge={appOptions:null,template:null,Vue:null,createApp:null,handleInstance:null};function be(e){if(C(e)!=="object")throw new Error("single-spa-vue requires a configuration object");var t=w(w({},ge),e);if(!t.Vue&&!t.createApp)throw Error("single-spa-vue must be passed opts.Vue or opts.createApp");if(!t.appOptions)throw Error("single-spa-vue must be passed opts.appOptions");if(t.appOptions.el&&typeof t.appOptions.el!="string"&&!(t.appOptions.el instanceof HTMLElement))throw Error("single-spa-vue: appOptions.el must be a string CSS selector, an HTMLElement, or not provided at all. Was given ".concat(C(t.appOptions.el)));t.createApp=t.createApp||t.Vue&&t.Vue.createApp;var n={};return{bootstrap:Te.bind(null,t,n),mount:we.bind(null,t,n),unmount:xe.bind(null,t,n),update:Ce.bind(null,t,n)}}function Te(e){return e.loadRootComponent?e.loadRootComponent().then(function(t){return e.rootComponent=t}):Promise.resolve()}function we(e,t,n){var o={};return Promise.resolve().then(function(){return function(s,r){return typeof s.appOptions=="function"?s.appOptions(r):Promise.resolve(w({},s.appOptions))}(e,n).then(function(s){var r;if(n.domElement&&!s.el&&(s.el=n.domElement),s.el)if(typeof s.el=="string"){if(!(r=document.querySelector(s.el)))throw Error("If appOptions.el is provided to single-spa-vue, the dom element must exist in the dom. Was provided as ".concat(s.el))}else(r=s.el).id||(r.id="single-spa-application:".concat(n.name)),s.el="#".concat(CSS.escape(r.id));else{var i="single-spa-application:".concat(n.name);s.el="#".concat(CSS.escape(i)),(r=document.getElementById(i))||((r=document.createElement("div")).id=i,document.body.appendChild(r))}if(!e.replaceMode&&(s.el=s.el+" .single-spa-container",!r.querySelector(".single-spa-container"))){var a=document.createElement("div");a.className="single-spa-container",r.appendChild(a)}o.domEl=r,s.render||s.template||!e.rootComponent||(s.render=function(p){return p(e.rootComponent)}),s.data||(s.data={});var c=s.data;if(s.data=function(){return w(w({},typeof c=="function"?c.call(this,this):c),n)},e.createApp){if(o.vueInstance=e.createApp(s),e.handleInstance)return Promise.resolve(e.handleInstance(o.vueInstance,n)).then(function(){return o.root=o.vueInstance.mount(s.el),t[n.name]=o,o.vueInstance});o.root=o.vueInstance.mount(s.el)}else if(o.vueInstance=new e.Vue(s),o.vueInstance.bind&&(o.vueInstance=o.vueInstance.bind(o.vueInstance)),e.handleInstance)return Promise.resolve(e.handleInstance(o.vueInstance,n)).then(function(){return t[n.name]=o,o.vueInstance});return t[n.name]=o,o.vueInstance})})}function Ce(e,t,n){return Promise.resolve().then(function(){var o=t[n.name],s=w(w({},e.appOptions.data||{}),n),r=o.root||o.vueInstance;for(var i in s)r[i]=s[i]})}function xe(e,t,n){return Promise.resolve().then(function(){var o=t[n.name];e.createApp?o.vueInstance.unmount(o.domEl):(o.vueInstance.$destroy(),o.vueInstance.$el.innerHTML=""),delete o.vueInstance,o.domEl&&(o.domEl.innerHTML="",delete o.domEl)})}const ke=x("a",(e,t)=>{const n=e.__vccOpts||e;for(const[o,s]of t)n[o]=s;return n}),Se={};function Oe(e,t){const n=d("router-view"),o=d("v-app");return m(),g(o,{id:"innerapp"},{default:f(()=>[u(n)]),_:1})}const _e=ke(Se,[["render",Oe]]),ft="modulepreload",mt=function(e){return"/"+e},ht={},$e=x("_",function(t,n,o){let s=Promise.resolve();function r(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&r(a.reason);return t().catch(r)})}),ie=function(e){var t;!e.name!=="NotFound"&&(e.path=`/tools/bucketexplorer/${e.path.replace(/^\//,"")}`),(t=e.children)==null||t.forEach(ie)},ae=[{path:"/:path*",name:"Bucket Explorer",component:()=>$e(()=>ve.import("./BucketExplorer-5b537808950cfdb2d967.js").then(e=>e.e),void 0)}];ae.forEach(ie);const Ae=te({history:oe(),routes:ae}),N=x("s",(e,t)=>{const n=e.__vccOpts||e;for(const[o,s]of t)n[o]=s;return n}),Ee={props:{icon:{type:String},size:{type:String,default:"small"},color:{type:String,default:"white"}},computed:{colorStyle:function(){return{"--iconColor":this.color}}}};function Ne(e,t,n,o,s,r){const i=d("rux-icon");return m(),g(i,{size:n.size,icon:n.icon,style:_(r.colorStyle)},null,8,["size","icon","style"])}const Ie=N(Ee,[["render",Ne],["__scopeId","data-v-9af48e85"]]),je="/icons/status-dark.png",Pe={props:{status:{type:String,required:!0},large:{type:Boolean},small:{type:Boolean},scale:{type:Number}},computed:{icons:function(){return je},scaleFactor:function(){return this.scale?this.scale:this.large?1:this.small?.3:.5},iconStyle:function(){const e=Fe.indexOf(le[this.status]),t=1-(e-1)*.05,n=224*this.scaleFactor*t,o=32*this.scaleFactor*t,s=32*this.scaleFactor*t;return[`background-image: url(${this.icons});`,`background-position-x: -${e*s}px;`,`background-size: ${n}px ${o}px;`,`height: ${s}px;`,`width: ${s}px;`,`padding-top: ${e-1}px;`].join("")}}};function Ve(e,t,n,o,s,r){return m(),y("div",{style:_(r.iconStyle)},null,4)}const He=N(Pe,[["render",Ve]]),le={fatal:"critical",FATAL:"critical",error:"critical",ERROR:"critical",warn:"caution",WARN:"caution",info:"normal",INFO:"normal",debug:"off",DEBUG:"off",critical:"critical",CRITICAL:"critical",serious:"serious",SERIOUS:"serious",caution:"caution",CAUTION:"caution",normal:"normal",NORMAL:"normal",standby:"standby",STANDBY:"standby",off:"off",OFF:"OFF"},B={fatal:"#ff69B4",critical:"#ff3838",serious:"#ffb302",caution:"#fce83a",normal:"#56f000",standby:"#2dccff",off:"#a4abb6"},Re=function(e){const t="#000000",n="#ffffff",o=B[le[e]];if(o){const s=+`0x${o.slice(1,3)}`,r=+`0x${o.slice(3,5)}`,i=+`0x${o.slice(5,7)}`;if((s*299+r*587+i*114)/1e3>128)return t}return n},Fe=Object.keys(B),Be={astro:{component:e=>O(Ie,{...e})},"astro-status":{component:e=>O(He,{...e,status:e.icon})}},Le={dark:!0,colors:{primary:"#005A8F",secondary:"#4DACFF",tertiary:"#BBC1C9","openc3-green":"#56f000","openc3-yellow":"#fce83a","openc3-red":"#ff3838","openc3-blue":"#2dccff","openc3-purple":"#c800c8","openc3-black":"#ffffff","openc3-white":"#ffffff"}},De={data:function(){return{show:!1,params:{title:"Title",text:"The text that is displayed",okText:"Ok",okClass:"primary",validateText:"CONFIRM",cancelText:"Cancel",html:!1},resolve:null,reject:null,validationText:null,rules:{required:e=>!!e||"Required.",match:e=>e===this.params.validateText||"Value mismatch."}}},computed:{dataTestOk:function(){return`confirm-dialog-${this.params.okText.toLowerCase()}`},dataTestCancel:function(){return`confirm-dialog-${this.params.cancelText.toLowerCase()}`}},methods:{dialog:function(e,t,n){this.params=e,this.show=!0,this.resolve=t,this.reject=n},ok:function(){this.params.validateText===this.validationText&&(this.show=!1,this.resolve(!0))},cancel:function(){this.show=!1,this.reject(!0)}}},Me=["innerHTML"],We={key:2},qe={key:3,class:"validate mt-4"};function Ue(e,t,n,o,s,r){const i=d("v-spacer"),a=d("v-toolbar"),c=d("v-icon"),p=d("v-text-field"),v=d("v-card-text"),k=d("v-btn"),A=d("v-card-actions"),E=d("v-card"),P=d("v-dialog"),V=d("v-app");return m(),g(V,null,{default:f(()=>[u(P,{modelValue:e.show,"onUpdate:modelValue":t[1]||(t[1]=S=>e.show=S),width:"600"},{default:f(()=>[u(E,null,{default:f(()=>[u(a,{height:"24"},{default:f(()=>[u(i),F("span",null,h(e.params.title),1),u(i)]),_:1}),u(v,{class:"mt-4 pa-3"},{default:f(()=>[e.params.validateText?(m(),g(c,{key:0,class:"mr-2"},{default:f(()=>t[2]||(t[2]=[b(" mdi-alert ")])),_:1})):T("",!0),e.params.html?(m(),y("span",{key:1,innerHTML:e.params.text},null,8,Me)):(m(),y("span",We,h(e.params.text),1)),e.params.validateText?(m(),y("div",qe,[b(" Enter "+h(e.params.validateText)+" to confirm! ",1),u(p,{variant:"solo",density:"compact","single-line":"",modelValue:e.validationText,"onUpdate:modelValue":t[0]||(t[0]=S=>e.validationText=S),rules:[e.rules.required,e.rules.match],"data-test":"confirm-dialog-validate"},null,8,["modelValue","rules"])])):T("",!0)]),_:1}),u(A,{class:"px-2"},{default:f(()=>[u(i),e.params.cancelText?(m(),g(k,{key:0,variant:"outlined","data-test":r.dataTestCancel,onClick:r.cancel},{default:f(()=>[b(h(e.params.cancelText),1)]),_:1},8,["data-test","onClick"])):T("",!0),u(k,{variant:"flat",color:e.params.okClass,"data-test":r.dataTestOk,onClick:r.ok},{default:f(()=>[b(h(e.params.okText),1)]),_:1},8,["color","data-test","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const ze=N(De,[["render",Ue],["__scopeId","data-v-581c0293"]]);class Ge{constructor(){this.mounted=!1,this.$root=null}mount(){if(this.mounted)return;const t=window.Vue.createApp(ze);t.use(D);const n=document.createElement("div");document.querySelector("#openc3-app-toolbar > div").appendChild(n),this.$root=t.mount(n),this.mounted=!0}open({title:t,text:n,okText:o,okClass:s,validateText:r,cancelText:i,html:a}){return this.mount(),new Promise((c,p)=>{this.$root.dialog({title:t,text:n,okText:o,okClass:s,validateText:r,cancelText:i,html:a},c,p)})}confirm(t,{okText:n="Ok",cancelText:o="Cancel",okClass:s="primary"}){return this.open({title:"Confirm",text:t,okText:n,okClass:s,validateText:null,cancelText:o,html:!1})}alert(t,{okText:n="Ok",html:o=!1,okClass:s="primary"}){return this.open({title:"Alert",text:t,okText:n,okClass:s,validateText:null,cancelText:null,html:o})}validate(t,{okText:n="Ok",validateText:o="CONFIRM",cancelText:s="Cancel",okClass:r="primary"}){return this.open({title:"Confirm",text:t,okText:n,okClass:r,validateText:o,cancelText:s,html:!1})}}const Ye={install(e,t){const n=new Ge;e.provide("dialog",n),e.config.globalProperties.hasOwnProperty("$dialog")||(e.config.globalProperties.$dialog=n)}},Ze={data:function(){return{showToast:!1,expanded:!1,toastNotification:{title:"Title here",body:"This is the notification body",message:"Overall message here"},timeout:null,noToastPaths:["/login"]}},computed:{toastNotificationIcon:function(){switch(this.toastNotification.type){case"notification":return"mdi-bell";case"alert":default:return"mdi-alert-box"}},toastStyle:function(){return`
2
+ --toast-bg-color:${B[this.toastNotification.level]};
3
+ --toast-fg-color:${Re(this.toastNotification.level)};
4
+ `},contentStyle:function(){return`
5
+ white-space: ${this.expanded?"normal":"nowrap"};
6
+ overflow-x: ${this.expanded?"visible":"hidden"};
7
+ text-overflow: ${this.expanded?"unset":"ellipsis"};
8
+ `}},methods:{toast:function(e,t){this.noToastPaths.includes(window.location.pathname)||(t===void 0&&(t=5e3),this.toastNotification=e,this.showToast=!0,this.cancelAutohide(),t&&(this.timeout=setTimeout(()=>{this.hide()},t)))},hide:function(){this.cancelAutohide(),this.showToast=!1},cancelAutohide:function(){this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},expand:function(){this.cancelAutohide(),this.expanded=!0}}},Je={key:0,class:"text-subtitle-1 mr-1 notification-text"},Ke={key:1,class:"text-body-2 notification-text"},Qe={key:2,class:"text-body-2 notification-text"};function Xe(e,t,n,o,s,r){const i=d("v-icon"),a=d("v-spacer"),c=d("v-btn"),p=d("v-sheet"),v=d("v-slide-y-transition");return m(),g(v,null,{default:f(()=>[Q(u(p,{style:_(r.toastStyle),class:"toast-notification",onClick:r.expand},{default:f(()=>[u(i,{class:"mr-1 notification-text"},{default:f(()=>[b(h(r.toastNotificationIcon),1)]),_:1}),F("div",{class:"toast-content",style:_(r.contentStyle)},[e.toastNotification.title?(m(),y("span",Je,h(e.toastNotification.title)+": ",1)):T("",!0),e.toastNotification.body?(m(),y("span",Ke,h(e.toastNotification.body),1)):T("",!0),e.toastNotification.message?(m(),y("span",Qe,h(e.toastNotification.message),1)):T("",!0)],4),u(a),u(c,{variant:"text",onClick:X(r.hide,["stop"]),class:"notification-text"},{default:f(()=>t[0]||(t[0]=[b(" Dismiss ")])),_:1},8,["onClick"])]),_:1},8,["style","onClick"]),[[ee,e.showToast]])]),_:1})}const et=N(Ze,[["render",Xe],["__scopeId","data-v-b0459ba8"]]);class tt{constructor(t={}){var n;this.$store=t.store,this.mounted=!1,this.$root=null,(n=window.$cosmosNotify)!=null&&n.$root?(this.mounted=!0,this.$root=window.$cosmosNotify.$root):window.$cosmosNotify=this}mount(){if(this.mounted)return;const t=R(et);t.use(D);const n=document.createElement("div");document.querySelector("#openc3-app-toolbar > div").appendChild(n),this.$root=t.mount(n),this.mounted=!0}open({method:t,title:n,body:o,message:s,level:r,duration:i,type:a="alert",logToConsole:c=!1,saveToHistory:p=!0}){this.mount(),c&&console.log(s?`${r.toUpperCase()} - ${s}`:`${r.toUpperCase()} - ${n}: ${o}`),p&&this.$store.commit("notifyAddHistory",{title:n,body:o,message:s,level:r}),this[t]({title:n,body:o,message:s,level:r,duration:i,type:a})}toast({title:t,body:n,message:o,level:s,duration:r,type:i}){this.$root.toast({title:t,body:n,message:o,level:s,type:i},r)}critical({title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a}){this.open({method:"toast",level:"critical",title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a})}FATAL(t){this.critical(t)}ERROR(t){this.critical(t)}serious({title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a}){this.open({method:"toast",level:"serious",title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a})}caution({title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a}){this.open({method:"toast",level:"caution",title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a})}WARN(t){this.caution(t)}normal({title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a}){this.open({method:"toast",level:"normal",title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a})}INFO(t){this.normal(t)}DEBUG(t){this.normal(t)}standby({title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a}){this.open({method:"toast",level:"standby",title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a})}off({title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a}){this.open({method:"toast",level:"off",title:t,body:n,message:o,type:s,duration:r,logToConsole:i,saveToHistory:a})}}const ot={install(e,t){const n=new tt(t);e.provide("notify",n),e.config.globalProperties.hasOwnProperty("$notify")||(e.config.globalProperties.$notify=n)}},ce=100,ue=ne({state:{notifyHistory:[],namedWidgets:{}},getters:{namedWidget:e=>t=>e.namedWidgets[t]},mutations:{notifyAddHistory:(e,t)=>{e.notifyHistory.length>=ce&&(e.notifyHistory.length=ce-1),e.notifyHistory.unshift(t)},notifyClearHistory:e=>{e.notifyHistory=[]},setNamedWidget:(e,t)=>{Object.assign(e.namedWidgets,t)},clearNamedWidget:(e,t)=>{delete e.namedWidgets[t]}},modules:{}});function pe(e){let t;return e!==null&&typeof e=="object"&&((t=Object.getPrototypeOf(e))===Object.prototype||t===null)}function nt(e,t){const n={},o=new Set(Object.keys(e));for(const s of t)o.has(s)&&(n[s]=e[s]);return n}function de(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const o={};for(const s in e)o[s]=e[s];for(const s in t){const r=e[s],i=t[s];if(pe(r)&&pe(i)){o[s]=de(r,i,n);continue}if(n&&Array.isArray(r)&&Array.isArray(i)){o[s]=n(r,i);continue}o[s]=i}return o}function $(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if($.cache.has(e))return $.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return $.cache.set(e,t),t}$.cache=new Map;function st(e){z(`Vuetify: ${e}`)}function fe(e,t){return n=>Object.keys(e).reduce((o,s)=>{const r=typeof e[s]=="object"&&e[s]!=null&&!Array.isArray(e[s])?e[s]:{type:e[s]};return n&&s in n?o[s]={...r,default:n[s]}:o[s]=r,t&&!o[s].source&&(o[s].source=t),o},{})}function me(e,t){const n=J();if(!n)throw new Error(`[Vuetify] ${e} must be called from inside a setup function`);return n}function rt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:me("injectSelf");const{provides:n}=t;if(n&&e in n)return n[e]}const L=Symbol.for("vuetify:defaults");function he(){const e=G(L);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function it(e,t){var n,o;return typeof((n=e.props)==null?void 0:n[t])<"u"||typeof((o=e.props)==null?void 0:o[$(t)])<"u"}function at(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:he();const o=me("useDefaults");if(t=t??o.type.name??o.type.__name,!t)throw new Error("[Vuetify] Could not determine component name");const s=H(()=>{var c;return(c=n.value)==null?void 0:c[e._as??t]}),r=new Proxy(e,{get(c,p){var v,k,A,E,P,V,S;const W=Reflect.get(c,p);return p==="class"||p==="style"?[(v=s.value)==null?void 0:v[p],W].filter(dt=>dt!=null):typeof p=="string"&&!it(o.vnode,p)?((k=s.value)==null?void 0:k[p])!==void 0?(A=s.value)==null?void 0:A[p]:((P=(E=n.value)==null?void 0:E.global)==null?void 0:P[p])!==void 0?(S=(V=n.value)==null?void 0:V.global)==null?void 0:S[p]:W:W}}),i=Y();Z(()=>{if(s.value){const c=Object.entries(s.value).filter(p=>{let[v]=p;return v.startsWith(v[0].toUpperCase())});i.value=c.length?Object.fromEntries(c):void 0}else i.value=void 0});function a(){const c=rt(L,o);K(L,H(()=>i.value?de((c==null?void 0:c.value)??{},i.value):c==null?void 0:c.value))}return{props:r,provideSubDefaults:a}}function I(e){if(e._setup=e._setup??e.setup,!e.name)return st("The component is missing an explicit name, unable to generate default prop value"),e;if(e._setup){e.props=fe(e.props??{},e.name)();const t=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(n){return nt(n,t)},e.props._as=String,e.setup=function(n,o){const s=he();if(!s.value)return e._setup(n,o);const{props:r,provideSubDefaults:i}=at(n,n._as??e.name,s),a=e._setup(r,o);return i(),a}}return e}function lt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t=>(e?I:U)(t)}const ct=[String,Function,Object,Array],j=fe({icon:{type:ct},tag:{type:String,required:!0}},"icon");lt()({name:"VComponentIcon",props:j(),setup(e,t){let{slots:n}=t;return()=>{const o=e.icon;return u(e.tag,null,{default:()=>{var s;return[e.icon?u(o,null,null):(s=n.default)==null?void 0:s.call(n)]}})}}}),I({name:"VSvgIcon",inheritAttrs:!1,props:j(),setup(e,t){let{attrs:n}=t;return()=>u(e.tag,q(n,{style:null}),{default:()=>[u("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(o=>Array.isArray(o)?u("path",{d:o[0],"fill-opacity":o[1]},null):u("path",{d:o},null)):u("path",{d:e.icon},null)])]})}}),I({name:"VLigatureIcon",props:j(),setup(e){return()=>u(e.tag,null,{default:()=>[e.icon]})}});const ut=I({name:"VClassIcon",props:j(),setup(e){return()=>u(e.tag,{class:e.icon},null)}}),pt={component:e=>O(ut,{...e,class:"mdi"})},D=se({theme:{defaultTheme:"cosmosDark",themes:{cosmosDark:Le}},icons:{defaultSet:"mdi",sets:{mdi:pt,...Be}}}),M=be({createApp:R,appOptions:{render(){return O(_e,{})},el:"#openc3-tool"},handleInstance:e=>{e.use(Ae),e.use(ue),e.use(D),e.use(Ye),e.use(ot,{store:ue})}}),vt=x("b",M.bootstrap),yt=x("m",M.mount),gt=x("u",M.unmount)}}});
@@ -0,0 +1 @@
1
+ System.register(["vue","./main-1e9165296521295ce8cd.js","vue-router","vuex","vuetify"],function(t,e){"use strict";return{setters:[null,u=>{t({bootstrap:u.b,mount:u.m,unmount:u.u})},null,null,null],execute:function(){}}});
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openc3-cosmos-tool-bucketexplorer
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.19.0
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Melton
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-10-01 00:00:00.000000000 Z
12
+ date: 2024-12-17 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: " This plugin adds the OpenC3 COSMOS Bucket Explorer tool\n"
15
15
  email:
@@ -23,13 +23,72 @@ files:
23
23
  - README.md
24
24
  - Rakefile
25
25
  - plugin.txt
26
- - tools/bucketexplorer/index.html
27
- - tools/bucketexplorer/js/388.js
28
- - tools/bucketexplorer/js/388.js.map
29
- - tools/bucketexplorer/js/570.js
30
- - tools/bucketexplorer/js/570.js.map
31
- - tools/bucketexplorer/js/app.js
32
- - tools/bucketexplorer/js/app.js.map
26
+ - tools/bucketexplorer/ArrayWidget-By62tXtU-8f33e8321ef1d3fe7d37.js
27
+ - tools/bucketexplorer/BarColumn-Dm3D1Lhp-c2c3ce1466eec0a3fe11.js
28
+ - tools/bucketexplorer/BlockWidget-CrT45ode-2679087bb254510a1933.js
29
+ - tools/bucketexplorer/BucketExplorer-5b537808950cfdb2d967.js
30
+ - tools/bucketexplorer/ButtonWidget-CKyBBv6m-f0e78fd47ef48e139a32.js
31
+ - tools/bucketexplorer/CanvasWidget-PqkppHC7-4e170504201c5d5da660.js
32
+ - tools/bucketexplorer/CanvasdotWidget-BUbJgM2d-43ebb055d8dca6562047.js
33
+ - tools/bucketexplorer/CanvasimageWidget-DPVBY7mi-373a581e892ee8d25151.js
34
+ - tools/bucketexplorer/CanvasimagevalueWidget-GX37zzNc-bf3ecd8b0face0e8e57d.js
35
+ - tools/bucketexplorer/CanvaslabelWidget-P2_Y6Edw-b3a96ce1ee07320799cc.js
36
+ - tools/bucketexplorer/CanvaslabelvalueWidget-Cuas1i9P-e1d5a85ff01854b3ed2d.js
37
+ - tools/bucketexplorer/CanvaslineWidget-BYOYgPya-a78c8160cccbbec9c086.js
38
+ - tools/bucketexplorer/CanvaslinevalueWidget-3cVJMFo7-aa1a15f703557486b807.js
39
+ - tools/bucketexplorer/CheckbuttonWidget-B3wgSMuB-940809ed24ffaf77baad.js
40
+ - tools/bucketexplorer/ComboboxWidget-Dzr4Scvf-3901799f4c7b9538f037.js
41
+ - tools/bucketexplorer/DateWidget-BWh76Ibb-20d6aafc770af85671ad.js
42
+ - tools/bucketexplorer/DetailsDialog-EWjtBjle-5ba775af5588b02a6ed6.js
43
+ - tools/bucketexplorer/DynamicWidget-m9EliUR2-83b4b626f38bce472413.js
44
+ - tools/bucketexplorer/FormatvalueWidget-Rk0_eeIm-1e274b4dc1511553b08d.js
45
+ - tools/bucketexplorer/GraphWidget-LqekkNDr-da173601574048e1a1fc.js
46
+ - tools/bucketexplorer/HorizontalWidget-BcfJ24Zn-f7660bcb488e69ef9c9c.js
47
+ - tools/bucketexplorer/HorizontalboxWidget-CQy1Hv9E-9175f81379b610b7f6e0.js
48
+ - tools/bucketexplorer/HorizontallineWidget-BdlNB951-7ae6b6e1b2ce5d970652.js
49
+ - tools/bucketexplorer/IframeWidget-BBaDrRLo-84cf059c641c1b6956e6.js
50
+ - tools/bucketexplorer/ImageLoader-CDLQopxJ-e62f22afdfda9e31d682.js
51
+ - tools/bucketexplorer/ImageviewerWidget-BgO3Pq6I-70f67593e2a277b5380d.js
52
+ - tools/bucketexplorer/LabelWidget-B_C6lKOE-4df235a597dafa77d277.js
53
+ - tools/bucketexplorer/LabelledWidget-B_UGivhr-26b7aae3e3d1f17987ca.js
54
+ - tools/bucketexplorer/LabelprogressbarWidget-BJWCmsYC-e102ec760120df1f31d3.js
55
+ - tools/bucketexplorer/LabelsparklineWidget-DILCIh3q-861da511567c33a45af0.js
56
+ - tools/bucketexplorer/LabelvalueWidget-CCZd1NXE-cec6c130ee113eab9a22.js
57
+ - tools/bucketexplorer/LabelvaluedescWidget-Bsllq8W6-7ef06ad09ae65430e18a.js
58
+ - tools/bucketexplorer/LabelvaluelimitsbarWidget-BV-cfaD--f3f911842b22632d7d18.js
59
+ - tools/bucketexplorer/LabelvaluelimitscolumnWidget-DwA0eRBw-24b769bde34bd6ea7f6d.js
60
+ - tools/bucketexplorer/LabelvaluerangebarWidget-3GDJz3dj-b8e8efd98495e4e74314.js
61
+ - tools/bucketexplorer/Layout-klOVw-YN-36ded4f02b701947153d.js
62
+ - tools/bucketexplorer/LedWidget-BAt02s0J-675593ca2bd521e0b825.js
63
+ - tools/bucketexplorer/LimitsbarWidget-JJiyzZjb-8e568c13daceebfafb30.js
64
+ - tools/bucketexplorer/LimitscolorWidget-CYzXKbYd-f0a0a05a473d0f7b06b1.js
65
+ - tools/bucketexplorer/LimitscolumnWidget-Cd76tBo7-506f3ee3bba6cb39bdfe.js
66
+ - tools/bucketexplorer/LinegraphWidget-DWRtO6Ej-c5b90cf915cd6ed5d76d.js
67
+ - tools/bucketexplorer/MatrixbycolumnsWidget-cwsyjNV2-9369719ed5db578a8d5c.js
68
+ - tools/bucketexplorer/ProgressbarWidget-CYDziFej-f5d05b41e872fd03741c.js
69
+ - tools/bucketexplorer/RadiobuttonWidget-U6jcQZoD-cee759169498f19f2f88.js
70
+ - tools/bucketexplorer/RadiogroupWidget-HTPJnsB0-38beec3493bb72dd7e0c.js
71
+ - tools/bucketexplorer/RangebarWidget-DW0FJK6y-c984a69595fe0bb8514d.js
72
+ - tools/bucketexplorer/RollupWidget-B2qrx55f-5f145f0e8bd4e2ea657a.js
73
+ - tools/bucketexplorer/ScrollwindowWidget-CwIDxgO6-3298f14b80a3ca255e72.js
74
+ - tools/bucketexplorer/SignalWidget-Bosa3AbW-d7555d2f2bca8455dea8.js
75
+ - tools/bucketexplorer/SpacerWidget-DYAlt5mt-9a223f8267dd8db957c0.js
76
+ - tools/bucketexplorer/SparklineWidget-CDrVXOFV-cddc3cbe8e053f160dcc.js
77
+ - tools/bucketexplorer/TabbookWidget-DDdlzCkv-270a99fbda6ea8535d33.js
78
+ - tools/bucketexplorer/TextboxWidget-5euFelEq-11605b662c6d4f59775c.js
79
+ - tools/bucketexplorer/TextfieldWidget-BFripYeh-9dfc598664182529c356.js
80
+ - tools/bucketexplorer/TimeWidget-BBSbsUYJ-5800c5223fdaac181c42.js
81
+ - tools/bucketexplorer/TitleWidget-p8cjo-Bs-4080e5e107d426060e14.js
82
+ - tools/bucketexplorer/VWidget-Dmqf_jKM-9036168adfc98945614f.js
83
+ - tools/bucketexplorer/ValueWidget-CZh7JWwT-1b5cd369cb847f4db4e7.js
84
+ - tools/bucketexplorer/ValuelimitsbarWidget-DU7ybswC-c952ab6d66ff7e5b17e2.js
85
+ - tools/bucketexplorer/ValuelimitscolumnWidget-DMw-h5jM-c79abafbd299609b2887.js
86
+ - tools/bucketexplorer/ValuerangebarWidget-DPpofDpA-c552ad527bd6a006445f.js
87
+ - tools/bucketexplorer/VerticalWidget-Ch7VAEmz-ac356c2b467349921d10.js
88
+ - tools/bucketexplorer/VerticalboxWidget-DYx-TFT4-fffa9647d711f819e877.js
89
+ - tools/bucketexplorer/Widget-orNSvnOh-3bb7e80962cb50dfe65f.js
90
+ - tools/bucketexplorer/main-1e9165296521295ce8cd.js
91
+ - tools/bucketexplorer/main.js
33
92
  homepage: https://github.com/OpenC3/cosmos
34
93
  licenses:
35
94
  - AGPL-3.0-only
@@ -1,4 +0,0 @@
1
- <!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><main><h1>Your Microfrontend is not here</h1><p>The @openc3/cosmos-tool-bucketexplorer microfrontend is running in "integrated" mode, since standalone-single-spa-webpack-plugin is disabled. This means that it does not work as a standalone application without changing configuration.</p><h2>How do I develop this microfrontend?</h2><p>To develop this microfrontend, try the following steps:</p><ol><li>Copy the following URL to your clipboard: <a target="_blank" rel="noopener" id="mf-url"></a></li><li>In a new browser tab, go to the your single-spa web app. This is where your "root config" is running. You do not have to run the root config locally if it is already running on a deployed environment - go to the deployed environment directly.</li><li>In the browser console, run <code>localStorage.setItem('devtools', true);</code> Refresh the page.</li><li>A yellowish rectangle should appear at the bottom right of your screen. Click on it. Find the name @openc3/cosmos-tool-bucketexplorer and click on it. If it is not present, click on Add New Module.</li><li>Paste the URL above into the input that appears. Refresh the page.</li><li>Congrats, your local code is now being used!</li></ol><p></p><p>For further information about "integrated" mode, see the following links:</p><ul><li><a target="_blank" rel="noopener" href="https://single-spa.js.org/docs/recommended-setup#local-development">Local Development Overview</a></li><li><a target="_blank" rel="noopener" href="https://github.com/joeldenning/import-map-overrides">Import Map Overrides Documentation</a></li></ul><p></p><h2>If you prefer Standalone mode</h2><p>To run this microfrontend in "standalone" mode, the standalone-single-spa-webpack-plugin must not be disabled. In some cases, this is done by running <code>npm run start:standalone</code>. Alternatively, you can add <code>--env standalone</code> to your package.json start script if you are using webpack-config-single-spa.</p>If neither of those work for you, see more details about enabling standalone mode at <a target="_blank" rel="noopener" href="https://github.com/single-spa/standalone-single-spa-webpack-plugin">Standalone Plugin Documentation</a>.<p></p><script>const mfLink = document.getElementById('mf-url');
2
- const fullSrc = new URL('/tools/bucketexplorer//tools/bucketexplorer/js/app.js', window.location.href);
3
- mfLink.href = fullSrc;
4
- mfLink.textContent = fullSrc;</script></main></head><body><div id="app"></div></body></html>
@@ -1,2 +0,0 @@
1
- (self["webpackChunk_openc3_cosmos_tool_bucketexplorer"]=self["webpackChunk_openc3_cosmos_tool_bucketexplorer"]||[]).push([[388],{9388:(n,e,l)=>{"use strict";function t(){var n="/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",e="0d8ce1630c8b0ab7db1af4d5d5010223994d8f47",l=new Function("return this")(),o="__coverage__",i={path:"/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",statementMap:{0:{start:{line:1,column:13},end:{line:9,column:1}},1:{start:{line:1,column:39},end:{line:1,column:43}},2:{start:{line:1,column:47},end:{line:1,column:59}},3:{start:{line:1,column:60},end:{line:8,column:3975}},4:{start:{line:1,column:373},end:{line:1,column:663}},5:{start:{line:1,column:477},end:{line:1,column:502}},6:{start:{line:1,column:502},end:{line:1,column:533}},7:{start:{line:1,column:875},end:{line:1,column:1165}},8:{start:{line:1,column:979},end:{line:1,column:1004}},9:{start:{line:1,column:1004},end:{line:1,column:1035}},10:{start:{line:1,column:1554},end:{line:1,column:1568}},11:{start:{line:8,column:174},end:{line:8,column:1195}},12:{start:{line:8,column:1143},end:{line:8,column:1155}},13:{start:{line:8,column:1248},end:{line:8,column:1355}},14:{start:{line:8,column:1397},end:{line:8,column:1489}},15:{start:{line:8,column:1533},end:{line:8,column:1926}},16:{start:{line:8,column:1665},end:{line:8,column:1699}},17:{start:{line:8,column:1857},end:{line:8,column:1889}},18:{start:{line:8,column:2051},end:{line:8,column:2075}},19:{start:{line:8,column:2615},end:{line:8,column:2637}},20:{start:{line:8,column:2844},end:{line:8,column:2872}},21:{start:{line:8,column:3077},end:{line:8,column:3101}},22:{start:{line:8,column:3101},end:{line:8,column:3145}},23:{start:{line:8,column:3301},end:{line:8,column:3405}},24:{start:{line:8,column:3393},end:{line:8,column:3405}},25:{start:{line:8,column:3405},end:{line:8,column:3430}},26:{start:{line:8,column:3491},end:{line:8,column:3512}},27:{start:{line:8,column:3925},end:{line:8,column:3953}},28:{start:{line:10,column:22},end:{line:10,column:24}}},fnMap:{0:{name:"render",decl:{start:{line:1,column:22},end:{line:1,column:28}},loc:{start:{line:1,column:30},end:{line:9,column:1}},line:1},1:{name:"(anonymous_1)",decl:{start:{line:1,column:350},end:{line:1,column:351}},loc:{start:{line:1,column:372},end:{line:1,column:664}},line:1},2:{name:"(anonymous_2)",decl:{start:{line:1,column:460},end:{line:1,column:461}},loc:{start:{line:1,column:476},end:{line:1,column:534}},line:1},3:{name:"(anonymous_3)",decl:{start:{line:1,column:852},end:{line:1,column:853}},loc:{start:{line:1,column:874},end:{line:1,column:1166}},line:1},4:{name:"(anonymous_4)",decl:{start:{line:1,column:962},end:{line:1,column:963}},loc:{start:{line:1,column:978},end:{line:1,column:1036}},line:1},5:{name:"(anonymous_5)",decl:{start:{line:1,column:1538},end:{line:1,column:1539}},loc:{start:{line:1,column:1553},end:{line:1,column:1569}},line:1},6:{name:"(anonymous_6)",decl:{start:{line:8,column:163},end:{line:8,column:164}},loc:{start:{line:8,column:173},end:{line:8,column:1196}},line:8},7:{name:"(anonymous_7)",decl:{start:{line:8,column:1127},end:{line:8,column:1128}},loc:{start:{line:8,column:1142},end:{line:8,column:1156}},line:8},8:{name:"(anonymous_8)",decl:{start:{line:8,column:1229},end:{line:8,column:1230}},loc:{start:{line:8,column:1247},end:{line:8,column:1356}},line:8},9:{name:"(anonymous_9)",decl:{start:{line:8,column:1378},end:{line:8,column:1379}},loc:{start:{line:8,column:1396},end:{line:8,column:1490}},line:8},10:{name:"(anonymous_10)",decl:{start:{line:8,column:1514},end:{line:8,column:1515}},loc:{start:{line:8,column:1532},end:{line:8,column:1927}},line:8},11:{name:"(anonymous_11)",decl:{start:{line:8,column:1648},end:{line:8,column:1649}},loc:{start:{line:8,column:1664},end:{line:8,column:1700}},line:8},12:{name:"(anonymous_12)",decl:{start:{line:8,column:1840},end:{line:8,column:1841}},loc:{start:{line:8,column:1856},end:{line:8,column:1890}},line:8},13:{name:"(anonymous_13)",decl:{start:{line:8,column:2035},end:{line:8,column:2036}},loc:{start:{line:8,column:2050},end:{line:8,column:2076}},line:8},14:{name:"(anonymous_14)",decl:{start:{line:8,column:2599},end:{line:8,column:2600}},loc:{start:{line:8,column:2614},end:{line:8,column:2638}},line:8},15:{name:"(anonymous_15)",decl:{start:{line:8,column:2827},end:{line:8,column:2828}},loc:{start:{line:8,column:2843},end:{line:8,column:2873}},line:8},16:{name:"(anonymous_16)",decl:{start:{line:8,column:3060},end:{line:8,column:3061}},loc:{start:{line:8,column:3076},end:{line:8,column:3146}},line:8},17:{name:"(anonymous_17)",decl:{start:{line:8,column:3284},end:{line:8,column:3285}},loc:{start:{line:8,column:3300},end:{line:8,column:3431}},line:8},18:{name:"(anonymous_18)",decl:{start:{line:8,column:3475},end:{line:8,column:3476}},loc:{start:{line:8,column:3490},end:{line:8,column:3513}},line:8},19:{name:"(anonymous_19)",decl:{start:{line:8,column:3908},end:{line:8,column:3909}},loc:{start:{line:8,column:3924},end:{line:8,column:3954}},line:8}},branchMap:{0:{loc:{start:{line:1,column:682},end:{line:1,column:1180}},type:"cond-expr",locations:[{start:{line:1,column:709},end:{line:1,column:1171}},{start:{line:1,column:1172},end:{line:1,column:1180}}],line:1},1:{loc:{start:{line:8,column:809},end:{line:8,column:1190}},type:"cond-expr",locations:[{start:{line:8,column:833},end:{line:8,column:1181}},{start:{line:8,column:1182},end:{line:8,column:1190}}],line:8},2:{loc:{start:{line:8,column:1432},end:{line:8,column:1475}},type:"cond-expr",locations:[{start:{line:8,column:1444},end:{line:8,column:1470}},{start:{line:8,column:1473},end:{line:8,column:1475}}],line:8},3:{loc:{start:{line:8,column:1541},end:{line:8,column:1741}},type:"cond-expr",locations:[{start:{line:8,column:1568},end:{line:8,column:1732}},{start:{line:8,column:1733},end:{line:8,column:1741}}],line:8},4:{loc:{start:{line:8,column:1754},end:{line:8,column:1925}},type:"cond-expr",locations:[{start:{line:8,column:1781},end:{line:8,column:1916}},{start:{line:8,column:1917},end:{line:8,column:1925}}],line:8},5:{loc:{start:{line:8,column:3301},end:{line:8,column:3405}},type:"if",locations:[{start:{line:8,column:3301},end:{line:8,column:3405}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:8},6:{loc:{start:{line:8,column:3304},end:{line:8,column:3392}},type:"binary-expr",locations:[{start:{line:8,column:3304},end:{line:8,column:3331}},{start:{line:8,column:3333},end:{line:8,column:3392}}],line:8}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0],6:[0,0]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"0d8ce1630c8b0ab7db1af4d5d5010223994d8f47"},a=l[o]||(l[o]={});a[n]&&a[n].hash===e||(a[n]=i);var s=a[n];return t=function(){return s},s}l.r(e),l.d(e,{default:()=>$}),t(),t().s[0]++;var o=function(){t().f[0]++;var n=(t().s[1]++,this),e=(t().s[2]++,n._self._c);return t().s[3]++,e("div",[e("top-bar",{attrs:{title:n.title,menus:n.menus}}),n._v(" "),e("v-card",{attrs:{width:"100%"}},[e("div",{staticStyle:{"padding-left":"5px","padding-top":"5px"}},[e("span",{staticClass:"ma-2 font-size"},[n._v("Buckets:")]),n._v(" "),n._l(n.buckets,(function(l,o){return t().f[1]++,t().s[4]++,e("v-chip",{key:o,staticClass:"ma-2",attrs:{color:"primary"},on:{click:function(e){return t().f[2]++,t().s[5]++,e.stopPropagation(),t().s[6]++,n.selectBucket(l)}}},[e("v-avatar",{attrs:{left:""}},[e("v-icon",[n._v("mdi-bucket")])],1),n._v("\n "+n._s(l)+"\n ")],1)}))],2),n._v(" "),0!==n.volumes.length?(t().b[0][0]++,e("div",{staticStyle:{"padding-left":"5px"}},[e("span",{staticClass:"ma-2 font-size"},[n._v("Volumes:")]),n._v(" "),n._l(n.volumes,(function(l,o){return t().f[3]++,t().s[7]++,e("v-chip",{key:o,staticClass:"ma-2",attrs:{color:"primary"},on:{click:function(e){return t().f[4]++,t().s[8]++,e.stopPropagation(),t().s[9]++,n.selectVolume(l)}}},[e("v-avatar",{attrs:{left:""}},[e("v-icon",[n._v("mdi-folder")])],1),n._v("\n "+n._s(l)+"\n ")],1)}))],2)):(t().b[0][1]++,n._e()),n._v(" "),e("v-card-title",{staticStyle:{"padding-top":"0px"}},[n._v("\n "+n._s(n.root)+" Files\n "),e("v-spacer"),n._v(" "),e("v-text-field",{staticClass:"search",attrs:{label:"Search","prepend-inner-icon":"mdi-magnify",clearable:"",outlined:"",dense:"","single-line":"","hide-details":""},model:{value:n.search,callback:function(e){t().f[5]++,t().s[10]++,n.search=e},expression:"search"}})],1),n._v(" "),e("v-data-table",{attrs:{headers:n.headers,items:n.files,search:n.search,"items-per-page":1e3,"footer-props":{showFirstLastPage:!0,itemsPerPageOptions:[1e3],firstIcon:"mdi-page-first",lastIcon:"mdi-page-last",prevIcon:"mdi-chevron-left",nextIcon:"mdi-chevron-right"},"sort-by":"modified","sort-desc":"true","calculate-widths":"","multi-sort":"",dense:""},on:{"click:row":n.fileClick},scopedSlots:n._u([{key:"top",fn:function(){return t().f[6]++,t().s[11]++,[e("v-row",{staticClass:"ma-0",staticStyle:{"background-color":"var(--color-background-surface-header)"}},[e("v-btn",{attrs:{icon:""}},[e("v-icon",{on:{click:n.backArrow}},[n._v("mdi-chevron-left-box-outline")])],1),n._v(" "),e("span",{staticClass:".text-body-1 ma-2 font-size",attrs:{"data-test":"file-path"}},[n._v("/"+n._s(n.path))]),n._v(" "),e("v-spacer"),n._v(" "),e("div",{staticClass:"pa-1 font-size"},[n._v("\n Folder Size: "+n._s(n.folderTotal)+"\n "),e("span",{staticClass:"small-font-size"},[n._v("(not recursive)")])]),n._v(" "),e("v-spacer"),n._v(" "),"bucket"===n.mode?(t().b[1][0]++,e("div",{staticStyle:{display:"flex"}},[e("span",{staticClass:"pa-1 font-size"},[n._v("Upload File")]),n._v(" "),e("v-file-input",{staticClass:"file-input",attrs:{"hide-input":"","hide-details":"","prepend-icon":"mdi-upload","data-test":"upload-file"},model:{value:n.file,callback:function(e){t().f[7]++,t().s[12]++,n.file=e},expression:"file"}})],1)):(t().b[1][1]++,n._e())],1)]},proxy:!0},{key:"item.name",fn:function({item:l}){return t().f[8]++,t().s[13]++,[e("v-icon",{staticClass:"mr-2"},[n._v(n._s(l.icon))]),n._v(n._s(l.name)+"\n ")]}},{key:"item.size",fn:function({item:e}){return t().f[9]++,t().s[14]++,[n._v("\n "+n._s(e.size?(t().b[2][0]++,e.size.toLocaleString()):(t().b[2][1]++,""))+"\n ")]}},{key:"item.action",fn:function({item:l}){return t().f[10]++,t().s[15]++,["mdi-file"===l.icon?(t().b[3][0]++,e("v-icon",{staticClass:"mr-3",attrs:{"data-test":"download-file"},on:{click:function(e){return t().f[11]++,t().s[16]++,n.downloadFile(l.name)}}},[n._v("mdi-download-box")])):(t().b[3][1]++,n._e()),n._v(" "),"mdi-file"===l.icon?(t().b[4][0]++,e("v-icon",{attrs:{"data-test":"delete-file"},on:{click:function(e){return t().f[12]++,t().s[17]++,n.deleteFile(l.name)}}},[n._v("mdi-delete")])):(t().b[4][1]++,n._e())]}}])})],1),n._v(" "),e("v-dialog",{attrs:{"max-width":"600"},model:{value:n.uploadPathDialog,callback:function(e){t().f[13]++,t().s[18]++,n.uploadPathDialog=e},expression:"uploadPathDialog"}},[e("v-card",[e("v-system-bar",[e("v-spacer"),n._v(" "),e("span",[n._v(" Upload Path ")]),n._v(" "),e("v-spacer")],1),n._v(" "),e("v-card-text",[e("div",{staticClass:"mx-1"},[e("v-row",{staticClass:"my-2"},[e("span",[n._v("This file path can be modified. New directories will be\n automatically created.")]),n._v(" "),e("v-text-field",{attrs:{"hide-details":"",label:"File Path","data-test":"upload-file-path"},model:{value:n.uploadFilePath,callback:function(e){t().f[14]++,t().s[19]++,n.uploadFilePath=e},expression:"uploadFilePath"}})],1),n._v(" "),e("v-row",[e("v-spacer"),n._v(" "),e("v-btn",{staticClass:"mx-2",attrs:{outlined:"","data-test":"upload-file-cancel-btn"},on:{click:function(e){t().f[15]++,t().s[20]++,n.uploadPathDialog=!1}}},[n._v("\n Cancel\n ")]),n._v(" "),e("v-btn",{staticClass:"mx-2",attrs:{color:"primary",type:"submit","data-test":"upload-file-submit-btn"},on:{click:function(e){return t().f[16]++,t().s[21]++,e.preventDefault(),t().s[22]++,n.uploadFile.apply(null,arguments)}}},[n._v("\n Upload\n ")])],1)],1)])],1)],1),n._v(" "),e("v-dialog",{attrs:{"max-width":"300"},on:{keydown:function(e){if(t().f[17]++,t().s[23]++,t().b[6][0]++,!e.type.indexOf("key")&&(t().b[6][1]++,n._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])))return t().b[5][0]++,t().s[24]++,null;t().b[5][1]++,t().s[25]++,n.optionsDialog=!1}},model:{value:n.optionsDialog,callback:function(e){t().f[18]++,t().s[26]++,n.optionsDialog=e},expression:"optionsDialog"}},[e("v-card",[e("v-system-bar",[e("v-spacer"),n._v(" "),e("span",[n._v("Options")]),n._v(" "),e("v-spacer")],1),n._v(" "),e("v-card-text",[e("div",{staticClass:"pa-3"},[e("v-text-field",{attrs:{min:"1",max:"3600",step:"100",type:"number",label:"Refresh Interval (s)",value:n.refreshInterval,"data-test":"refresh-interval"},on:{change:function(e){t().f[19]++,t().s[27]++,n.refreshInterval=e}}})],1)])],1)],1)],1)},i=(t().s[28]++,[]),a=(l(9375),l(8605),l(2482),l(7067),l(4147),l(2682),l(785),l(8357),l(6196),l(821),l(6554),l(8472),l(7404),l(5803),l(3912),l(7182),l(3165),l(4541),l(4397),l(1412),l(1883),l(7905),function(){var n=this,e=n._self._c;return e("mounting-portal",{attrs:{"mount-to":"#openc3-menu",append:""}},[e("v-row",{attrs:{"no-gutters":""}},[e("v-col",{attrs:{"align-self":"end"}},[e("span",{staticClass:"app-title mr-2"},[n._v(n._s(n.title))])])],1),n._v(" "),e("v-row",{staticClass:"flex-nowrap",attrs:{dense:""}},n._l(n.menus,(function(l,t){return e("v-menu",{key:t,ref:"topmenu",refInFor:!0,attrs:{"offset-y":""},scopedSlots:n._u([{key:"activator",fn:function({on:t,attrs:o}){return[e("v-btn",n._g(n._b({staticClass:"mx-1 menu-button",attrs:{outlined:"","data-test":n.formatDT(`${n.title} ${l.label}`)}},"v-btn",o,!1),t),[e("span",{domProps:{textContent:n._s(l.label)}}),n._v(" "),e("v-icon",{staticClass:"myicon",attrs:{right:""}},[n._v(" mdi-menu-down ")])],1)]}}],null,!0)},[n._v(" "),e("v-list",[e("v-radio-group",{staticClass:"ma-0 pa-0",attrs:{value:l.radioGroup,"hide-details":"",dense:""}},[n._l(l.items,(function(t,o){return[t.divider?e("v-divider",{key:o}):t.subMenu&&t.subMenu.length>0?e("div",{key:o},[e("v-menu",{key:n.k,attrs:{"open-on-hover":"","offset-x":"",bottom:""},scopedSlots:n._u([{key:"activator",fn:function({on:l,attrs:i}){return[e("v-list-item",n._g(n._b({key:o,attrs:{disabled:t.disabled}},"v-list-item",i,!1),l),[t.icon?e("v-list-item-icon",[e("v-icon",{attrs:{disabled:t.disabled}},[n._v(n._s(t.icon))])],1):n._e(),n._v(" "),t.radio||t.checkbox?n._e():e("v-list-item-title",{style:"cursor: pointer;"+(t.disabled?"opacity: 0.2":"")},[n._v(n._s(t.label)+"\n ")]),n._v(" "),e("v-icon",[n._v(" mdi-chevron-right ")])],1)]}}],null,!0)},[n._v(" "),e("v-list",n._l(t.subMenu,(function(l,t){return e("v-list-item",{key:t,on:{click:function(e){return n.subMenuClick(l)}}},[l.icon?e("v-list-item-icon",[e("v-icon",[n._v(n._s(l.icon))])],1):n._e(),n._v(" "),e("v-list-item-title",[n._v(n._s(l.label))])],1)})),1)],1)],1):e("v-list-item",{key:o,attrs:{disabled:t.disabled,"data-test":n.formatDT(`${n.title} ${l.label} ${t.label}`)},on:{click:function(n){return t.command(t)}}},[t.radio?e("v-list-item-action",{staticClass:"list-action"},[e("v-radio",{attrs:{color:"secondary",label:t.label,value:t.label}})],1):n._e(),n._v(" "),t.checkbox?e("v-list-item-action",{staticClass:"list-action"},[e("v-checkbox",{attrs:{color:"secondary",label:t.label},model:{value:t.checked,callback:function(e){n.$set(t,"checked",e)},expression:"option.checked"}})],1):n._e(),n._v(" "),t.icon?e("v-list-item-icon",[e("v-icon",{attrs:{disabled:t.disabled}},[n._v(n._s(t.icon))])],1):n._e(),n._v(" "),t.radio||t.checkbox?n._e():e("v-list-item-title",{style:"cursor: pointer;"+(t.disabled?"opacity: 0.2":"")},[n._v(n._s(t.label))])],1)]}))],2)],1)],1)})),1)],1)}),s=[];l(4293),l(8715);const c={props:{menus:{type:Array,default:function(){return[]}},title:{type:String,default:""}},methods:{formatDT:function(n){return n.replaceAll(" ","-").toLowerCase()},subMenuClick(n){n.command(n),this.$refs.topmenu[0].isActive=!1}},mounted(){document.title=this.title}},r=c;l(5699);var u=l(2401),m=(0,u.A)(r,a,s,!1,null,"0af23388",null);const d=m.exports;var A=l(3816),p=l(1649);const h=new p["default"],v=A.A.create({baseURL:location.origin,timeout:6e4,params:{}});v.interceptors.response.use((n=>n),(n=>{if(n.response){if(401===n.response.status&&OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity,!0).then((function(n){n&&OpenC3Auth.setTokens()})),n.response.config.headers["Ignore-Errors"]&&n.response.config.headers["Ignore-Errors"].includes(n.response.status.toString()))return Promise.reject(n);let e=`HTTP ${n.response.status} - `;throw n.response?.statusText&&(e+=`${n.response.statusText} `),n.response?.config?.data&&(e+=`${n.response.config.data} `),n.response?.data?.message?e+=`${n.response.data.message}`:n.response?.data?.exception?e+=`${n.response.data.exception}`:n.response?.data?.error?.message?(n.response.data.error.class&&(e+=`${n.response.data.error.class} `),e+=`${n.response.data.error.message}`):e+=`${n.response?.data}`,h.$notify&&h.$notify.serious({title:"Network error",body:e}),n}throw n}));const f=v,C=async function(n,e,{data:l,params:t={},headers:o,noAuth:i=!1,noScope:a=!1,onUploadProgress:s=!1}={}){if(!i){try{let n=await OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity);n&&OpenC3Auth.setTokens()}catch(c){OpenC3Auth.login()}o["Authorization"]=localStorage.openc3Token}return o["manual"]=!0,a||t["scope"]||(t["scope"]=window.openc3Scope),f({method:n,url:e,data:l,params:t,headers:o,onUploadProgress:s})},b={Accept:"application/json"},_={...b,"Content-Type":"application/json"},g={get:function(n,{params:e,headers:l=b,noScope:t,noAuth:o,onUploadProgress:i}={}){return C("get",n,{params:e,headers:l,noScope:t,noAuth:o,onUploadProgress:i})},put:function(n,{data:e,params:l,headers:t=_,noScope:o,noAuth:i,onUploadProgress:a}={}){return C("put",n,{data:e,params:l,headers:t,noScope:o,noAuth:i,onUploadProgress:a})},post:function(n,{data:e,params:l,headers:t=_,noScope:o,noAuth:i,onUploadProgress:a}={}){return C("post",n,{data:e,params:l,headers:t,noScope:o,noAuth:i,onUploadProgress:a})},delete:function(n,{params:e,headers:l=b,noScope:t,noAuth:o,onUploadProgress:i}={}){return C("delete",n,{params:e,headers:l,noScope:t,noAuth:o,onUploadProgress:i})}};function y(){var n="/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",e="756619429893eb5d0fb54b0e25875d4c44ab870d",l=new Function("return this")(),t="__coverage__",o={path:"/openc3/plugins/packages/openc3-cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue",statementMap:{0:{start:{line:11,column:4},end:{line:45,column:5}},1:{start:{line:39,column:16},end:{line:39,column:41}},2:{start:{line:49,column:6},end:{line:51,column:25}},3:{start:{line:50,column:26},end:{line:50,column:51}},4:{start:{line:55,column:4},end:{line:57,column:6}},5:{start:{line:56,column:6},end:{line:56,column:34}},6:{start:{line:58,column:4},end:{line:60,column:6}},7:{start:{line:59,column:6},end:{line:59,column:34}},8:{start:{line:61,column:4},end:{line:74,column:5}},9:{start:{line:62,column:18},end:{line:62,column:52}},10:{start:{line:63,column:6},end:{line:72,column:7}},11:{start:{line:64,column:8},end:{line:64,column:28}},12:{start:{line:66,column:8},end:{line:66,column:34}},13:{start:{line:67,column:8},end:{line:67,column:44}},14:{start:{line:69,column:8},end:{line:69,column:28}},15:{start:{line:70,column:8},end:{line:70,column:28}},16:{start:{line:71,column:8},end:{line:71,column:44}},17:{start:{line:73,column:6},end:{line:73,column:24}},18:{start:{line:75,column:4},end:{line:75,column:24}},19:{start:{line:78,column:4},end:{line:78,column:23}},20:{start:{line:83,column:6},end:{line:83,column:36}},21:{start:{line:83,column:30},end:{line:83,column:36}},22:{start:{line:84,column:6},end:{line:84,column:59}},23:{start:{line:85,column:6},end:{line:85,column:34}},24:{start:{line:88,column:6},end:{line:88,column:26}},25:{start:{line:93,column:6},end:{line:98,column:8}},26:{start:{line:99,column:6},end:{line:99,column:24}},27:{start:{line:102,column:6},end:{line:102,column:25}},28:{start:{line:103,column:6},end:{line:108,column:37}},29:{start:{line:105,column:8},end:{line:107,column:9}},30:{start:{line:106,column:10},end:{line:106,column:28}},31:{start:{line:111,column:6},end:{line:114,column:7}},32:{start:{line:112,column:8},end:{line:112,column:35}},33:{start:{line:113,column:8},end:{line:113,column:27}},34:{start:{line:117,column:6},end:{line:117,column:38}},35:{start:{line:117,column:32},end:{line:117,column:38}},36:{start:{line:118,column:6},end:{line:118,column:26}},37:{start:{line:119,column:6},end:{line:119,column:24}},38:{start:{line:120,column:6},end:{line:120,column:20}},39:{start:{line:121,column:6},end:{line:121,column:19}},40:{start:{line:124,column:6},end:{line:124,column:38}},41:{start:{line:124,column:32},end:{line:124,column:38}},42:{start:{line:125,column:6},end:{line:125,column:26}},43:{start:{line:126,column:6},end:{line:126,column:24}},44:{start:{line:127,column:6},end:{line:127,column:20}},45:{start:{line:128,column:6},end:{line:128,column:19}},46:{start:{line:132,column:6},end:{line:132,column:34}},47:{start:{line:132,column:28},end:{line:132,column:34}},48:{start:{line:133,column:18},end:{line:133,column:38}},49:{start:{line:134,column:6},end:{line:134,column:60}},50:{start:{line:137,column:6},end:{line:139,column:7}},51:{start:{line:138,column:8},end:{line:138,column:24}},52:{start:{line:140,column:6},end:{line:140,column:19}},53:{start:{line:143,column:6},end:{line:151,column:7}},54:{start:{line:144,column:8},end:{line:149,column:9}},55:{start:{line:146,column:10},end:{line:146,column:32}},56:{start:{line:148,column:10},end:{line:148,column:39}},57:{start:{line:150,column:8},end:{line:150,column:21}},58:{start:{line:154,column:17},end:{line:154,column:40}},59:{start:{line:155,column:16},end:{line:155,column:26}},60:{start:{line:156,column:6},end:{line:159,column:7}},61:{start:{line:157,column:8},end:{line:157,column:29}},62:{start:{line:158,column:8},end:{line:158,column:28}},63:{start:{line:160,column:6},end:{line:192,column:10}},64:{start:{line:166,column:21},end:{line:166,column:25}},65:{start:{line:167,column:10},end:{line:180,column:11}},66:{start:{line:168,column:12},end:{line:168,column:36}},67:{start:{line:171,column:32},end:{line:171,column:67}},68:{start:{line:173,column:31},end:{line:173,column:65}},69:{start:{line:175,column:12},end:{line:177,column:13}},70:{start:{line:175,column:25},end:{line:175,column:26}},71:{start:{line:176,column:14},end:{line:176,column:55}},72:{start:{line:178,column:25},end:{line:178,column:47}},73:{start:{line:179,column:12},end:{line:179,column:44}},74:{start:{line:182,column:23},end:{line:182,column:50}},75:{start:{line:183,column:10},end:{line:183,column:26}},76:{start:{line:184,column:10},end:{line:184,column:49}},77:{start:{line:185,column:10},end:{line:185,column:22}},78:{start:{line:189,column:10},end:{line:191,column:12}},79:{start:{line:195,column:6},end:{line:195,column:35}},80:{start:{line:197,column:6},end:{line:199,column:7}},81:{start:{line:198,column:8},end:{line:198,column:58}},82:{start:{line:202,column:41},end:{line:206,column:7}},83:{start:{line:209,column:23},end:{line:212,column:8}},84:{start:{line:213,column:6},end:{line:213,column:22}},85:{start:{line:214,column:6},end:{line:214,column:77}},86:{start:{line:215,column:6},end:{line:215,column:24}},87:{start:{line:218,column:17},end:{line:218,column:40}},88:{start:{line:219,column:6},end:{line:221,column:7}},89:{start:{line:220,column:8},end:{line:220,column:28}},90:{start:{line:222,column:6},end:{line:238,column:10}},91:{start:{line:228,column:10},end:{line:234,column:11}},92:{start:{line:237,column:10},end:{line:237,column:28}},93:{start:{line:241,column:17},end:{line:241,column:40}},94:{start:{line:242,column:6},end:{line:244,column:7}},95:{start:{line:243,column:8},end:{line:243,column:28}},96:{start:{line:245,column:6},end:{line:276,column:10}},97:{start:{line:251,column:10},end:{line:253,column:12}},98:{start:{line:252,column:12},end:{line:252,column:55}},99:{start:{line:254,column:10},end:{line:263,column:11}},100:{start:{line:256,column:14},end:{line:261,column:15}},101:{start:{line:266,column:10},end:{line:266,column:25}},102:{start:{line:267,column:10},end:{line:275,column:11}},103:{start:{line:268,column:12},end:{line:270,column:14}},104:{start:{line:272,column:12},end:{line:274,column:14}}},fnMap:{0:{name:"(anonymous_0)",decl:{start:{line:10,column:2},end:{line:10,column:3}},loc:{start:{line:10,column:9},end:{line:46,column:3}},line:10},1:{name:"(anonymous_1)",decl:{start:{line:38,column:23},end:{line:38,column:24}},loc:{start:{line:38,column:29},end:{line:40,column:15}},line:38},2:{name:"(anonymous_2)",decl:{start:{line:48,column:4},end:{line:48,column:5}},loc:{start:{line:48,column:18},end:{line:52,column:5}},line:48},3:{name:"(anonymous_3)",decl:{start:{line:50,column:16},end:{line:50,column:17}},loc:{start:{line:50,column:26},end:{line:50,column:51}},line:50},4:{name:"(anonymous_4)",decl:{start:{line:54,column:2},end:{line:54,column:3}},loc:{start:{line:54,column:12},end:{line:76,column:3}},line:54},5:{name:"(anonymous_5)",decl:{start:{line:55,column:48},end:{line:55,column:49}},loc:{start:{line:55,column:62},end:{line:57,column:5}},line:55},6:{name:"(anonymous_6)",decl:{start:{line:58,column:48},end:{line:58,column:49}},loc:{start:{line:58,column:62},end:{line:60,column:5}},line:58},7:{name:"(anonymous_7)",decl:{start:{line:77,column:2},end:{line:77,column:3}},loc:{start:{line:77,column:18},end:{line:79,column:3}},line:77},8:{name:"(anonymous_8)",decl:{start:{line:82,column:10},end:{line:82,column:11}},loc:{start:{line:82,column:28},end:{line:86,column:5}},line:82},9:{name:"(anonymous_9)",decl:{start:{line:87,column:4},end:{line:87,column:5}},loc:{start:{line:87,column:22},end:{line:89,column:5}},line:87},10:{name:"(anonymous_10)",decl:{start:{line:92,column:4},end:{line:92,column:5}},loc:{start:{line:92,column:13},end:{line:100,column:5}},line:92},11:{name:"(anonymous_11)",decl:{start:{line:101,column:4},end:{line:101,column:5}},loc:{start:{line:101,column:20},end:{line:109,column:5}},line:101},12:{name:"(anonymous_12)",decl:{start:{line:103,column:33},end:{line:103,column:34}},loc:{start:{line:103,column:39},end:{line:108,column:7}},line:103},13:{name:"(anonymous_13)",decl:{start:{line:110,column:4},end:{line:110,column:5}},loc:{start:{line:110,column:19},end:{line:115,column:5}},line:110},14:{name:"(anonymous_14)",decl:{start:{line:116,column:4},end:{line:116,column:5}},loc:{start:{line:116,column:25},end:{line:122,column:5}},line:116},15:{name:"(anonymous_15)",decl:{start:{line:123,column:4},end:{line:123,column:5}},loc:{start:{line:123,column:25},end:{line:129,column:5}},line:123},16:{name:"(anonymous_16)",decl:{start:{line:130,column:4},end:{line:130,column:5}},loc:{start:{line:130,column:16},end:{line:141,column:5}},line:130},17:{name:"(anonymous_17)",decl:{start:{line:142,column:4},end:{line:142,column:5}},loc:{start:{line:142,column:21},end:{line:152,column:5}},line:142},18:{name:"(anonymous_18)",decl:{start:{line:153,column:4},end:{line:153,column:5}},loc:{start:{line:153,column:27},end:{line:193,column:5}},line:153},19:{name:"(anonymous_19)",decl:{start:{line:165,column:14},end:{line:165,column:15}},loc:{start:{line:165,column:28},end:{line:186,column:9}},line:165},20:{name:"(anonymous_20)",decl:{start:{line:188,column:15},end:{line:188,column:16}},loc:{start:{line:188,column:29},end:{line:192,column:9}},line:188},21:{name:"(anonymous_21)",decl:{start:{line:194,column:4},end:{line:194,column:5}},loc:{start:{line:194,column:23},end:{line:216,column:5}},line:194},22:{name:"(anonymous_22)",decl:{start:{line:217,column:4},end:{line:217,column:5}},loc:{start:{line:217,column:25},end:{line:239,column:5}},line:217},23:{name:"(anonymous_23)",decl:{start:{line:227,column:14},end:{line:227,column:15}},loc:{start:{line:227,column:26},end:{line:235,column:9}},line:227},24:{name:"(anonymous_24)",decl:{start:{line:236,column:14},end:{line:236,column:15}},loc:{start:{line:236,column:28},end:{line:238,column:9}},line:236},25:{name:"(anonymous_25)",decl:{start:{line:240,column:4},end:{line:240,column:5}},loc:{start:{line:240,column:18},end:{line:277,column:5}},line:240},26:{name:"(anonymous_26)",decl:{start:{line:250,column:14},end:{line:250,column:15}},loc:{start:{line:250,column:28},end:{line:264,column:9}},line:250},27:{name:"(anonymous_27)",decl:{start:{line:251,column:44},end:{line:251,column:45}},loc:{start:{line:251,column:56},end:{line:253,column:11}},line:251},28:{name:"(anonymous_28)",decl:{start:{line:255,column:33},end:{line:255,column:34}},loc:{start:{line:255,column:43},end:{line:262,column:13}},line:255},29:{name:"(anonymous_29)",decl:{start:{line:265,column:15},end:{line:265,column:16}},loc:{start:{line:265,column:29},end:{line:276,column:9}},line:265}},branchMap:{0:{loc:{start:{line:50,column:31},end:{line:50,column:50}},type:"cond-expr",locations:[{start:{line:50,column:40},end:{line:50,column:46}},{start:{line:50,column:49},end:{line:50,column:50}}],line:50},1:{loc:{start:{line:61,column:4},end:{line:74,column:5}},type:"if",locations:[{start:{line:61,column:4},end:{line:74,column:5}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:61},2:{loc:{start:{line:63,column:6},end:{line:72,column:7}},type:"if",locations:[{start:{line:63,column:6},end:{line:72,column:7}},{start:{line:68,column:13},end:{line:72,column:7}}],line:63},3:{loc:{start:{line:83,column:6},end:{line:83,column:36}},type:"if",locations:[{start:{line:83,column:6},end:{line:83,column:36}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:83},4:{loc:{start:{line:105,column:8},end:{line:107,column:9}},type:"if",locations:[{start:{line:105,column:8},end:{line:107,column:9}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:105},5:{loc:{start:{line:111,column:6},end:{line:114,column:7}},type:"if",locations:[{start:{line:111,column:6},end:{line:114,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:111},6:{loc:{start:{line:117,column:6},end:{line:117,column:38}},type:"if",locations:[{start:{line:117,column:6},end:{line:117,column:38}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:117},7:{loc:{start:{line:124,column:6},end:{line:124,column:38}},type:"if",locations:[{start:{line:124,column:6},end:{line:124,column:38}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:124},8:{loc:{start:{line:132,column:6},end:{line:132,column:34}},type:"if",locations:[{start:{line:132,column:6},end:{line:132,column:34}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:132},9:{loc:{start:{line:137,column:6},end:{line:139,column:7}},type:"if",locations:[{start:{line:137,column:6},end:{line:139,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:137},10:{loc:{start:{line:143,column:6},end:{line:151,column:7}},type:"if",locations:[{start:{line:143,column:6},end:{line:151,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:143},11:{loc:{start:{line:144,column:8},end:{line:149,column:9}},type:"if",locations:[{start:{line:144,column:8},end:{line:149,column:9}},{start:{line:147,column:15},end:{line:149,column:9}}],line:144},12:{loc:{start:{line:156,column:6},end:{line:159,column:7}},type:"if",locations:[{start:{line:156,column:6},end:{line:159,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:156},13:{loc:{start:{line:167,column:10},end:{line:180,column:11}},type:"if",locations:[{start:{line:167,column:10},end:{line:180,column:11}},{start:{line:169,column:17},end:{line:180,column:11}}],line:167},14:{loc:{start:{line:197,column:6},end:{line:199,column:7}},type:"if",locations:[{start:{line:197,column:6},end:{line:199,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:197},15:{loc:{start:{line:219,column:6},end:{line:221,column:7}},type:"if",locations:[{start:{line:219,column:6},end:{line:221,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:219},16:{loc:{start:{line:242,column:6},end:{line:244,column:7}},type:"if",locations:[{start:{line:242,column:6},end:{line:244,column:7}},{start:{line:void 0,column:void 0},end:{line:void 0,column:void 0}}],line:242},17:{loc:{start:{line:267,column:10},end:{line:275,column:11}},type:"if",locations:[{start:{line:267,column:10},end:{line:275,column:11}},{start:{line:271,column:17},end:{line:275,column:11}}],line:267}},s:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0,30:0,31:0,32:0,33:0,34:0,35:0,36:0,37:0,38:0,39:0,40:0,41:0,42:0,43:0,44:0,45:0,46:0,47:0,48:0,49:0,50:0,51:0,52:0,53:0,54:0,55:0,56:0,57:0,58:0,59:0,60:0,61:0,62:0,63:0,64:0,65:0,66:0,67:0,68:0,69:0,70:0,71:0,72:0,73:0,74:0,75:0,76:0,77:0,78:0,79:0,80:0,81:0,82:0,83:0,84:0,85:0,86:0,87:0,88:0,89:0,90:0,91:0,92:0,93:0,94:0,95:0,96:0,97:0,98:0,99:0,100:0,101:0,102:0,103:0,104:0},f:{0:0,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0,18:0,19:0,20:0,21:0,22:0,23:0,24:0,25:0,26:0,27:0,28:0,29:0},b:{0:[0,0],1:[0,0],2:[0,0],3:[0,0],4:[0,0],5:[0,0],6:[0,0],7:[0,0],8:[0,0],9:[0,0],10:[0,0],11:[0,0],12:[0,0],13:[0,0],14:[0,0],15:[0,0],16:[0,0],17:[0,0]},inputSourceMap:{version:3,sources:["BucketExplorer.vue"],names:[],mappings:";AA0NA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA",file:"BucketExplorer.vue",sourceRoot:"src/tools/BucketExplorer",sourcesContent:['\x3c!--\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n--\x3e\n\n<template>\n <div>\n <top-bar :title="title" :menus="menus" />\n <v-card width="100%">\n <div style="padding-left: 5px; padding-top: 5px">\n <span class="ma-2 font-size">Buckets:</span>\n <v-chip\n v-for="(bucket, index) in buckets"\n :key="index"\n color="primary"\n class="ma-2"\n @click.stop="selectBucket(bucket)"\n >\n <v-avatar left>\n <v-icon>mdi-bucket</v-icon>\n </v-avatar>\n {{ bucket }}\n </v-chip>\n </div>\n <div style="padding-left: 5px" v-if="volumes.length !== 0">\n <span class="ma-2 font-size">Volumes:</span>\n <v-chip\n v-for="(volume, index) in volumes"\n :key="index"\n color="primary"\n class="ma-2"\n @click.stop="selectVolume(volume)"\n >\n <v-avatar left>\n <v-icon>mdi-folder</v-icon>\n </v-avatar>\n {{ volume }}\n </v-chip>\n </div>\n <v-card-title style="padding-top: 0px">\n {{ root }} Files\n <v-spacer />\n <v-text-field\n v-model="search"\n label="Search"\n prepend-inner-icon="mdi-magnify"\n clearable\n outlined\n dense\n single-line\n hide-details\n class="search"\n />\n </v-card-title>\n <v-data-table\n :headers="headers"\n :items="files"\n :search="search"\n :items-per-page="1000"\n :footer-props="{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: \'mdi-page-first\',\n lastIcon: \'mdi-page-last\',\n prevIcon: \'mdi-chevron-left\',\n nextIcon: \'mdi-chevron-right\',\n }"\n sort-by="modified"\n sort-desc="true"\n @click:row="fileClick"\n calculate-widths\n multi-sort\n dense\n >\n <template v-slot:top>\n <v-row\n class="ma-0"\n style="background-color: var(--color-background-surface-header)"\n >\n <v-btn icon>\n <v-icon @click="backArrow">mdi-chevron-left-box-outline</v-icon>\n </v-btn>\n <span class=".text-body-1 ma-2 font-size" data-test="file-path"\n >/{{ path }}</span\n >\n <v-spacer />\n <div class="pa-1 font-size">\n Folder Size: {{ folderTotal }}\n <span class="small-font-size">(not recursive)</span>\n </div>\n\n <v-spacer />\n <div style="display: flex" v-if="mode === \'bucket\'">\n <span class="pa-1 font-size">Upload File</span>\n <v-file-input\n v-model="file"\n hide-input\n hide-details\n class="file-input"\n prepend-icon="mdi-upload"\n data-test="upload-file"\n />\n </div>\n </v-row>\n </template>\n <template v-slot:item.name="{ item }">\n <v-icon class="mr-2">{{ item.icon }}</v-icon\n >{{ item.name }}\n </template>\n <template v-slot:item.size="{ item }">\n {{ item.size ? item.size.toLocaleString() : \'\' }}\n </template>\n <template v-slot:item.action="{ item }">\n <v-icon\n class="mr-3"\n v-if="item.icon === \'mdi-file\'"\n @click="downloadFile(item.name)"\n data-test="download-file"\n >mdi-download-box</v-icon\n >\n <v-icon\n v-if="item.icon === \'mdi-file\'"\n @click="deleteFile(item.name)"\n data-test="delete-file"\n >mdi-delete</v-icon\n >\n </template>\n </v-data-table>\n </v-card>\n <v-dialog v-model="uploadPathDialog" max-width="600">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Upload Path </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class="mx-1">\n <v-row class="my-2">\n <span\n >This file path can be modified. New directories will be\n automatically created.</span\n >\n <v-text-field\n v-model="uploadFilePath"\n hide-details\n label="File Path"\n data-test="upload-file-path"\n />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click="uploadPathDialog = false"\n outlined\n class="mx-2"\n data-test="upload-file-cancel-btn"\n >\n Cancel\n </v-btn>\n <v-btn\n @click.prevent="uploadFile"\n class="mx-2"\n color="primary"\n type="submit"\n data-test="upload-file-submit-btn"\n >\n Upload\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n <v-dialog\n v-model="optionsDialog"\n @keydown.esc="optionsDialog = false"\n max-width="300"\n >\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span>Options</span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class="pa-3">\n <v-text-field\n min="1"\n max="3600"\n step="100"\n type="number"\n label="Refresh Interval (s)"\n :value="refreshInterval"\n @change="refreshInterval = $event"\n data-test="refresh-interval"\n />\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport TopBar from \'@openc3/tool-common/src/components/TopBar\'\nimport Api from \'@openc3/tool-common/src/services/api\'\nimport axios from \'axios\'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: \'Bucket Explorer\',\n search: \'\',\n root: \'\',\n mode: \'bucket\',\n buckets: [],\n volumes: [],\n uploadPathDialog: false,\n optionsDialog: false,\n refreshInterval: 60,\n updater: null,\n path: \'\',\n file: null,\n files: [],\n headers: [\n { text: \'Name\', value: \'name\' },\n { text: \'Size\', value: \'size\' },\n { text: \'Modified Date\', value: \'modified\' },\n { text: \'Action\', value: \'action\' },\n ],\n menus: [\n {\n label: \'File\',\n items: [\n {\n label: \'Options\',\n icon: \'mdi-cog\',\n command: () => {\n this.optionsDialog = true\n },\n },\n ],\n },\n ],\n }\n },\n computed: {\n folderTotal() {\n return this.files\n .reduce((a, b) => a + (b.size ? b.size : 0), 0)\n .toLocaleString()\n },\n },\n created() {\n Api.get(\'/openc3-api/storage/buckets\').then((response) => {\n this.buckets = response.data\n })\n Api.get(\'/openc3-api/storage/volumes\').then((response) => {\n this.volumes = response.data\n })\n if (this.$route.params.path) {\n let parts = this.$route.params.path.split(\'/\')\n if (parts[0] === \'\') {\n this.mode = \'volume\'\n // Prepend the slash to note this is a volume not a bucket\n this.root = `/${parts[1]}`\n this.path = parts.slice(2).join(\'/\')\n } else {\n this.mode = \'bucket\'\n this.root = parts[0]\n this.path = parts.slice(1).join(\'/\')\n }\n this.updateFiles()\n }\n this.changeUpdater()\n },\n beforeDestroy() {\n this.clearUpdater()\n },\n watch: {\n // This is the upload function that is activated when the file gets set\n file: async function () {\n if (this.file === null) return\n this.uploadFilePath = `${this.path}${this.file.name}`\n this.uploadPathDialog = true\n },\n refreshInterval() {\n this.changeUpdater()\n },\n },\n methods: {\n update() {\n this.$router.push({\n name: \'Bucket Explorer\',\n params: {\n path: `${this.root}/${this.path}`,\n },\n })\n this.updateFiles()\n },\n changeUpdater() {\n this.clearUpdater()\n this.updater = setInterval(() => {\n // need to be in a bucket/volume otherwise updateFiles gets mad\n if (this.root) {\n this.updateFiles()\n }\n }, this.refreshInterval * 1000)\n },\n clearUpdater() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n selectBucket(bucket) {\n if (this.root === bucket) return\n this.mode = \'bucket\'\n this.root = bucket\n this.path = \'\'\n this.update()\n },\n selectVolume(volume) {\n if (this.root === volume) return\n this.mode = \'volume\'\n this.root = volume\n this.path = \'\'\n this.update()\n },\n backArrow() {\n // Nothing to do if we\'re at the root so return\n if (this.path === \'\') return\n let parts = this.path.split(\'/\')\n this.path = parts.slice(0, parts.length - 2).join(\'/\')\n // Only append the last slash if we\'re not at the root\n // The root is 2 because it\'s the path before clicking back\n if (parts.length > 2) {\n this.path += \'/\'\n }\n this.update()\n },\n fileClick(event) {\n if (event.icon === \'mdi-folder\') {\n if (this.root === \'\') {\n // initial root click\n this.root = event.name\n } else {\n this.path += `${event.name}/`\n }\n this.update()\n }\n },\n downloadFile(filename) {\n let root = this.root.toUpperCase()\n let api = \'download\'\n if (this.mode === \'volume\') {\n api = \'download_file\'\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/${api}/${encodeURIComponent(\n this.path,\n )}${filename}?${this.mode}=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n .then((response) => {\n let href = null\n if (this.mode === \'bucket\') {\n href = response.data.url\n } else {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array])\n href = URL.createObjectURL(blob)\n }\n // Make a link and then \'click\' on it to start the download\n const link = document.createElement(\'a\')\n link.href = href\n link.setAttribute(\'download\', filename)\n link.click()\n })\n\n .catch((response) => {\n this.$notify.caution({\n title: `Unable to download file ${this.path}${filename} from bucket ${this.root}`,\n })\n })\n },\n async uploadFile() {\n this.uploadPathDialog = false\n // Ensure they didn\'t slap a \'/\' at the beginning\n if (this.uploadFilePath.startsWith(\'/\')) {\n this.uploadFilePath = this.uploadFilePath.slice(1)\n }\n\n // Reassign data to presignedRequest for readability\n const { data: presignedRequest } = await Api.get(\n `/openc3-api/storage/upload/${encodeURIComponent(\n this.uploadFilePath,\n )}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`,\n )\n // This pushes the file into storage by using the fields in the presignedRequest\n // See storage_controller.rb get_upload_presigned_request()\n const response = await axios({\n ...presignedRequest,\n data: this.file,\n })\n this.file = null\n this.path = this.uploadFilePath.split(\'/\').slice(0, -1).join(\'/\') + \'/\'\n this.updateFiles()\n },\n deleteFile(filename) {\n let root = this.root.toUpperCase()\n if (this.mode === \'volume\') {\n root = root.slice(1)\n }\n this.$dialog\n .confirm(`Are you sure you want to delete: ${filename}`, {\n okText: \'Delete\',\n cancelText: \'Cancel\',\n })\n .then((dialog) => {\n return Api.delete(\n `/openc3-api/storage/delete/${encodeURIComponent(\n this.path,\n )}${filename}?${\n this.mode\n }=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n })\n .then((response) => {\n this.updateFiles()\n })\n },\n updateFiles() {\n let root = this.root.toUpperCase()\n if (this.mode === \'volume\') {\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/files/OPENC3_${root}_${this.mode.toUpperCase()}/${\n this.path\n }`,\n )\n .then((response) => {\n this.files = response.data[0].map((bucket) => {\n return { name: bucket, icon: \'mdi-folder\' }\n })\n this.files = this.files.concat(\n response.data[1].map((item) => {\n return {\n name: item.name,\n icon: \'mdi-file\',\n size: item.size,\n modified: item.modified,\n }\n }),\n )\n })\n .catch((response) => {\n this.files = []\n if (response.data.message) {\n this.$notify.caution({\n title: response.data.message,\n })\n } else {\n this.$notify.caution({\n title: response.message,\n })\n }\n })\n },\n },\n}\n<\/script>\n\n<style scoped>\n.font-size {\n font-size: 1rem;\n}\n.small-font-size {\n font-size: 0.8rem;\n}\n.file-input {\n padding-top: 0px;\n margin-top: 0px;\n}\n</style>\n']},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"756619429893eb5d0fb54b0e25875d4c44ab870d"},i=l[t]||(l[t]={});i[n]&&i[n].hash===e||(i[n]=o);var a=i[n];return y=function(){return a},a}y();const k={components:{TopBar:d},data(){return y().f[0]++,y().s[0]++,{title:"Bucket Explorer",search:"",root:"",mode:"bucket",buckets:[],volumes:[],uploadPathDialog:!1,optionsDialog:!1,refreshInterval:60,updater:null,path:"",file:null,files:[],headers:[{text:"Name",value:"name"},{text:"Size",value:"size"},{text:"Modified Date",value:"modified"},{text:"Action",value:"action"}],menus:[{label:"File",items:[{label:"Options",icon:"mdi-cog",command:()=>{y().f[1]++,y().s[1]++,this.optionsDialog=!0}}]}]}},computed:{folderTotal(){return y().f[2]++,y().s[2]++,this.files.reduce(((n,e)=>(y().f[3]++,y().s[3]++,n+(e.size?(y().b[0][0]++,e.size):(y().b[0][1]++,0)))),0).toLocaleString()}},created(){if(y().f[4]++,y().s[4]++,g.get("/openc3-api/storage/buckets").then((n=>{y().f[5]++,y().s[5]++,this.buckets=n.data})),y().s[6]++,g.get("/openc3-api/storage/volumes").then((n=>{y().f[6]++,y().s[7]++,this.volumes=n.data})),y().s[8]++,this.$route.params.path){y().b[1][0]++;let n=(y().s[9]++,this.$route.params.path.split("/"));y().s[10]++,""===n[0]?(y().b[2][0]++,y().s[11]++,this.mode="volume",y().s[12]++,this.root=`/${n[1]}`,y().s[13]++,this.path=n.slice(2).join("/")):(y().b[2][1]++,y().s[14]++,this.mode="bucket",y().s[15]++,this.root=n[0],y().s[16]++,this.path=n.slice(1).join("/")),y().s[17]++,this.updateFiles()}else y().b[1][1]++;y().s[18]++,this.changeUpdater()},beforeDestroy(){y().f[7]++,y().s[19]++,this.clearUpdater()},watch:{file:async function(){if(y().f[8]++,y().s[20]++,null===this.file)return y().b[3][0]++,void y().s[21]++;y().b[3][1]++,y().s[22]++,this.uploadFilePath=`${this.path}${this.file.name}`,y().s[23]++,this.uploadPathDialog=!0},refreshInterval(){y().f[9]++,y().s[24]++,this.changeUpdater()}},methods:{update(){y().f[10]++,y().s[25]++,this.$router.push({name:"Bucket Explorer",params:{path:`${this.root}/${this.path}`}}),y().s[26]++,this.updateFiles()},changeUpdater(){y().f[11]++,y().s[27]++,this.clearUpdater(),y().s[28]++,this.updater=setInterval((()=>{y().f[12]++,y().s[29]++,this.root?(y().b[4][0]++,y().s[30]++,this.updateFiles()):y().b[4][1]++}),1e3*this.refreshInterval)},clearUpdater(){y().f[13]++,y().s[31]++,null!=this.updater?(y().b[5][0]++,y().s[32]++,clearInterval(this.updater),y().s[33]++,this.updater=null):y().b[5][1]++},selectBucket(n){if(y().f[14]++,y().s[34]++,this.root===n)return y().b[6][0]++,void y().s[35]++;y().b[6][1]++,y().s[36]++,this.mode="bucket",y().s[37]++,this.root=n,y().s[38]++,this.path="",y().s[39]++,this.update()},selectVolume(n){if(y().f[15]++,y().s[40]++,this.root===n)return y().b[7][0]++,void y().s[41]++;y().b[7][1]++,y().s[42]++,this.mode="volume",y().s[43]++,this.root=n,y().s[44]++,this.path="",y().s[45]++,this.update()},backArrow(){if(y().f[16]++,y().s[46]++,""===this.path)return y().b[8][0]++,void y().s[47]++;y().b[8][1]++;let n=(y().s[48]++,this.path.split("/"));y().s[49]++,this.path=n.slice(0,n.length-2).join("/"),y().s[50]++,n.length>2?(y().b[9][0]++,y().s[51]++,this.path+="/"):y().b[9][1]++,y().s[52]++,this.update()},fileClick(n){y().f[17]++,y().s[53]++,"mdi-folder"===n.icon?(y().b[10][0]++,y().s[54]++,""===this.root?(y().b[11][0]++,y().s[55]++,this.root=n.name):(y().b[11][1]++,y().s[56]++,this.path+=`${n.name}/`),y().s[57]++,this.update()):y().b[10][1]++},downloadFile(n){y().f[18]++;let e=(y().s[58]++,this.root.toUpperCase()),l=(y().s[59]++,"download");y().s[60]++,"volume"===this.mode?(y().b[12][0]++,y().s[61]++,l="download_file",y().s[62]++,e=e.slice(1)):y().b[12][1]++,y().s[63]++,g.get(`/openc3-api/storage/${l}/${encodeURIComponent(this.path)}${n}?${this.mode}=OPENC3_${e}_${this.mode.toUpperCase()}`).then((e=>{y().f[19]++;let l=(y().s[64]++,null);if(y().s[65]++,"bucket"===this.mode)y().b[13][0]++,y().s[66]++,l=e.data.url;else{y().b[13][1]++;const n=(y().s[67]++,window.atob(e.data.contents)),t=(y().s[68]++,new Uint8Array(n.length));y().s[69]++;for(let e=(y().s[70]++,0);e<n.length;++e)y().s[71]++,t[e]=n.charCodeAt(e);const o=(y().s[72]++,new Blob([t]));y().s[73]++,l=URL.createObjectURL(o)}const t=(y().s[74]++,document.createElement("a"));y().s[75]++,t.href=l,y().s[76]++,t.setAttribute("download",n),y().s[77]++,t.click()})).catch((e=>{y().f[20]++,y().s[78]++,this.$notify.caution({title:`Unable to download file ${this.path}${n} from bucket ${this.root}`})}))},async uploadFile(){y().f[21]++,y().s[79]++,this.uploadPathDialog=!1,y().s[80]++,this.uploadFilePath.startsWith("/")?(y().b[14][0]++,y().s[81]++,this.uploadFilePath=this.uploadFilePath.slice(1)):y().b[14][1]++;const{data:n}=(y().s[82]++,await g.get(`/openc3-api/storage/upload/${encodeURIComponent(this.uploadFilePath)}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`));y().s[83]++,await(0,A.A)({...n,data:this.file});y().s[84]++,this.file=null,y().s[85]++,this.path=this.uploadFilePath.split("/").slice(0,-1).join("/")+"/",y().s[86]++,this.updateFiles()},deleteFile(n){y().f[22]++;let e=(y().s[87]++,this.root.toUpperCase());y().s[88]++,"volume"===this.mode?(y().b[15][0]++,y().s[89]++,e=e.slice(1)):y().b[15][1]++,y().s[90]++,this.$dialog.confirm(`Are you sure you want to delete: ${n}`,{okText:"Delete",cancelText:"Cancel"}).then((l=>(y().f[23]++,y().s[91]++,g.delete(`/openc3-api/storage/delete/${encodeURIComponent(this.path)}${n}?${this.mode}=OPENC3_${e}_${this.mode.toUpperCase()}`)))).then((n=>{y().f[24]++,y().s[92]++,this.updateFiles()}))},updateFiles(){y().f[25]++;let n=(y().s[93]++,this.root.toUpperCase());y().s[94]++,"volume"===this.mode?(y().b[16][0]++,y().s[95]++,n=n.slice(1)):y().b[16][1]++,y().s[96]++,g.get(`/openc3-api/storage/files/OPENC3_${n}_${this.mode.toUpperCase()}/${this.path}`).then((n=>{y().f[26]++,y().s[97]++,this.files=n.data[0].map((n=>(y().f[27]++,y().s[98]++,{name:n,icon:"mdi-folder"}))),y().s[99]++,this.files=this.files.concat(n.data[1].map((n=>(y().f[28]++,y().s[100]++,{name:n.name,icon:"mdi-file",size:n.size,modified:n.modified}))))})).catch((n=>{y().f[29]++,y().s[101]++,this.files=[],y().s[102]++,n.data.message?(y().b[17][0]++,y().s[103]++,this.$notify.caution({title:n.data.message})):(y().b[17][1]++,y().s[104]++,this.$notify.caution({title:n.message}))}))}}},x=k;l(6178);var w=(0,u.A)(x,o,i,!1,null,"e4e06bf6",null);const $=w.exports},2426:(n,e,l)=>{"use strict";l.r(e),l.d(e,{default:()=>c});var t=l(6758),o=l.n(t),i=l(935),a=l.n(i),s=a()(o());s.push([n.id,".font-size[data-v-e4e06bf6]{font-size:1rem}.small-font-size[data-v-e4e06bf6]{font-size:.8rem}.file-input[data-v-e4e06bf6]{padding-top:0;margin-top:0}",""]);const c=s},4203:(n,e,l)=>{"use strict";l.r(e),l.d(e,{default:()=>c});var t=l(6758),o=l.n(t),i=l(935),a=l.n(i),s=a()(o());s.push([n.id,".app-title[data-v-0af23388]{font-size:2rem}.menu-button[data-v-0af23388]{border-color:var(--color-border-interactive-muted)!important;background-color:var(--color-background-base-default)!important;padding-right:3px!important}span.v-btn__content span[data-v-0af23388]{padding-right:5px}.list-action[data-v-0af23388] label{color:#fff;padding-left:10px}.myicon[data-v-0af23388]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-0af23388] .v-label{margin-left:5px}.v-list-item__icon[data-v-0af23388]{margin-right:15px!important}.v-list-item__title[data-v-0af23388]{color:#fff}",""]);const c=s},6178:(n,e,l)=>{var t=l(2426);t.__esModule&&(t=t.default),"string"===typeof t&&(t=[[n.id,t,""]]),t.locals&&(n.exports=t.locals);var o=l(4825).A;o("4d948738",t,!0,{sourceMap:!1,shadowMode:!1})},5699:(n,e,l)=>{var t=l(4203);t.__esModule&&(t=t.default),"string"===typeof t&&(t=[[n.id,t,""]]),t.locals&&(n.exports=t.locals);var o=l(4825).A;o("7f447726",t,!0,{sourceMap:!1,shadowMode:!1})}}]);
2
- //# sourceMappingURL=388.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/388.js","mappings":"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","sources":["webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?c4b5","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?a437","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/services/axios.js","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/services/api.js","webpack://@openc3/cosmos-tool-bucketexplorer/src/tools/BucketExplorer/BucketExplorer.vue","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?78f1","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?98c2","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?f044","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?e2ab","webpack://@openc3/cosmos-tool-bucketexplorer/./src/tools/BucketExplorer/BucketExplorer.vue?1b26","webpack://@openc3/cosmos-tool-bucketexplorer/../openc3-tool-common/src/components/TopBar.vue?ca18"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('top-bar',{attrs:{\"title\":_vm.title,\"menus\":_vm.menus}}),_vm._v(\" \"),_c('v-card',{attrs:{\"width\":\"100%\"}},[_c('div',{staticStyle:{\"padding-left\":\"5px\",\"padding-top\":\"5px\"}},[_c('span',{staticClass:\"ma-2 font-size\"},[_vm._v(\"Buckets:\")]),_vm._v(\" \"),_vm._l((_vm.buckets),function(bucket,index){return _c('v-chip',{key:index,staticClass:\"ma-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectBucket(bucket)}}},[_c('v-avatar',{attrs:{\"left\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-bucket\")])],1),_vm._v(\"\\n \"+_vm._s(bucket)+\"\\n \")],1)})],2),_vm._v(\" \"),(_vm.volumes.length !== 0)?_c('div',{staticStyle:{\"padding-left\":\"5px\"}},[_c('span',{staticClass:\"ma-2 font-size\"},[_vm._v(\"Volumes:\")]),_vm._v(\" \"),_vm._l((_vm.volumes),function(volume,index){return _c('v-chip',{key:index,staticClass:\"ma-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectVolume(volume)}}},[_c('v-avatar',{attrs:{\"left\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-folder\")])],1),_vm._v(\"\\n \"+_vm._s(volume)+\"\\n \")],1)})],2):_vm._e(),_vm._v(\" \"),_c('v-card-title',{staticStyle:{\"padding-top\":\"0px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.root)+\" Files\\n \"),_c('v-spacer'),_vm._v(\" \"),_c('v-text-field',{staticClass:\"search\",attrs:{\"label\":\"Search\",\"prepend-inner-icon\":\"mdi-magnify\",\"clearable\":\"\",\"outlined\":\"\",\"dense\":\"\",\"single-line\":\"\",\"hide-details\":\"\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('v-data-table',{attrs:{\"headers\":_vm.headers,\"items\":_vm.files,\"search\":_vm.search,\"items-per-page\":1000,\"footer-props\":{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: 'mdi-page-first',\n lastIcon: 'mdi-page-last',\n prevIcon: 'mdi-chevron-left',\n nextIcon: 'mdi-chevron-right',\n },\"sort-by\":\"modified\",\"sort-desc\":\"true\",\"calculate-widths\":\"\",\"multi-sort\":\"\",\"dense\":\"\"},on:{\"click:row\":_vm.fileClick},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('v-row',{staticClass:\"ma-0\",staticStyle:{\"background-color\":\"var(--color-background-surface-header)\"}},[_c('v-btn',{attrs:{\"icon\":\"\"}},[_c('v-icon',{on:{\"click\":_vm.backArrow}},[_vm._v(\"mdi-chevron-left-box-outline\")])],1),_vm._v(\" \"),_c('span',{staticClass:\".text-body-1 ma-2 font-size\",attrs:{\"data-test\":\"file-path\"}},[_vm._v(\"/\"+_vm._s(_vm.path))]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('div',{staticClass:\"pa-1 font-size\"},[_vm._v(\"\\n Folder Size: \"+_vm._s(_vm.folderTotal)+\"\\n \"),_c('span',{staticClass:\"small-font-size\"},[_vm._v(\"(not recursive)\")])]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),(_vm.mode === 'bucket')?_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('span',{staticClass:\"pa-1 font-size\"},[_vm._v(\"Upload File\")]),_vm._v(\" \"),_c('v-file-input',{staticClass:\"file-input\",attrs:{\"hide-input\":\"\",\"hide-details\":\"\",\"prepend-icon\":\"mdi-upload\",\"data-test\":\"upload-file\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1):_vm._e()],1)]},proxy:true},{key:\"item.name\",fn:function({ item }){return [_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(_vm._s(item.icon))]),_vm._v(_vm._s(item.name)+\"\\n \")]}},{key:\"item.size\",fn:function({ item }){return [_vm._v(\"\\n \"+_vm._s(item.size ? item.size.toLocaleString() : '')+\"\\n \")]}},{key:\"item.action\",fn:function({ item }){return [(item.icon === 'mdi-file')?_c('v-icon',{staticClass:\"mr-3\",attrs:{\"data-test\":\"download-file\"},on:{\"click\":function($event){return _vm.downloadFile(item.name)}}},[_vm._v(\"mdi-download-box\")]):_vm._e(),_vm._v(\" \"),(item.icon === 'mdi-file')?_c('v-icon',{attrs:{\"data-test\":\"delete-file\"},on:{\"click\":function($event){return _vm.deleteFile(item.name)}}},[_vm._v(\"mdi-delete\")]):_vm._e()]}}])})],1),_vm._v(\" \"),_c('v-dialog',{attrs:{\"max-width\":\"600\"},model:{value:(_vm.uploadPathDialog),callback:function ($$v) {_vm.uploadPathDialog=$$v},expression:\"uploadPathDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\" Upload Path \")]),_vm._v(\" \"),_c('v-spacer')],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"mx-1\"},[_c('v-row',{staticClass:\"my-2\"},[_c('span',[_vm._v(\"This file path can be modified. New directories will be\\n automatically created.\")]),_vm._v(\" \"),_c('v-text-field',{attrs:{\"hide-details\":\"\",\"label\":\"File Path\",\"data-test\":\"upload-file-path\"},model:{value:(_vm.uploadFilePath),callback:function ($$v) {_vm.uploadFilePath=$$v},expression:\"uploadFilePath\"}})],1),_vm._v(\" \"),_c('v-row',[_c('v-spacer'),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"outlined\":\"\",\"data-test\":\"upload-file-cancel-btn\"},on:{\"click\":function($event){_vm.uploadPathDialog = false}}},[_vm._v(\"\\n Cancel\\n \")]),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"color\":\"primary\",\"type\":\"submit\",\"data-test\":\"upload-file-submit-btn\"},on:{\"click\":function($event){$event.preventDefault();return _vm.uploadFile.apply(null, arguments)}}},[_vm._v(\"\\n Upload\\n \")])],1)],1)])],1)],1),_vm._v(\" \"),_c('v-dialog',{attrs:{\"max-width\":\"300\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.optionsDialog = false}},model:{value:(_vm.optionsDialog),callback:function ($$v) {_vm.optionsDialog=$$v},expression:\"optionsDialog\"}},[_c('v-card',[_c('v-system-bar',[_c('v-spacer'),_vm._v(\" \"),_c('span',[_vm._v(\"Options\")]),_vm._v(\" \"),_c('v-spacer')],1),_vm._v(\" \"),_c('v-card-text',[_c('div',{staticClass:\"pa-3\"},[_c('v-text-field',{attrs:{\"min\":\"1\",\"max\":\"3600\",\"step\":\"100\",\"type\":\"number\",\"label\":\"Refresh Interval (s)\",\"value\":_vm.refreshInterval,\"data-test\":\"refresh-interval\"},on:{\"change\":function($event){_vm.refreshInterval = $event}}})],1)])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('mounting-portal',{attrs:{\"mount-to\":\"#openc3-menu\",\"append\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"align-self\":\"end\"}},[_c('span',{staticClass:\"app-title mr-2\"},[_vm._v(_vm._s(_vm.title))])])],1),_vm._v(\" \"),_c('v-row',{staticClass:\"flex-nowrap\",attrs:{\"dense\":\"\"}},_vm._l((_vm.menus),function(menu,i){return _c('v-menu',{key:i,ref:\"topmenu\",refInFor:true,attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"mx-1 menu-button\",attrs:{\"outlined\":\"\",\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label}`)}},'v-btn',attrs,false),on),[_c('span',{domProps:{\"textContent\":_vm._s(menu.label)}}),_vm._v(\" \"),_c('v-icon',{staticClass:\"myicon\",attrs:{\"right\":\"\"}},[_vm._v(\" mdi-menu-down \")])],1)]}}],null,true)},[_vm._v(\" \"),_c('v-list',[_c('v-radio-group',{staticClass:\"ma-0 pa-0\",attrs:{\"value\":menu.radioGroup,\"hide-details\":\"\",\"dense\":\"\"}},[_vm._l((menu.items),function(option,j){return [(option.divider)?_c('v-divider',{key:j}):(option.subMenu && option.subMenu.length > 0)?_c('div',{key:j},[_c('v-menu',{key:_vm.k,attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({key:j,attrs:{\"disabled\":option.disabled}},'v-list-item',attrs,false),on),[(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),_vm._v(\" \"),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' +\n (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('v-icon',[_vm._v(\" mdi-chevron-right \")])],1)]}}],null,true)},[_vm._v(\" \"),_c('v-list',_vm._l((option.subMenu),function(submenu,k){return _c('v-list-item',{key:k,on:{\"click\":function($event){return _vm.subMenuClick(submenu)}}},[(submenu.icon)?_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(submenu.icon))])],1):_vm._e(),_vm._v(\" \"),_c('v-list-item-title',[_vm._v(_vm._s(submenu.label))])],1)}),1)],1)],1):_c('v-list-item',{key:j,attrs:{\"disabled\":option.disabled,\"data-test\":_vm.formatDT(`${_vm.title} ${menu.label} ${option.label}`)},on:{\"click\":function($event){return option.command(option)}}},[(option.radio)?_c('v-list-item-action',{staticClass:\"list-action\"},[_c('v-radio',{attrs:{\"color\":\"secondary\",\"label\":option.label,\"value\":option.label}})],1):_vm._e(),_vm._v(\" \"),(option.checkbox)?_c('v-list-item-action',{staticClass:\"list-action\"},[_c('v-checkbox',{attrs:{\"color\":\"secondary\",\"label\":option.label},model:{value:(option.checked),callback:function ($$v) {_vm.$set(option, \"checked\", $$v)},expression:\"option.checked\"}})],1):_vm._e(),_vm._v(\" \"),(option.icon)?_c('v-list-item-icon',[_c('v-icon',{attrs:{\"disabled\":option.disabled}},[_vm._v(_vm._s(option.icon))])],1):_vm._e(),_vm._v(\" \"),(!option.radio && !option.checkbox)?_c('v-list-item-title',{style:('cursor: pointer;' + (option.disabled ? 'opacity: 0.2' : ''))},[_vm._v(_vm._s(option.label))]):_vm._e()],1)]})],2)],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TopBar.vue?vue&type=template&id=0af23388&scoped=true\"\nimport script from \"./TopBar.vue?vue&type=script&lang=js\"\nexport * from \"./TopBar.vue?vue&type=script&lang=js\"\nimport style0 from \"./TopBar.vue?vue&type=style&index=0&id=0af23388&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0af23388\",\n null\n \n)\n\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true).then(\n function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n },\n )\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // headers: {\n // 'Ignore-Errors': '404',\n // },\n // })\n if (\n error.response.config.headers['Ignore-Errors'] &&\n error.response.config.headers['Ignore-Errors'].includes(\n error.response.status.toString(),\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n if (vueInstance.$notify) {\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n } else {\n throw error\n }\n },\n)\n\nexport default axiosInstance\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n {\n data,\n params = {},\n headers,\n noAuth = false,\n noScope = false,\n onUploadProgress = false,\n } = {}\n) {\n if (!noAuth) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n // Everything from the front-end is manual by default\n // The various api methods decide whether to pass the manual\n // flag to the authorize routine\n headers['manual'] = true\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n onUploadProgress,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n {\n params,\n headers = acceptOnlyDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('get', path, {\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n\n put: function (\n path,\n {\n data,\n params,\n headers = fullDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('put', path, {\n data,\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n\n post: function (\n path,\n {\n data,\n params,\n headers = fullDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('post', path, {\n data,\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n\n delete: function (\n path,\n {\n params,\n headers = acceptOnlyDefaultHeaders,\n noScope,\n noAuth,\n onUploadProgress,\n } = {}\n ) {\n return request('delete', path, {\n params,\n headers,\n noScope,\n noAuth,\n onUploadProgress,\n })\n },\n}\n","<!--\n# Copyright 2023 OpenC3, Inc.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <top-bar :title=\"title\" :menus=\"menus\" />\n <v-card width=\"100%\">\n <div style=\"padding-left: 5px; padding-top: 5px\">\n <span class=\"ma-2 font-size\">Buckets:</span>\n <v-chip\n v-for=\"(bucket, index) in buckets\"\n :key=\"index\"\n color=\"primary\"\n class=\"ma-2\"\n @click.stop=\"selectBucket(bucket)\"\n >\n <v-avatar left>\n <v-icon>mdi-bucket</v-icon>\n </v-avatar>\n {{ bucket }}\n </v-chip>\n </div>\n <div style=\"padding-left: 5px\" v-if=\"volumes.length !== 0\">\n <span class=\"ma-2 font-size\">Volumes:</span>\n <v-chip\n v-for=\"(volume, index) in volumes\"\n :key=\"index\"\n color=\"primary\"\n class=\"ma-2\"\n @click.stop=\"selectVolume(volume)\"\n >\n <v-avatar left>\n <v-icon>mdi-folder</v-icon>\n </v-avatar>\n {{ volume }}\n </v-chip>\n </div>\n <v-card-title style=\"padding-top: 0px\">\n {{ root }} Files\n <v-spacer />\n <v-text-field\n v-model=\"search\"\n label=\"Search\"\n prepend-inner-icon=\"mdi-magnify\"\n clearable\n outlined\n dense\n single-line\n hide-details\n class=\"search\"\n />\n </v-card-title>\n <v-data-table\n :headers=\"headers\"\n :items=\"files\"\n :search=\"search\"\n :items-per-page=\"1000\"\n :footer-props=\"{\n showFirstLastPage: true,\n itemsPerPageOptions: [1000],\n firstIcon: 'mdi-page-first',\n lastIcon: 'mdi-page-last',\n prevIcon: 'mdi-chevron-left',\n nextIcon: 'mdi-chevron-right',\n }\"\n sort-by=\"modified\"\n sort-desc=\"true\"\n @click:row=\"fileClick\"\n calculate-widths\n multi-sort\n dense\n >\n <template v-slot:top>\n <v-row\n class=\"ma-0\"\n style=\"background-color: var(--color-background-surface-header)\"\n >\n <v-btn icon>\n <v-icon @click=\"backArrow\">mdi-chevron-left-box-outline</v-icon>\n </v-btn>\n <span class=\".text-body-1 ma-2 font-size\" data-test=\"file-path\"\n >/{{ path }}</span\n >\n <v-spacer />\n <div class=\"pa-1 font-size\">\n Folder Size: {{ folderTotal }}\n <span class=\"small-font-size\">(not recursive)</span>\n </div>\n\n <v-spacer />\n <div style=\"display: flex\" v-if=\"mode === 'bucket'\">\n <span class=\"pa-1 font-size\">Upload File</span>\n <v-file-input\n v-model=\"file\"\n hide-input\n hide-details\n class=\"file-input\"\n prepend-icon=\"mdi-upload\"\n data-test=\"upload-file\"\n />\n </div>\n </v-row>\n </template>\n <template v-slot:item.name=\"{ item }\">\n <v-icon class=\"mr-2\">{{ item.icon }}</v-icon\n >{{ item.name }}\n </template>\n <template v-slot:item.size=\"{ item }\">\n {{ item.size ? item.size.toLocaleString() : '' }}\n </template>\n <template v-slot:item.action=\"{ item }\">\n <v-icon\n class=\"mr-3\"\n v-if=\"item.icon === 'mdi-file'\"\n @click=\"downloadFile(item.name)\"\n data-test=\"download-file\"\n >mdi-download-box</v-icon\n >\n <v-icon\n v-if=\"item.icon === 'mdi-file'\"\n @click=\"deleteFile(item.name)\"\n data-test=\"delete-file\"\n >mdi-delete</v-icon\n >\n </template>\n </v-data-table>\n </v-card>\n <v-dialog v-model=\"uploadPathDialog\" max-width=\"600\">\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span> Upload Path </span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"mx-1\">\n <v-row class=\"my-2\">\n <span\n >This file path can be modified. New directories will be\n automatically created.</span\n >\n <v-text-field\n v-model=\"uploadFilePath\"\n hide-details\n label=\"File Path\"\n data-test=\"upload-file-path\"\n />\n </v-row>\n <v-row>\n <v-spacer />\n <v-btn\n @click=\"uploadPathDialog = false\"\n outlined\n class=\"mx-2\"\n data-test=\"upload-file-cancel-btn\"\n >\n Cancel\n </v-btn>\n <v-btn\n @click.prevent=\"uploadFile\"\n class=\"mx-2\"\n color=\"primary\"\n type=\"submit\"\n data-test=\"upload-file-submit-btn\"\n >\n Upload\n </v-btn>\n </v-row>\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n <v-dialog\n v-model=\"optionsDialog\"\n @keydown.esc=\"optionsDialog = false\"\n max-width=\"300\"\n >\n <v-card>\n <v-system-bar>\n <v-spacer />\n <span>Options</span>\n <v-spacer />\n </v-system-bar>\n <v-card-text>\n <div class=\"pa-3\">\n <v-text-field\n min=\"1\"\n max=\"3600\"\n step=\"100\"\n type=\"number\"\n label=\"Refresh Interval (s)\"\n :value=\"refreshInterval\"\n @change=\"refreshInterval = $event\"\n data-test=\"refresh-interval\"\n />\n </div>\n </v-card-text>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport TopBar from '@openc3/tool-common/src/components/TopBar'\nimport Api from '@openc3/tool-common/src/services/api'\nimport axios from 'axios'\n\nexport default {\n components: {\n TopBar,\n },\n data() {\n return {\n title: 'Bucket Explorer',\n search: '',\n root: '',\n mode: 'bucket',\n buckets: [],\n volumes: [],\n uploadPathDialog: false,\n optionsDialog: false,\n refreshInterval: 60,\n updater: null,\n path: '',\n file: null,\n files: [],\n headers: [\n { text: 'Name', value: 'name' },\n { text: 'Size', value: 'size' },\n { text: 'Modified Date', value: 'modified' },\n { text: 'Action', value: 'action' },\n ],\n menus: [\n {\n label: 'File',\n items: [\n {\n label: 'Options',\n icon: 'mdi-cog',\n command: () => {\n this.optionsDialog = true\n },\n },\n ],\n },\n ],\n }\n },\n computed: {\n folderTotal() {\n return this.files\n .reduce((a, b) => a + (b.size ? b.size : 0), 0)\n .toLocaleString()\n },\n },\n created() {\n Api.get('/openc3-api/storage/buckets').then((response) => {\n this.buckets = response.data\n })\n Api.get('/openc3-api/storage/volumes').then((response) => {\n this.volumes = response.data\n })\n if (this.$route.params.path) {\n let parts = this.$route.params.path.split('/')\n if (parts[0] === '') {\n this.mode = 'volume'\n // Prepend the slash to note this is a volume not a bucket\n this.root = `/${parts[1]}`\n this.path = parts.slice(2).join('/')\n } else {\n this.mode = 'bucket'\n this.root = parts[0]\n this.path = parts.slice(1).join('/')\n }\n this.updateFiles()\n }\n this.changeUpdater()\n },\n beforeDestroy() {\n this.clearUpdater()\n },\n watch: {\n // This is the upload function that is activated when the file gets set\n file: async function () {\n if (this.file === null) return\n this.uploadFilePath = `${this.path}${this.file.name}`\n this.uploadPathDialog = true\n },\n refreshInterval() {\n this.changeUpdater()\n },\n },\n methods: {\n update() {\n this.$router.push({\n name: 'Bucket Explorer',\n params: {\n path: `${this.root}/${this.path}`,\n },\n })\n this.updateFiles()\n },\n changeUpdater() {\n this.clearUpdater()\n this.updater = setInterval(() => {\n // need to be in a bucket/volume otherwise updateFiles gets mad\n if (this.root) {\n this.updateFiles()\n }\n }, this.refreshInterval * 1000)\n },\n clearUpdater() {\n if (this.updater != null) {\n clearInterval(this.updater)\n this.updater = null\n }\n },\n selectBucket(bucket) {\n if (this.root === bucket) return\n this.mode = 'bucket'\n this.root = bucket\n this.path = ''\n this.update()\n },\n selectVolume(volume) {\n if (this.root === volume) return\n this.mode = 'volume'\n this.root = volume\n this.path = ''\n this.update()\n },\n backArrow() {\n // Nothing to do if we're at the root so return\n if (this.path === '') return\n let parts = this.path.split('/')\n this.path = parts.slice(0, parts.length - 2).join('/')\n // Only append the last slash if we're not at the root\n // The root is 2 because it's the path before clicking back\n if (parts.length > 2) {\n this.path += '/'\n }\n this.update()\n },\n fileClick(event) {\n if (event.icon === 'mdi-folder') {\n if (this.root === '') {\n // initial root click\n this.root = event.name\n } else {\n this.path += `${event.name}/`\n }\n this.update()\n }\n },\n downloadFile(filename) {\n let root = this.root.toUpperCase()\n let api = 'download'\n if (this.mode === 'volume') {\n api = 'download_file'\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/${api}/${encodeURIComponent(\n this.path,\n )}${filename}?${this.mode}=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n .then((response) => {\n let href = null\n if (this.mode === 'bucket') {\n href = response.data.url\n } else {\n // Decode Base64 string\n const decodedData = window.atob(response.data.contents)\n // Create UNIT8ARRAY of size same as row data length\n const uInt8Array = new Uint8Array(decodedData.length)\n // Insert all character code into uInt8Array\n for (let i = 0; i < decodedData.length; ++i) {\n uInt8Array[i] = decodedData.charCodeAt(i)\n }\n const blob = new Blob([uInt8Array])\n href = URL.createObjectURL(blob)\n }\n // Make a link and then 'click' on it to start the download\n const link = document.createElement('a')\n link.href = href\n link.setAttribute('download', filename)\n link.click()\n })\n\n .catch((response) => {\n this.$notify.caution({\n title: `Unable to download file ${this.path}${filename} from bucket ${this.root}`,\n })\n })\n },\n async uploadFile() {\n this.uploadPathDialog = false\n // Ensure they didn't slap a '/' at the beginning\n if (this.uploadFilePath.startsWith('/')) {\n this.uploadFilePath = this.uploadFilePath.slice(1)\n }\n\n // Reassign data to presignedRequest for readability\n const { data: presignedRequest } = await Api.get(\n `/openc3-api/storage/upload/${encodeURIComponent(\n this.uploadFilePath,\n )}?bucket=OPENC3_${this.root.toUpperCase()}_BUCKET`,\n )\n // This pushes the file into storage by using the fields in the presignedRequest\n // See storage_controller.rb get_upload_presigned_request()\n const response = await axios({\n ...presignedRequest,\n data: this.file,\n })\n this.file = null\n this.path = this.uploadFilePath.split('/').slice(0, -1).join('/') + '/'\n this.updateFiles()\n },\n deleteFile(filename) {\n let root = this.root.toUpperCase()\n if (this.mode === 'volume') {\n root = root.slice(1)\n }\n this.$dialog\n .confirm(`Are you sure you want to delete: ${filename}`, {\n okText: 'Delete',\n cancelText: 'Cancel',\n })\n .then((dialog) => {\n return Api.delete(\n `/openc3-api/storage/delete/${encodeURIComponent(\n this.path,\n )}${filename}?${\n this.mode\n }=OPENC3_${root}_${this.mode.toUpperCase()}`,\n )\n })\n .then((response) => {\n this.updateFiles()\n })\n },\n updateFiles() {\n let root = this.root.toUpperCase()\n if (this.mode === 'volume') {\n root = root.slice(1)\n }\n Api.get(\n `/openc3-api/storage/files/OPENC3_${root}_${this.mode.toUpperCase()}/${\n this.path\n }`,\n )\n .then((response) => {\n this.files = response.data[0].map((bucket) => {\n return { name: bucket, icon: 'mdi-folder' }\n })\n this.files = this.files.concat(\n response.data[1].map((item) => {\n return {\n name: item.name,\n icon: 'mdi-file',\n size: item.size,\n modified: item.modified,\n }\n }),\n )\n })\n .catch((response) => {\n this.files = []\n if (response.data.message) {\n this.$notify.caution({\n title: response.data.message,\n })\n } else {\n this.$notify.caution({\n title: response.message,\n })\n }\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.font-size {\n font-size: 1rem;\n}\n.small-font-size {\n font-size: 0.8rem;\n}\n.file-input {\n padding-top: 0px;\n margin-top: 0px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BucketExplorer.vue?vue&type=template&id=e4e06bf6&scoped=true\"\nimport script from \"./BucketExplorer.vue?vue&type=script&lang=js\"\nexport * from \"./BucketExplorer.vue?vue&type=script&lang=js\"\nimport style0 from \"./BucketExplorer.vue?vue&type=style&index=0&id=e4e06bf6&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e4e06bf6\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.font-size[data-v-e4e06bf6]{font-size:1rem}.small-font-size[data-v-e4e06bf6]{font-size:.8rem}.file-input[data-v-e4e06bf6]{padding-top:0;margin-top:0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-title[data-v-0af23388]{font-size:2rem}.menu-button[data-v-0af23388]{border-color:var(--color-border-interactive-muted)!important;background-color:var(--color-background-base-default)!important;padding-right:3px!important}span.v-btn__content span[data-v-0af23388]{padding-right:5px}.list-action[data-v-0af23388] label{color:#fff;padding-left:10px}.myicon[data-v-0af23388]{background-color:var(--color-background-surface-selected);border:1px solid currentColor;border-radius:3px;height:36px!important;width:36px!important}.v-list[data-v-0af23388] .v-label{margin-left:5px}.v-list-item__icon[data-v-0af23388]{margin-right:15px!important}.v-list-item__title[data-v-0af23388]{color:#fff}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BucketExplorer.vue?vue&type=style&index=0&id=e4e06bf6&prod&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4d948738\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[3]!../../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TopBar.vue?vue&type=style&index=0&id=0af23388&prod&scoped=true&lang=css\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7f447726\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["cov_uucdexesw","actualCoverage","s","render","f","_vm","this","_c","_self","attrs","title","menus","_v","staticStyle","staticClass","_l","buckets","bucket","index","key","on","$event","stopPropagation","selectBucket","_s","volumes","length","b","volume","selectVolume","_e","root","model","value","search","callback","$$v","expression","headers","files","showFirstLastPage","itemsPerPageOptions","firstIcon","lastIcon","prevIcon","nextIcon","fileClick","scopedSlots","_u","fn","backArrow","path","folderTotal","mode","file","proxy","item","icon","name","size","toLocaleString","downloadFile","deleteFile","uploadPathDialog","uploadFilePath","preventDefault","uploadFile","apply","arguments","type","indexOf","_k","keyCode","optionsDialog","refreshInterval","staticRenderFns","menu","i","ref","refInFor","_g","_b","formatDT","label","domProps","radioGroup","items","option","j","divider","subMenu","k","disabled","radio","checkbox","style","submenu","subMenuClick","command","checked","$set","props","Array","default","String","methods","string","replaceAll","toLowerCase","$refs","topmenu","isActive","mounted","document","component","vueInstance","Vue","axiosInstance","axios","create","baseURL","location","origin","timeout","params","interceptors","response","use","error","status","OpenC3Auth","updateToken","defaultMinValidity","then","refreshed","setTokens","config","includes","toString","Promise","reject","body","statusText","data","message","exception","class","$notify","serious","request","async","method","url","noAuth","noScope","onUploadProgress","login","localStorage","openc3Token","window","openc3Scope","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","get","put","post","delete","components","TopBar","updater","text","computed","reduce","a","created","Api","$route","parts","split","slice","join","updateFiles","changeUpdater","beforeDestroy","clearUpdater","watch","update","$router","push","setInterval","clearInterval","event","filename","toUpperCase","api","encodeURIComponent","href","decodedData","atob","contents","uInt8Array","Uint8Array","charCodeAt","blob","Blob","URL","createObjectURL","link","createElement","setAttribute","click","catch","caution","startsWith","presignedRequest","$dialog","confirm","okText","cancelText","dialog","map","concat","modified","___CSS_LOADER_EXPORT___","module","id","content","__esModule","locals","exports","add"],"sourceRoot":""}