Files
AeonDumpManager/src/Resources/public/administration/js/aeon-dump-manager.js
T

1 line
8.0 KiB
JavaScript

!function(){var e={74:function(){Shopware.Service("privileges").addPrivilegeMappingEntry({category:"permissions",parent:null,key:"aeon_dump_manager",roles:{viewer:{privileges:["aeon_dump_manager.viewer"],dependencies:[]},creator:{privileges:["aeon_dump_manager.creator"],dependencies:["aeon_dump_manager.viewer"]},deleter:{privileges:["aeon_dump_manager.deleter"],dependencies:["aeon_dump_manager.viewer"]}}})}},n={};function t(a){var i=n[a];if(void 0!==i)return i.exports;var r=n[a]={exports:{}};return e[a](r,r.exports,t),r.exports}t.p="bundles/aeondumpmanager/",window?.__sw__?.assetPath&&(t.p=window.__sw__.assetPath+"/bundles/aeondumpmanager/"),function(){"use strict";let{ApiService:e}=Shopware.Classes;class n extends e{constructor(e,n,t="aeon-dump-manager"){super(e,n,t)}getList(){return this.httpClient.get("/_action/aeon-dump-manager/dumps",{headers:this.getBasicHeaders()}).then(n=>e.handleResponse(n))}create(){return this.httpClient.post("/_action/aeon-dump-manager/dumps",{},{headers:this.getBasicHeaders()}).then(n=>e.handleResponse(n))}remove(n){return this.httpClient.delete(`/_action/aeon-dump-manager/dumps/${encodeURIComponent(n)}`,{headers:this.getBasicHeaders()}).then(n=>e.handleResponse(n))}getJobStatus(n){return this.httpClient.get(`/_action/aeon-dump-manager/dumps/jobs/${encodeURIComponent(n)}`,{headers:this.getBasicHeaders()}).then(n=>e.handleResponse(n))}}t(74);let{Component:a}=Shopware;a.register("aeon-dump-manager-list",{template:'{% block aeon_dump_manager_list %}\n<sw-page class="aeon-dump-manager-list">\n <template #smart-bar-actions>\n <sw-button\n v-if="acl.can(\'aeon_dump_manager.creator\')"\n variant="primary"\n :disabled="pendingJob !== null"\n @click="onCreate"\n >\n {{ $tc(\'aeon-dump-manager.list.buttonCreate\') }}\n </sw-button>\n </template>\n\n <template #content>\n <sw-card-view>\n <sw-card>\n <sw-data-grid\n :data-source="dumps"\n :columns="columns"\n :is-loading="isLoading"\n :show-selection="false"\n identifier="filename"\n >\n <template #before-item-list>\n <tr v-if="pendingJob !== null" class="aeon-dump-manager-list__pending-row">\n <td colspan="3">\n <span>{{ $tc(\'aeon-dump-manager.list.creating\') }}</span>\n <sw-progress-bar :max-value="100" :value="pendingJob.percent || 0" />\n </td>\n </tr>\n </template>\n\n <template #column-datetime="{ item }">\n {{ formatDatetime(item.datetime) }}\n </template>\n\n <template #column-sizeBytes="{ item }">\n {{ formatSize(item.sizeBytes) }}\n </template>\n\n <template #actions="{ item }">\n <sw-context-menu-item\n v-if="acl.can(\'aeon_dump_manager.deleter\')"\n variant="danger"\n @click="onRequestDelete(item.filename)"\n >\n {{ $tc(\'aeon-dump-manager.list.buttonDelete\') }}\n </sw-context-menu-item>\n </template>\n\n <template #empty-state>\n {{ $tc(\'aeon-dump-manager.list.empty\') }}\n </template>\n </sw-data-grid>\n </sw-card>\n </sw-card-view>\n </template>\n\n <sw-confirm-modal\n v-if="deleteFilename !== null"\n :title="$tc(\'aeon-dump-manager.list.confirmDeleteTitle\')"\n :text="$tc(\'aeon-dump-manager.list.confirmDeleteText\', 0, { filename: deleteFilename })"\n @confirm="onConfirmDelete"\n @cancel="onCancelDelete"\n @close="onCancelDelete"\n />\n</sw-page>\n{% endblock %}\n',inject:["aeonDumpManagerApiService","acl"],data(){return{dumps:[],isLoading:!1,pendingJob:null,deleteFilename:null,pollTimer:null}},computed:{columns(){return[{property:"datetime",label:this.$tc("aeon-dump-manager.list.columnDatetime"),allowResize:!0},{property:"filename",label:this.$tc("aeon-dump-manager.list.columnFilename"),allowResize:!0},{property:"sizeBytes",label:this.$tc("aeon-dump-manager.list.columnSize"),align:"right",allowResize:!0}]}},created(){this.loadList()},beforeDestroy(){this.stopPolling()},methods:{loadList(){return this.isLoading=!0,this.aeonDumpManagerApiService.getList().then(e=>{this.dumps=e.dumps}).finally(()=>{this.isLoading=!1})},formatDatetime(e){return new Date(e).toLocaleString()},formatSize(e){return Shopware.Utils.format.fileSize(e)},onCreate(){this.pendingJob={percent:0,status:"pending"},this.aeonDumpManagerApiService.create().then(e=>{this.pollJobStatus(e.jobId)}).catch(e=>{this.pendingJob=null,this.createNotificationError({message:this.$tc("aeon-dump-manager.list.createFailed",0,{error:e.message})})})},pollJobStatus(e){this.stopPolling(),this.pollTimer=window.setInterval(()=>{this.aeonDumpManagerApiService.getJobStatus(e).then(e=>{if("done"===e.status){this.stopPolling(),this.pendingJob=null,this.createNotificationSuccess({message:this.$tc("aeon-dump-manager.list.createSuccess")}),this.loadList();return}if("failed"===e.status){this.stopPolling(),this.pendingJob=null,this.createNotificationError({message:this.$tc("aeon-dump-manager.list.createFailed",0,{error:e.errorMessage??""})});return}this.pendingJob=e})},2e3)},stopPolling(){null!==this.pollTimer&&(window.clearInterval(this.pollTimer),this.pollTimer=null)},onRequestDelete(e){this.deleteFilename=e},onCancelDelete(){this.deleteFilename=null},onConfirmDelete(){let e=this.deleteFilename;return this.deleteFilename=null,this.aeonDumpManagerApiService.remove(e).then(()=>this.loadList())}}});var i=JSON.parse('{"aeon-dump-manager":{"general":{"mainMenuItemGeneral":"Dump-Verwaltung","descriptionTextModule":"SQL-Datenbank-Dumps erstellen, auflisten und l\xf6schen"},"list":{"columnFilename":"Name","columnDatetime":"Erstellt am","columnSize":"Gr\xf6\xdfe","buttonCreate":"Dump erstellen","buttonDelete":"L\xf6schen","confirmDeleteTitle":"Dump l\xf6schen?","confirmDeleteText":"M\xf6chten Sie \\"{filename}\\" wirklich l\xf6schen? Dies kann nicht r\xfcckg\xe4ngig gemacht werden.","empty":"Keine Dumps gefunden.","creating":"Dump wird erstellt…","createFailed":"Dump konnte nicht erstellt werden: {error}","createSuccess":"Dump erstellt."}}}'),r=JSON.parse('{"aeon-dump-manager":{"general":{"mainMenuItemGeneral":"Dump manager","descriptionTextModule":"Create, list and delete SQL database dumps"},"list":{"columnFilename":"Name","columnDatetime":"Created at","columnSize":"Size","buttonCreate":"Create dump","buttonDelete":"Delete","confirmDeleteTitle":"Delete dump?","confirmDeleteText":"Are you sure you want to delete \\"{filename}\\"? This cannot be undone.","empty":"No dumps found.","creating":"Creating dump…","createFailed":"Could not create dump: {error}","createSuccess":"Dump created."}}}');Shopware.Module.register("aeon-dump-manager",{type:"plugin",name:"DumpManager",title:"aeon-dump-manager.general.mainMenuItemGeneral",description:"aeon-dump-manager.general.descriptionTextModule",color:"#ff3d58",icon:"regular-database",snippets:{"de-DE":i,"en-GB":r},routes:{list:{component:"aeon-dump-manager-list",path:"list",meta:{parentPath:"sw.settings.index.system",privilege:"aeon_dump_manager.viewer"}}},navigation:[{id:"aeon-dump-manager-list",label:"aeon-dump-manager.general.mainMenuItemGeneral",color:"#ff3d58",path:"aeon.dump.manager.list",icon:"regular-database",parent:"sw-settings",position:100,privilege:"aeon_dump_manager.viewer"}],settingsItem:{group:"system",to:"aeon.dump.manager.list",icon:"regular-database",privilege:"aeon_dump_manager.viewer"}}),Shopware.Application.addServiceProvider("aeonDumpManagerApiService",e=>new n(Shopware.Application.getContainer("init").httpClient,e.loginService))}()}();