Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
oyuntuyab committed Oct 6, 2023
2 parents 31f3708 + 400ef31 commit aa861bd
Show file tree
Hide file tree
Showing 8 changed files with 214 additions and 109 deletions.
2 changes: 1 addition & 1 deletion .env.development
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ LAMBDA_SUB_TITLE="Lambda platform"
LAMBDA_DESCRIPTION="Let's develop smart, fast and productive"
LAMBDA_FAVICON="/assets/images/favicon.png"
LAMBDA_ROOT="@lambda-platform/lambda-vue"
LAMBDA_MENU_LAYOUT="sidemenu" //sidemenu, topmenu, levelmenu
LAMBDA_MENU_LAYOUT="sidemenu"

4 changes: 4 additions & 0 deletions nuxt.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ let viteAlies = [
{
find: '@',
replacement: pathResolve('src') + '/',
},
{
find: 'vue-i18n',
replacement: 'vue-i18n/dist/vue-i18n.cjs.js',
}
]
if(process.env.LAMBDA_ROOT !== "@lambda-platform/lambda-vue" && process.env.LAMBDA_ROOT != ""){
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"@zougt/some-loader-utils": "^1.4.3",
"apite": "^1.4.1",
"color": "^4.2.3",
"nuxt": "3.3.3",
"nuxt": "3.7.4",
"patch-vue-directive-ssr": "0.0.1",
"sass": "1.45.1",
"sass-loader": "12.4.0",
Expand All @@ -42,7 +42,7 @@
"@firebase/messaging": "^0.10.0",
"@headlessui/vue": "^1.6.7",
"@heroicons/vue": "^1.0.6",
"@lambda-platform/lambda-vue": "3.2.13",
"@lambda-platform/lambda-vue": "3.2.18",
"@nuxt/postcss8": "^1.1.3",
"@turf/turf": "^6.5.0",
"@vue/apollo-option": "^4.0.0-alpha.17",
Expand Down Expand Up @@ -75,7 +75,7 @@
"tinycolor2": "^1.6.0",
"vue-awesome-swiper": "^5.0.1",
"vue-axios": "^3.4.1",
"vue-i18n": "^9.2.2",
"vue-i18n": "^9.5.0",
"vue-inline-svg": "^3.1.0",
"vue-social-sharing": "^4.0.0-alpha4",
"vuex": "^4.0.2",
Expand Down
113 changes: 113 additions & 0 deletions src/examples/superset.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<template>
<div>
<portal to="header-left">
<div class="page-title float-left">
<div class="float-left pt-3">
<h1 class="text-gray-700 dark:text-gray-200 text-base m-0 ">Шуурхай удирдлага</h1>
<h2 class="text-gray-400 text-xs m-0"><span>Шуурхай удирдлага</span></h2>
</div>
</div>
</portal>
<div id="supersetContainer"></div>
</div>
</template>
<script>
import { embedDashboard } from "@superset-ui/embedded-sdk";
import axios from "~/plugins/core/axios";
export default {
name: 'SupersetDashboard',
methods:{
async loginAndGetDashboardData(id) {
try {
const data = {
password: 'embed',
provider: 'db',
refresh: true,
username: 'embed'
};
const config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://analytic.test.mn/api/v1/security/login',
headers: {
'Content-Type': 'application/json',
},
data: JSON.stringify(data)
};
const response = await axios(config);
try {
const data = {
user: {
username: 'embed',
first_name: 'embed',
last_name: 'embed'
},
resources: [
{
type: 'dashboard',
id: id
}
],
rls: []
};
const config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://analytic.test.mn/api/v1/security/guest_token/',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + response.data.access_token, // Replace with your actual access token
},
data: JSON.stringify(data)
};
const response2 = await axios(config);
return response2.data.token;
}
catch (error) {
console.log(error);
}
} catch (error) {
console.log(error);
}
},
async initDashboard(id){
const token = await this.loginAndGetDashboardData(id);
await embedDashboard({
id: id, // given by the Superset embedding UI
supersetDomain: "https://analytic.test.mn",
mountPoint: document.getElementById("supersetContainer"), // any html element that can contain an iframe
fetchGuestToken: () => token,
dashboardUiConfig: { // dashboard UI config: hideTitle, hideTab, hideChartControls, filters.visible, filters.expanded (optional)
hideTitle: true,
filters: {
expanded: false,
}
},
});
}
},
mounted() {
this.initDashboard("xxx");
},
};
</script>
<style lang="scss">
#supersetContainer{
width: 100%;
height: calc(100vh - 100px);
iframe{
width: 100%;
height: calc(100vh - 100px);
}
}
</style>
7 changes: 4 additions & 3 deletions src/pages/admin/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@
<script lang="ts">
import ls from "../../utils/Storage";
definePageMeta({
layout: 'module',
})
import { LAMBDA_CONFIG } from '~/store/mutation-types'
import { KRUDS, MENU, PERMISSIONS } from '~/store/mutation-types'
import HomeMenuRender from '~/components/Menu/HomeMenuRender.vue'
Expand All @@ -36,6 +34,9 @@ export default {
HomeMenuRender
},
setup (props, { emit }) {
definePageMeta({
layout: 'module',
})
const kruds = ls.get(KRUDS)
const permissions = ls.get(PERMISSIONS)
Expand Down
162 changes: 83 additions & 79 deletions src/pages/auth/forgot.vue
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
<template>
<div class="form-wrap">
<div class="form-content">
<h2>{{ lang.forgot }}</h2>
<form v-on:submit.prevent="onSubmit" method="post" class="login-form">
<div class="form-wrap">
<div class="form-content">
<h2>{{ lang.forgot }}</h2>
<form v-on:submit.prevent="onSubmit" method="post" class="login-form">

<div class="form-element input">
<input type="text" id="email" v-model="credentials.email" name="email" autocomplete="off"
:placeholder="lang.email">
<span class="icon user"></span>
</div>
<div class="form-element input">
<input type="text" id="email" v-model="credentials.email" name="email" autocomplete="off"
:placeholder="lang.email">
<span class="icon user"></span>
</div>

<div class="form-element">
<label style="font-size: 12px">{{ lang.forgotDescription }}</label>
</div>
<div class="form-element">
<label style="font-size: 12px">{{ lang.forgotDescription }}</label>
</div>

<div class="form-element ">
<button id="submit" class="button" :disabled="loading" style="width: 100%">
<span id="submitTxt">{{ lang.sendPasswordResetCode }}</span>
<span class="loader">
<div class="form-element ">
<button id="submit" class="button" :disabled="loading" style="width: 100%">
<span id="submitTxt">{{ lang.sendPasswordResetCode }}</span>
<span class="loader">
<div class="sk-fading-circle" v-if="loading">
<div class="sk-circle1 sk-circle"></div>
<div class="sk-circle2 sk-circle"></div>
Expand All @@ -33,77 +33,81 @@
<div class="sk-circle12 sk-circle"></div>
</div>
</span>
</button>

</div>
</form>
</button>

<div id="msg">
<span v-if="isSuccess" class="success">{{ successMsg }}</span>
<span v-if="isError" class="error">{{ errorMsg }}</span>
</div>
</div>
</form>

<div id="msg">
<span v-if="isSuccess" class="success">{{ successMsg }}</span>
<span v-if="isError" class="error">{{ errorMsg }}</span>
</div>
</div>
</div>
</template>

<script>
definePageMeta({
layout: "agent",
});
import axios from "axios"
export default {
props: ["selectedLang"],
name: "aside-forgot",
data() {
return {
loading: false,
isSuccess: false,
isError: false,
errorMsg: '',
successMsg: '',
credentials: {
email: null
},
}
},
computed: {
lang() {
const labels = ['forgot', 'email', 'forgotDescription', 'sendPasswordResetCode', 'emailSendError'];
return labels.reduce((obj, key, i) => {
obj[key] = this.$t('user.' + labels[i]);
return obj;
}, {});
}
},
methods: {
onSubmit() {
this.isSuccess = false;
this.isError = false;
if (!this.loading) {
this.loading = true;
axios.post('/auth/send-forgot-mail', {...this.credentials, lang: this.selectedLang}).then(({data}) => {
setTimeout(() => {
this.loading = false;
if (data.status) {
this.isSuccess = true;
this.successMsg = data.msg;
setTimeout(() => {
this.$router.push('/auth/password-reset?email='+this.credentials.email);
}, 2100)
} else {
this.isError = true;
this.errorMsg = this.lang.emailSendError;
}
}, 1000);
}).catch(e => {
this.errorMsg = e.response.data.error;
setTimeout(() => {
this.loading = false;
this.isError = true;
}, 1000);
})
}
},
props: ["selectedLang"],
name: "aside-forgot",
data() {
return {
loading: false,
isSuccess: false,
isError: false,
errorMsg: '',
successMsg: '',
credentials: {
email: null
},
}
},
beforeCreate() {
definePageMeta({
layout: 'agent',
})
},
computed: {
lang() {
const labels = ['forgot', 'email', 'forgotDescription', 'sendPasswordResetCode', 'emailSendError'];
return labels.reduce((obj, key, i) => {
obj[key] = this.$t('user.' + labels[i]);
return obj;
}, {});
}
},
methods: {
onSubmit() {
this.isSuccess = false;
this.isError = false;
if (!this.loading) {
this.loading = true;
axios.post('/auth/send-forgot-mail', {...this.credentials, lang: this.selectedLang}).then(({data}) => {
setTimeout(() => {
this.loading = false;
if (data.status) {
this.isSuccess = true;
this.successMsg = data.msg;
setTimeout(() => {
this.$router.push('/auth/password-reset?email=' + this.credentials.email);
}, 2100)
} else {
this.isError = true;
this.errorMsg = this.lang.emailSendError;
}
}, 1000);
}).catch(e => {
this.errorMsg = e.response.data.error;
setTimeout(() => {
this.loading = false;
this.isError = true;
}, 1000);
})
}
},
}
}
</script>
9 changes: 6 additions & 3 deletions src/pages/auth/login.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
></component>
</template>
<script>
definePageMeta({
layout: 'agent',
})
import axios from 'axios'
import {
ACCESS_TOKEN,
Expand All @@ -33,6 +31,11 @@ export default {
}
},
beforeCreate() {
definePageMeta({
layout: 'agent',
})
},
methods: {
onSuccess (data) {
Expand Down
Loading

0 comments on commit aa861bd

Please sign in to comment.