Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
K
karname-ui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Reza Sahebgharan
karname-ui
Commits
761f6ecc
Commit
761f6ecc
authored
Sep 18, 2019
by
Reza Sahebgharan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change Password UI
parent
b6147118
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
801 additions
and
278 deletions
+801
-278
App.vue
client/App.vue
+17
-8
AppFooter.vue
client/components/AppFooter.vue
+27
-24
AuthHeader.vue
client/components/AuthHeader.vue
+10
-1
Worklist.vue
client/components/Worklist.vue
+97
-65
main.js
client/main.js
+2
-0
i18n.js
client/plugins/i18n.js
+40
-7
routes.js
client/plugins/routes.js
+5
-0
ChangePassword.vue
client/views/ChangePassword.vue
+284
-0
Login.vue
client/views/Login.vue
+102
-68
Main.vue
client/views/Main.vue
+7
-5
Register.vue
client/views/Register.vue
+98
-85
worklist.js
imports/api/collections/worklist.js
+17
-0
changePassword.js
imports/api/methods/changePassword.js
+34
-0
worklist.js
imports/api/methods/worklist.js
+43
-14
worklist.js
imports/api/server/publications/worklist.js
+15
-0
font.css
public/fonts/font.css
+1
-1
main.js
server/main.js
+2
-0
No files found.
client/App.vue
View file @
761f6ecc
<
template
>
<
template
>
<v-app>
<transition
name=
"fade"
mode=
"out-in"
>
<transition
name=
"fade"
mode=
"out-in"
>
<keep-alive>
<keep-alive>
<router-view></router-view>
<router-view></router-view>
</keep-alive>
</keep-alive>
</transition>
</transition>
</v-app>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -42,9 +42,18 @@ export default {
...
@@ -42,9 +42,18 @@ export default {
</
script
>
</
script
>
<
style
>
<
style
>
#
app
{
#
inspire
{
font-family
:
"Vazir"
;
font-family
:
"Vazir"
;
}
}
/* label,span{
font-family: Vazir;
} */
.v-messages__message
{
font-family
:
Vazir
;
font-size
:
0.5rem
;
}
html
{
html
{
overflow-y
:
auto
!important
;
overflow-y
:
auto
!important
;
}
}
...
...
client/components/AppFooter.vue
View file @
761f6ecc
<
template
>
<
template
>
<v-footer
inset
elevation=
"24"
color=
"#0065613b"
app
height=
"30"
>
<v-footer
<v-row
justify=
"center"
align=
"center"
class=
"text-center red--text"
>
color=
"#c0d7d6"
<v-menu
transition=
"slide-x-transition"
>
height=
"40px"
<template
v-slot:activator=
"
{ on }">
app
<v-btn
elevation=
"24"
class=
"changeLangBtn"
class=
"d-flex justify-center align-center text-center red--text"
color=
"red"
>
dark
<v-menu
transition=
"slide-x-transition"
>
v-on=
"on"
<template
v-slot:activator=
"
{ on }">
depressed
<v-btn
text
class=
"changeLangBtn"
>
{{
$t
(
'AppFooter.appLang'
)
}}
</v-btn>
color=
"red"
</
template
>
dark
<v-list>
v-on=
"on"
<v-list-item
v-for=
"lng in langList"
:key=
"lng.name"
@
click=
"setLang(lng.alias)"
>
depressed
<v-list-item-title>
{{lng.name}}
</v-list-item-title>
text
</v-list-item>
>
{{
$t
(
'AppFooter.appLang'
)
}}
</v-btn>
</v-list>
</
template
>
</v-menu>
<v-list>
<!-- <v-img src="/img/0.png" contain max-height="60" max-width="60"></v-img> -->
<v-list-item
v-for=
"lng in langList"
:key=
"lng.name"
@
click=
"setLang(lng.alias)"
>
<h5>
©2005-{{ new Date().getFullYear() }} MARCO PACS
</h5>
<v-list-item-title>
{{lng.name}}
</v-list-item-title>
</v-list-item>
</v-row>
</v-list>
</v-menu>
<h5>
©2005-{{ new Date().getFullYear() }} MARCO PACS
</h5>
</v-footer>
</v-footer>
</template>
</template>
...
@@ -48,6 +50,6 @@ export default {
...
@@ -48,6 +50,6 @@ export default {
position
:
absolute
;
position
:
absolute
;
left
:
0
;
left
:
0
;
}
}
</
style
>
>
</
style
>
</style>
</style>
\ No newline at end of file
client/components/AuthHeader.vue
View file @
761f6ecc
<
template
>
<
template
>
<!--
<v-app-bar
app
elevation=
"24"
color=
"teal lighten-3"
>
-->
<!--
<v-app-bar
app
elevation=
"24"
color=
"teal lighten-3"
>
-->
<v-app-bar
app
elevation=
"24"
color=
"#0065613b
"
>
<v-app-bar
fixed
app
elevation=
"24"
color=
"#c0d7d6
"
>
<v-toolbar-title
class=
"red--text"
>
{{
$t
(
'AppHeader.appName'
)
}}
</v-toolbar-title>
<v-toolbar-title
class=
"red--text"
>
{{
$t
(
'AppHeader.appName'
)
}}
</v-toolbar-title>
<v-spacer></v-spacer>
<v-spacer></v-spacer>
<v-btn
text
color=
"red red--text"
:to=
"btnTo"
>
<v-btn
text
color=
"red red--text"
:to=
"btnTo"
>
...
@@ -9,6 +9,15 @@
...
@@ -9,6 +9,15 @@
<strong>
{{
$t
(
btnLabel
)
}}
</strong>
<strong>
{{
$t
(
btnLabel
)
}}
</strong>
</v-btn>
</v-btn>
</v-app-bar>
</v-app-bar>
<!--
<v-toolbar
absolute
fixed
app
elevation=
"24"
color=
"#0065613b"
style=
"width:100%"
>
<v-toolbar-title
class=
"red--text"
>
{{
$t
(
'AppHeader.appName'
)
}}
</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn
text
color=
"red red--text"
:to=
"btnTo"
>
<v-icon
left
>
{{
btnIconName
}}
</v-icon>
<strong>
{{
$t
(
btnLabel
)
}}
</strong>
</v-btn>
</v-toolbar>
-->
</
template
>
</
template
>
<
script
>
<
script
>
...
...
client/components/Worklist.vue
View file @
761f6ecc
<
template
>
<
template
>
<div
style=
"width:100%"
class=
"d-flex fill-height align-start justify-center flex-wrap"
>
<v-container
fluid
>
<div
style=
"width:100%;display:flex;justify-content:center"
>
<v-row
justify=
"center"
dense
class=
"flex-wrap"
>
<v-card
outlined
raised
>
<v-col
md=
"6"
cols=
"12"
>
<v-card
outlined
raised
>
<v-card>
<v-card-actions>
<v-card>
<v-combobox
<v-card-actions>
v-model=
"model"
<v-combobox
:items=
"items"
v-model=
"model"
:search-input
.
sync=
"search"
:items=
"items"
hide-selected
:search-input
.
sync=
"search"
label=
"please select a machine"
hide-selected
persistent-hint
label=
"please select a machine"
small-chips
persistent-hint
clearable
small-chips
>
clearable
<template
v-if=
"noData"
v-slot:no-data
>
>
<v-list-item>
<template
v-if=
"noData"
v-slot:no-data
>
<v-list-item-content>
<v-list-item>
<v-list-item-title>
<v-list-item-content>
No results matching "
<v-list-item-title>
<strong>
{{
search
}}
</strong>
". Press
No results matching "
<kbd>
enter
</kbd>
to create a new one
<strong>
{{
search
}}
</strong>
". Press
</v-list-item-title>
<kbd>
enter
</kbd>
to create a new one
</v-list-item-content>
</v-list-item-title>
</v-list-item>
</v-list-item-content>
</
template
>
</v-list-item>
</v-combobox>
</
template
>
<v-btn
text
color=
"deep-purple accent-4"
>
Search
</v-btn>
</v-combobox>
<v-btn
text
color=
"deep-purple accent-4"
>
Search
</v-btn>
</v-card-actions>
</v-card>
<v-card-actions
class=
"d-flex flex-wrap justify-center"
>
<v-btn-toggle
v-model=
"toggle_exclusive"
mandatory
>
<v-btn
class=
"green"
>
<v-icon
left
v-if=
"toggle_exclusive==0"
>
done
</v-icon>
<strong>
All
</strong>
</v-btn>
<v-btn
class=
"green"
style=
"margin-left:0px;margin-right:0px"
>
<v-icon
left
v-if=
"toggle_exclusive==1"
>
done
</v-icon>
<strong>
unknown
</strong>
</v-btn>
</v-btn-toggle>
<v-btn
class=
"ma-3"
rounded
>
<strong>
Export To Excel
</strong>
</v-btn>
</v-card-actions>
</v-card-actions>
</v-card>
</v-card>
<v-card-actions
class=
"d-flex flex-wrap justify-center"
>
</v-col>
<v-btn-toggle
v-model=
"toggle_exclusive"
mandatory
>
</v-row>
<v-btn
class=
"green"
>
<v-row
justify=
"center"
dense
class=
"flex-wrap"
>
<v-icon
left
v-if=
"toggle_exclusive==0"
>
done
</v-icon>
<v-col
cols=
"12"
>
<strong>
All
</strong>
<v-data-table
</v-btn>
v-model=
"selected"
<v-btn
class=
"green"
style=
"margin-left:0px;margin-right:0px"
>
:headers=
"headers"
<v-icon
left
v-if=
"toggle_exclusive==1"
>
done
</v-icon>
:items=
"desserts"
<strong>
unknown
</strong>
single-select
</v-btn>
item-key=
"name"
</v-btn-toggle>
show-select
hide-default-footer
<v-btn
class=
"ma-3"
rounded
>
class=
"elevation-1"
<strong>
Export To Excel
</strong>
disable-pagination
</v-btn>
style=
"width:100%"
</v-card-actions>
></v-data-table>
</v-card>
</v-col>
</div>
</v-row>
<div
style=
"width:100%;display:flex;justify-content:center"
class=
"ma-3"
>
</v-container>
<v-data-table
v-model=
"selected"
:headers=
"headers"
:items=
"desserts"
single-select
item-key=
"name"
show-select
class=
"elevation-1"
disable-pagination
height=
"600"
style=
"width:100%"
></v-data-table>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
Worklist
from
"../../imports/api/collections/worklist.js"
;
import
{
Tracker
}
from
"meteor/tracker"
;
export
default
{
export
default
{
data
:
()
=>
({
data
:
()
=>
({
devicemap
:
"ratio"
,
items
:
[
"Gaming"
,
"Programming"
,
"Vue"
,
"Vuetify"
],
items
:
[
"Gaming"
,
"Programming"
,
"Vue"
,
"Vuetify"
],
model
:
[
"Vuetify"
],
model
:
[
"Vuetify"
],
search
:
null
,
search
:
null
,
...
@@ -171,9 +177,34 @@ export default {
...
@@ -171,9 +177,34 @@ export default {
carbs
:
65
,
carbs
:
65
,
protein
:
7
,
protein
:
7
,
iron
:
"6%"
iron
:
"6%"
},
}
]
]
})
}),
mounted
()
{
Meteor
.
setTimeout
(()
=>
{
this
.
devicemap
=
"ct"
;
},
5000
);
Meteor
.
setTimeout
(()
=>
{
this
.
devicemap
=
"ratio"
;
},
10000
);
},
meteor
:
{
$subscribe
:
{
worklist
:
function
()
{
return
[
this
.
devicemap
];
}
},
worklist
()
{
return
Worklist
.
find
({});
}
},
watch
:
{
worklist
:
(
newWorklist
,
oldWorklist
)
=>
{
console
.
log
(
newWorklist
);
},
"$subReady.worklist"
:
ready
=>
{
console
.
log
(
ready
);
}
}
};
};
</
script
>
</
script
>
\ No newline at end of file
client/main.js
View file @
761f6ecc
...
@@ -22,6 +22,8 @@ import { store } from './store/store';
...
@@ -22,6 +22,8 @@ import { store } from './store/store';
import
i18n
from
'./plugins/i18n'
;
import
i18n
from
'./plugins/i18n'
;
Meteor
.
startup
(()
=>
{
Meteor
.
startup
(()
=>
{
new
Vue
({
new
Vue
({
i18n
,
i18n
,
...
...
client/plugins/i18n.js
View file @
761f6ecc
...
@@ -4,11 +4,6 @@ Vue.use(VueI18n);
...
@@ -4,11 +4,6 @@ Vue.use(VueI18n);
const
messages
=
{
const
messages
=
{
'en'
:
{
'en'
:
{
$vuetify
:
{
dataTable
:
{
itemsPerPageText
:
'منستیبمتن سمکنیتب '
}
},
Login
:
{
Login
:
{
loginHeader
:
'Login'
,
loginHeader
:
'Login'
,
registerBtn
:
'Register'
,
registerBtn
:
'Register'
,
...
@@ -21,7 +16,8 @@ const messages = {
...
@@ -21,7 +16,8 @@ const messages = {
usernameAlert
:
'please enter username'
,
usernameAlert
:
'please enter username'
,
passwordAlert
:
'please enter password'
,
passwordAlert
:
'please enter password'
,
errorUserNotFound
:
'User not found'
,
errorUserNotFound
:
'User not found'
,
errorIncorrectPassword
:
'Incorrect Password'
errorIncorrectPassword
:
'Incorrect Password'
,
changePassword
:
'Change Password?'
},
},
Register
:
{
Register
:
{
registerHeader
:
'Register'
,
registerHeader
:
'Register'
,
...
@@ -45,6 +41,24 @@ const messages = {
...
@@ -45,6 +41,24 @@ const messages = {
},
},
AppFooter
:
{
AppFooter
:
{
appLang
:
'en'
,
appLang
:
'en'
,
},
ChangePassword
:
{
formHeader
:
'change password'
,
username
:
'username'
,
usernameAlert
:
'please enter username'
,
oldPassword
:
'old password'
,
oldPasswordAlert
:
'please enter old password'
,
newPassword
:
'new password'
,
newPasswordAlert
:
'please enter new password'
,
matchPass
:
'old password and new password should not be the same'
,
required
:
'Required'
,
min8Character
:
'Min 8 Characters'
,
changePasswordBtn
:
'change'
,
loadingText
:
'changing password'
,
NotFoundUser
:
'user not found'
,
CheckPassError
:
'incorrect old password'
,
SuccessChangePass
:
'Password Successfully changed'
,
internalServerError
:
'internal server error'
}
}
...
@@ -62,7 +76,8 @@ const messages = {
...
@@ -62,7 +76,8 @@ const messages = {
usernameAlert
:
'لطفا نام کاربری را وارد نمایید'
,
usernameAlert
:
'لطفا نام کاربری را وارد نمایید'
,
passwordAlert
:
'لطفا رمز ورود را وارد نمایید'
,
passwordAlert
:
'لطفا رمز ورود را وارد نمایید'
,
errorUserNotFound
:
'کاربر یافت نشد'
,
errorUserNotFound
:
'کاربر یافت نشد'
,
errorIncorrectPassword
:
'رمز نادرست'
errorIncorrectPassword
:
'رمز نادرست'
,
changePassword
:
'تغییر رمز؟'
},
},
Register
:
{
Register
:
{
registerHeader
:
'ثبت نام کاربر'
,
registerHeader
:
'ثبت نام کاربر'
,
...
@@ -86,6 +101,24 @@ const messages = {
...
@@ -86,6 +101,24 @@ const messages = {
},
},
AppFooter
:
{
AppFooter
:
{
appLang
:
'فا'
,
appLang
:
'فا'
,
},
ChangePassword
:
{
formHeader
:
'تغییر رمز'
,
username
:
'نام کاربری'
,
usernameAlert
:
'لطفا نام کاربری را وارد نمایید'
,
oldPassword
:
'رمز فعلی'
,
oldPasswordAlert
:
'لطفا رمز فعلی را وارد نمایید'
,
newPassword
:
'رمز جدید'
,
newPasswordAlert
:
'لطفا رمز جدید را وارد نمایید'
,
matchPass
:
'رمز فعلی و رمز جدید نباید یکسان باشند'
,
required
:
'مورد نیاز'
,
min8Character
:
'حداقل 8 کاراکتر'
,
changePasswordBtn
:
'تغییر رمز'
,
loadingText
:
'در حال تغییر رمز'
,
NotFoundUser
:
'کاربر یافت نشد'
,
CheckPassError
:
'رمز فعلی نادرست می باشد'
,
SuccessChangePass
:
'رمز کاربر با موفقیت تغییر یافت'
,
internalServerError
:
'خطا در سرور'
}
}
}
}
...
...
client/plugins/routes.js
View file @
761f6ecc
import
Login
from
'../views/Login.vue'
;
import
Login
from
'../views/Login.vue'
;
import
Home
from
'../views/Home.vue'
;
import
Home
from
'../views/Home.vue'
;
import
Register
from
'../views/Register.vue'
;
import
Register
from
'../views/Register.vue'
;
import
ChangePassword
from
'../views/ChangePassword.vue'
;
import
Main
from
'../views/Main.vue'
;
import
Main
from
'../views/Main.vue'
;
import
EditWorkList
from
'../components/EditWorkList.vue'
;
import
EditWorkList
from
'../components/EditWorkList.vue'
;
...
@@ -22,6 +23,10 @@ const routes = [{
...
@@ -22,6 +23,10 @@ const routes = [{
name
:
'signup'
name
:
'signup'
},
},
{
{
path
:
'/changePassword'
,
component
:
ChangePassword
,
name
:
'changePassword'
},
{
path
:
'/main'
,
path
:
'/main'
,
component
:
Main
,
component
:
Main
,
name
:
'main'
,
name
:
'main'
,
...
...
client/views/ChangePassword.vue
0 → 100644
View file @
761f6ecc
<
template
>
<v-app
id=
"inspire"
>
<auth-header
btnToProp=
"signin"
btnLabel=
"Register.loginBtn"
btnIconName=
"mdi-login"
></auth-header>
<v-content>
<v-container
fluid
class=
"align-center fill-height backgroundImg"
>
<v-row
justify=
"center"
class=
"loginCard"
>
<v-col
xs=
"8"
sm=
"6"
md=
"4"
lg=
"3"
>
<v-card
class=
"elevation-12 roundedCard"
light
elevation=
"24"
>
<v-toolbar
color=
"rgb(94, 181, 177,.85)"
dark
>
<v-icon
class=
"ma-3"
>
mdi-lock-reset
</v-icon>
<v-toolbar-title>
{{
$t
(
'ChangePassword.formHeader'
)
}}
</v-toolbar-title>
</v-toolbar>
<v-card-text>
<v-form>
<v-container
fluid
class=
"flex-wrap"
>
<v-row>
<v-col
cols=
"12"
>
<v-text-field
:label=
"$t('ChangePassword.username')"
prepend-icon=
"mdi-account-circle"
:rules=
"[rules.required]"
v-model=
"username"
ref=
"usernameTextField"
persistent-hint
:hint=
"this.usernameAlert?`$
{$t('ChangePassword.usernameAlert')}`:''"
@keyup.enter="changePassword()"
/>
</v-col>
<v-col
cols=
"12"
>
<v-text-field
:type=
"!showPassword1?'password' :'text'"
:label=
"$t('ChangePassword.oldPassword')"
prepend-icon=
"mdi-lock"
@
click:append=
"showPassword1 = !showPassword1"
:append-icon=
"showPassword1 ? 'mdi-eye': 'mdi-eye-off'"
v-model=
"oldPass"
:rules=
"[rules.required, rules.min]"
ref=
"oldPassTextField"
persistent-hint
:hint=
"this.oldPassAlert?`$
{$t('ChangePassword.oldPasswordAlert')}`:''"
@keyup.enter="changePassword()"
/>
</v-col>
<v-col
cols=
"12"
>
<v-text-field
:type=
"!showPassword2?'password' :'text'"
:label=
"$t('ChangePassword.newPassword')"
prepend-icon=
"mdi-lock"
@
click:append=
"showPassword2 = !showPassword2"
:append-icon=
"showPassword2 ? 'mdi-eye': 'mdi-eye-off'"
v-model=
"newPass"
:rules=
"[rules.required, rules.matchPass]"
ref=
"newPassTextField"
persistent-hint
:hint=
"this.newPassAlert?`$
{$t('ChangePassword.newPasswordAlert')}`:''"
@keyup.enter="changePassword()"
/>
</v-col>
</v-row>
</v-container>
</v-form>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn
style=
"width:100%"
class=
"white--text"
color=
"rgb(94, 181, 177,.85)"
rounded
:loading=
"loading"
:disabled=
"loading"
@
click=
"changePassword()"
>
<v-icon
left
>
mdi-lock-question
</v-icon>
<small>
{{
$t
(
'ChangePassword.changePasswordBtn'
)
}}
</small>
<template
v-slot:loader
>
<span>
{{
$t
(
'ChangePassword.loadingText'
)
}}
</span>
</
template
>
</v-btn>
</v-card-actions>
</v-card>
</v-col>
</v-row>
<ul
class=
"bubble-boxes"
>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<v-snackbar
v-model=
"snackbar"
:color=
"snackbarColor"
:timeout=
"2000"
>
{{ snackbarText }}
</v-snackbar>
</v-container>
</v-content>
<app-footer></app-footer>
</v-app>
</template>
<
script
>
import
AppFooter
from
"../components/AppFooter.vue"
;
import
AuthHeader
from
"../components/AuthHeader.vue"
;
import
{
Accounts
}
from
"meteor/accounts-base"
;
import
{
Meteor
}
from
"meteor/meteor"
;
export
default
{
components
:
{
"app-footer"
:
AppFooter
,
"auth-header"
:
AuthHeader
},
data
()
{
return
{
snackbar
:
false
,
snackbarText
:
""
,
snackbarColor
:
"red"
,
loading
:
false
,
username
:
null
,
usernameAlert
:
false
,
oldPass
:
null
,
oldPassAlert
:
false
,
newPass
:
null
,
newPassAlert
:
false
,
showPassword1
:
false
,
showPassword2
:
false
,
rules
:
{
required
:
value
=>
!!
value
||
this
.
$t
(
"ChangePassword.required"
),
min
:
v
=>
{
if
(
v
==
undefined
)
return
true
;
return
v
.
length
>=
8
||
this
.
$t
(
"ChangePassword.min8Character"
);
},
matchPass
:
v
=>
{
return
(
this
.
oldPass
!==
this
.
newPass
||
this
.
$t
(
"ChangePassword.matchPass"
)
);
}
}
};
},
methods
:
{
changePassword
()
{
const
that
=
this
;
if
(
this
.
username
==
null
||
this
.
username
.
length
==
0
)
{
this
.
$refs
.
usernameTextField
.
focus
();
this
.
usernameAlert
=
true
;
return
;
}
if
(
this
.
oldPass
==
null
||
this
.
oldPass
.
length
==
0
)
{
this
.
$refs
.
oldPassTextField
.
focus
();
this
.
oldPassAlert
=
true
;
return
;
}
if
(
this
.
newPass
==
null
||
this
.
newPass
.
length
==
0
)
{
this
.
$refs
.
newPassTextField
.
focus
();
this
.
newPassAlert
=
true
;
return
;
}
if
(
this
.
oldPass
==
this
.
newPass
)
{
return
;
}
this
.
loading
=
true
;
Meteor
.
call
(
"changePass"
,
this
.
username
,
this
.
oldPass
,
this
.
newPass
,
function
(
error
,
result
)
{
if
(
error
)
{
that
.
loading
=
false
;
if
(
error
.
error
==
"NotFoundUser"
)
{
that
.
snackbarColor
=
"red"
;
that
.
snackbarText
=
that
.
$t
(
"ChangePassword.NotFoundUser"
);
that
.
snackbar
=
true
;
return
;
}
if
(
error
.
error
==
"CheckPassError"
)
{
that
.
snackbarColor
=
"red"
;
that
.
snackbarText
=
that
.
$t
(
"ChangePassword.CheckPassError"
);
that
.
snackbar
=
true
;
return
;
}
that
.
snackbarColor
=
"red"
;
that
.
snackbarText
=
that
.
$t
(
"ChangePassword.internalServerError"
);
that
.
snackbar
=
true
;
return
;
}
Meteor
.
setTimeout
(()
=>
{
that
.
loading
=
false
;
that
.
snackbarColor
=
"rgb(94, 181, 177,.85)"
;
that
.
snackbarText
=
that
.
$t
(
"ChangePassword.SuccessChangePass"
);
that
.
snackbar
=
true
;
},
1000
);
}
);
}
}
};
</
script
>
<
style
scoped
>
.backgroundImg
{
background-color
:
#abdae4
ad
;
background-image
:
linear-gradient
(
141deg
,
#9fb8ad
0%
,
#1fc8db
51%
,
#2ce8ce
b0
75%
);
}
img
{
position
:
absolute
;
left
:
0
;
top
:
0
;
height
:
100%
;
width
:
100%
;
overflow-y
:
hidden
;
opacity
:
0.6
;
filter
:
grayscale
(
0.5
)
blur
(
2px
);
z-index
:
0
;
}
.loginCard
{
z-index
:
1
;
}
.backgroundImg
{
overflow-y
:
hidden
;
}
.roundedCard
{
border-radius
:
20px
;
}
/* loader */
@-moz-keyframes
loader
{
from
{
transform
:
rotate
(
0
);
}
to
{
transform
:
rotate
(
360deg
);
}
}
@-webkit-keyframes
loader
{
from
{
transform
:
rotate
(
0
);
}
to
{
transform
:
rotate
(
360deg
);
}
}
@-o-keyframes
loader
{
from
{
transform
:
rotate
(
0
);
}
to
{
transform
:
rotate
(
360deg
);
}
}
@keyframes
loader
{
from
{
transform
:
rotate
(
0
);
}
to
{
transform
:
rotate
(
360deg
);
}
}
</
style
>
\ No newline at end of file
client/views/Login.vue
View file @
761f6ecc
<
template
>
<
template
>
<v-content
class=
"fill-height"
>
<!--
<div
style=
"height:100%"
>
-->
<v-app
id=
"inspire"
>
<auth-header
btnToProp=
"signup"
btnLabel=
"Login.registerBtn"
btnIconName=
"mdi-account-plus"
></auth-header>
<auth-header
btnToProp=
"signup"
btnLabel=
"Login.registerBtn"
btnIconName=
"mdi-account-plus"
></auth-header>
<v-content>
<v-container
fluid
class=
"align-center fill-height backgroundImg"
>
<v-container
fluid
fill-height
class=
"align-center backgroundImg"
>
<v-row
justify=
"center"
class=
"loginCard"
>
<v-row
justify=
"center"
class=
"loginCard"
>
<v-col
xs=
"8"
sm=
"6"
md=
"4"
lg=
"3"
>
<v-col
xs=
"8"
sm=
"6"
md=
"4"
lg=
"3"
>
<v-card
class=
"elevation-12 roundedCard"
light
elevation=
"24"
>
<v-card
class=
"elevation-12 roundedCard"
light
elevation=
"24"
>
<v-toolbar
color=
"rgb(94, 181, 177,.85)"
dark
>
<v-toolbar
color=
"rgb(94, 181, 177,.85)"
dark
>
<v-icon
class=
"ma-3"
>
mdi-login
</v-icon>
<v-icon
class=
"ma-3"
>
mdi-login
</v-icon>
<v-toolbar-title>
{{
$t
(
'Login.loginHeader'
)
}}
</v-toolbar-title>
<v-toolbar-title>
{{
$t
(
'Login.loginHeader'
)
}}
</v-toolbar-title>
</v-toolbar>
</v-toolbar>
<v-card-text
class=
"d-flex align-center justify-center"
>
<v-card-text
class=
"d-flex align-center justify-center"
>
<v-img
src=
"/img/0.png"
contain
height=
"150"
width=
"150"
></v-img>
<v-img
<v-form>
src=
"/img/0.png"
<v-text-field
contain
:label=
"$t('Login.username')"
:height=
"$vuetify.breakpoint.mdAndUp?150:100"
prepend-icon=
"mdi-account-circle"
:width=
"$vuetify.breakpoint.mdAndUp?150:100"
:rules=
"[rules.required]"
></v-img>
v-model=
"username"
<v-form>
ref=
"usernameTextField"
<v-container
fluid
>
:hint=
"this.usernameAlert?`$
{$t('Login.usernameAlert')}`:''"
<v-row>
/>
<v-col
cols=
"12"
>
<v-text-field
<v-text-field
:type=
"!showPassword?'password' :'text'"
:autofocus=
"usernameFocus"
:label=
"$t('Login.password')"
:label=
"$t('Login.username')"
prepend-icon=
"mdi-lock"
prepend-icon=
"mdi-account-circle"
@
click:append=
"showPassword = !showPassword"
:rules=
"[rules.required]"
:append-icon=
"showPassword ? 'mdi-eye': 'mdi-eye-off'"
v-model=
"username"
:hint=
"this.passwordAlert?$t('Login.passwordAlert'):$t('Login.passwordHint')"
ref=
"usernameTextField"
:rules=
"[rules.required, rules.min]"
:hint=
"this.usernameAlert?`$
{$t('Login.usernameAlert')}`:''"
v-model=
"password"
@keyup.enter="loginUser()"
ref=
"passwordTextField"
/>
/>
</v-col>
</v-form>
<v-col
cols=
"12"
>
</v-card-text>
<v-text-field
<v-card-actions
class=
"flex-wrap"
>
:autofocus=
"passwordFocus"
<v-btn
:type=
"!showPassword?'password' :'text'"
style=
"width:100%"
:label=
"$t('Login.password')"
color=
"rgb(94, 181, 177,.85)"
prepend-icon=
"mdi-lock"
rounded
@
click:append=
"showPassword = !showPassword"
class=
"white--text mb-2"
:append-icon=
"showPassword ? 'mdi-eye': 'mdi-eye-off'"
@
click=
"loginUser()"
:hint=
"this.passwordAlert?$t('Login.passwordAlert'):$t('Login.passwordHint')"
:loading=
"loading"
:rules=
"[rules.required, rules.min]"
:disabled=
"loading"
v-model=
"password"
>
ref=
"passwordTextField"
<v-icon
left
>
mdi-login
</v-icon>
@
keyup
.
enter=
"loginUser()"
<small>
{{
$t
(
'Login.loginBtn'
)
}}
</small>
/>
</v-btn>
</v-col>
<v-btn
text
rounded
color=
"green"
x-small
>
Change Password?
</v-btn>
</v-row>
</v-card-actions>
</v-container>
</v-card>
</v-form>
</v-col>
</v-card-text>
</v-row>
<v-card-actions
class=
"flex-wrap"
>
<ul
class=
"bubble-boxes"
>
<v-btn
<li></li>
style=
"width:100%"
<li></li>
color=
"rgb(94, 181, 177,.85)"
<li></li>
rounded
<li></li>
class=
"white--text mb-2"
<li></li>
@
click=
"loginUser()"
<li></li>
:loading=
"loading"
<li></li>
:disabled=
"loading"
<li></li>
>
<li></li>
<v-icon
left
>
mdi-login
</v-icon>
<li></li>
<small>
{{
$t
(
'Login.loginBtn'
)
}}
</small>
</ul>
</v-btn>
<v-snackbar
v-model=
"snackbar"
:color=
"snackbarColor"
:timeout=
"2000"
>
{{
snackbarText
}}
</v-snackbar>
<v-btn
</v-container>
text
rounded
color=
"green"
x-small
to=
"/changePassword"
>
{{
$t
(
'Login.changePassword'
)
}}
</v-btn>
</v-card-actions>
</v-card>
</v-col>
</v-row>
<ul
class=
"bubble-boxes"
>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<v-snackbar
v-model=
"snackbar"
:color=
"snackbarColor"
:timeout=
"2000"
>
{{
snackbarText
}}
</v-snackbar>
</v-container>
</v-content>
<app-footer></app-footer>
<app-footer></app-footer>
</v-content>
<!--
</div>
-->
</v-app>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -80,6 +106,12 @@ export default {
...
@@ -80,6 +106,12 @@ export default {
"app-footer"
:
AppFooter
,
"app-footer"
:
AppFooter
,
"auth-header"
:
AuthHeader
"auth-header"
:
AuthHeader
},
},
mounted
()
{
let
self
=
this
;
this
.
username
=
null
;
this
.
password
=
null
;
},
data
()
{
data
()
{
return
{
return
{
loading
:
false
,
loading
:
false
,
...
@@ -134,6 +166,7 @@ export default {
...
@@ -134,6 +166,7 @@ export default {
that
.
snackbar
=
true
;
that
.
snackbar
=
true
;
}
}
}
else
{
}
else
{
Meteor
.
call
(
"Fetchworklist"
,
"ratio"
);
Meteor
.
setTimeout
(()
=>
{
Meteor
.
setTimeout
(()
=>
{
that
.
loading
=
false
;
that
.
loading
=
false
;
that
.
$router
.
push
(
"/main/worklist"
);
that
.
$router
.
push
(
"/main/worklist"
);
...
@@ -145,6 +178,7 @@ export default {
...
@@ -145,6 +178,7 @@ export default {
beforeRouteEnter
(
to
,
from
,
next
)
{
beforeRouteEnter
(
to
,
from
,
next
)
{
next
(
vm
=>
{
next
(
vm
=>
{
debugger
;
debugger
;
// if (Meteor.userId()) {
// if (Meteor.userId()) {
// vm.$router.push("/main/worklist");
// vm.$router.push("/main/worklist");
// }
// }
...
@@ -188,7 +222,7 @@ img {
...
@@ -188,7 +222,7 @@ img {
}
}
.loginCard
{
.loginCard
{
z-index
:
1
0
;
z-index
:
1
;
}
}
.backgroundImg
{
.backgroundImg
{
...
...
client/views/Main.vue
View file @
761f6ecc
<
template
>
<
template
>
<div
class=
"fill-height"
>
<v-app
id=
"inspire"
>
<!--
<div
style=
"height:100%"
>
-->
<!--
<v-content
class=
"fill-height"
>
-->
<!--
<v-content
class=
"fill-height"
>
-->
<template
v-if=
"!$vuetify.rtl"
>
<template
v-if=
"!$vuetify.rtl"
>
...
@@ -79,7 +80,7 @@
...
@@ -79,7 +80,7 @@
<v-navigation-drawer
v-model=
"left"
fixed
temporary
></v-navigation-drawer>
<v-navigation-drawer
v-model=
"left"
fixed
temporary
></v-navigation-drawer>
<v-content
class=
"fill-height"
>
<v-content
class=
"fill-height"
>
<v-container
class=
"fill-height"
fluid
>
<v-container
class=
"fill-height
align-start
"
fluid
>
<!-- <v-row justify="center" align="center">
<!-- <v-row justify="center" align="center">
<v-col class="shrink">
<v-col class="shrink">
<v-tooltip right>
<v-tooltip right>
...
@@ -105,7 +106,7 @@
...
@@ -105,7 +106,7 @@
<span>Codepen</span>
<span>Codepen</span>
</v-tooltip>
</v-tooltip>
</v-col>
</v-col>
</v-row>
-->
</v-row>-->
<router-view></router-view>
<router-view></router-view>
</v-container>
</v-container>
</v-content>
</v-content>
...
@@ -113,8 +114,9 @@
...
@@ -113,8 +114,9 @@
<v-navigation-drawer
v-model=
"right"
fixed
right
temporary
></v-navigation-drawer>
<v-navigation-drawer
v-model=
"right"
fixed
right
temporary
></v-navigation-drawer>
<app-footer></app-footer>
<app-footer></app-footer>
</div>
<!-- </div> -->
<!-- </v-content> -->
<!-- </v-content> -->
</v-app>
</template>
</template>
<
script
>
<
script
>
...
...
client/views/Register.vue
View file @
761f6ecc
<
template
>
<
template
>
<!--
<div
class=
"fill-height"
>
-->
<v-app
id=
"inspire"
>
<v-content
class=
"fill-height"
>
<auth-header
btnToProp=
"signin"
btnLabel=
"Register.loginBtn"
btnIconName=
"mdi-login"
></auth-header>
<auth-header
btnToProp=
"signin"
btnLabel=
"Register.loginBtn"
btnIconName=
"mdi-login"
></auth-header>
<v-container
fluid
class=
"align-center fill-height backgroundImg"
>
<v-content>
<v-row
justify=
"center"
class=
"loginCard"
>
<v-container
fluid
class=
"align-center fill-height backgroundImg"
>
<v-col
xs=
"8"
sm=
"6"
md=
"4"
lg=
"3"
>
<v-row
justify=
"center"
class=
"loginCard"
>
<v-card
class=
"elevation-12 roundedCard"
light
elevation=
"24"
>
<v-col
xs=
"8"
sm=
"6"
md=
"4"
lg=
"3"
>
<v-toolbar
color=
"rgb(94, 181, 177,.85)"
dark
>
<v-card
class=
"elevation-12 roundedCard"
light
elevation=
"24"
>
<v-icon
class=
"ma-3"
>
mdi-account-plus
</v-icon>
<v-toolbar
color=
"rgb(94, 181, 177,.85)"
dark
>
<v-toolbar-title>
{{
$t
(
'Register.registerHeader'
)
}}
</v-toolbar-title>
<v-icon
class=
"ma-3"
>
mdi-account-plus
</v-icon>
</v-toolbar>
<v-toolbar-title>
{{
$t
(
'Register.registerHeader'
)
}}
</v-toolbar-title>
<v-card-text>
</v-toolbar>
<v-form>
<v-card-text>
<v-text-field
<v-form>
:label=
"$t('Register.username')"
<v-container
fluid
>
prepend-icon=
"mdi-account-circle"
<v-row>
:rules=
"[rules.required]"
<v-col
cols=
"12"
>
v-model=
"username"
<v-text-field
ref=
"usernameTextField"
:label=
"$t('Register.username')"
:hint=
"this.usernameAlert?`$
{$t('Register.usernameAlert')}`:''"
prepend-icon=
"mdi-account-circle"
/>
:rules=
"[rules.required]"
<v-text-field
v-model=
"username"
:type=
"!showPassword1?'password' :'text'"
ref=
"usernameTextField"
:label=
"$t('Register.password')"
:hint=
"this.usernameAlert?`$
{$t('Register.usernameAlert')}`:''"
prepend-icon=
"mdi-lock"
@keyup.enter="createAccount()"
@
click:append=
"showPassword1 = !showPassword1"
/>
:append-icon=
"showPassword1 ? 'mdi-eye': 'mdi-eye-off'"
</v-col>
v-model=
"firstPass"
<v-col
cols=
"12"
>
:rules=
"[rules.required, rules.min]"
<v-text-field
ref=
"firstPassTextField"
:type=
"!showPassword1?'password' :'text'"
:hint=
"this.firstPassAlert?`$
{$t('Register.usernameAlert')}`:''"
:label=
"$t('Register.password')"
/>
prepend-icon=
"mdi-lock"
<v-text-field
@
click:append=
"showPassword1 = !showPassword1"
:type=
"!showPassword2?'password' :'text'"
:append-icon=
"showPassword1 ? 'mdi-eye': 'mdi-eye-off'"
:label=
"$t('Register.repeatPassword')"
v-model=
"firstPass"
prepend-icon=
"mdi-lock"
:rules=
"[rules.required, rules.min]"
@
click:append=
"showPassword2 = !showPassword2"
ref=
"firstPassTextField"
:append-icon=
"showPassword2 ? 'mdi-eye': 'mdi-eye-off'"
:hint=
"this.firstPassAlert?`$
{$t('Register.firstPassAlert')}`:''"
v-model=
"secondPass"
@keyup.enter="createAccount()"
:rules=
"[rules.required, rules.matchPass]"
/>
ref=
"secondPassTextField"
</v-col>
:hint=
"this.secondPassAlert?`$
{$t('Register.usernameAlert')}`:''"
<v-col
cols=
"12"
>
/>
<v-text-field
</v-form>
:type=
"!showPassword2?'password' :'text'"
</v-card-text>
:label=
"$t('Register.repeatPassword')"
<v-card-actions>
prepend-icon=
"mdi-lock"
<v-spacer></v-spacer>
@
click:append=
"showPassword2 = !showPassword2"
<v-btn
:append-icon=
"showPassword2 ? 'mdi-eye': 'mdi-eye-off'"
style=
"width:100%"
v-model=
"secondPass"
class=
"white--text"
:rules=
"[rules.required, rules.matchPass]"
color=
"rgb(94, 181, 177,.85)"
ref=
"secondPassTextField"
rounded
:hint=
"this.secondPassAlert?`$
{$t('Register.secondPassAlert')}`:''"
@
click=
"createAccount()"
@keyup.enter="createAccount()"
:loading=
"loading"
/>
:disabled=
"loading"
</v-col>
>
</v-row>
<v-icon
left
>
mdi-login
</v-icon>
</v-container>
<small>
{{
$t
(
'Register.registerBtn'
)
}}
</small>
</v-form>
<template
v-slot:loader
>
</v-card-text>
<span>
{{
$t
(
'Register.loadingText'
)
}}
</span>
<v-card-actions>
</
template
>
<v-spacer></v-spacer>
</v-btn>
<v-btn
</v-card-actions>
style=
"width:100%"
</v-card>
class=
"white--text"
</v-col>
color=
"rgb(94, 181, 177,.85)"
</v-row>
rounded
<ul
class=
"bubble-boxes"
>
@
click=
"createAccount()"
<li></li>
:loading=
"loading"
<li></li>
:disabled=
"loading"
<li></li>
>
<li></li>
<v-icon
left
>
mdi-login
</v-icon>
<li></li>
<small>
{{
$t
(
'Register.registerBtn'
)
}}
</small>
<li></li>
<template
v-slot:loader
>
<li></li>
<span>
{{
$t
(
'Register.loadingText'
)
}}
</span>
<li></li>
</
template
>
<li></li>
</v-btn>
<li></li>
</v-card-actions>
</ul>
</v-card>
<v-snackbar
v-model=
"snackbar"
:color=
"snackbarColor"
:timeout=
"2000"
>
{{ snackbarText }}
</v-snackbar>
</v-col>
</v-container>
</v-row>
<ul
class=
"bubble-boxes"
>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<v-snackbar
v-model=
"snackbar"
:color=
"snackbarColor"
:timeout=
"2000"
>
{{ snackbarText }}
</v-snackbar>
</v-container>
</v-content>
<app-footer></app-footer>
<app-footer></app-footer>
</v-content>
</v-app>
<!-- </div> -->
</template>
</template>
<
script
>
<
script
>
...
@@ -123,7 +136,6 @@ export default {
...
@@ -123,7 +136,6 @@ export default {
},
},
methods
:
{
methods
:
{
createAccount
()
{
createAccount
()
{
debugger
;
const
username
=
this
.
username
;
const
username
=
this
.
username
;
const
password
=
this
.
firstPass
;
const
password
=
this
.
firstPass
;
const
that
=
this
;
const
that
=
this
;
...
@@ -152,7 +164,7 @@ export default {
...
@@ -152,7 +164,7 @@ export default {
if
(
this
.
firstPass
==
this
.
secondPass
&&
this
.
username
!=
null
)
{
if
(
this
.
firstPass
==
this
.
secondPass
&&
this
.
username
!=
null
)
{
this
.
loading
=
true
;
this
.
loading
=
true
;
Accounts
.
createUser
(
Accounts
.
createUser
(
{
{
username
:
this
.
username
,
username
:
this
.
username
,
...
@@ -170,7 +182,7 @@ export default {
...
@@ -170,7 +182,7 @@ export default {
that
.
snackbarColor
=
"rgb(94, 181, 177,.85)"
;
that
.
snackbarColor
=
"rgb(94, 181, 177,.85)"
;
that
.
snackbarText
=
that
.
$t
(
"Register.userCreated"
);
that
.
snackbarText
=
that
.
$t
(
"Register.userCreated"
);
that
.
snackbar
=
true
;
that
.
snackbar
=
true
;
Meteor
.
setTimeout
(()
=>
{
Meteor
.
setTimeout
(()
=>
{
that
.
loading
=
false
;
that
.
loading
=
false
;
that
.
$router
.
push
(
"/main/worklist"
);
that
.
$router
.
push
(
"/main/worklist"
);
...
@@ -208,9 +220,10 @@ img {
...
@@ -208,9 +220,10 @@ img {
}
}
.loginCard
{
.loginCard
{
z-index
:
1
0
;
z-index
:
1
;
}
}
.backgroundImg
{
.backgroundImg
{
overflow-y
:
hidden
;
overflow-y
:
hidden
;
}
}
...
...
imports/api/collections/worklist.js
0 → 100644
View file @
761f6ecc
import
{
Mongo
}
from
'meteor/mongo'
;
import
{
Meteor
}
from
'meteor/meteor'
;
let
Worklist
;
if
(
Meteor
.
isClient
||
Meteor
.
isCordova
)
{
Worklist
=
new
Mongo
.
Collection
(
'worklist'
)
}
if
(
Meteor
.
isServer
)
{
Worklist
=
new
Mongo
.
Collection
(
'worklist'
,
{
connection
:
null
})
}
export
default
Worklist
;
\ No newline at end of file
imports/api/methods/changePassword.js
0 → 100644
View file @
761f6ecc
import
{
Meteor
}
from
'meteor/meteor'
;
import
{
Accounts
}
from
'meteor/accounts-base'
;
import
{
check
}
from
'meteor/check'
;
Meteor
.
methods
({
'changePass'
(
username
,
oldPassword
,
newPassword
)
{
debugger
;
this
.
unblock
();
check
(
username
,
String
);
check
(
oldPassword
,
String
);
check
(
newPassword
,
String
);
const
user
=
Accounts
.
findUserByUsername
(
username
);
if
(
user
==
null
)
{
throw
new
Meteor
.
Error
(
"NotFoundUser"
);
}
// const digestOldPassword = sha256(oldPassword);
// const password = { digest: digestOldPassword, algorithm: 'sha-256' };
const
result
=
Accounts
.
_checkPassword
(
user
,
oldPassword
);
if
(
result
.
error
!=
null
)
{
throw
new
Meteor
.
Error
(
"CheckPassError"
);
}
Accounts
.
setPassword
(
user
.
_id
,
newPassword
);
},
});
\ No newline at end of file
imports/api/methods/worklist.js
View file @
761f6ecc
import
{
Meteor
}
from
'meteor/meteor'
;
import
{
Meteor
}
from
'meteor/meteor'
;
import
{
check
}
from
'meteor/check'
;
import
{
Accounts
}
from
'meteor/accounts-base'
;
import
{
Accounts
}
from
'meteor/accounts-base'
;
Accounts
.
onLogin
(
function
(
user
)
{
// Accounts.onLogin(function(user) {
debugger
;
// debugger;
console
.
log
(
","
,
user
.
user
.
_id
)
// console.log(",", user.user._id)
});
// });
import
Worklist
from
'../collections/worklist.js'
;
Meteor
.
methods
({
Meteor
.
methods
({
'Fetchworklist'
()
{
'Fetchworklist'
(
devicemap
)
{
debugger
;
debugger
;
check
(
devicemap
,
String
);
this
.
unblock
();
this
.
unblock
();
try
{
if
(
this
.
userId
)
{
const
result
=
HTTP
.
call
(
'GET'
,
'http://192.168.4.105:2050/Broker/HISIntegration.svc/rest/Fetchworklist/ratio'
);
try
{
console
.
log
(
result
);
debugger
;
const
result
=
HTTP
.
call
(
'GET'
,
`http://192.168.0.156/Broker/HISIntegration.svc/rest/Fetchworklist/
${
devicemap
}
`
);
return
true
;
let
worklistHttp
=
JSON
.
parse
(
result
.
content
);
}
catch
(
e
)
{
// Got a network error, timeout, or HTTP error in the 400 or 500 range.
Worklist
.
remove
({
_userid
:
this
.
userId
,
_devicemap
:
devicemap
});
return
false
;
// worklist.forEach((patient) => {
// Worklist.insert({ PatientID: worklist.PatientID, _userid: worklist._userid, _devicemap: devicemap }, {
// $set: {
// ...patient
// }
// });
// })
worklistHttp
.
WorkListItems
.
forEach
((
patient
)
=>
{
Worklist
.
insert
({
...
patient
,
_userid
:
this
.
userId
,
_devicemap
:
devicemap
});
})
// worklist._userid = this.userId;
// worklist._devicemap = devicemap;
// Worklist.upsert({ _userid: worklist._userid, _devicemap: devicemap }, { $set: worklist });
return
true
}
catch
(
e
)
{
// Got a network error, timeout, or HTTP error in the 400 or 500 range.
return
false
;
}
}
}
}
}
});
});
\ No newline at end of file
imports/api/server/publications/worklist.js
0 → 100644
View file @
761f6ecc
import
Worklist
from
'../../collections/worklist.js'
;
import
{
check
}
from
'meteor/check'
;
Meteor
.
publish
(
"worklist"
,
function
(
devicemap
)
{
if
(
!
this
.
userId
)
{
return
this
.
ready
();
}
const
userid
=
this
.
userId
;
check
(
devicemap
,
String
);
// console.log(Worklist.find({ _userid: userid, _devicemap: devicemap }).fetch())
return
Worklist
.
find
({
_userid
:
userid
,
_devicemap
:
devicemap
},
{
fields
:
{
_devicemap
:
0
,
_userid
:
0
}
});
});
\ No newline at end of file
public/fonts/font.css
View file @
761f6ecc
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
font-family
:
Vazir
;
font-family
:
Vazir
;
src
:
url('vazir-font-v18.0.0/Vazir.eot')
;
src
:
url('vazir-font-v18.0.0/Vazir.eot')
;
src
:
url('vazir-font-v18.0.0/Vazir.eot?#iefix')
format
(
'vazir-opentype'
),
url('vazir-font-v18.0.0/Vazir.woff')
format
(
'woff'
),
url('vazir-font-v18.0.0/Vazir.ttf')
format
(
'truetype'
);
src
:
url('vazir-font-v18.0.0/Vazir.eot?#iefix')
format
(
'vazir-opentype'
),
url('vazir-font-v18.0.0/Vazir.woff')
format
(
'woff'
),
url('vazir-font-v18.0.0/Vazir.ttf')
format
(
'truetype'
);
font-weight
:
bold
;
/* font-weight: normal; */
font-style
:
normal
;
font-style
:
normal
;
}
}
...
...
server/main.js
View file @
761f6ecc
import
{
Meteor
}
from
'meteor/meteor'
;
import
{
Meteor
}
from
'meteor/meteor'
;
import
'../imports/api/methods/worklist.js'
;
import
'../imports/api/methods/worklist.js'
;
import
'../imports/api/methods/changePassword.js'
;
import
'../imports/api/server/publications/worklist.js'
Meteor
.
startup
(()
=>
{
Meteor
.
startup
(()
=>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment