diff --git a/zero.Web.UI/App/core/plugin.js b/zero.Web.UI/App/core/plugin.js index 35c55247..82a4c168 100644 --- a/zero.Web.UI/App/core/plugin.js +++ b/zero.Web.UI/App/core/plugin.js @@ -5,7 +5,7 @@ class Plugin #onInstall; routes = []; - renderers = {}; + renderers = []; constructor(name) @@ -35,7 +35,8 @@ class Plugin */ addRenderer(alias, config) { - this.renderers[alias] = config; + config.alias = alias; + this.renderers.push(config); } /* diff --git a/zero.Web.UI/App/core/zero.js b/zero.Web.UI/App/core/zero.js index 9b83d36e..222b614e 100644 --- a/zero.Web.UI/App/core/zero.js +++ b/zero.Web.UI/App/core/zero.js @@ -19,6 +19,7 @@ class Zero #vue = null; #plugins = []; + #renderers = []; #routes = []; #router = null; @@ -69,8 +70,6 @@ class Zero routes: this.#routes }); - console.info(this.#routes); - //const result = await Axios.get('zerovue/config'); //this.config = { ...this.config, ...result.data }; @@ -94,13 +93,29 @@ class Zero this.#plugins.push(plugin); // append routes - plugin.routes.forEach(route => - { - this.#routes.push(route); - }); + plugin.routes.forEach(x => this.#routes.push(x)); + + // append renderers + plugin.renderers.forEach(x => this.#renderers.push(x)); console.log(`[zero] Installed %c${plugin.name}%cplugin`, 'font-style:italic;'); } + + + /* + * Returns a renderer + */ + getRenderer(alias) + { + const renderer = this.#renderers.find(x => x.alias === alias); + + if (!renderer) + { + console.warn(`[zero] Could not find renderer ${alias}`); + } + + return renderer; + } }; diff --git a/zero.Web.UI/App/pages/settings/languages.vue b/zero.Web.UI/App/pages/settings/languages.vue index bf6ca3da..ed49504a 100644 --- a/zero.Web.UI/App/pages/settings/languages.vue +++ b/zero.Web.UI/App/pages/settings/languages.vue @@ -18,12 +18,12 @@ data: () => ({ count: 0, createRoute: zero.alias.settings.languages + '-create', - tableConfig: zero.renderers.language.list + tableConfig: null }), created() { - this.tableConfig.items = LanguagesApi.getAll; + this.tableConfig = this.zero.getRenderer('language').list; } } \ No newline at end of file diff --git a/zero.Web.UI/App/renderers/language.js b/zero.Web.UI/App/renderers/language.js index 0a667e3e..842a4d42 100644 --- a/zero.Web.UI/App/renderers/language.js +++ b/zero.Web.UI/App/renderers/language.js @@ -1,4 +1,7 @@ -export default { + +import LanguagesApi from 'zero/resources/languages'; + +export default { alias: 'language', labelTemplate(field) @@ -40,6 +43,7 @@ ], list: { + items: LanguagesApi.getAll, labelPrefix: '@language.fields.', search: null, columns: {