@hostlink/nuxt-light 0.0.99 → 0.0.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "light",
3
3
  "configKey": "light",
4
- "version": "0.0.99"
4
+ "version": "0.0.101"
5
5
  }
package/dist/module.mjs CHANGED
@@ -59,8 +59,7 @@ const module = defineNuxtModule({
59
59
  { name: "getModelColumns", from },
60
60
  { name: "getModelFields", from },
61
61
  { name: "getModelField", from },
62
- { name: "getGQLFields", from },
63
- { name: "sv", from }
62
+ { name: "getGQLFields", from }
64
63
  ]);
65
64
  addPlugin({
66
65
  src: resolver.resolve("./runtime/plugin"),
@@ -7,9 +7,9 @@ import { ref, computed, reactive, provide, watch } from 'vue';
7
7
  import { useRuntimeConfig } from 'nuxt/app';
8
8
 
9
9
  //download system value
10
- import { download } from './../lib/SystemValue'
10
+ /* import { download } from './../lib/SystemValue'
11
11
  await download();
12
-
12
+ */
13
13
  const config = useRuntimeConfig();
14
14
 
15
15
  const appVersion = config.public.appVersion ?? '0.0.1';
@@ -31,10 +31,11 @@ const COLORS = [
31
31
 
32
32
  defineEmits(['update:theme', 'update:menuOverlayHeader', 'update:dense', 'update:color', 'update:miniState', 'update:footer'])
33
33
 
34
- const color = defineModel("color", { type: String, default: "primary" })
35
-
36
-
37
34
  const props = defineProps({
35
+ color: {
36
+ type: String,
37
+ default: 'primary'
38
+ },
38
39
  menuOverlayHeader: {
39
40
  type: Boolean,
40
41
  default: false
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
- import { reactive } from 'vue'
3
2
  import { useQuasar, QTable } from 'quasar';
4
3
  import { ref, computed, onMounted, useSlots, useAttrs } from "vue";
5
4
  import { t, deleteObject, q, useLight, GQLFieldBuilder } from '../';
5
+ import { toQuery } from '@hostlink/light';
6
6
 
7
7
  const errors = ref<InstanceType<any>>([]);
8
8
 
@@ -20,7 +20,7 @@ const props = defineProps({
20
20
  sortable?: boolean,
21
21
  searchable?: boolean,
22
22
  searchType?: string,
23
- searchOptions?: Array<any>,
23
+ searchOptions?: Array<any> | Function,
24
24
  searchMultiple?: boolean,
25
25
  field?: string | Object,
26
26
  gqlField?: string | Array<string> | Object,
@@ -95,6 +95,19 @@ props.columns?.forEach((col) => {
95
95
  col.label = t(col.label)
96
96
  })
97
97
 
98
+ if (props.columns) {
99
+ for (let i = 0; i < props.columns.length; i++) {
100
+ if (props.columns[i].searchOptions) {
101
+ let opts = props.columns[i].searchOptions;
102
+ if (typeof opts == "function") {
103
+ props.columns[i].searchOptions = await opts();
104
+ }
105
+
106
+
107
+ }
108
+ }
109
+ }
110
+
98
111
  const renderColumns = computed(() => {
99
112
  if (props.columns == undefined) return undefined;
100
113
 
@@ -114,8 +127,26 @@ const renderColumns = computed(() => {
114
127
  })
115
128
 
116
129
  interface LTableRequest {
117
- loadData: (model: string, filters: any, fields: Array<any>) => void
118
-
130
+ sort: string,
131
+ fields: Array<string>,
132
+ gql: {
133
+ data: {
134
+ __args: {
135
+ limit: number
136
+ },
137
+ [key: string]: any
138
+ },
139
+ meta: {
140
+ total: boolean,
141
+ key: boolean,
142
+ name: boolean
143
+ }
144
+ },
145
+ offset: number,
146
+ limit: number,
147
+ loadData: (model: string, filters: any, fields: Array<any>) => void,
148
+ loadObjects: (model: string, filters: any, fields: Array<any>) => void,
149
+ setData: (data: { data: Array<{ data: any }>, meta: { total: Number, key: string, name: string } }) => void,
119
150
  }
120
151
 
121
152
  const emits = defineEmits<{
@@ -242,94 +273,104 @@ const getData = async (
242
273
 
243
274
  const onRequest = async (p: any) => {
244
275
 
276
+ let sort = "";
277
+ if (p.pagination.sortBy) {
278
+ sort = p.pagination.sortBy + ":" + (p.pagination.descending ? "desc" : "asc");
279
+ }
245
280
 
246
- const callback = {
247
-
248
- loadObjects(model: string, filters: any = null, fields: Array<any> = []) {
249
- return this.loadData("list" + model, filters, fields);
250
- },
251
- async loadData(operation: string, filters: any = null, fields: Array<any> = []) {
252
-
281
+ //fields
282
+ const builder = GQLFieldBuilder();
283
+ if (props.rowKey) {
284
+ builder.add(props.rowKey);
285
+ }
253
286
 
254
- const builder = GQLFieldBuilder();
287
+ props.columns?.forEach((col) => {
288
+ if (col.gqlField) {
289
+ builder.add(col.gqlField);
290
+ }
255
291
 
256
- //
292
+ if (col.name.startsWith("_")) {
293
+ return;
294
+ }
295
+ builder.add(col.name);
257
296
 
258
- if (props.rowKey) {
259
- builder.add(props.rowKey);
260
- }
297
+ });
261
298
 
262
- fields.forEach((f) => {
263
- builder.add(f);
264
- });
299
+ if (actionView) {
300
+ builder.add("canView");
301
+ }
265
302
 
266
- props.columns?.forEach((col) => {
267
- if (col.gqlField) {
268
- builder.add(col.gqlField);
269
- }
303
+ if (actionDelete) {
304
+ builder.add("canDelete");
305
+ }
270
306
 
271
- if (col.name.startsWith("_")) {
272
- return;
273
- }
274
- builder.add(col.name);
307
+ if (activeEdit) {
308
+ builder.add("canUpdate");
309
+ }
275
310
 
276
- });
277
311
 
278
- if (actionView) {
279
- builder.add("canView");
312
+ const callback = {
313
+ sort: sort,
314
+ fields: builder.get(),
315
+ offset: (p.pagination.page - 1) * p.pagination.rowsPerPage,
316
+ limit: p.pagination.rowsPerPage,
317
+ gql: {
318
+ __args: {
319
+ filters: getFilterValue(),
320
+ sort: sort
321
+ },
322
+ data: {
323
+ __args: {
324
+ limit: p.pagination.rowsPerPage,
325
+ offset: (p.pagination.page - 1) * p.pagination.rowsPerPage
326
+ },
327
+ ...toQuery(builder.get())
328
+ },
329
+ meta: {
330
+ total: true,
331
+ key: true,
332
+ name: true
280
333
  }
334
+ },
335
+ setData(data: { data: Array<{ data: any }>, meta: { total: Number, key: string, name: string } }) {
336
+ rows.value = data.data;
337
+ primaryKey.value = data.meta.key;
338
+ modelName.value = data.meta.name;
339
+ pagination.value.rowsNumber = data.meta.total;
281
340
 
282
- if (actionDelete) {
283
- builder.add("canDelete");
284
- }
341
+ pagination.value.page = p.pagination.page;
342
+ pagination.value.sortBy = p.pagination.sortBy;
343
+ pagination.value.descending = p.pagination.descending;
344
+ pagination.value.rowsPerPage = p.pagination.rowsPerPage;
285
345
 
286
- if (activeEdit) {
287
- builder.add("canUpdate");
288
- }
346
+ loading.value = false;
289
347
 
290
- let localFilters = getFilterValue();
348
+ validateData();
349
+ },
350
+ loadObjects(model: string, filters: any = null, fields: Array<any> = []) {
351
+ return this.loadData("list" + model, filters, fields);
352
+ },
353
+ async loadData(operation: string, filters: any = null, fields: Array<any> = []) {
354
+ fields.forEach((f) => {
355
+ builder.add(f);
356
+ })
291
357
 
292
- /* console.log("merge filters", filters)
293
-
294
- console.log("local filters", getFilterValue())
295
- */ //merge the filters
358
+ let localFilters = getFilterValue();
296
359
  if (filters) {
297
360
  localFilters = {
298
361
  ...localFilters,
299
362
  ...filters
300
363
  }
301
364
  }
302
-
303
- let sort = "";
304
- if (p.pagination.sortBy) {
305
- sort = p.pagination.sortBy + ":" + (p.pagination.descending ? "desc" : "asc");
306
- }
307
-
308
-
309
365
  loading.value = true;
310
- const offset = (p.pagination.page - 1) * p.pagination.rowsPerPage;
311
- const limit = p.pagination.rowsPerPage;
312
- const allData = await getData(operation, localFilters, sort, offset, limit, builder.get());
313
-
314
- rows.value = allData.data;
315
-
316
- //meta
317
- primaryKey.value = allData.meta.key;
318
- modelName.value = allData.meta.name;
319
-
320
-
321
- //pagination.value.rowsPerPage = p.pagination.rowsPerPage;
322
- pagination.value.page = p.pagination.page;
323
- pagination.value.sortBy = p.pagination.sortBy;
324
- pagination.value.descending = p.pagination.descending;
325
- pagination.value.rowsNumber = allData.meta.total;
326
-
327
- loading.value = false;
328
- validateData()
366
+ const allData = await getData(operation, localFilters, sort, this.offset, this.limit, builder.get());
367
+ this.setData(allData);
329
368
 
330
369
  }
331
370
  }
332
371
 
372
+
373
+ loading.value = true;
333
374
  //emits("request", p);
334
375
  emits("request", callback);
335
376
 
@@ -430,8 +471,8 @@ const filterFn = (val, update, abort) {
430
471
 
431
472
  const isDark = computed(() => {
432
473
  return light.theme == "dark";
433
-
434
474
  })
475
+
435
476
  </script>
436
477
 
437
478
  <template>
@@ -1,4 +1,5 @@
1
- export declare const sv_data: any;
2
- export declare const loadSV: (name: string) => void;
3
- export declare const download: () => Promise<void>;
1
+ export declare const loadSV: (name: string) => () => Promise<{
2
+ label: string;
3
+ value: any;
4
+ }>;
4
5
  export declare const getSV: (name: string, value: any) => string;
@@ -1,14 +1,7 @@
1
1
  import sv from "./sv.mjs";
2
2
  import { cache } from "./sv.mjs";
3
- export const sv_data = [];
4
3
  export const loadSV = (name) => {
5
- sv_data.push(name);
6
- };
7
- export const download = async () => {
8
- for (let i = 0; i < sv_data.length; i++) {
9
- const name = sv_data[i];
10
- await sv(name);
11
- }
4
+ return () => sv(name);
12
5
  };
13
6
  export const getSV = (name, value) => {
14
7
  const data = cache[name];
@@ -1,3 +1,6 @@
1
1
  export declare const cache: any;
2
- declare const _default: (name: string) => Promise<any>;
2
+ declare const _default: (name: string) => Promise<{
3
+ label: string;
4
+ value: any;
5
+ }>;
3
6
  export default _default;
@@ -1,16 +1,19 @@
1
1
  import { query } from "@hostlink/light";
2
2
  export const cache = {};
3
- export default async (name) => {
3
+ export default (name) => {
4
4
  if (cache[name]) {
5
5
  return cache[name];
6
6
  }
7
- const resp = await query({
8
- systemValue: {
9
- __args: {
10
- name
7
+ const p = new Promise(async (resolve, reject) => {
8
+ const resp = await query({
9
+ systemValue: {
10
+ __args: {
11
+ name
12
+ }
11
13
  }
12
- }
14
+ });
15
+ cache[name] = resp.systemValue;
16
+ resolve(resp.systemValue);
13
17
  });
14
- cache[name] = resp.systemValue;
15
- return resp.systemValue;
18
+ return p;
16
19
  };
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { getObject, getModelFields } from '../../../';
2
+ import { getObject, getModelFields, q, getModelColumns } from '../../../';
3
3
  const obj = await getObject(["user_id", "username", "first_name", "last_name", "email", "phone", "roles", 'status', 'join_date']);
4
4
 
5
5
  </script>
@@ -11,7 +11,7 @@ const obj = await getObject(["user_id", "username", "first_name", "last_name", "
11
11
  <l-btn to="update-role" icon="sym_o_people" permission="user.role.add" label="Update role"></l-btn>
12
12
  </template>
13
13
 
14
- <l-card>
14
+ <l-card class="q-mb-md">
15
15
  <l-list v-model="obj" :fields="getModelFields('User', [
16
16
  'username',
17
17
  'first_name',
@@ -24,5 +24,41 @@ const obj = await getObject(["user_id", "username", "first_name", "last_name", "
24
24
  ])">
25
25
  </l-list>
26
26
  </l-card>
27
+
28
+
29
+
30
+ <l-tabs>
31
+
32
+ <l-tab label="Event log">
33
+ <l-table row-key="eventlog_id" sort-by="eventlog_id:desc"
34
+ :columns="getModelColumns('EventLog', ['eventlog_id', 'class', 'id', 'action', 'created_time'])"
35
+ @request="async (req) => {
36
+
37
+
38
+ const a = {
39
+ listUser: {
40
+ __args: {
41
+ filters: {
42
+ user_id: obj.user_id
43
+ }
44
+ },
45
+ data: {
46
+ __args: {
47
+ limit: 1
48
+ },
49
+ eventLog: req.gql
50
+ }
51
+ }
52
+ }
53
+
54
+ let resp = await q(a);
55
+ req.setData(resp.listUser.data[0].eventLog)
56
+
57
+
58
+ }" />
59
+ </l-tab>
60
+
61
+ </l-tabs>
62
+
27
63
  </l-page>
28
64
  </template>
@@ -38,13 +38,10 @@ export default {
38
38
  label: "Status",
39
39
  searchable: true,
40
40
  searchType: "select",
41
- searchOptions: [{
42
- label: "Active",
43
- value: 0
44
- }, {
45
- label: "Inactive",
46
- value: 1
47
- }],
41
+ searchOptions: [
42
+ { label: "Active", value: 0 },
43
+ { label: "Inactive", value: 1 }
44
+ ],
48
45
  format: (value) => {
49
46
  return ["Active", "Inactive"][value];
50
47
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostlink/nuxt-light",
3
- "version": "0.0.99",
3
+ "version": "0.0.101",
4
4
  "description": "HostLink Nuxt Light Framework",
5
5
  "repository": "@hostlink/nuxt-light",
6
6
  "license": "MIT",
@@ -1,3 +0,0 @@
1
- export declare const sv_data: any;
2
- declare const _default: (name: string) => Promise<void>;
3
- export default _default;
@@ -1,4 +0,0 @@
1
- export const sv_data = [];
2
- export default async (name) => {
3
- sv_data.push(name);
4
- };