Add glql/components/common/renderer.vue
Summary
Extract the data retrieval and presentation logic from facade.vue into a new renderer.vue component to improve separation of concerns and component reusability within the GLQL system.
Background
Currently, facade.vue directly imports and uses the DataPresenter component along with handling data presentation logic, error states, and loading states within a CRUD wrapper. The Data Explorer does not require a CRUD wrapper and will handle it's own error state.
Loading and pagination logic will remain the same, and can be re-used between the facade and Data explorer parent components
Proposed Solution
Create a new app/assets/javascripts/glql/components/common/renderer.vue component which will handle the data fetching and presentation. The ideal future state for facade.vue should use this new component in place of the existing <data-presenter>:
<crud-component>
<template #actions>
<glql-actions />
</template>
<renderer
:query="query"
@onLoading="handleLoading"
@onSuccess="handleSuccess"
@onError="handleError"
/>
</crud-component>
Changes to the loading, error or rendered data should be emitted as Vue events. The executeQuery and parseQuery helpers will need to be migrated into the new component.