@simitgroup/simpleapp-generator 1.3.4-alpha → 1.4.0-alpha
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/buildinschemas/permission.d.ts.map +1 -1
- package/dist/buildinschemas/permission.js +10 -6
- package/dist/buildinschemas/permission.js.map +1 -1
- package/dist/buildinschemas/user.d.ts.map +1 -1
- package/dist/buildinschemas/user.js +22 -2
- package/dist/buildinschemas/user.js.map +1 -1
- package/dist/generate.js +20 -6
- package/dist/generate.js.map +1 -1
- package/dist/type.d.ts +2 -0
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js.map +1 -1
- package/package.json +1 -1
- package/src/buildinschemas/permission.ts +10 -6
- package/src/buildinschemas/user.ts +23 -3
- package/src/generate.ts +19 -6
- package/src/type.ts +3 -1
- package/templates/basic/nest/controller.ts.eta +1 -1
- package/templates/basic/nest/service.ts.eta +7 -3
- package/templates/basic/nuxt/pages.[id].vue.eta +4 -4
- package/templates/basic/nuxt/pages.mobile.[id].vue.eta +39 -0
- package/templates/basic/nuxt/pages.mobile.landing.vue.eta +69 -0
- package/templates/nest/.gitignore.eta +6 -1
- package/templates/nest/src/simpleapp/apischemas/index.ts._eta +29 -0
- package/templates/nest/src/simpleapp/generate/commons/user.context.ts.eta +22 -12
- package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +26 -1
- package/templates/nest/src/simpleapp/generate/workflow/workflow.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/profile/profile.service.ts.eta +1 -1
- package/templates/nest/src/simpleapp/profile/profile.types.ts.eta +1 -1
- package/templates/nest/src/simpleapp/services/perm.service.ts.eta +5 -7
- package/templates/nest/src/simpleapp/services/user.service.ts.eta.old +118 -0
- package/templates/nest/src/simpleapp/types/index.ts._eta +8 -0
- package/templates/nuxt/app.vue._eta +31 -17
- package/templates/nuxt/assets/css/style.css._eta +4 -4
- package/templates/nuxt/assets/primevue/passthrough.ts._eta +10 -4
- package/templates/nuxt/components/calendar/CalendarByResource.vue.eta +181 -163
- package/templates/nuxt/components/calendar/CalendarSmall.vue.eta +8 -6
- package/templates/nuxt/components/form/FormDocnoformat.vue.eta +174 -0
- package/templates/nuxt/components/form/FormUser.vue._eta +91 -0
- package/templates/nuxt/components/form/user/FormUserPermission.vue.eta +83 -0
- package/templates/nuxt/components/header/HeaderBar.vue._eta +43 -39
- package/templates/nuxt/components/header/button/HeaderButtonMenuPicker.vue._eta +46 -38
- package/templates/nuxt/components/header/button/HeaderButtonProfile.vue.eta +9 -9
- package/templates/nuxt/components/mobile/MobileToolbar.vue.eta +12 -8
- package/templates/nuxt/components/overlay/OverlayPanelWithToolBar.vue.eta +1 -1
- package/templates/nuxt/components/page/PageDocList.vue.eta +6 -4
- package/templates/nuxt/components/renderer/RendererDateTime.vue.eta +13 -0
- package/templates/nuxt/components/renderer/RendererForeignKey.vue.eta +6 -3
- package/templates/nuxt/components/simpleApp/SimpleAppAutocomplete.vue.eta +3 -4
- package/templates/nuxt/components/simpleApp/SimpleAppFieldContainer.vue.eta +20 -7
- package/templates/nuxt/components/simpleApp/SimpleAppFormToolBar.vue._eta +2 -5
- package/templates/nuxt/components/simpleApp/SimpleAppInput.vue.eta +56 -12
- package/templates/nuxt/components/user/UserButtonCreateTenant.vue._eta +2 -6
- package/templates/nuxt/composables/date.generate.ts.eta +3 -1
- package/templates/nuxt/composables/goTo.generate.ts.eta +4 -1
- package/templates/nuxt/composables/refreshDocumentList.generate.ts.eta +13 -2
- package/templates/nuxt/layouts/mobile.vue._eta +26 -12
- package/templates/nuxt/nuxt.config.ts._eta +27 -20
- package/templates/nuxt/pages/[xorg]/{user/index.vue.eta → docnoformat/[id].vue.eta} +11 -9
- package/templates/nuxt/pages/[xorg]/docnoformat.vue.eta +51 -20
- package/templates/nuxt/pages/[xorg]/mobile/docnoformat/index.vue.eta +59 -0
- package/templates/nuxt/pages/[xorg]/mobile/index.vue._eta +19 -0
- package/templates/nuxt/pages/[xorg]/mobile/organization/index.vue.eta +138 -0
- package/templates/nuxt/pages/[xorg]/mobile/pickgroup.vue._eta +35 -0
- package/templates/nuxt/pages/[xorg]/mobile/user/index.vue.eta +231 -0
- package/templates/nuxt/pages/[xorg]/organization.vue.eta +80 -61
- package/templates/nuxt/pages/[xorg]/pickgroup.vue._eta +35 -0
- package/templates/nuxt/pages/[xorg]/user.vue.eta +91 -74
- package/templates/nuxt/pages/profile.vue.eta +7 -7
- package/templates/nuxt/plugins/20.simpleapp-userstore.ts.eta +14 -3
- package/templates/nuxt/simpleapp/generate/clients/SimpleAppClient.ts.eta +18 -16
- package/templates/nuxt/simpleapp/generate/commons/documents.ts.eta +1 -1
- package/templates/nuxt/types/events.ts.eta +1 -0
- package/templates/nuxt/types/simpleappinput.ts.eta +3 -2
- package/templates/nuxt/types/user.ts.eta +2 -1
- package/templates/project/lang/default._json +150 -67
- package/tsconfig.tsbuildinfo +1 -1
- package/templates/nest/src/simpleapp/services/user.service.ts.etax +0 -66
- package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/[id].vue.eta +0 -13
- package/templates/nuxt/pages/[xorg]/docnoformat/[doctype]/new.vue.eta +0 -229
- package/templates/nuxt/pages/[xorg]/docnoformat/[doctype].vue.eta +0 -38
- package/templates/nuxt/pages/[xorg]/docnoformat/index.vue.eta +0 -11
- package/templates/nuxt/pages/[xorg]/user/[id].vue.eta +0 -39
- package/templates/nuxt/pages/[xorg]/user/form.vue.eta +0 -334
- package/templates/nuxt/pages/[xorg]/user/new.vue.eta +0 -18
- package/templates/nuxt/pages/[xorg]/user/viewer.vue.eta +0 -29
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
* MODIFICATION OVERRIDE BY GENERATEOR
|
|
4
4
|
* last change 2024-01-01
|
|
5
5
|
* Author: Ks Tan
|
|
6
|
+
* permission design
|
|
7
|
+
* 1. during sign in, user can pick run as what group user
|
|
8
|
+
* 2.
|
|
6
9
|
*/
|
|
7
10
|
import {
|
|
8
11
|
Injectable,
|
|
@@ -50,7 +53,7 @@ export class UserContext {
|
|
|
50
53
|
protected ssoACL: any = {};
|
|
51
54
|
protected token: string = '';
|
|
52
55
|
protected refreshtoken: string = '';
|
|
53
|
-
protected
|
|
56
|
+
protected groups: string[] = [];
|
|
54
57
|
protected branchCode: string = '';
|
|
55
58
|
protected branchName: string = '';
|
|
56
59
|
protected orgCode: string = '';
|
|
@@ -92,7 +95,7 @@ export class UserContext {
|
|
|
92
95
|
getTimeZone = () => this.timeZone;
|
|
93
96
|
getCountry = () => this.country;
|
|
94
97
|
getOffsetMinute = () => this.offsetMinute;
|
|
95
|
-
|
|
98
|
+
getGroups = () => this.groups;
|
|
96
99
|
getCurrency = () => this.currency;
|
|
97
100
|
getMoreProps = () => this.moreProps;
|
|
98
101
|
getRoles = () => this.roles;
|
|
@@ -107,7 +110,7 @@ export class UserContext {
|
|
|
107
110
|
data.push({
|
|
108
111
|
_id: b._id,
|
|
109
112
|
branch: b.branch[0],
|
|
110
|
-
|
|
113
|
+
groups: b.groups,
|
|
111
114
|
xOrg: this.generateXorg(b.tenantId, b.orgId, b.branchId),
|
|
112
115
|
});
|
|
113
116
|
}
|
|
@@ -204,9 +207,16 @@ export class UserContext {
|
|
|
204
207
|
if (this.tenantId > 0) {
|
|
205
208
|
const myperm = userinfo.permissions[0];
|
|
206
209
|
|
|
207
|
-
if (myperm && myperm.
|
|
208
|
-
userinfo.
|
|
209
|
-
userinfo.roles =
|
|
210
|
+
if (myperm && myperm.groups) {
|
|
211
|
+
userinfo.groups = myperm.groups;
|
|
212
|
+
userinfo.roles = [] as Role[];
|
|
213
|
+
for (let g = 0; g < userinfo.groups.length; g++) {
|
|
214
|
+
const roles: Role[] = rolegroups[userinfo.groups[g]]();
|
|
215
|
+
for (let r = 0; r < roles.length; r++) {
|
|
216
|
+
if (!userinfo.roles.includes(roles[r]))
|
|
217
|
+
userinfo.roles.push(roles[r]);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
210
220
|
|
|
211
221
|
userinfo.branchRecordId = myperm.currentbranch[0].branchRecordId;
|
|
212
222
|
userinfo.branchCode = myperm.currentbranch[0].branchCode;
|
|
@@ -220,7 +230,7 @@ export class UserContext {
|
|
|
220
230
|
userinfo.offsetMinute = myperm.currentorg[0].offsetMinute;
|
|
221
231
|
}
|
|
222
232
|
} else {
|
|
223
|
-
userinfo.
|
|
233
|
+
userinfo.groups = [];
|
|
224
234
|
}
|
|
225
235
|
|
|
226
236
|
const currentitme = new Date(this.lastActivity).getTime();
|
|
@@ -273,7 +283,7 @@ export class UserContext {
|
|
|
273
283
|
this.offsetMinute = userinfo['offsetMinute'] ?? '';
|
|
274
284
|
this.orgRecordId = userinfo['orgRecordId'] ?? '';
|
|
275
285
|
this.branchRecordId = userinfo['branchRecordId'] ?? '';
|
|
276
|
-
this.
|
|
286
|
+
this.groups = userinfo['groups'] ?? [];
|
|
277
287
|
this.roles = userinfo['roles'] ?? [Role.Everyone, Role.User];
|
|
278
288
|
this.moreProps = this.setMoreProps(userinfo);
|
|
279
289
|
} else {
|
|
@@ -286,7 +296,7 @@ export class UserContext {
|
|
|
286
296
|
}
|
|
287
297
|
this.logger.debug(
|
|
288
298
|
`${this.uid} have _id (${this.getId()}), group (${
|
|
289
|
-
this.
|
|
299
|
+
this.groups
|
|
290
300
|
}) and role (${this.getRoles()})`,
|
|
291
301
|
);
|
|
292
302
|
|
|
@@ -397,7 +407,7 @@ export class UserContext {
|
|
|
397
407
|
email: this.getEmail(),
|
|
398
408
|
uid: this.getUid(),
|
|
399
409
|
fullName: this.getFullname(),
|
|
400
|
-
|
|
410
|
+
groups: this.groups,
|
|
401
411
|
roles: this.getRoles(),
|
|
402
412
|
branches: this.getBranches(),
|
|
403
413
|
invites: await this.getInvites(),
|
|
@@ -506,7 +516,7 @@ export class UserContext {
|
|
|
506
516
|
const o = this.ssoACL;
|
|
507
517
|
const ssoclient = process.env.OAUTH2_CLIENTID;
|
|
508
518
|
const adminRole = process.env.OAUTH2_ADMINROLE;
|
|
509
|
-
const adminemails = process.env.ADMIN_EMAIL.split(',')
|
|
519
|
+
const adminemails = process.env.ADMIN_EMAIL.split(',');
|
|
510
520
|
// return false
|
|
511
521
|
if (adminemails.includes(this.getEmail())) {
|
|
512
522
|
return true;
|
|
@@ -631,7 +641,7 @@ export class UserContext {
|
|
|
631
641
|
_id: item._id,
|
|
632
642
|
orgId: item.orgId,
|
|
633
643
|
branchId: item.branchId,
|
|
634
|
-
|
|
644
|
+
groups: item.groups,
|
|
635
645
|
orgCode: item.org[0].orgCode,
|
|
636
646
|
orgName: item.org[0].orgName,
|
|
637
647
|
branchCode: item.branch[0].branchCode,
|
|
@@ -273,6 +273,31 @@ export class SimpleAppService<T extends { _id?: string }> {
|
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
+
/**
|
|
277
|
+
* create many from array, for performance reason it submit all item in 1 go, so it won't implement hooks
|
|
278
|
+
* @param appuser
|
|
279
|
+
* @param datas
|
|
280
|
+
*/
|
|
281
|
+
async createMany (appuser: UserContext, datas: T[]){
|
|
282
|
+
if(Array.isArray(datas)){
|
|
283
|
+
for(let i=0 ; i< datas.length; i++){
|
|
284
|
+
const data = datas[i]
|
|
285
|
+
let isolationFilter: any = { ...appuser.getCreateFilter() };
|
|
286
|
+
isolationFilter = this.polishIsolationFilter(isolationFilter, data);
|
|
287
|
+
|
|
288
|
+
Object.assign(data, isolationFilter);
|
|
289
|
+
this.reCalculateValue(data);
|
|
290
|
+
await this.validateData(appuser, data);
|
|
291
|
+
this.applyNestedDateTime(appuser, data, 'create');
|
|
292
|
+
}
|
|
293
|
+
const result = await this.doc.insertMany(datas)
|
|
294
|
+
return result
|
|
295
|
+
|
|
296
|
+
}else{
|
|
297
|
+
throw new BadRequestException(this.getDocumentType() +': create many only support array')
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
276
301
|
async create(appuser: UserContext, data: T) {
|
|
277
302
|
let result;
|
|
278
303
|
if (!data._id) {
|
|
@@ -553,7 +578,7 @@ export class SimpleAppService<T extends { _id?: string }> {
|
|
|
553
578
|
}
|
|
554
579
|
|
|
555
580
|
if (this.hooks.beforeUpdate)
|
|
556
|
-
await this.hooks.beforeUpdate(appuser, id, data,existingdata);
|
|
581
|
+
await this.hooks.beforeUpdate(appuser, id, data, existingdata);
|
|
557
582
|
|
|
558
583
|
const dbsession = appuser.getDBSession();
|
|
559
584
|
if (dbsession && !dbsession.inTransaction()) {
|
|
@@ -67,7 +67,7 @@ export class WorkflowService {
|
|
|
67
67
|
$or: [
|
|
68
68
|
{ 'items.assignee': appuser.getUname() },
|
|
69
69
|
{ 'items.candidateUsers': appuser.getUname() },
|
|
70
|
-
{ 'items.candidateGroups': appuser.
|
|
70
|
+
{ 'items.candidateGroups': appuser.getGroups() },
|
|
71
71
|
],
|
|
72
72
|
});
|
|
73
73
|
const result: UserTaskType[] = tmp.map((proc) => {
|
|
@@ -166,7 +166,7 @@ export class ProfileService {
|
|
|
166
166
|
branchId: branchResult.branchId,
|
|
167
167
|
uid: appuser.getUid(),
|
|
168
168
|
userId: userRecordId,
|
|
169
|
-
|
|
169
|
+
groups: ['admin'],
|
|
170
170
|
};
|
|
171
171
|
this.logger.log(permdata, 'create Permission data');
|
|
172
172
|
const permResult = await this.permsvc.create(appuser, permdata);
|
|
@@ -6,23 +6,20 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { InjectModel } from '@nestjs/mongoose';
|
|
8
8
|
import { Model, PipelineStage } from 'mongoose';
|
|
9
|
-
import { Injectable } from '@nestjs/common';
|
|
9
|
+
import { Injectable, InternalServerErrorException } from '@nestjs/common';
|
|
10
10
|
import { PermissionProcessor } from '../generate/processors/perm.processor';
|
|
11
|
-
import
|
|
11
|
+
import * as types from '../generate/types';
|
|
12
12
|
import { UserContext } from '../generate/commons/user.context';
|
|
13
13
|
export { Permission } from '../generate/types';
|
|
14
14
|
|
|
15
15
|
@Injectable()
|
|
16
16
|
export class PermissionService extends PermissionProcessor {
|
|
17
17
|
protected strictIsolation = false;
|
|
18
|
-
protected hooks
|
|
19
|
-
constructor(
|
|
20
|
-
@InjectModel('Permission') mydoc: Model<Permission>,
|
|
21
|
-
) {
|
|
18
|
+
protected hooks: types.PermissionHooks = {};
|
|
19
|
+
constructor(@InjectModel('Permission') mydoc: Model<types.Permission>) {
|
|
22
20
|
super(mydoc);
|
|
23
21
|
}
|
|
24
22
|
|
|
25
|
-
|
|
26
23
|
async runListUser(appuser: UserContext) {
|
|
27
24
|
const getallrecords: PipelineStage = { $match: {} };
|
|
28
25
|
const lookupuser: PipelineStage = {
|
|
@@ -55,4 +52,5 @@ export class PermissionService extends PermissionProcessor {
|
|
|
55
52
|
// delete result['users'][0]
|
|
56
53
|
return finalresult;
|
|
57
54
|
}
|
|
55
|
+
|
|
58
56
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by simpleapp generator. It is changable
|
|
3
|
+
* --remove-this-line-to-prevent-override--
|
|
4
|
+
* last change 2024-02-23
|
|
5
|
+
* Author: Ks Tan
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* This file was automatically generated by simpleapp generator.
|
|
10
|
+
|
|
11
|
+
* last change 2023-09-23
|
|
12
|
+
* Author: Ks Tan
|
|
13
|
+
*/
|
|
14
|
+
import { InjectModel } from '@nestjs/mongoose';
|
|
15
|
+
import { Model, PipelineStage } from 'mongoose';
|
|
16
|
+
import { Injectable, InternalServerErrorException, NotFoundException } from '@nestjs/common';
|
|
17
|
+
import { UserContext } from '../generate/commons/user.context';
|
|
18
|
+
import { UserProcessor } from '../generate/processors/user.processor';
|
|
19
|
+
//import { User,UserHooks} from '../generate/types';
|
|
20
|
+
import * as types from '../generate/types';
|
|
21
|
+
import { PermissionService } from './perm.service';
|
|
22
|
+
export { User } from '../generate/types';
|
|
23
|
+
|
|
24
|
+
@Injectable()
|
|
25
|
+
export class UserService extends UserProcessor {
|
|
26
|
+
protected strictIsolation = false;
|
|
27
|
+
|
|
28
|
+
public hooks: types.UserHooks = {};
|
|
29
|
+
constructor(
|
|
30
|
+
@InjectModel('User') mydoc: Model<types.User>,
|
|
31
|
+
private permService:PermissionService
|
|
32
|
+
) {
|
|
33
|
+
super(mydoc);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/***************************** begin x-document-api definitions *****************************************/
|
|
37
|
+
async runGetPermission(
|
|
38
|
+
appuser: UserContext,
|
|
39
|
+
|
|
40
|
+
id: string,
|
|
41
|
+
) {
|
|
42
|
+
const pipelines:PipelineStage[] = []
|
|
43
|
+
|
|
44
|
+
pipelines.push({
|
|
45
|
+
$match:{userId : id}
|
|
46
|
+
})
|
|
47
|
+
// tenantId: {type:'integer',default:1,minimum:0},
|
|
48
|
+
// orgId: {type:'integer',default:1,minimum:0 },
|
|
49
|
+
// branchId: {type:'integer',default:1,minimum:0 },
|
|
50
|
+
// group: {type: "string"},
|
|
51
|
+
// uid: {type: "string",description:"sso unique identity, which is keycloak sub"},
|
|
52
|
+
// userId : {type:"string","x-foreignkey":"user", format:"uuid",description:"primary key from user" }
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// tenantId: {type:'integer',default:1,minimum:1 },
|
|
56
|
+
// orgId: {type:'integer',default:1,minimum:1 },
|
|
57
|
+
// branchId: {type:'integer',default:1,minimum:1 },
|
|
58
|
+
// organization:{
|
|
59
|
+
// type:"object",
|
|
60
|
+
// "x-foreignkey":"organization",
|
|
61
|
+
// properties:{
|
|
62
|
+
// "_id":{"type":"string"},
|
|
63
|
+
// "code":{"type":"string"},
|
|
64
|
+
// "label":{"type":"string"},
|
|
65
|
+
// "orgId":{"type":"integer"}
|
|
66
|
+
// }
|
|
67
|
+
// },
|
|
68
|
+
// branchCode: {type: "string",minLength:1},
|
|
69
|
+
// branchName: {type: "string",minLength:1},
|
|
70
|
+
pipelines.push({ $lookup: {
|
|
71
|
+
from: 'branch',
|
|
72
|
+
as :'branch',
|
|
73
|
+
localField:'branchId',
|
|
74
|
+
foreignField:'branchId',
|
|
75
|
+
}})
|
|
76
|
+
type TmpPermissionType = types.Permission & { branch: types.Branch[]}
|
|
77
|
+
try{
|
|
78
|
+
const results = await this.permService.aggregate(appuser,pipelines) as TmpPermissionType[]
|
|
79
|
+
if(results ){
|
|
80
|
+
|
|
81
|
+
const perms : types.UserPermission[] = results.map(item=>{
|
|
82
|
+
const b = item.branch[0]
|
|
83
|
+
console.log("b==",b)
|
|
84
|
+
const perm:types.UserPermission = {
|
|
85
|
+
_id:item._id,
|
|
86
|
+
groups:item.groups,
|
|
87
|
+
userId:item.userId,
|
|
88
|
+
branchId:item.branchId,
|
|
89
|
+
branch: {
|
|
90
|
+
_id: b._id,
|
|
91
|
+
code: b.branchCode,
|
|
92
|
+
label: b.branchName,
|
|
93
|
+
organization: b.organization
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return perm
|
|
97
|
+
})
|
|
98
|
+
return perms
|
|
99
|
+
}else{
|
|
100
|
+
return []
|
|
101
|
+
}
|
|
102
|
+
}catch(e){
|
|
103
|
+
console.log("unknown error",e)
|
|
104
|
+
throw new InternalServerErrorException(e)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async runUpdatePermission(
|
|
108
|
+
appuser: UserContext,
|
|
109
|
+
|
|
110
|
+
id: string,
|
|
111
|
+
|
|
112
|
+
data: types.UserPermission[],
|
|
113
|
+
) {
|
|
114
|
+
return 'OK';
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/***************************** end x-document-api definitions *****************************************/
|
|
118
|
+
}
|
|
@@ -1,26 +1,40 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<NuxtLayout :name="getLayout()">
|
|
3
|
+
<SessionBlock/>
|
|
4
|
+
<EventDocumentViewer></EventDocumentViewer>
|
|
5
|
+
<EventDecision/>
|
|
6
|
+
<EventNotification/>
|
|
7
|
+
<NuxtPage/>
|
|
8
|
+
</NuxtLayout>
|
|
9
9
|
</template>
|
|
10
|
+
|
|
10
11
|
<script setup lang="ts">
|
|
11
12
|
/**
|
|
12
|
-
* This file was automatically generated by simpleapp generator
|
|
13
|
-
*
|
|
14
|
-
* last change
|
|
15
|
-
*
|
|
13
|
+
* This file was automatically generated by simpleapp generator. Every
|
|
14
|
+
* MODIFICATION OVERRIDE BY GENERATEOR
|
|
15
|
+
* last change 2023-11-12
|
|
16
|
+
* Author: Ks Tan
|
|
16
17
|
*/
|
|
17
|
-
watch(()=>useRoute().params['xorg'],(newval,oldvalue)=>{
|
|
18
|
-
reloadUserStore()
|
|
18
|
+
watch(()=>useRoute().params['xorg'],async (newval,oldvalue)=>{
|
|
19
|
+
await reloadUserStore()
|
|
20
|
+
if(getPathPara('xorg','')!=''){
|
|
21
|
+
if(!getUserProfile()?.currentGroup) goTo('pickgroup')
|
|
22
|
+
}
|
|
19
23
|
})
|
|
20
24
|
|
|
21
25
|
const getLayout = ()=>{
|
|
22
|
-
const { status } = useAuth();
|
|
26
|
+
const { status } = useAuth();
|
|
27
|
+
|
|
23
28
|
if(status.value=='unauthenticated') return 'loginlayout'
|
|
24
|
-
else
|
|
29
|
+
else {
|
|
30
|
+
if (isMobile()) return 'mobile'
|
|
31
|
+
else 'default'
|
|
32
|
+
}
|
|
25
33
|
}
|
|
26
|
-
|
|
34
|
+
|
|
35
|
+
onMounted(()=>{
|
|
36
|
+
const currentgroup = useCookie('currentGroup').value
|
|
37
|
+
//if no xorg, no enforce pick group
|
|
38
|
+
if(getCurrentXorg() && !currentgroup) goTo('pickgroup')
|
|
39
|
+
})
|
|
40
|
+
</script>
|
|
@@ -13,16 +13,16 @@
|
|
|
13
13
|
@apply bg-gray-300 dark:bg-gray-600
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
[aria-selected=true]{
|
|
16
|
+
/* [aria-selected=true]{
|
|
17
17
|
@apply bg-primary-100
|
|
18
|
-
}
|
|
19
|
-
|
|
18
|
+
} */
|
|
19
|
+
/*
|
|
20
20
|
[data-pc-group-section=pagebutton]{
|
|
21
21
|
@apply p-2 m-0 rounded-none border
|
|
22
22
|
}
|
|
23
23
|
[data-pc-section=pagebutton]{
|
|
24
24
|
@apply p-3 m-0 border
|
|
25
|
-
}
|
|
25
|
+
} */
|
|
26
26
|
html {
|
|
27
27
|
overflow: hidden;
|
|
28
28
|
overscroll-behavior: none;
|
|
@@ -25,9 +25,15 @@ const CustomTailwind = usePassThrough(
|
|
|
25
25
|
// title:{class:''},
|
|
26
26
|
// header:{class:''}
|
|
27
27
|
},
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
// tabview:{
|
|
29
|
+
// tabpanel:{
|
|
30
|
+
// headeraction:{class:'p-tabview-nav-link p-tabview-header-action items-center cursor-pointer flex overflow-hidden relative select-none text-decoration-none select-none border-b-2 p-5 font-bold rounded-t-md transition-shadow duration-200 m-0 transition-colors duration-200 bg-white border-blue-500 text-blue-500 dark:bg-gray-600 dark:border-blue-300 dark:text-blue-300'}
|
|
31
|
+
// },
|
|
32
|
+
// },
|
|
33
|
+
|
|
34
|
+
// tabpanel:{
|
|
35
|
+
// headerTitle:{class:'m-0 p-0'},
|
|
36
|
+
// },
|
|
31
37
|
accordiontab:{
|
|
32
38
|
content:{style:'padding: 0.7rem;'}
|
|
33
39
|
|
|
@@ -49,7 +55,7 @@ const CustomTailwind = usePassThrough(
|
|
|
49
55
|
//},
|
|
50
56
|
button:{root:{class: 'focus:outline-none transition duration-150 ease-in-out rounded p-2 m-1 border dark:border-gray-600'}},
|
|
51
57
|
dialog:{
|
|
52
|
-
root:{class:[' w-full
|
|
58
|
+
root:{class:[' w-full md:w-auto bodycolorclass max-w-full md:h-3/4 lg:h-1/2 border border-gray-400 dark:bg-gray-700 m-2 rounded-lg']},
|
|
53
59
|
header:{class: 'p-dialog-header flex items-center text-2xl justify-between shrink-0 border-t-0 rounded-tl-lg rounded-tr-lg p-6 bodycolorclass'},
|
|
54
60
|
footer:{class:'p-dialog-footer flex gap-2 shrink-0 justify-end align-center border-t-0 px-6 pb-6 text-right rounded-b-lg bodycolorclass'},
|
|
55
61
|
content:{class:'p-dialog-content overflow-y-auto px-6 pb-8 pt-0 rounded-bl-lg rounded-br-lg h-full bodycolorclass'}
|