Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
mortezavifar
Queuing2
Commits
f0fec773
Commit
f0fec773
authored
Jun 20, 2021
by
abbasmortezavifar
Browse files
new project
parent
c2424f44
Changes
37
Hide whitespace changes
Inline
Side-by-side
src/app/app-routing.module.ts
View file @
f0fec773
import
{
PanelOkComponent
}
from
'
./admin/panel-ok/panel-ok.component
'
;
import
{
PanelNewComponent
}
from
'
./admin/panel-new/panel-new.component
'
;
import
{
AdminComponent
}
from
'
./admin/admin.component
'
;
import
{
AppComponent
}
from
'
./app.component
'
;
import
{
FormComponent
}
from
'
./form/form.component
'
;
import
{
NgModule
}
from
'
@angular/core
'
;
import
{
RouterModule
,
Routes
}
from
'
@angular/router
'
;
import
{
PanelEndComponent
}
from
'
./admin/panel-end/panel-end.component
'
;
const
routes
:
Routes
=
[];
const
routes
:
Routes
=
[
{
path
:
''
,
component
:
FormComponent
},
{
path
:
'
admin
'
,
component
:
AdminComponent
},
];
@
NgModule
({
imports
:
[
RouterModule
.
forRoot
(
routes
)],
...
...
src/app/app.component.html
View file @
f0fec773
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * The content below * * * * * * * * * * * -->
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * Delete the template below * * * * * * * * * * -->
<!-- * * * * * * * to get started with your project! * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<style>
:host
{
font-family
:
-apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
Helvetica
,
Arial
,
sans-serif
,
"Apple Color Emoji"
,
"Segoe UI Emoji"
,
"Segoe UI Symbol"
;
font-size
:
14px
;
color
:
#333
;
box-sizing
:
border-box
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
}
h1
,
h2
,
h3
,
h4
,
h5
,
h6
{
margin
:
8px
0
;
}
p
{
margin
:
0
;
}
.spacer
{
flex
:
1
;
}
.toolbar
{
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
height
:
60px
;
display
:
flex
;
align-items
:
center
;
background-color
:
#1976d2
;
color
:
white
;
font-weight
:
600
;
}
.toolbar
img
{
margin
:
0
16px
;
}
.toolbar
#twitter-logo
{
height
:
40px
;
margin
:
0
8px
;
}
.toolbar
#youtube-logo
{
height
:
40px
;
margin
:
0
16px
;
}
.toolbar
#twitter-logo
:hover
,
.toolbar
#youtube-logo
:hover
{
opacity
:
0.8
;
}
.content
{
display
:
flex
;
margin
:
82px
auto
32px
;
padding
:
0
16px
;
max-width
:
960px
;
flex-direction
:
column
;
align-items
:
center
;
}
svg
.material-icons
{
height
:
24px
;
width
:
auto
;
}
svg
.material-icons
:not
(
:last-child
)
{
margin-right
:
8px
;
}
.card
svg
.material-icons
path
{
fill
:
#888
;
}
.card-container
{
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
center
;
margin-top
:
16px
;
}
.card
{
border-radius
:
4px
;
border
:
1px
solid
#eee
;
background-color
:
#fafafa
;
height
:
40px
;
width
:
200px
;
margin
:
0
8px
16px
;
padding
:
16px
;
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
transition
:
all
0.2s
ease-in-out
;
line-height
:
24px
;
}
.card-container
.card
:not
(
:last-child
)
{
margin-right
:
0
;
}
.card.card-small
{
height
:
16px
;
width
:
168px
;
}
.card-container
.card
:not
(
.highlight-card
)
{
cursor
:
pointer
;
}
.card-container
.card
:not
(
.highlight-card
)
:hover
{
transform
:
translateY
(
-3px
);
box-shadow
:
0
4px
17px
rgba
(
0
,
0
,
0
,
0.35
);
}
.card-container
.card
:not
(
.highlight-card
)
:hover
.material-icons
path
{
fill
:
rgb
(
105
,
103
,
103
);
}
.card.highlight-card
{
background-color
:
#1976d2
;
color
:
white
;
font-weight
:
600
;
border
:
none
;
width
:
auto
;
min-width
:
30%
;
position
:
relative
;
}
.card.card.highlight-card
span
{
margin-left
:
60px
;
}
svg
#rocket
{
width
:
80px
;
position
:
absolute
;
left
:
-10px
;
top
:
-24px
;
}
svg
#rocket-smoke
{
height
:
calc
(
100vh
-
95px
);
position
:
absolute
;
top
:
10px
;
right
:
180px
;
z-index
:
-10
;
}
a
,
a
:visited
,
a
:hover
{
color
:
#1976d2
;
text-decoration
:
none
;
}
a
:hover
{
color
:
#125699
;
}
.terminal
{
position
:
relative
;
width
:
80%
;
max-width
:
600px
;
border-radius
:
6px
;
padding-top
:
45px
;
margin-top
:
8px
;
overflow
:
hidden
;
background-color
:
rgb
(
15
,
15
,
16
);
}
.terminal
::before
{
content
:
"\2022 \2022 \2022"
;
position
:
absolute
;
top
:
0
;
left
:
0
;
height
:
4px
;
background
:
rgb
(
58
,
58
,
58
);
color
:
#c2c3c4
;
width
:
100%
;
font-size
:
2rem
;
line-height
:
0
;
padding
:
14px
0
;
text-indent
:
4px
;
}
.terminal
pre
{
font-family
:
SFMono-Regular
,
Consolas
,
Liberation
Mono
,
Menlo
,
monospace
;
color
:
white
;
padding
:
0
1rem
1rem
;
margin
:
0
;
}
.circle-link
{
height
:
40px
;
width
:
40px
;
border-radius
:
40px
;
margin
:
8px
;
background-color
:
white
;
border
:
1px
solid
#eeeeee
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
cursor
:
pointer
;
box-shadow
:
0
1px
3px
rgba
(
0
,
0
,
0
,
0.12
),
0
1px
2px
rgba
(
0
,
0
,
0
,
0.24
);
transition
:
1s
ease-out
;
}
.circle-link
:hover
{
transform
:
translateY
(
-0.25rem
);
box-shadow
:
0px
3px
15px
rgba
(
0
,
0
,
0
,
0.2
);
}
footer
{
margin-top
:
8px
;
display
:
flex
;
align-items
:
center
;
line-height
:
20px
;
}
footer
a
{
display
:
flex
;
align-items
:
center
;
}
.github-star-badge
{
color
:
#24292e
;
display
:
flex
;
align-items
:
center
;
font-size
:
12px
;
padding
:
3px
10px
;
border
:
1px
solid
rgba
(
27
,
31
,
35
,
.2
);
border-radius
:
3px
;
background-image
:
linear-gradient
(
-180deg
,
#fafbfc
,
#eff3f6
90%
);
margin-left
:
4px
;
font-weight
:
600
;
font-family
:
-apple-system
,
BlinkMacSystemFont
,
Segoe
UI
,
Helvetica
,
Arial
,
sans-serif
,
Apple
Color
Emoji
,
Segoe
UI
Emoji
,
Segoe
UI
Symbol
;
}
.github-star-badge
:hover
{
background-image
:
linear-gradient
(
-180deg
,
#f0f3f6
,
#e6ebf1
90%
);
border-color
:
rgba
(
27
,
31
,
35
,
.35
);
background-position
:
-.5em
;
}
.github-star-badge
.material-icons
{
height
:
16px
;
width
:
16px
;
margin-right
:
4px
;
}
svg
#clouds
{
position
:
fixed
;
bottom
:
-160px
;
left
:
-230px
;
z-index
:
-10
;
width
:
1920px
;
}
/* Responsive Styles */
@media
screen
and
(
max-width
:
767px
)
{
.card-container
>
*
:not
(
.circle-link
)
,
.terminal
{
width
:
100%
;
}
.card
:not
(
.highlight-card
)
{
height
:
16px
;
margin
:
8px
0
;
}
.card.highlight-card
span
{
margin-left
:
72px
;
}
svg
#rocket-smoke
{
right
:
120px
;
transform
:
rotate
(
-5deg
);
}
}
@media
screen
and
(
max-width
:
575px
)
{
svg
#rocket-smoke
{
display
:
none
;
visibility
:
hidden
;
}
}
</style>
<!-- Toolbar -->
<div
class=
"toolbar"
role=
"banner"
>
<img
width=
"40"
alt=
"Angular Logo"
src=
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg=="
/>
<span>
Welcome
</span>
<div
class=
"spacer"
></div>
<a
aria-label=
"Angular on twitter"
target=
"_blank"
rel=
"noopener"
href=
"https://twitter.com/angular"
title=
"Twitter"
>
<svg
id=
"twitter-logo"
height=
"24"
data-name=
"Logo"
xmlns=
"http://www.w3.org/2000/svg"
viewBox=
"0 0 400 400"
>
<rect
width=
"400"
height=
"400"
fill=
"none"
/>
<path
d=
"M153.62,301.59c94.34,0,145.94-78.16,145.94-145.94,0-2.22,0-4.43-.15-6.63A104.36,104.36,0,0,0,325,122.47a102.38,102.38,0,0,1-29.46,8.07,51.47,51.47,0,0,0,22.55-28.37,102.79,102.79,0,0,1-32.57,12.45,51.34,51.34,0,0,0-87.41,46.78A145.62,145.62,0,0,1,92.4,107.81a51.33,51.33,0,0,0,15.88,68.47A50.91,50.91,0,0,1,85,169.86c0,.21,0,.43,0,.65a51.31,51.31,0,0,0,41.15,50.28,51.21,51.21,0,0,1-23.16.88,51.35,51.35,0,0,0,47.92,35.62,102.92,102.92,0,0,1-63.7,22A104.41,104.41,0,0,1,75,278.55a145.21,145.21,0,0,0,78.62,23"
fill=
"#fff"
/>
</svg>
</a>
<a
aria-label=
"Angular on YouTube"
target=
"_blank"
rel=
"noopener"
href=
"https://youtube.com/angular"
title=
"YouTube"
>
<svg
id=
"youtube-logo"
height=
"24"
width=
"24"
data-name=
"Logo"
xmlns=
"http://www.w3.org/2000/svg"
viewBox=
"0 0 24 24"
fill=
"#fff"
>
<path
d=
"M0 0h24v24H0V0z"
fill=
"none"
/>
<path
d=
"M21.58 7.19c-.23-.86-.91-1.54-1.77-1.77C18.25 5 12 5 12 5s-6.25 0-7.81.42c-.86.23-1.54.91-1.77 1.77C2 8.75 2 12 2 12s0 3.25.42 4.81c.23.86.91 1.54 1.77 1.77C5.75 19 12 19 12 19s6.25 0 7.81-.42c.86-.23 1.54-.91 1.77-1.77C22 15.25 22 12 22 12s0-3.25-.42-4.81zM10 15V9l5.2 3-5.2 3z"
/>
</svg>
</a>
</div>
<div
class=
"content"
role=
"main"
>
<!-- Highlight Card -->
<div
class=
"card highlight-card card-small"
>
<svg
id=
"rocket"
xmlns=
"http://www.w3.org/2000/svg"
width=
"101.678"
height=
"101.678"
viewBox=
"0 0 101.678 101.678"
>
<title>
Rocket Ship
</title>
<g
id=
"Group_83"
data-name=
"Group 83"
transform=
"translate(-141 -696)"
>
<circle
id=
"Ellipse_8"
data-name=
"Ellipse 8"
cx=
"50.839"
cy=
"50.839"
r=
"50.839"
transform=
"translate(141 696)"
fill=
"#dd0031"
/>
<g
id=
"Group_47"
data-name=
"Group 47"
transform=
"translate(165.185 720.185)"
>
<path
id=
"Path_33"
data-name=
"Path 33"
d=
"M3.4,42.615a3.084,3.084,0,0,0,3.553,3.553,21.419,21.419,0,0,0,12.215-6.107L9.511,30.4A21.419,21.419,0,0,0,3.4,42.615Z"
transform=
"translate(0.371 3.363)"
fill=
"#fff"
/>
<path
id=
"Path_34"
data-name=
"Path 34"
d=
"M53.3,3.221A3.09,3.09,0,0,0,50.081,0,48.227,48.227,0,0,0,18.322,13.437c-6-1.666-14.991-1.221-18.322,7.218A33.892,33.892,0,0,1,9.439,25.1l-.333.666a3.013,3.013,0,0,0,.555,3.553L23.985,43.641a2.9,2.9,0,0,0,3.553.555l.666-.333A33.892,33.892,0,0,1,32.647,53.3c8.55-3.664,8.884-12.326,7.218-18.322A48.227,48.227,0,0,0,53.3,3.221ZM34.424,9.772a6.439,6.439,0,1,1,9.106,9.106,6.368,6.368,0,0,1-9.106,0A6.467,6.467,0,0,1,34.424,9.772Z"
transform=
"translate(0 0.005)"
fill=
"#fff"
/>
</g>
</g>
</svg>
<span>
{{ title }} app is running!
</span>
<svg
id=
"rocket-smoke"
xmlns=
"http://www.w3.org/2000/svg"
width=
"516.119"
height=
"1083.632"
viewBox=
"0 0 516.119 1083.632"
>
<title>
Rocket Ship Smoke
</title>
<path
id=
"Path_40"
data-name=
"Path 40"
d=
"M644.6,141S143.02,215.537,147.049,870.207s342.774,201.755,342.774,201.755S404.659,847.213,388.815,762.2c-27.116-145.51-11.551-384.124,271.9-609.1C671.15,139.365,644.6,141,644.6,141Z"
transform=
"translate(-147.025 -140.939)"
fill=
"#f5f5f5"
/>
</svg>
</div>
<!-- Resources -->
<h2>
Resources
</h2>
<p>
Here are some links to help you get started:
</p>
<div
class=
"card-container"
>
<a
class=
"card"
target=
"_blank"
rel=
"noopener"
href=
"https://angular.io/tutorial"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3L1 9l11 6 9-4.91V17h2V9L12 3z"
/></svg>
<span>
Learn Angular
</span>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
/></svg>
</a>
<a
class=
"card"
target=
"_blank"
rel=
"noopener"
href=
"https://angular.io/cli"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"
/></svg>
<span>
CLI Documentation
</span>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
/></svg>
</a>
<a
class=
"card"
target=
"_blank"
rel=
"noopener"
href=
"https://blog.angular.io/"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M13.5.67s.74 2.65.74 4.8c0 2.06-1.35 3.73-3.41 3.73-2.07 0-3.63-1.67-3.63-3.73l.03-.36C5.21 7.51 4 10.62 4 14c0 4.42 3.58 8 8 8s8-3.58 8-8C20 8.61 17.41 3.8 13.5.67zM11.71 19c-1.78 0-3.22-1.4-3.22-3.14 0-1.62 1.05-2.76 2.81-3.12 1.77-.36 3.6-1.21 4.62-2.58.39 1.29.59 2.65.59 4.04 0 2.65-2.15 4.8-4.8 4.8z"
/></svg>
<span>
Angular Blog
</span>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
/></svg>
</a>
</div>
<!-- Next Steps -->
<h2>
Next Steps
</h2>
<p>
What do you want to do next with your app?
</p>
<input
type=
"hidden"
#selection
>
<div
class=
"card-container"
>
<div
class=
"card card-small"
(click)=
"selection.value = 'component'"
tabindex=
"0"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
/></svg>
<span>
New Component
</span>
</div>
<div
class=
"card card-small"
(click)=
"selection.value = 'material'"
tabindex=
"0"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
/></svg>
<span>
Angular Material
</span>
</div>
<div
class=
"card card-small"
(click)=
"selection.value = 'pwa'"
tabindex=
"0"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
/></svg>
<span>
Add PWA Support
</span>
</div>
<div
class=
"card card-small"
(click)=
"selection.value = 'dependency'"
tabindex=
"0"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
/></svg>
<span>
Add Dependency
</span>
</div>
<div
class=
"card card-small"
(click)=
"selection.value = 'test'"
tabindex=
"0"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
/></svg>
<span>
Run and Watch Tests
</span>
</div>
<div
class=
"card card-small"
(click)=
"selection.value = 'build'"
tabindex=
"0"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
/></svg>
<span>
Build for Production
</span>
</div>
</div>
<!-- Terminal -->
<div
class=
"terminal"
[ngSwitch]=
"selection.value"
>
<pre
*ngSwitchDefault
>
ng generate component xyz
</pre>
<pre
*ngSwitchCase=
"'material'"
>
ng add @angular/material
</pre>
<pre
*ngSwitchCase=
"'pwa'"
>
ng add @angular/pwa
</pre>
<pre
*ngSwitchCase=
"'dependency'"
>
ng add _____
</pre>
<pre
*ngSwitchCase=
"'test'"
>
ng test
</pre>
<pre
*ngSwitchCase=
"'build'"
>
ng build
</pre>
</div>
<!-- Links -->
<div
class=
"card-container"
>
<a
class=
"circle-link"
title=
"Animations"
href=
"https://angular.io/guide/animations"
target=
"_blank"
rel=
"noopener"
>
<svg
id=
"Group_20"
data-name=
"Group 20"
xmlns=
"http://www.w3.org/2000/svg"
width=
"21.813"
height=
"23.453"
viewBox=
"0 0 21.813 23.453"
>
<path
id=
"Path_15"
data-name=
"Path 15"
d=
"M4099.584,972.736h0l-10.882,3.9,1.637,14.4,9.245,5.153,9.245-5.153,1.686-14.4Z"
transform=
"translate(-4088.702 -972.736)"
fill=
"#ffa726"
/>
<path
id=
"Path_16"
data-name=
"Path 16"
d=
"M4181.516,972.736v23.453l9.245-5.153,1.686-14.4Z"
transform=
"translate(-4170.633 -972.736)"
fill=
"#fb8c00"
/>
<path
id=
"Path_17"
data-name=
"Path 17"
d=
"M4137.529,1076.127l-7.7-3.723,4.417-2.721,7.753,3.723Z"
transform=
"translate(-4125.003 -1058.315)"
fill=
"#ffe0b2"
/>
<path
id=
"Path_18"
data-name=
"Path 18"
d=
"M4137.529,1051.705l-7.7-3.723,4.417-2.721,7.753,3.723Z"
transform=
"translate(-4125.003 -1036.757)"
fill=
"#fff3e0"
/>
<path
id=
"Path_19"
data-name=
"Path 19"
d=
"M4137.529,1027.283l-7.7-3.723,4.417-2.721,7.753,3.723Z"
transform=
"translate(-4125.003 -1015.199)"
fill=
"#fff"
/>
</svg>
</a>
<a
class=
"circle-link"
title=
"CLI"
href=
"https://cli.angular.io/"
target=
"_blank"
rel=
"noopener"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"21.762"
height=
"23.447"
viewBox=
"0 0 21.762 23.447"
>
<title>
Angular CLI Logo
</title>
<g
id=
"Group_21"
data-name=
"Group 21"
transform=
"translate(0)"
>
<path
id=
"Path_20"
data-name=
"Path 20"
d=
"M2660.313,313.618h0l-10.833,3.9,1.637,14.4,9.2,5.152,9.244-5.152,1.685-14.4Z"
transform=
"translate(-2649.48 -313.618)"
fill=
"#37474f"
/>
<path
id=
"Path_21"
data-name=
"Path 21"
d=
"M2741.883,313.618v23.447l9.244-5.152,1.685-14.4Z"
transform=
"translate(-2731.05 -313.618)"
fill=
"#263238"
/>
<path
id=
"Path_22"
data-name=
"Path 22"
d=
"M2692.293,379.169h11.724V368.618h-11.724Zm11.159-.6h-10.608v-9.345h10.621v9.345Z"
transform=
"translate(-2687.274 -362.17)"
fill=
"#fff"
/>
<path
id=
"Path_23"
data-name=
"Path 23"
d=
"M2709.331,393.688l.4.416,2.265-2.28-2.294-2.294-.4.4,1.893,1.893Z"
transform=
"translate(-2702.289 -380.631)"
fill=
"#fff"
/>
<rect
id=
"Rectangle_12"
data-name=
"Rectangle 12"
width=
"3.517"
height=
"0.469"
transform=
"translate(9.709 13.744)"
fill=
"#fff"
/>
</g>
</svg>
</a>
<a
class=
"circle-link"
title=
"Find a Local Meetup"
href=
"https://www.meetup.com/find/?keywords=angular"
target=
"_blank"
rel=
"noopener"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"24.607"
height=
"23.447"
viewBox=
"0 0 24.607 23.447"
>
<title>
Meetup Logo
</title>
<path
id=
"logo--mSwarm"
d=
"M21.221,14.95A4.393,4.393,0,0,1,17.6,19.281a4.452,4.452,0,0,1-.8.069c-.09,0-.125.035-.154.117a2.939,2.939,0,0,1-2.506,2.091,2.868,2.868,0,0,1-2.248-.624.168.168,0,0,0-.245-.005,3.926,3.926,0,0,1-2.589.741,4.015,4.015,0,0,1-3.7-3.347,2.7,2.7,0,0,1-.043-.38c0-.106-.042-.146-.143-.166a3.524,3.524,0,0,1-1.516-.69A3.623,3.623,0,0,1,2.23,14.557a3.66,3.66,0,0,1,1.077-3.085.138.138,0,0,0,.026-.2,3.348,3.348,0,0,1-.451-1.821,3.46,3.46,0,0,1,2.749-3.28.44.44,0,0,0,.355-.281,5.072,5.072,0,0,1,3.863-3,5.028,5.028,0,0,1,3.555.666.31.31,0,0,0,.271.03A4.5,4.5,0,0,1,18.3,4.7a4.4,4.4,0,0,1,1.334,2.751,3.658,3.658,0,0,1,.022.706.131.131,0,0,0,.1.157,2.432,2.432,0,0,1,1.574,1.645,2.464,2.464,0,0,1-.7,2.616c-.065.064-.051.1-.014.166A4.321,4.321,0,0,1,21.221,14.95ZM13.4,14.607a2.09,2.09,0,0,0,1.409,1.982,4.7,4.7,0,0,0,1.275.221,1.807,1.807,0,0,0,.9-.151.542.542,0,0,0,.321-.545.558.558,0,0,0-.359-.534,1.2,1.2,0,0,0-.254-.078c-.262-.047-.526-.086-.787-.138a.674.674,0,0,1-.617-.75,3.394,3.394,0,0,1,.218-1.109c.217-.658.509-1.286.79-1.918a15.609,15.609,0,0,0,.745-1.86,1.95,1.95,0,0,0,.06-1.073,1.286,1.286,0,0,0-1.051-1.033,1.977,1.977,0,0,0-1.521.2.339.339,0,0,1-.446-.042c-.1-.092-.2-.189-.307-.284a1.214,1.214,0,0,0-1.643-.061,7.563,7.563,0,0,1-.614.512A.588.588,0,0,1,10.883,8c-.215-.115-.437-.215-.659-.316a2.153,2.153,0,0,0-.695-.248A2.091,2.091,0,0,0,7.541,8.562a9.915,9.915,0,0,0-.405.986c-.559,1.545-1.015,3.123-1.487,4.7a1.528,1.528,0,0,0,.634,1.777,1.755,1.755,0,0,0,1.5.211,1.35,1.35,0,0,0,.824-.858c.543-1.281,1.032-2.584,1.55-3.875.142-.355.28-.712.432-1.064a.548.548,0,0,1,.851-.24.622.622,0,0,1,.185.539,2.161,2.161,0,0,1-.181.621c-.337.852-.68,1.7-1.018,2.552a2.564,2.564,0,0,0-.173.528.624.624,0,0,0,.333.71,1.073,1.073,0,0,0,.814.034,1.22,1.22,0,0,0,.657-.655q.758-1.488,1.511-2.978.35-.687.709-1.37a1.073,1.073,0,0,1,.357-.434.43.43,0,0,1,.463-.016.373.373,0,0,1,.153.387.7.7,0,0,1-.057.236c-.065.157-.127.316-.2.469-.42.883-.846,1.763-1.262,2.648A2.463,2.463,0,0,0,13.4,14.607Zm5.888,6.508a1.09,1.09,0,0,0-2.179.006,1.09,1.09,0,0,0,2.179-.006ZM1.028,12.139a1.038,1.038,0,1,0,.01-2.075,1.038,1.038,0,0,0-.01,2.075ZM13.782.528a1.027,1.027,0,1,0-.011,2.055A1.027,1.027,0,0,0,13.782.528ZM22.21,6.95a.882.882,0,0,0-1.763.011A.882.882,0,0,0,22.21,6.95ZM4.153,4.439a.785.785,0,1,0,.787-.78A.766.766,0,0,0,4.153,4.439Zm8.221,18.22a.676.676,0,1,0-.677.666A.671.671,0,0,0,12.374,22.658ZM22.872,12.2a.674.674,0,0,0-.665.665.656.656,0,0,0,.655.643.634.634,0,0,0,.655-.644A.654.654,0,0,0,22.872,12.2ZM7.171-.123A.546.546,0,0,0,6.613.43a.553.553,0,1,0,1.106,0A.539.539,0,0,0,7.171-.123ZM24.119,9.234a.507.507,0,0,0-.493.488.494.494,0,0,0,.494.494.48.48,0,0,0,.487-.483A.491.491,0,0,0,24.119,9.234Zm-19.454,9.7a.5.5,0,0,0-.488-.488.491.491,0,0,0-.487.5.483.483,0,0,0,.491.479A.49.49,0,0,0,4.665,18.936Z"
transform=
"translate(0 0.123)"
fill=
"#f64060"
/>
</svg>
</a>
<a
class=
"circle-link"
title=
"Join the Conversation on Discord"
href=
"https://discord.gg/angular"
target=
"_blank"
rel=
"noopener"
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"26"
height=
"26"
viewBox=
"0 0 245 240"
>
<title>
Discord Logo
</title>
<path
d=
"M104.4 103.9c-5.7 0-10.2 5-10.2 11.1s4.6 11.1 10.2 11.1c5.7 0 10.2-5 10.2-11.1.1-6.1-4.5-11.1-10.2-11.1zM140.9 103.9c-5.7 0-10.2 5-10.2 11.1s4.6 11.1 10.2 11.1c5.7 0 10.2-5 10.2-11.1s-4.5-11.1-10.2-11.1z"
/>
<path
d=
"M189.5 20h-134C44.2 20 35 29.2 35 40.6v135.2c0 11.4 9.2 20.6 20.5 20.6h113.4l-5.3-18.5 12.8 11.9 12.1 11.2 21.5 19V40.6c0-11.4-9.2-20.6-20.5-20.6zm-38.6 130.6s-3.6-4.3-6.6-8.1c13.1-3.7 18.1-11.9 18.1-11.9-4.1 2.7-8 4.6-11.5 5.9-5 2.1-9.8 3.5-14.5 4.3-9.6 1.8-18.4 1.3-25.9-.1-5.7-1.1-10.6-2.7-14.7-4.3-2.3-.9-4.8-2-7.3-3.4-.3-.2-.6-.3-.9-.5-.2-.1-.3-.2-.4-.3-1.8-1-2.8-1.7-2.8-1.7s4.8 8 17.5 11.8c-3 3.8-6.7 8.3-6.7 8.3-22.1-.7-30.5-15.2-30.5-15.2 0-32.2 14.4-58.3 14.4-58.3 14.4-10.8 28.1-10.5 28.1-10.5l1 1.2c-18 5.2-26.3 13.1-26.3 13.1s2.2-1.2 5.9-2.9c10.7-4.7 19.2-6 22.7-6.3.6-.1 1.1-.2 1.7-.2 6.1-.8 13-1 20.2-.2 9.5 1.1 19.7 3.9 30.1 9.6 0 0-7.9-7.5-24.9-12.7l1.4-1.6s13.7-.3 28.1 10.5c0 0 14.4 26.1 14.4 58.3 0 0-8.5 14.5-30.6 15.2z"
/>
</svg>
</a>
</div>
<!-- Footer -->
<footer>
Love Angular?
<a
href=
"https://github.com/angular/angular"
target=
"_blank"
rel=
"noopener"
>
Give our repo a star.
<div
class=
"github-star-badge"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M0 0h24v24H0z"
fill=
"none"
/><path
d=
"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
/></svg>
Star
</div>
</a>
<a
href=
"https://github.com/angular/angular"
target=
"_blank"
rel=
"noopener"
>
<svg
class=
"material-icons"
xmlns=
"http://www.w3.org/2000/svg"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><path
d=
"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"
fill=
"#1976d2"
/><path
d=
"M0 0h24v24H0z"
fill=
"none"
/></svg>
</a>
</footer>
<svg
id=
"clouds"
xmlns=
"http://www.w3.org/2000/svg"
width=
"2611.084"
height=
"485.677"
viewBox=
"0 0 2611.084 485.677"
>
<title>
Gray Clouds Background
</title>
<path
id=
"Path_39"
data-name=
"Path 39"
d=
"M2379.709,863.793c10-93-77-171-168-149-52-114-225-105-264,15-75,3-140,59-152,133-30,2.83-66.725,9.829-93.5,26.25-26.771-16.421-63.5-23.42-93.5-26.25-12-74-77-130-152-133-39-120-212-129-264-15-54.084-13.075-106.753,9.173-138.488,48.9-31.734-39.726-84.4-61.974-138.487-48.9-52-114-225-105-264,15a162.027,162.027,0,0,0-103.147,43.044c-30.633-45.365-87.1-72.091-145.206-58.044-52-114-225-105-264,15-75,3-140,59-152,133-53,5-127,23-130,83-2,42,35,72,70,86,49,20,106,18,157,5a165.625,165.625,0,0,0,120,0c47,94,178,113,251,33,61.112,8.015,113.854-5.72,150.492-29.764a165.62,165.62,0,0,0,110.861-3.236c47,94,178,113,251,33,31.385,4.116,60.563,2.495,86.487-3.311,25.924,5.806,55.1,7.427,86.488,3.311,73,80,204,61,251-33a165.625,165.625,0,0,0,120,0c51,13,108,15,157-5a147.188,147.188,0,0,0,33.5-18.694,147.217,147.217,0,0,0,33.5,18.694c49,20,106,18,157,5a165.625,165.625,0,0,0,120,0c47,94,178,113,251,33C2446.709,1093.793,2554.709,922.793,2379.709,863.793Z"
transform=
"translate(142.69 -634.312)"
fill=
"#eee"
/>
</svg>
</div>
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * * The content above * * * * * * * * * * * -->
<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->
<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<!-- * * * * * * * * * * End of Placeholder * * * * * * * * * * * -->
<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
<header
class=
"navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow"
dir=
"rtl"
>
<a
class=
"navbar-brand col-md-3 col-lg-2 me-0 px-3"
href=
"#"
routerLink=
"/"
>
نوبت گیری
</a>
<button
class=
"navbar-toggler position-absolute d-md-none collapsed"
type=
"button"
data-bs-toggle=
"collapse"
data-bs-target=
"#sidebarMenu"
aria-controls=
"sidebarMenu"
aria-expanded=
"false"
aria-label=
"Toggle navigation"
>
<span
class=
"navbar-toggler-icon"
></span>
</button>
<ul
class=
"navbar-nav px-5"
>
<li
class=
"nav-item text-nowrap"
>
<a
class=
"nav-link"
href=
"#"
routerLink=
"admin"
>
مدیریت
</a>
</li>
</ul>
</header>
<router-outlet></router-outlet>
src/app/app.module.ts
View file @
f0fec773
...
...
@@ -3,16 +3,38 @@ import { BrowserModule } from '@angular/platform-browser';
import
{
AppRoutingModule
}
from
'
./app-routing.module
'
;
import
{
AppComponent
}
from
'
./app.component
'
;
import
{
FormComponent
}
from
'
./form/form.component
'
;
import
{
HttpClient
,
HttpClientModule
}
from
'
@angular/common/http
'
;
import
{
FormsModule
,
ReactiveFormsModule
}
from
'
@angular/forms
'
;
import
{
AdminComponent
}
from
'
./admin/admin.component
'
;
import
{
NgPersianDatepickerModule
}
from
'
ng-persian-datepicker
'
;
import
{
PanelNewComponent
}
from
'
./admin/panel-new/panel-new.component
'
;
import
{
PanelOkComponent
}
from
'
./admin/panel-ok/panel-ok.component
'
;
import
{
PanelEndComponent
}
from
'
./admin/panel-end/panel-end.component
'
;
@
NgModule
({
declarations
:
[
AppComponent
AppComponent
,
FormComponent
,
AdminComponent
,
PanelNewComponent
,
PanelOkComponent
,
PanelEndComponent
,
],
imports
:
[
BrowserModule
,
AppRoutingModule
AppRoutingModule
,
HttpClientModule
,
ReactiveFormsModule
,
NgPersianDatepickerModule
,
FormsModule
,
],
providers
:
[],
bootstrap
:
[
AppComponent
]
bootstrap
:
[
AppComponent
]
,
})
export
class
AppModule
{
}
export
class
AppModule
{}
src/app/form/form.component.css
0 → 100644
View file @
f0fec773
.round-20
{
border-radius
:
15px
;
}
.right-box
{
text-align
:
right
;
display
:
flex
;
justify-content
:
right
;
}
.mr-1
{
margin-right
:
30px
;
}
src/app/form/form.component.html
0 → 100644
View file @
f0fec773
<main
class=
"center-all container-sm"
style=
"font-family:iransans;"
>
<div
class=
"box-me mt-5"
>
<div
class=
"text-center"
>
<h2>
دریافت نوبت آنلاین
</h2>
</div>
<div
class=
"row "
dir=
"rtl"
>
<div
class=
"col align-self-center"
>
<form
[formGroup]=
"checkoutForm"
(ngSubmit)=
"submitForm()"
>
<div>
<div
class=
"row m-lg-3"
>
<h4
class=
"mb-3"
>
اطلاعات شخصی
<span
style=
"color: red;"
>
*
</span></h4>
<div
class=
"col"
>
<input
type=
"text"
name=
"name"
formControlName=
'name'
class=
"form-control round-20 p-2"
placeholder=
"نام*"
>
</div>
<div
class=
"col"
>
<input
type=
"text"
name=
"lastName"
formControlName=
'lastname'
class=
"form-control round-20 p-2"
placeholder=
"نام خانوادگی*"
>
</div>
</div>
<div
class=
"row m-lg-3"
>
<div
class=
"col"
>
<input
type=
"tel"
name=
"tel"
formControlName=
'tel'
class=
"form-control round-20 p-2"
placeholder=
"شماره همراه*"
>
</div>
<div
class=
"col"
>
<input
type=
"email"
name=
"email"
formControlName=
'email'
class=
"form-control round-20 p-2"
placeholder=
"ایمیل (اختیاری)"
>
</div>
</div>
<div
class=
"row m-lg-3"
>
<h4
class=
"mb-3"
>
زمان ترجیحی
<span
style=
"color: red;"
>
*
</span></h4>
<div
class=
"col"
>
<div
class=
"form-check right-box"
>
<input
class=
"form-check-input"
id=
"t1"
type=
"radio"
#inputOff
value=
"Off"
(click)=
"periodDate(inputOff.value)"
[checked]=
'!period'
>
<label
class=
"form-check-label mr-1"
for=
"t1"
>
اولین زمان خالی
</label>
</div>
<div
class=
"form-check right-box"
>
<input
class=
"form-check-input"
id=
"t2"
type=
"radio"
#inputOn
value=
"On"
(click)=
"periodDate(inputOn.value)"
[checked]=
'period'
>
<label
class=
"form-check-label mr-1"
for=
"t2"
>
انتخاب بازه زمانی
</label>
</div>
<div
class=
"row mt-3"
*ngIf=
'period'
>
<div
class=
"col-md-6"
>
<div
class=
"input-group"
>
<label
class=
"p-1"
>
از تاریخ
</label>
<input
class=
"form-control round-20"
name=
"fdate"
type=
"text"
#datepickerInput
formControlName=
'fdate'
/>
</div>
<ng-persian-datepicker
[uiAutoPosition]=
true
[dateFormat]=
"'jYYYY/jMM/jDD'"
[input]=
"datepickerInput"
[uiTheme]=
"'gray'"
[timeMeridian]=
"false"
[timeEnable]=
"false"
>
</ng-persian-datepicker>
</div>
<div
class=
"col-md-6"
>
<div
class=
"input-group"
>
<h5
class=
"p-1"
>
تا تاریخ
</h5>
<input
class=
"form-control round-20"
name=
"edate"
type=
"text"
#datepickerInput2
formControlName=
'edate'
/>
</div>
<ng-persian-datepicker
[uiAutoPosition]=
true
[dateFormat]=
"'jYYYY/jMM/jDD'"
[input]=
"datepickerInput2"
[uiTheme]=
"'blue'"
[timeMeridian]=
"false"
[timeEnable]=
"false"
>
</ng-persian-datepicker>
</div>
</div>
</div>
</div>
</div>
<div
class=
"mt-3"
>
<div
class=
"row m-lg-3"
>
<div
class=
"col"
>
<h5
class=
"mb-3"
>
دریافت نوبت برای
<span
style=
"color: red;"
>
*
</span></h5>
<select
id=
"inputState"
class=
"form-select round-20"
name=
"typeQ"
formControlName=
'typeq'
>
<option
value=
"1"
selected
>
ویزیت
</option>
<option
value=
"2"
>
مشاوره
</option>
<option
value=
"3"
>
موارد دیگر
</option>
</select>
</div>
<div
class=
"col"
>
<h5
class=
"mb-3"
>
محل دریافت نوبت
<span
style=
"color: red;"
>
*
</span></h5>
<select
id=
"inputState"
class=
"form-select round-20"
name=
"locationQ"
formControlName=
'locationq'
>
<option
value=
"1"
selected
>
مطب 1
</option>
<option
value=
"2"
>
مطب 2
</option>
<option
value=
"3"
>
مطب 3
</option>
</select>
</div>
</div>
</div>
<div
class=
"row m-lg-3"
>
<div
class=
"col"
>
<textarea
name=
"doc"
id=
""
class=
"form-control round-20"
rows=
"3"
placeholder=
"توضیحات"
formControlName=
'dec'
></textarea>
</div>
</div>
<button
type=
"submit"
class=
"btn btn-primary round-20 p-2 "
>
درخواست نوبت
</button>
</form>
</div>
</div>
</div>
</main>
src/app/form/form.component.spec.ts
0 → 100644
View file @
f0fec773
import
{
ComponentFixture
,
TestBed
}
from
'
@angular/core/testing
'
;
import
{
FormComponent
}
from
'
./form.component
'
;
describe
(
'
FormComponent
'
,
()
=>
{
let
component
:
FormComponent
;
let
fixture
:
ComponentFixture
<
FormComponent
>
;
beforeEach
(
async
()
=>
{
await
TestBed
.
configureTestingModule
({
declarations
:
[
FormComponent
]
})
.
compileComponents
();
});
beforeEach
(()
=>
{
fixture
=
TestBed
.
createComponent
(
FormComponent
);
component
=
fixture
.
componentInstance
;
fixture
.
detectChanges
();
});
it
(
'
should create
'
,
()
=>
{
expect
(
component
).
toBeTruthy
();
});
});
src/app/form/form.component.ts
0 → 100644
View file @
f0fec773
import
{
ServerService
}
from
'
./../server.service
'
;
import
{
Component
,
OnInit
}
from
'
@angular/core
'
;
import
{
FormBuilder
,
FormGroup
}
from
'
@angular/forms
'
;
@
Component
({
selector
:
'
app-form
'
,
templateUrl
:
'
./form.component.html
'
,
styleUrls
:
[
'
./form.component.css
'
],
})
export
class
FormComponent
implements
OnInit
{
// item=this.http.getItem();
period
:
boolean
=
false
;
constructor
(
private
http
:
ServerService
,
public
formBuild
:
FormBuilder
)
{
let
d
=
new
Date
();
const
options
:
any
=
{
year
:
'
numeric
'
,
month
:
'
long
'
,
day
:
'
numeric
'
};
this
.
checkoutForm
=
this
.
formBuild
.
group
({
name
:
''
,
lastname
:
''
,
tel
:
''
,
email
:
''
,
typeq
:
''
,
locationq
:
''
,
fdate
:
''
,
edate
:
''
,
dec
:
''
,
date
:
d
.
toLocaleDateString
(
'
fa-IR
'
,
options
)
+
'
-
'
+
d
.
toLocaleTimeString
(
'
fa-IR
'
),
});
}
checkoutForm
:
FormGroup
;
ngOnInit
():
void
{}
submitForm
()
{
console
.
log
(
this
.
checkoutForm
.
value
);
let
object
=
this
.
checkoutForm
.
value
;
this
.
http
.
sendItem
(
object
);
this
.
checkoutForm
.
reset
();
}
periodDate
(
tf
:
any
)
{
if
(
tf
==
'
Off
'
)
{
this
.
period
=
false
;
}
else
{
this
.
period
=
true
;
}
}
}
src/app/server.service.spec.ts
0 → 100644
View file @
f0fec773
import
{
TestBed
}
from
'
@angular/core/testing
'
;
import
{
ServerService
}
from
'
./server.service
'
;
describe
(
'
ServerService
'
,
()
=>
{
let
service
:
ServerService
;
beforeEach
(()
=>
{
TestBed
.
configureTestingModule
({});
service
=
TestBed
.
inject
(
ServerService
);
});
it
(
'
should be created
'
,
()
=>
{
expect
(
service
).
toBeTruthy
();
});
});
src/app/server.service.ts
0 → 100644
View file @
f0fec773
import
{
iSick
}
from
'
./ISick
'
;
import
{
Injectable
}
from
'
@angular/core
'
;
import
{
HttpClient
,
HttpErrorResponse
}
from
'
@angular/common/http
'
;
import
{
Observable
,
throwError
}
from
'
rxjs
'
;
import
{
catchError
}
from
'
rxjs/operators
'
;
@
Injectable
({
providedIn
:
'
root
'
,
})
export
class
ServerService
{
constructor
(
private
http
:
HttpClient
)
{}
sendItem
(
value
:
any
)
{
this
.
http
.
post
(
'
http://127.0.0.1:8000/api/store
'
,
value
).
subscribe
(
(
response
)
=>
console
.
log
(
response
),
(
error
)
=>
console
.
log
(
error
)
);
}
setQ
(
date
:
any
):
Observable
<
iSick
[]
>
{
// this.http.post('http://127.0.0.1:8000/api/update', date).subscribe(
// (response) => console.log(response),
// (error) => console.log(error)
// );
return
this
.
http
.
post
<
iSick
[]
>
(
'
http://127.0.0.1:8000/api/update
'
,
date
).
pipe
(
catchError
(
this
.
showError
));
}
getItem
():
Observable
<
iSick
[]
>
{
return
this
.
http
.
get
<
iSick
[]
>
(
'
http://127.0.0.1:8000/api/sick
'
)
.
pipe
(
catchError
(
this
.
showError
));
}
chengeItem
(
id
:
number
):
Observable
<
iSick
[]
>
{
let
url
:
string
=
'
http://127.0.0.1:8000/api/chenge/
'
+
id
;
return
this
.
http
.
get
<
iSick
[]
>
(
url
).
pipe
(
catchError
(
this
.
showError
));
}
showError
(
errorResponse
:
HttpErrorResponse
)
{
if
(
errorResponse
.
error
instanceof
ErrorEvent
)
{
console
.
error
(
'
client side error
'
,
errorResponse
.
error
.
message
);
}
else
{
console
.
error
(
'
Server side Error
'
,
errorResponse
.
error
.
message
);
}
return
throwError
(
'
Please Try again , this issue
'
);
}
}
src/assets/font/BRoya.ttf
0 → 100644
View file @
f0fec773
File added
src/assets/font/IRANSansWeb.ttf
0 → 100644
View file @
f0fec773
File added
src/index.html
View file @
f0fec773
...
...
@@ -6,6 +6,7 @@
<base
href=
"/"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<link
rel=
"icon"
type=
"image/x-icon"
href=
"favicon.ico"
>
</head>
<body>
<app-root></app-root>
...
...
src/persian-date-0.1.8.min.js
0 → 100644
View file @
f0fec773
!
function
(){
function
a
(
a
){
return
a
.
toString
().
toPersianDigit
()}
function
b
(
a
){
return
"
[object Array]
"
===
Object
.
prototype
.
toString
.
call
(
a
)}
function
c
(
a
){
return
"
number
"
==
typeof
a
?
!
0
:
!
1
}
function
d
(
a
){
return
a
instanceof
Date
}
function
e
(
a
){
return
"
undefined
"
==
typeof
a
?
!
0
:
!
1
}
function
f
(
a
,
b
){
for
(
var
c
=
a
+
""
;
c
.
length
<
b
;)
c
=
"
0
"
+
c
;
return
c
}
function
g
(
a
,
b
){
return
a
-
b
*
Math
.
floor
(
a
/
b
)}
function
h
(
a
){
return
g
(
Math
.
floor
(
a
+
1.5
),
7
)}
function
i
(
a
){
return
a
%
4
==
0
&&!
(
a
%
100
===
0
&&
a
%
400
!=
0
)}
function
j
(
a
){
return
682
>
682
*
((
a
-
(
a
>
0
?
474
:
473
))
%
2820
+
474
+
38
)
%
2816
}
function
k
(
a
,
b
,
c
){
return
t
-
1
+
365
*
(
a
-
1
)
+
Math
.
floor
((
a
-
1
)
/
4
)
+-
Math
.
floor
((
a
-
1
)
/
100
)
+
Math
.
floor
((
a
-
1
)
/
400
)
+
Math
.
floor
((
367
*
b
-
362
)
/
12
+
(
2
>=
b
?
0
:
i
(
a
)?
-
1
:
-
2
)
+
c
)}
function
l
(
a
){
var
b
,
c
,
d
,
e
,
f
,
h
,
j
,
l
,
m
,
n
,
o
,
p
;
return
b
=
Math
.
floor
(
a
-
.
5
)
+
.
5
,
c
=
b
-
t
,
d
=
Math
.
floor
(
c
/
146097
),
e
=
g
(
c
,
146097
),
f
=
Math
.
floor
(
e
/
36524
),
h
=
g
(
e
,
36524
),
j
=
Math
.
floor
(
h
/
1461
),
l
=
g
(
h
,
1461
),
m
=
Math
.
floor
(
l
/
365
),
n
=
400
*
d
+
100
*
f
+
4
*
j
+
m
,
4
!=
f
&&
4
!=
m
&&
n
++
,
o
=
b
-
k
(
n
,
1
,
1
),
p
=
b
<
k
(
n
,
3
,
1
)?
0
:
i
(
n
)?
1
:
2
,
month
=
Math
.
floor
((
12
*
(
o
+
p
)
+
373
)
/
367
),
day
=
b
-
k
(
n
,
month
,
1
)
+
1
,
new
Array
(
n
,
month
,
day
)}
function
m
(
a
,
b
,
c
){
g
=
function
(
a
,
b
){
return
a
-
b
*
Math
.
floor
(
a
/
b
)};
var
d
,
e
;
return
d
=
a
-
(
a
>=
0
?
474
:
473
),
e
=
474
+
g
(
d
,
2820
),
c
+
(
7
>=
b
?
31
*
(
b
-
1
):
30
*
(
b
-
1
)
+
6
)
+
Math
.
floor
((
682
*
e
-
110
)
/
2816
)
+
365
*
(
e
-
1
)
+
1029983
*
Math
.
floor
(
d
/
2820
)
+
(
u
-
1
)}
function
n
(
a
){
var
b
,
c
,
d
,
e
,
f
,
h
,
i
,
j
,
k
,
l
;
return
a
=
Math
.
floor
(
a
)
+
.
5
,
e
=
a
-
m
(
475
,
1
,
1
),
f
=
Math
.
floor
(
e
/
1029983
),
h
=
g
(
e
,
1029983
),
1029982
===
h
?
i
=
2820
:(
j
=
Math
.
floor
(
h
/
366
),
k
=
g
(
h
,
366
),
i
=
Math
.
floor
((
2134
*
j
+
2816
*
k
+
2815
)
/
1028522
)
+
j
+
1
),
b
=
i
+
2820
*
f
+
474
,
0
>=
b
&&
(
b
-=
1
),
l
=
a
-
m
(
b
,
1
,
1
)
+
1
,
c
=
Math
.
ceil
(
186
>=
l
?
l
/
31
:(
l
-
6
)
/
30
),
d
=
a
-
m
(
b
,
c
,
1
)
+
1
,
new
Array
(
b
,
c
,
d
)}
function
o
(
a
,
b
,
c
){
var
d
,
e
,
e
=
m
(
a
,
b
,
c
),
d
=
l
(
e
);
return
new
Array
(
d
[
0
],
d
[
1
]
-
1
,
d
[
2
])}
function
p
(
a
,
b
,
c
){
var
d
=
k
(
a
,
b
+
1
,
c
)
+
Math
.
floor
(.
5
)
/
86400
,
e
=
n
(
d
),
f
=
h
(
d
);
return
new
Array
(
e
[
0
],
e
[
1
],
e
[
2
],
f
)}
function
q
(
a
){
var
b
=
p
(
a
.
getFullYear
(),
a
.
getMonth
(),
a
.
getDate
()),
c
=
{};
return
c
.
monthDayNumber
=
b
[
2
]
-
1
,
6
==
b
[
3
]?
c
.
weekDayNumber
=
1
:
5
==
b
[
3
]?
c
.
weekDayNumber
=
0
:
4
==
b
[
3
]?
c
.
weekDayNumber
=
6
:
3
==
b
[
3
]?
c
.
weekDayNumber
=
5
:
2
==
b
[
3
]?
c
.
weekDayNumber
=
4
:
1
==
b
[
3
]?
c
.
weekDayNumber
=
3
:
0
==
b
[
3
]
&&
(
c
.
weekDayNumber
=
2
),
c
.
year
=
b
[
0
],
c
.
month
=
b
[
1
],
c
.
day
=
c
.
weekDayNumber
,
c
.
date
=
b
[
2
],
c
.
hours
=
a
.
getHours
(),
c
.
minutes
=
a
.
getMinutes
()
<
10
?
"
0
"
+
a
.
getMinutes
():
a
.
getMinutes
(),
c
.
seconds
=
a
.
getSeconds
(),
c
.
milliseconds
=
a
.
getMilliseconds
(),
c
.
timeZoneOffset
=
a
.
getTimezoneOffset
(),
c
}
function
r
(
a
){
var
b
=
o
(
a
[
0
]?
a
[
0
]:
0
,
a
[
1
]?
a
[
1
]:
1
,
a
[
2
]?
a
[
2
]:
1
),
c
=
new
Date
(
b
[
0
],
b
[
1
],
b
[
2
]);
return
c
.
setYear
(
b
[
0
]),
c
.
setMonth
(
b
[
1
]),
c
.
setDate
(
b
[
2
]),
c
.
setHours
(
a
[
3
]?
a
[
3
]:
0
),
c
.
setMinutes
(
a
[
4
]?
a
[
4
]:
0
),
c
.
setSeconds
(
a
[
5
]?
a
[
5
]:
0
),
c
}
function
s
(
a
){
return
[
a
.
year
,
a
.
month
,
a
.
date
,
a
.
hours
,
a
.
minutes
,
a
.
seconds
,
a
.
milliseconds
]}
var
t
=
1721425.5
,
u
=
1948320.5
,
v
=
{
1
:{
name
:{
fa
:
"
فروردین
"
},
abbr
:{
fa
:
"
فرو
"
}},
2
:{
name
:{
fa
:
"
اردیبهشت
"
},
abbr
:{
fa
:
"
ارد
"
}},
3
:{
name
:{
fa
:
"
خرداد
"
},
abbr
:{
fa
:
"
خرد
"
}},
4
:{
name
:{
fa
:
"
تیر
"
},
abbr
:{
fa
:
"
تیر
"
}},
5
:{
name
:{
fa
:
"
مرداد
"
},
abbr
:{
fa
:
"
مرد
"
}},
6
:{
name
:{
fa
:
"
شهریور
"
},
abbr
:{
fa
:
"
شهر
"
}},
7
:{
name
:{
fa
:
"
مهر
"
},
abbr
:{
fa
:
"
مهر
"
}},
8
:{
name
:{
fa
:
"
آبان
"
},
abbr
:{
fa
:
"
آبا
"
}},
9
:{
name
:{
fa
:
"
آذر
"
},
abbr
:{
fa
:
"
آذر
"
}},
10
:{
name
:{
fa
:
"
دی
"
},
abbr
:{
fa
:
"
دی
"
}},
11
:{
name
:{
fa
:
"
بهمن
"
},
abbr
:{
fa
:
"
بهم
"
}},
12
:{
name
:{
fa
:
"
اسفند
"
},
abbr
:{
fa
:
"
اسف
"
}}},
w
=
{
1
:{
name
:{
fa
:
"
شنبه
"
},
abbr
:{
fa
:
"
ش
"
}},
2
:{
name
:{
fa
:
"
یکشنبه
"
},
abbr
:{
fa
:
"
ی
"
}},
3
:{
name
:{
fa
:
"
دوشنبه
"
},
abbr
:{
fa
:
"
د
"
}},
4
:{
name
:{
fa
:
"
سه شنبه
"
},
abbr
:{
fa
:
"
س
"
}},
5
:{
name
:{
fa
:
"
چهار شنبه
"
},
abbr
:{
fa
:
"
چ
"
}},
6
:{
name
:{
fa
:
"
پنج شنبه
"
},
abbr
:{
fa
:
"
پ
"
}},
0
:{
name
:{
fa
:
"
جمعه
"
},
abbr
:{
fa
:
"
ج
"
}}},
x
=
[
"
اورمزد
"
,
"
بهمن
"
,
"
اوردیبهشت
"
,
"
شهریور
"
,
"
سپندارمذ
"
,
"
خورداد
"
,
"
امرداد
"
,
"
دی به آذز
"
,
"
آذز
"
,
"
آبان
"
,
"
خورشید
"
,
"
ماه
"
,
"
تیر
"
,
"
گوش
"
,
"
دی به مهر
"
,
"
مهر
"
,
"
سروش
"
,
"
رشن
"
,
"
فروردین
"
,
"
بهرام
"
,
"
رام
"
,
"
باد
"
,
"
دی به دین
"
,
"
دین
"
,
"
ارد
"
,
"
اشتاد
"
,
"
آسمان
"
,
"
زامیاد
"
,
"
مانتره سپند
"
,
"
انارام
"
,
"
زیادی
"
];
String
.
prototype
.
toPersianDigit
=
function
(
a
){
return
this
.
replace
(
/
\d
+/g
,
function
(
b
){
var
c
,
d
,
e
=
[],
f
=
[];
for
(
c
=
0
;
c
<
b
.
length
;
c
+=
1
)
e
.
push
(
b
.
charCodeAt
(
c
));
for
(
d
=
0
;
d
<
e
.
length
;
d
+=
1
)
f
.
push
(
String
.
fromCharCode
(
e
[
d
]
+
(
a
&&
a
===!
0
?
1584
:
1728
)));
return
f
.
join
(
""
)})},
Duration
=
function
(
a
){
var
b
=
function
(
a
){
return
0
>
a
?
Math
.
ceil
(
a
):
Math
.
floor
(
a
)},
c
=
this
.
_data
=
{},
d
=
a
.
years
||
a
.
year
||
a
.
y
||
0
,
e
=
a
.
months
||
a
.
month
||
a
.
M
||
0
,
f
=
a
.
weeks
||
a
.
w
||
a
.
week
||
0
,
g
=
a
.
days
||
a
.
d
||
a
.
day
||
0
,
h
=
a
.
hours
||
a
.
hour
||
a
.
h
||
0
,
i
=
a
.
minutes
||
a
.
minute
||
a
.
m
||
0
,
j
=
a
.
seconds
||
a
.
second
||
a
.
s
||
0
,
k
=
a
.
milliseconds
||
a
.
millisecond
||
a
.
ms
||
0
;
return
this
.
_milliseconds
=
k
+
1
e3
*
j
+
6
e4
*
i
+
36
e5
*
h
,
this
.
_days
=
g
+
7
*
f
,
this
.
_months
=
e
+
12
*
d
,
c
.
milliseconds
=
k
%
1
e3
,
j
+=
b
(
k
/
1
e3
),
c
.
seconds
=
j
%
60
,
i
+=
b
(
j
/
60
),
c
.
minutes
=
i
%
60
,
h
+=
b
(
i
/
60
),
c
.
hours
=
h
%
24
,
g
+=
b
(
h
/
24
),
g
+=
7
*
f
,
c
.
days
=
g
%
30
,
e
+=
b
(
g
/
30
),
c
.
months
=
e
%
12
,
d
+=
b
(
e
/
12
),
c
.
years
=
d
,
this
},
Duration
.
prototype
=
{
weeks
:
function
(){
return
"
Must Implement
"
},
valueOf
:
function
(){
return
this
.
_milliseconds
+
864
e5
*
this
.
_days
+
2592
e6
*
this
.
_months
},
humanize
:
function
(){
return
"
Must Implement
"
}};
var
y
=
function
(
a
){
if
(
!
(
this
instanceof
y
))
return
new
y
(
a
);
if
(
e
(
a
))
this
.
gDate
=
new
Date
;
else
if
(
d
(
a
))
this
.
gDate
=
a
;
else
if
(
b
(
a
)){
var
f
=
a
.
slice
();
this
.
gDate
=
r
(
f
)}
else
c
(
a
)?
this
.
gDate
=
new
Date
(
a
):
a
instanceof
y
?
this
.
gDate
=
a
.
gDate
:
"
/Date(
"
===
a
.
substring
(
0
,
6
)
&&
(
this
.
gDate
=
new
Date
(
parseInt
(
a
.
substr
(
6
))));
return
this
.
pDate
=
q
(
this
.
gDate
),
this
};
y
.
prototype
=
{
version
:
"
0.1.8b
"
,
formatPersian
:
"
_default
"
,
_utcMode
:
!
1
,
duration
:
function
(
a
,
b
){
var
c
=
this
.
isDuration
(
a
),
d
=
"
number
"
==
typeof
a
,
e
=
c
?
a
.
_data
:
d
?{}:
a
;
return
d
&&
(
b
?
e
[
b
]
=
a
:
e
.
milliseconds
=
a
),
new
Duration
(
e
)},
isDuration
:
function
(
a
){
return
a
instanceof
Duration
},
humanize
:
function
(){
return
"
Must Implement
"
},
add
:
function
(
a
,
b
){
var
c
=
this
.
duration
(
b
,
a
).
valueOf
(),
d
=
this
.
gDate
.
valueOf
()
+
c
;
return
new
y
(
d
)},
subtract
:
function
(
a
,
b
){
var
c
=
this
.
duration
(
b
,
a
).
valueOf
(),
d
=
this
.
gDate
.
valueOf
()
-
c
;
return
new
y
(
d
)},
formatNumber
:
function
(){
var
a
;
return
"
_default
"
===
this
.
formatPersian
?
a
=
window
.
formatPersian
===!
1
?
!
1
:
!
0
:
this
.
formatPersian
===!
0
?
a
=!
0
:
this
.
formatPersian
===!
1
?
a
=!
1
:
$
.
error
(
"
Invalid Config 'formatPersian' !!
"
),
a
},
format
:
function
(
b
){
function
c
(
b
){
switch
(
formatToPersian
=
d
.
formatNumber
(),
b
){
case
"
a
"
:
return
formatToPersian
?
g
.
hour
>=
12
?
"
ب ظ
"
:
"
ق ظ
"
:
g
.
hour
>=
12
?
"
PM
"
:
"
AM
"
;
case
"
H
"
:
return
formatToPersian
?
a
(
g
.
hour
):
g
.
hour
;
case
"
HH
"
:
return
formatToPersian
?
a
(
f
(
g
.
hour
,
2
)):
f
(
g
.
hour
,
2
);
case
"
h
"
:
var
c
=
g
.
hour
%
12
;
return
formatToPersian
?
a
(
c
):
c
;
case
"
hh
"
:
var
c
=
g
.
hour
%
12
;
return
formatToPersian
?
a
(
f
(
c
,
2
)):
f
(
c
,
2
);
case
"
m
"
:
return
formatToPersian
?
a
(
g
.
minute
):
g
.
minute
;
case
"
mm
"
:
return
formatToPersian
?
a
(
f
(
g
.
minute
,
2
)):
f
(
g
.
minute
,
2
);
case
"
s
"
:
return
formatToPersian
?
a
(
g
.
second
):
g
.
second
;
case
"
ss
"
:
return
formatToPersian
?
a
(
f
(
g
.
second
,
2
)):
f
(
g
.
second
,
2
);
case
"
D
"
:
return
formatToPersian
?
a
(
f
(
g
.
date
)):
f
(
g
.
date
);
case
"
DD
"
:
return
formatToPersian
?
a
(
f
(
g
.
date
,
2
)):
f
(
g
.
date
,
2
);
case
"
DDD
"
:
var
e
=
d
.
startOf
(
"
year
"
);
return
formatToPersian
?
a
(
d
.
diff
(
e
,
"
days
"
)):
d
.
diff
(
e
,
"
days
"
);
case
"
DDDD
"
:
var
e
=
d
.
startOf
(
"
year
"
);
return
formatToPersian
?
f
(
d
.
diff
(
e
,
"
days
"
),
3
):
a
(
f
(
d
.
diff
(
e
,
"
days
"
),
3
));
case
"
d
"
:
return
formatToPersian
?
a
(
d
.
pDate
.
weekDayNumber
):
d
.
pDate
.
weekDayNumber
;
case
"
ddd
"
:
return
w
[
d
.
pDate
.
weekDayNumber
].
abbr
.
fa
;
case
"
dddd
"
:
return
w
[
d
.
pDate
.
weekDayNumber
].
name
.
fa
;
case
"
ddddd
"
:
return
x
[
d
.
pDate
.
monthDayNumber
];
case
"
w
"
:
var
e
=
d
.
startOf
(
"
year
"
);
return
parseInt
(
d
.
diff
(
e
,
"
days
"
)
/
7
)
+
1
;
case
"
ww
"
:
var
e
=
d
.
startOf
(
"
year
"
);
return
f
(
parseInt
(
d
.
diff
(
e
,
"
days
"
)
/
7
)
+
1
,
2
);
case
"
M
"
:
return
formatToPersian
?
a
(
g
.
month
):
g
.
month
;
case
"
MM
"
:
return
formatToPersian
?
a
(
f
(
g
.
month
,
2
)):
f
(
g
.
month
,
2
);
case
"
MMM
"
:
return
v
[
g
.
month
].
abbr
.
fa
;
case
"
MMMM
"
:
return
v
[
g
.
month
].
name
.
fa
;
case
"
YY
"
:
var
h
=
g
.
year
.
toString
().
split
(
""
);
return
formatToPersian
?
a
(
h
[
2
]
+
h
[
3
]):
h
[
2
]
+
h
[
3
];
case
"
YYYY
"
:
return
formatToPersian
?
a
(
g
.
year
):
g
.
year
;
case
"
Z
"
:
var
i
=
"
+
"
,
j
=
Math
.
round
(
g
.
timezone
/
60
),
k
=
g
.
timezone
%
60
;
0
>
k
&&
(
k
*=-
1
),
0
>
j
&&
(
i
=
"
-
"
,
j
*=-
1
);
var
l
=
i
+
f
(
j
,
2
)
+
"
:
"
+
f
(
k
,
2
);
return
formatToPersian
?
a
(
l
):
l
;
case
"
ZZ
"
:
var
i
=
"
+
"
,
j
=
Math
.
round
(
g
.
timezone
/
60
),
k
=
g
.
timezone
%
60
;
0
>
k
&&
(
k
*=-
1
),
0
>
j
&&
(
i
=
"
-
"
,
j
*=-
1
);
var
l
=
i
+
f
(
j
,
2
)
+
""
+
f
(
k
,
2
);
return
formatToPersian
?
a
(
l
):
l
;
case
"
X
"
:
return
d
.
unix
();
case
"
LT
"
:
return
d
.
format
(
"
h:m a
"
);
case
"
L
"
:
return
d
.
format
(
"
YYYY/MM/DD
"
);
case
"
l
"
:
return
d
.
format
(
"
YYYY/M/D
"
);
case
"
LL
"
:
return
d
.
format
(
"
MMMM DD YYYY
"
);
case
"
ll
"
:
return
d
.
format
(
"
MMM DD YYYY
"
);
case
"
LLL
"
:
return
d
.
format
(
"
MMMM YYYY DD h:m a
"
);
case
"
lll
"
:
return
d
.
format
(
"
MMM YYYY DD h:m a
"
);
case
"
LLLL
"
:
return
d
.
format
(
"
dddd D MMMM YYYY h:m a
"
);
case
"
llll
"
:
return
d
.
format
(
"
ddd D MMM YYYY h:m a
"
);
default
:
return
g
.
_d
}}
var
d
=
this
,
e
=
/
(\[[^\[]
*
\])
|
(\\)?(
Mo|MM
?
M
?
M
?
|Do|DD
?
D
?
D
?
|ddddd|dddd
?
|do
?
|w
[
o|w
]?
|YYYY|YY|a|A|hh
?
|HH
?
|mm
?
|ss
?
|SS
?
S
?
|zz
?
|ZZ
?
|X|LT|ll
?
l
?
l
?
|LL
?
L
?
L
?)
/g
,
g
=
{
year
:
d
.
year
(),
month
:
d
.
month
(),
hour
:
d
.
hours
(),
minute
:
d
.
minutes
(),
second
:
d
.
seconds
(),
date
:
d
.
date
(),
timezone
:
d
.
zone
(),
unix
:
d
.
unix
()};
if
(
b
)
return
b
.
replace
(
e
,
c
);
var
b
=
"
YYYY-MM-DD HH:mm:ss a
"
;
return
b
.
replace
(
e
,
c
)},
from
:
function
(){
return
"
Must Implement
"
},
fromNow
:
function
(){
return
"
Must Implement
"
},
humanizeDuration
:
function
(){
return
"
Must Implement
"
},
_d
:
function
(){
return
this
.
gDate
.
_d
},
diff
:
function
(
a
,
b
,
c
){
var
d
,
e
=
new
y
(
this
),
f
=
a
,
g
=
0
,
h
=
e
.
gDate
-
f
.
gDate
-
g
,
i
=
e
.
year
()
-
f
.
year
(),
j
=
e
.
month
()
-
f
.
month
(),
k
=-
1
*
(
e
.
date
()
-
f
.
date
());
return
d
=
"
months
"
===
b
||
"
month
"
===
b
?
12
*
i
+
j
+
k
/
30
:
"
years
"
===
b
||
"
year
"
===
b
?
i
+
(
j
+
k
/
30
)
/
12
:
"
seconds
"
===
b
||
"
second
"
===
b
?
h
/
1
e3
:
"
minutes
"
===
b
||
"
minute
"
===
b
?
h
/
6
e4
:
"
hours
"
===
b
||
"
hour
"
===
b
?
h
/
36
e5
:
"
days
"
===
b
||
"
day
"
===
b
?
h
/
864
e5
:
"
weeks
"
===
b
||
"
week
"
===
b
?
h
/
6048
e5
:
h
,
c
?
d
:
Math
.
round
(
d
)},
startOf
:
function
(
a
){
switch
(
a
){
case
"
years
"
:
case
"
year
"
:
return
new
y
([
this
.
year
(),
1
,
1
]);
case
"
months
"
:
case
"
month
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
1
]);
case
"
days
"
:
case
"
day
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
0
,
0
,
0
]);
case
"
hours
"
:
case
"
hour
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
this
.
hours
(),
0
,
0
]);
case
"
minutes
"
:
case
"
minute
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
this
.
hours
(),
this
.
minutes
(),
0
]);
case
"
seconds
"
:
case
"
second
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
this
.
hours
(),
this
.
minutes
(),
this
.
seconds
()]);
case
"
weeks
"
:
case
"
week
"
:
var
b
=
this
.
pDate
.
weekDayNumber
;
return
0
===
b
?
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
()]):
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
()]).
subtract
(
"
days
"
,
b
);
default
:
return
this
}},
endOf
:
function
(
a
){
switch
(
a
){
case
"
years
"
:
case
"
year
"
:
var
b
=
this
.
isLeapYear
()?
30
:
29
;
return
new
y
([
this
.
year
(),
12
,
b
,
23
,
59
,
59
]);
case
"
months
"
:
case
"
month
"
:
var
c
=
this
.
daysInMonth
(
this
.
year
(),
this
.
month
());
return
new
y
([
this
.
year
(),
this
.
month
(),
c
,
23
,
59
,
59
]);
case
"
days
"
:
case
"
day
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
23
,
59
,
59
]);
case
"
hours
"
:
case
"
hour
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
this
.
hours
(),
59
,
59
]);
case
"
minutes
"
:
case
"
minute
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
this
.
hours
(),
this
.
minutes
(),
59
]);
case
"
seconds
"
:
case
"
second
"
:
return
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
(),
this
.
hours
(),
this
.
minutes
(),
this
.
seconds
()]);
case
"
weeks
"
:
case
"
week
"
:
var
d
=
this
.
pDate
.
weekDayNumber
;
return
d
=
6
===
d
?
7
:
6
-
d
,
new
y
([
this
.
year
(),
this
.
month
(),
this
.
date
()]).
add
(
"
days
"
,
d
);
default
:
return
this
}},
sod
:
function
(){
return
this
.
startOf
(
"
day
"
)},
eod
:
function
(){
return
this
.
endOf
(
"
day
"
)},
zone
:
function
(){
return
this
.
pDate
.
timeZoneOffset
},
local
:
function
(){
if
(
this
.
_utcMode
){
var
a
=
60
*
this
.
pDate
.
timeZoneOffset
*
1
e3
;
if
(
this
.
pDate
.
timeZoneOffset
<
0
)
var
b
=
this
.
valueOf
()
-
a
;
else
var
b
=
this
.
valueOf
()
+
a
;
return
this
.
gDate
=
new
Date
(
b
),
this
.
_updatePDate
(),
this
.
_utcMode
=!
1
,
this
}
return
this
},
utc
:
function
(
a
){
if
(
a
)
return
new
persianDate
(
a
).
utc
();
if
(
this
.
_utcMode
)
return
this
;
var
b
=
60
*
this
.
pDate
.
timeZoneOffset
*
1
e3
;
if
(
this
.
pDate
.
timeZoneOffset
<
0
)
var
c
=
this
.
valueOf
()
+
b
;
else
var
c
=
this
.
valueOf
()
-
b
;
return
this
.
gDate
=
new
Date
(
c
),
this
.
_updatePDate
(),
this
.
_utcMode
=!
0
,
this
},
isUtc
:
function
(){
return
this
.
_utcMode
},
isDST
:
function
(){
var
a
=
this
.
month
(),
b
=
this
.
date
();
return
7
>
a
?
!
1
:
7
==
a
&&
b
>=
2
||
a
>
7
?
!
0
:
void
0
},
isLeapYear
:
function
(){
return
j
(
this
.
year
())},
daysInMonth
:
function
(
a
,
b
){
var
c
=
a
?
a
:
this
.
year
(),
d
=
b
?
b
:
this
.
month
();
return
1
>
d
||
d
>
12
?
0
:
7
>
d
?
31
:
12
>
d
?
30
:
j
(
c
)?
30
:
29
},
toDate
:
function
(){
return
this
.
gDate
},
toArray
:
function
(){
return
[
this
.
year
(),
this
.
month
(),
this
.
day
(),
this
.
hour
(),
this
.
minute
(),
this
.
second
(),
this
.
millisecond
()]},
_valueOf
:
function
(){
return
this
.
gDate
.
valueOf
()},
unix
:
function
(
a
){
if
(
a
)
return
new
persianDate
(
1
e3
*
a
);
var
b
=
this
.
gDate
.
valueOf
().
toString
();
return
output
=
b
.
substring
(
0
,
b
.
length
-
3
),
parseInt
(
output
)},
isPersianDate
:
function
(
a
){
return
a
instanceof
y
},
millisecond
:
function
(
a
){
return
this
.
milliseconds
(
a
)},
milliseconds
:
function
(
a
){
return
a
?(
this
.
gDate
.
setMilliseconds
(
a
),
this
.
_updatePDate
(),
this
):
this
.
pDate
.
milliseconds
},
second
:
function
(
a
){
return
this
.
seconds
(
a
)},
seconds
:
function
(
a
){
return
a
|
0
===
a
?(
this
.
gDate
.
setSeconds
(
a
),
this
.
_updatePDate
(),
this
):
this
.
pDate
.
seconds
},
minute
:
function
(
a
){
return
this
.
minutes
(
a
)},
minutes
:
function
(
a
){
return
a
||
0
===
a
?(
this
.
gDate
.
setMinutes
(
a
),
this
.
_updatePDate
(),
this
):
this
.
pDate
.
minutes
},
hour
:
function
(
a
){
return
this
.
hours
(
a
)},
hours
:
function
(
a
){
return
a
|
0
===
a
?(
this
.
gDate
.
setHours
(
a
),
this
.
_updatePDate
(),
this
):
this
.
pDate
.
hours
},
dates
:
function
(
a
){
return
this
.
date
(
a
)},
date
:
function
(
a
){
if
(
a
|
0
==
a
){
var
b
=
s
(
this
.
pDate
);
return
b
[
2
]
=
a
,
this
.
gDate
=
r
(
b
),
this
.
_updatePDate
(),
this
}
return
this
.
pDate
.
date
},
days
:
function
(){
return
this
.
day
()},
day
:
function
(){
return
this
.
pDate
.
day
},
month
:
function
(
a
){
if
(
a
|
0
===
a
){
var
b
=
s
(
this
.
pDate
);
return
b
[
1
]
=
a
,
this
.
gDate
=
r
(
b
),
this
.
_updatePDate
(),
this
}
return
this
.
pDate
.
month
},
years
:
function
(
a
){
return
this
.
year
(
a
)},
year
:
function
(
a
){
if
(
a
|
0
===
a
){
var
b
=
s
(
this
.
pDate
);
return
b
[
0
]
=
a
,
this
.
gDate
=
r
(
b
),
this
.
_updatePDate
(),
this
}
return
this
.
pDate
.
year
},
getFirstWeekDayOfMonth
:
function
(
a
,
b
){
var
c
=
o
(
a
,
b
,
1
),
d
=
p
(
c
[
0
],
c
[
1
],
c
[
2
]);
return
d
[
3
]
+
2
===
8
?
1
:
d
[
3
]
+
2
===
7
?
7
:
d
[
3
]
+
2
},
clone
:
function
(){
var
a
=
this
;
return
new
y
(
a
.
gDate
)},
_updatePDate
:
function
(){
this
.
pDate
=
q
(
this
.
gDate
)},
valueOf
:
function
(){
return
this
.
_valueOf
()}},
persianDate
=
y
,
pDate
=
y
,
persianDate
.
unix
=
persianDate
.
prototype
.
unix
,
persianDate
.
utc
=
persianDate
.
prototype
.
utc
}();
\ No newline at end of file
src/persian-datepicker-0.4.5.min.css
0 → 100644
View file @
f0fec773
/*
persian-datepicker - v0.4.5
Author: reza babakhani
http://babakhani.github.io/PersianWebToolkit/datepicker
*/
.datepicker-plot-area
,
.unselectable
{
-moz-user-select
:
none
;
-khtml-user-select
:
none
;
-webkit-user-select
:
none
;
-o-user-select
:
none
}
.animation
,
.datepicker-plot-area
.datepicker-time-view
.down-btn
,
.datepicker-plot-area
.datepicker-time-view
.up-btn
{
-webkit-transition
:
all
100ms
ease
;
-moz-transition
:
all
100ms
ease
;
-ms-transition
:
all
100ms
ease
;
-o-transition
:
all
100ms
ease
;
transition
:
all
100ms
ease
}
.date-item-disable
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
.disabled
span
,
.datepicker-plot-area
.datepicker-month-view
.month-item-disable
,
.datepicker-plot-area
.datepicker-year-view
.year-item-disable
,
.reset-curve
{
-webkit-border-radius
:
0
;
-moz-border-radius
:
0
;
border-radius
:
0
}
.datepicker-plot-area
.datepicker-time-view
.down-btn
,
.datepicker-plot-area
.datepicker-time-view
.up-btn
,
.top-big-curve
{
-webkit-border-radius
:
6px
6px
0
0
;
-moz-border-radius
:
0
;
border-radius
:
6px
6px
0
0
;
-moz-border-radius-topleft
:
6px
;
-moz-border-radius-topright
:
6px
}
.bottom-big-curve
,
.datepicker-plot-area
.datepicker-time-view
.down-btn
{
-webkit-border-radius
:
0
0
6px
6px
;
-moz-border-radius
:
0
;
border-radius
:
0
0
6px
6px
;
-moz-border-radius-bottomright
:
6px
;
-moz-border-radius-bottomleft
:
6px
}
.big-curve
,
.datepicker-plot-area
,
.datepicker-plot-area
.datepicker-time-view
>
div
.time-segment
{
-webkit-border-radius
:
6px
;
-moz-border-radius
:
6px
;
border-radius
:
6px
}
.date-item
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
,
.datepicker-plot-area
.datepicker-month-view
.month-item
,
.datepicker-plot-area
.datepicker-year-view
.year-item
,
.small-curve
{
-webkit-border-radius
:
3px
;
-moz-border-radius
:
3px
;
border-radius
:
3px
}
.datepicker-plot-area
,
.main-box-shadow
{
-webkit-box-shadow
:
0
5px
10px
rgba
(
0
,
0
,
0
,
.2
);
-moz-box-shadow
:
0
5px
10px
rgba
(
0
,
0
,
0
,
.2
);
box-shadow
:
0
5px
10px
rgba
(
0
,
0
,
0
,
.2
)}
.date-item
,
.date-item-disable
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
.disabled
span
,
.datepicker-plot-area
.datepicker-header
.btn-next
,
.datepicker-plot-area
.datepicker-header
.btn-prev
,
.datepicker-plot-area
.datepicker-header
.btn-switch
,
.datepicker-plot-area
.datepicker-month-view
.month-item
,
.datepicker-plot-area
.datepicker-month-view
.month-item-disable
,
.datepicker-plot-area
.datepicker-time-view
.down-btn
,
.datepicker-plot-area
.datepicker-time-view
.up-btn
,
.datepicker-plot-area
.datepicker-time-view
input
,
.datepicker-plot-area
.datepicker-time-view
>
div
.time-segment
,
.datepicker-plot-area
.datepicker-year-view
.year-item
,
.datepicker-plot-area
.datepicker-year-view
.year-item-disable
,
.datepicker-plot-area
.toolbox
.btn-today
,
.interactive-item
{
cursor
:
pointer
}
.date-item
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
,
.datepicker-plot-area
.datepicker-month-view
.month-item
,
.datepicker-plot-area
.datepicker-year-view
.year-item
{
font
:
14px
;
background-color
:
#fff
;
color
:
#333
;
border
:
0
;
text-shadow
:
none
}
.date-item-disable
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
.disabled
span
,
.datepicker-plot-area
.datepicker-month-view
.month-item-disable
,
.datepicker-plot-area
.datepicker-year-view
.year-item-disable
{
background-color
:
#f1f1f1
!important
;
color
:
#ccc
!important
;
border
:
none
!important
;
text-shadow
:
none
!important
;
cursor
:
default
}
.date-item-today
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
.today
{
background-color
:
#333
;
color
:
#fff
;
border
:
0
;
text-shadow
:
none
}
.date-item-numb
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
.other-month
{
background-color
:
""
;
color
:
#ccc
;
border
:
none
;
text-shadow
:
none
}
.date-item-selected
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
.selected
,
.datepicker-plot-area
.datepicker-month-view
.month-item.selected
,
.datepicker-plot-area
.datepicker-year-view
.year-item.selected
{
background-color
:
#006dcc
!important
;
color
:
#fff
;
border
:
none
;
text-shadow
:
1px
1px
1px
#000
}
.date-item-hover
,
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
:hover
,
.datepicker-plot-area
.datepicker-month-view
.month-item
:hover
,
.datepicker-plot-area
.datepicker-year-view
.year-item
:hover
{
background-color
:
#eee
;
color
:
""
;
border
:
0
;
text-shadow
:
none
}
.datepicker-plot-area
{
box-sizing
:
border-box
;
overflow
:
hidden
;
min-height
:
70px
;
display
:
block
;
width
:
260px
;
padding
:
0
5px
;
position
:
absolute
;
top
:
100px
;
border
:
1px
solid
#ccc
;
background-color
:
#fff
}
.datepicker-plot-area
table
,
.datepicker-plot-area
td
,
.datepicker-plot-area
th
{
border
:
none
;
background
:
0
0
}
.datepicker-plot-area
*
{
text-align
:
center
;
color
:
#333
}
.datepicker-plot-area-inline-view
{
display
:
block
!important
;
width
:
100%
;
position
:
static
;
float
:
left
}
.datepicker-plot-area
.datepicker-day-view
,
.datepicker-plot-area
.datepicker-month-view
,
.datepicker-plot-area
.datepicker-year-view
{
display
:
block
;
width
:
98%
;
float
:
left
;
min-height
:
200px
!important
;
margin
:
0
1%
}
.datepicker-plot-area
.datepicker-time-view
{
display
:
block
;
float
:
left
;
width
:
100%
;
padding
:
5px
1%
;
margin
:
3px
0
;
background
:
#f9f9f9
;
border-top
:
1px
solid
#f1f1f1
}
.datepicker-plot-area
.datepicker-time-view
>
div
.time-segment
{
display
:
block
;
width
:
22%
;
height
:
60px
;
float
:
left
;
overflow
:
hidden
}
.datepicker-plot-area
.datepicker-time-view
>
div
.time-segment
:hover
.down-btn
,
.datepicker-plot-area
.datepicker-time-view
>
div
.time-segment
:hover
.up-btn
{
font-weight
:
700
;
background-color
:
#fff
}
.datepicker-plot-area
.datepicker-time-view
.divider
{
display
:
none
;
width
:
3%
;
height
:
60px
;
line-height
:
60px
!important
;
float
:
left
;
overflow
:
hidden
;
font
:
12px
bold
}
.datepicker-plot-area
.datepicker-time-view
.down-btn
,
.datepicker-plot-area
.datepicker-time-view
.up-btn
{
display
:
block
;
float
:
left
;
width
:
100%
;
margin
:
0
;
height
:
20px
;
line-height
:
18px
}
.datepicker-plot-area
.datepicker-time-view
.down-btn
:hover
,
.datepicker-plot-area
.datepicker-time-view
.up-btn
:hover
{
background-color
:
#eee
}
.datepicker-plot-area
.datepicker-time-view
input
{
display
:
block
;
width
:
90%
;
margin
:
0
5%
;
height
:
20px
;
padding
:
0
;
border
:
none
;
background
:
#f9f9f9
}
.datepicker-plot-area
.datepicker-day-view
.table-days
{
width
:
100%
;
float
:
left
;
direction
:
rtl
}
.datepicker-plot-area
.datepicker-day-view
.table-days
tr
{
width
:
300px
}
.datepicker-plot-area
.datepicker-day-view
.table-days
td
{
height
:
26px
;
padding
:
0
;
margin
:
0
}
.datepicker-plot-area
.datepicker-day-view
.table-days
td
span
{
display
:
block
;
width
:
100%
;
height
:
26px
;
line-height
:
26px
;
padding
:
0
;
margin
:
0
}
.datepicker-plot-area
.datepicker-day-view
.month-grid-box
{
display
:
block
;
width
:
100%
;
float
:
right
;
min-width
:
150px
;
height
:
180px
;
margin
:
10px
1%
5px
}
.datepicker-plot-area
.datepicker-day-view
.month-grid-box
.header
.header-row
{
display
:
block
;
width
:
100%
;
height
:
25px
;
float
:
left
}
.datepicker-plot-area
.datepicker-day-view
.month-grid-box
.header
.header-row-cell
{
display
:
block
;
width
:
14%
;
height
:
25px
;
float
:
right
;
line-height
:
25px
;
text-indent
:
6px
;
font
:
14px
tahoma
;
font-weight
:
700
;
color
:
#333
}
.datepicker-plot-area
.datepicker-month-view
.month-item
,
.datepicker-plot-area
.datepicker-year-view
.year-item
{
display
:
block
;
width
:
31%
;
margin
:
2px
1%
0
;
float
:
right
;
height
:
36px
;
line-height
:
34px
}
.datepicker-plot-area
.toolbox
{
display
:
block
;
width
:
100%
;
float
:
left
;
padding
:
3px
0
}
.datepicker-plot-area
.toolbox
.btn-today
{
display
:
block
;
width
:
60px
;
height
:
20px
;
line-height
:
16px
;
margin
:
0
auto
;
font-weight
:
700
;
background-color
:
#fff
}
.datepicker-plot-area
.toolbox
.btn-today
:hover
{
background-color
:
#eee
}
.datepicker-plot-area
.datepicker-header
{
display
:
block
;
width
:
98%
;
height
:
30px
;
float
:
left
;
padding
:
3px
1%
0
;
direction
:
ltr
}
.datepicker-plot-area
.datepicker-header
.btn-next
,
.datepicker-plot-area
.datepicker-header
.btn-prev
,
.datepicker-plot-area
.datepicker-header
.btn-switch
{
height
:
28px
;
line-height
:
28px
;
font-weight
:
700
;
background-color
:
#fff
;
color
:
#333
}
.datepicker-plot-area
.datepicker-header
.btn-next
:hover
,
.datepicker-plot-area
.datepicker-header
.btn-prev
:hover
,
.datepicker-plot-area
.datepicker-header
.btn-switch
:hover
{
background-color
:
#eee
}
.datepicker-plot-area
.datepicker-header
.btn-next
{
display
:
block
;
width
:
15%
;
float
:
left
}
.datepicker-plot-area
.datepicker-header
.btn-switch
{
display
:
block
;
width
:
66%
;
margin
:
0
2%
;
float
:
left
}
.datepicker-plot-area
.datepicker-header
.btn-prev
{
display
:
block
;
width
:
15%
;
float
:
left
}
\ No newline at end of file
src/persian-datepicker-0.4.5.min.js
0 → 100644
View file @
f0fec773
/*
persian-datepicker - v0.4.5
Author: reza babakhani
http://babakhani.github.io/PersianWebToolkit/datepicker
*/
(
function
(){(
function
(
e
){
e
.
fn
.
persianDatepicker
=
e
.
fn
.
pDatepicker
=
function
(
t
){
var
i
=
Array
.
prototype
.
slice
.
call
(
arguments
),
n
=
this
;
return
this
||
e
.
error
(
"
Invalid selector
"
),
e
(
this
).
each
(
function
(){
var
a
=
[],
s
=
i
.
concat
(
a
),
r
=
e
(
this
).
data
(
"
datepicker
"
);
if
(
r
&&
"
string
"
==
typeof
s
[
0
]){
var
o
=
s
[
0
];
s
.
splice
(
0
,
1
),
n
=
r
[
o
](
s
[
0
])}
else
this
.
pDatePicker
=
new
f
(
this
,
t
)}),
n
}})(
jQuery
);
var
e
=
{
persianDigit
:
!
0
,
viewMode
:
!
1
,
position
:
"
auto
"
,
autoClose
:
!
1
,
format
:
!
1
,
observer
:
!
1
,
inputDelay
:
800
,
formatter
:
function
(
e
){
var
t
=
this
,
i
=
new
persianDate
(
e
);
return
i
.
formatPersian
=!
1
,
i
.
format
(
t
.
format
)},
altField
:
!
1
,
altFormat
:
"
unix
"
,
altFieldFormatter
:
function
(
e
){
var
t
=
this
,
i
=
t
.
altFormat
.
toLowerCase
();
return
"
gregorian
"
===
i
|
"
g
"
===
i
?
new
Date
(
e
):
"
unix
"
===
i
|
"
u
"
===
i
?
e
:
new
persianDate
(
e
).
format
(
t
.
altFormat
)},
show
:
function
(){
return
this
.
view
.
fixPosition
(
this
),
this
.
element
.
main
.
show
(),
this
.
onShow
(
this
),
this
.
_viewed
=!
0
,
this
},
hide
:
function
(){
return
this
.
_viewed
&&
(
this
.
element
.
main
.
hide
(),
this
.
onHide
(
this
),
this
.
_viewed
=!
1
),
this
},
destroy
:
function
(){
this
.
inputElem
.
removeClass
(
self
.
cssClass
),
this
.
elmenet
.
main
.
remove
()},
onShow
:
function
(){},
onHide
:
function
(){},
onSelect
:
function
(){
return
this
},
navigator
:{
enabled
:
!
0
,
text
:{
btnNextText
:
"
<
"
,
btnPrevText
:
"
>
"
},
onNext
:
function
(){},
onPrev
:
function
(){},
onSwitch
:
function
(){}},
toolbox
:{
enabled
:
!
0
,
text
:{
btnToday
:
"
امروز
"
},
onToday
:
function
(){}},
timePicker
:{
enabled
:
!
1
,
showSeconds
:
!
0
,
showMeridian
:
!
0
,
secondStep
:
1
,
minuteStep
:
1
,
hourStep
:
1
,
scrollEnabled
:
!
0
,
changeOnScroll
:
!
0
},
dayPicker
:{
enabled
:
!
0
,
scrollEnabled
:
!
0
,
titleFormat
:
"
YYYY MMMM
"
,
titleFormatter
:
function
(
e
,
t
){
0
==
this
.
datepicker
.
persianDigit
&&
(
window
.
formatPersian
=!
1
);
var
i
=
new
persianDate
([
e
,
t
]).
format
(
this
.
titleFormat
);
return
window
.
formatPersian
=!
0
,
i
},
onSelect
:
function
(){}},
monthPicker
:{
enabled
:
!
0
,
scrollEnabled
:
!
0
,
titleFormat
:
"
YYYY
"
,
titleFormatter
:
function
(
e
){
0
==
this
.
datepicker
.
persianDigit
&&
(
window
.
formatPersian
=!
1
);
var
t
=
new
persianDate
(
e
).
format
(
this
.
titleFormat
);
return
window
.
formatPersian
=!
0
,
t
},
onSelect
:
function
(){}},
yearPicker
:{
enabled
:
!
0
,
scrollEnabled
:
!
0
,
titleFormat
:
"
YYYY
"
,
titleFormatter
:
function
(
e
){
var
t
=
12
*
parseInt
(
e
/
12
);
return
t
+
"
-
"
+
(
t
+
11
)},
onSelect
:
function
(){}},
onlyTimePicker
:
!
1
,
justSelectOnDate
:
!
0
,
minDate
:
!
1
,
maxDate
:
!
1
,
checkDate
:
function
(){
return
!
0
},
checkMonth
:
function
(){
return
!
0
},
checkYear
:
function
(){
return
!
0
}},
t
=
{
monthRange
:{
1
:{
name
:{
fa
:
"
فروردین
"
},
abbr
:{
fa
:
"
فرو
"
}},
2
:{
name
:{
fa
:
"
اردیبهشت
"
},
abbr
:{
fa
:
"
ارد
"
}},
3
:{
name
:{
fa
:
"
خرداد
"
},
abbr
:{
fa
:
"
خرد
"
}},
4
:{
name
:{
fa
:
"
تیر
"
},
abbr
:{
fa
:
"
تیر
"
}},
5
:{
name
:{
fa
:
"
مرداد
"
},
abbr
:{
fa
:
"
مرد
"
}},
6
:{
name
:{
fa
:
"
شهریور
"
},
abbr
:{
fa
:
"
شهر
"
}},
7
:{
name
:{
fa
:
"
مهر
"
},
abbr
:{
fa
:
"
مهر
"
}},
8
:{
name
:{
fa
:
"
آبان
"
},
abbr
:{
fa
:
"
آبا
"
}},
9
:{
name
:{
fa
:
"
آذر
"
},
abbr
:{
fa
:
"
آذر
"
}},
10
:{
name
:{
fa
:
"
دی
"
},
abbr
:{
fa
:
"
دی
"
}},
11
:{
name
:{
fa
:
"
بهمن
"
},
abbr
:{
fa
:
"
بهم
"
}},
12
:{
name
:{
fa
:
"
اسفند
"
},
abbr
:{
fa
:
"
اسف
"
}}},
weekRange
:{
0
:{
name
:{
fa
:
"
شنبه
"
},
abbr
:{
fa
:
"
ش
"
}},
1
:{
name
:{
fa
:
"
یکشنبه
"
},
abbr
:{
fa
:
"
ی
"
}},
2
:{
name
:{
fa
:
"
دوشنبه
"
},
abbr
:{
fa
:
"
د
"
}},
3
:{
name
:{
fa
:
"
سه شنبه
"
},
abbr
:{
fa
:
"
س
"
}},
4
:{
name
:{
fa
:
"
چهار شنبه
"
},
abbr
:{
fa
:
"
چ
"
}},
5
:{
name
:{
fa
:
"
پنج شنبه
"
},
abbr
:{
fa
:
"
پ
"
}},
6
:{
name
:{
fa
:
"
جمعه
"
},
abbr
:{
fa
:
"
ج
"
}}},
persianDaysName
:[
"
اورمزد
"
,
"
بهمن
"
,
"
اوردیبهشت
"
,
"
شهریور
"
,
"
سپندارمذ
"
,
"
خورداد
"
,
"
امرداد
"
,
"
دی به آذز
"
,
"
آذز
"
,
"
آبان
"
,
"
خورشید
"
,
"
ماه
"
,
"
تیر
"
,
"
گوش
"
,
"
دی به مهر
"
,
"
مهر
"
,
"
سروش
"
,
"
رشن
"
,
"
فروردین
"
,
"
بهرام
"
,
"
رام
"
,
"
باد
"
,
"
دی به دین
"
,
"
دین
"
,
"
ارد
"
,
"
اشتاد
"
,
"
آسمان
"
,
"
زامیاد
"
,
"
مانتره سپند
"
,
"
انارام
"
,
"
زیادی
"
]},
i
=
{
datepciker
:
"
<div class='{{css.datePickerPlotArea}}' ><div class='{{css.navigator}}' ></div> <div class='{{css.dayView}}' ></div><div class='{{css.monthView}}' ></div><div class='{{css.yearView}}' ></div><div class='{{css.timeView}}' ></div><div class='{{css.toolbox}}' ></div></div>
"
,
navigator
:
"
<div class='{{css.datpickerHeader}}' ><div class='{{css.btnNext}}' >{{btnNextText}}</div><div class='{{css.btnSwitch}}' >{{btnSwitchText}}</div><div class='{{css.btnPrev}}' >{{btnPrevText}}</div></div>
"
,
timepicker
:
"
<div class='hour time-segment' data-time-key='hour' ><div class='up-btn' >▲</div><input type='text' placeholder='hour' class='hour-input' /><div class='down-btn' >▼</div></div><div class='divider' >:</div><div class='minute time-segment' data-time-key='minute' ><div class='up-btn' >▲</div><input type='text' placeholder='minute' class='minute-input' /><div class='down-btn' >▼</div></div><div class='divider second-divider' >:</div><div class='second time-segment' data-time-key='second' ><div class='up-btn' >▲</div><input type='text' placeholder='second' class='second-input' /><div class='down-btn' >▼</div></div><div class='divider meridian-divider' ></div><div class='divider meridian-divider' ></div><div class='meridian time-segment' data-time-key='meridian' ><div class='up-btn' >▲</div><input type='text' placeholder='meridian&' class='meridian-input' /><div class='down-btn' >▼</div></div>
"
,
monthGrid
:
"
<div class='{{css.main}}' ><div class='{{css.header}}' ><div class='{{css.headerTitle}}' ></div><div class='{{css.headerRow}}' ></div></div><table cellspacing='0' class='{{css.daysTable}}' ><tbody><tr><td /><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr><tr><td/><td/><td/><td/><td/><td/><td/></tr></tbody></table></div>
"
},
n
=
{
init
:
function
(){
this
.
isInstance
=!
0
,
this
.
raiseEvent
(
"
init
"
)},
publishInDic
:
function
(
e
,
t
){
return
$
.
each
(
e
,
function
(
e
,
i
){
i
[
t
]()}),
e
},
callOfDict
:
function
(){},
isSameDay
:
function
(
e
,
t
){
var
i
=
new
pDate
(
e
),
n
=
new
pDate
(
t
);
return
i
&&
n
&&
i
.
year
()
===
n
.
year
()
&&
i
.
month
()
===
n
.
month
()
&&
i
.
date
()
===
n
.
date
()},
isValidGreguranDate
:
function
(
e
){
return
e
&&
"
Invalid Date
"
!=
new
Date
(
e
)
&&
"
undefined
"
!=
new
Date
(
e
)},
validatePersianDateString
:
function
(
e
){
var
t
=
new
Date
(
e
),
i
=
e
.
split
(
"
/
"
);
if
(
3
===
i
.
length
)
var
n
=
4
>=
(
""
+
i
[
0
]).
length
&&
(
""
+
i
[
0
]).
length
>=
1
,
a
=
2
>=
(
""
+
i
[
1
]).
length
&&
(
""
+
i
[
1
]).
length
>=
1
,
s
=
2
>=
(
""
+
i
[
2
]).
length
&&
(
""
+
i
[
2
]).
length
>=
1
;
return
$
.
each
(
i
,
function
(
e
,
t
){
i
[
e
]
=
parseInt
(
t
)}),
n
&&
a
&&
s
&&
"
Invalid Date
"
!==
t
?
i
:
null
},
fullHeight
:
function
(
e
){
return
$
(
e
).
height
()
+
parseInt
(
$
(
e
).
css
(
"
padding-top
"
))
+
parseInt
(
$
(
e
).
css
(
"
padding-bottom
"
))
+
parseInt
(
$
(
e
).
css
(
"
borderTopWidth
"
))
+
parseInt
(
$
(
e
).
css
(
"
borderBottomWidth
"
))},
attachEvent
:
function
(
e
,
t
){
this
.
events
[
e
]
||
(
this
.
events
[
e
]
=
[]);
var
i
;
for
(
i
in
this
.
events
[
e
])
""
+
this
.
events
[
e
][
i
]
==
""
+
t
&&
$
.
error
(
"
The function {0} was already added to event's chain.
"
.
format
(
t
.
toString
));
return
this
.
events
[
e
].
push
(
t
),
this
},
dettachEvent
:
function
(
e
,
t
){
this
.
events
[
e
]
||
$
.
error
(
"
The event's chain is empty.
"
);
var
i
;
for
(
i
in
this
.
events
[
e
])
""
+
this
.
events
[
e
][
i
]
==
""
+
t
&&
delete
this
.
events
[
e
][
i
];
return
this
},
clearEvent
:
function
(
e
){
return
this
.
events
[
e
]
=
null
,
this
},
raiseEvent
:
function
(
e
,
t
){
if
(
e
&&
this
.
events
){
t
||
(
t
=
[]);
var
i
=
this
.
events
[
e
];
if
(
i
){
if
(
"
function
"
==
typeof
i
)
i
.
apply
(
this
,
t
);
else
{
var
n
;
for
(
n
in
i
)
i
[
n
].
apply
(
this
,
t
)}
return
this
}}}},
a
=
{
defaultView
:
"
default
"
,
events
:{
init
:
function
(){
this
.
render
()},
render
:
null
},
views
:{
"
default
"
:{
render
:
function
(){}}},
element
:{
main
:
null
},
createElementByClass
:
function
(
e
){
return
this
.
element
.
find
(
"
.
"
+
e
)},
render
:
function
(
e
){
return
e
||
(
e
=
"
default
"
),
this
.
raiseEvent
(
"
render
"
),
this
.
view
=
this
.
views
[
e
],
this
.
view
.
render
(
this
)}},
s
=
{
compatConfig
:
function
(){
return
this
.
viewMode
===!
1
&&
(
this
.
yearPicker
.
enabled
&&
(
this
.
viewMode
=
"
year
"
),
this
.
monthPicker
.
enabled
&&
(
this
.
viewMode
=
"
month
"
),
this
.
dayPicker
.
enabled
?
this
.
viewMode
=
"
day
"
:
this
.
justSelectOnDate
=!
1
),
this
.
minDate
|
this
.
maxDate
?(
this
.
state
.
setFilterDate
(
"
unix
"
,
this
.
minDate
,
this
.
maxDate
),
this
.
state
.
_filetredDate
=!
0
):
this
.
state
.
_filetredDate
=!
1
,
this
}};
Object
.
keys
=
Object
.
keys
||
function
(){
var
e
=
Object
.
prototype
.
hasOwnProperty
,
t
=!
{
toString
:
null
}.
propertyIsEnumerable
(
"
toString
"
),
i
=
[
"
toString
"
,
"
toLocaleString
"
,
"
valueOf
"
,
"
hasOwnProperty
"
,
"
isPrototypeOf
"
,
"
propertyIsEnumerable
"
,
"
constructor
"
],
n
=
i
.
length
;
return
function
(
a
){
if
(
"
object
"
!=
typeof
a
&&
"
function
"
!=
typeof
a
||
null
===
a
)
throw
new
TypeError
(
"
Object.keys called on a non-object
"
);
var
s
=
[];
for
(
var
r
in
a
)
e
.
call
(
a
,
r
)
&&
s
.
push
(
r
);
if
(
t
)
for
(
var
o
=
0
;
n
>
o
;
o
++
)
e
.
call
(
a
,
i
[
o
])
&&
s
.
push
(
i
[
o
]);
return
s
}}(),
$
.
event
.
special
.
textchange
=
{
setup
:
function
(){
$
.
event
.
special
.
textchange
.
saveLastValue
(
this
),
$
(
this
).
bind
(
"
keyup.textchange
"
,
$
.
event
.
special
.
textchange
.
handler
),
$
(
this
).
bind
(
"
cut.textchange paste.textchange input.textchange
"
,
$
.
event
.
special
.
textchange
.
delayedHandler
)},
teardown
:
function
(){
$
(
this
).
unbind
(
"
.textchange
"
)},
handler
:
function
(){
$
.
event
.
special
.
textchange
.
triggerIfChanged
(
$
(
this
))},
delayedHandler
:
function
(){
var
e
=
$
(
this
);
setTimeout
(
function
(){
$
.
event
.
special
.
textchange
.
triggerIfChanged
(
e
)},
25
)},
triggerIfChanged
:
function
(
e
){
var
t
=
"
true
"
===
e
[
0
].
contentEditable
?
e
.
html
():
e
.
val
();
t
!==
e
.
data
(
"
lastValue
"
)
&&
e
.
trigger
(
"
textchange
"
,
e
.
data
(
"
lastValue
"
))},
saveLastValue
:
function
(
e
){
$
(
e
).
data
(
"
lastValue
"
,
"
true
"
===
e
.
contentEditable
?
$
(
e
).
html
():
$
(
e
).
val
())}},
$
.
event
.
special
.
hastext
=
{
setup
:
function
(){
$
(
this
).
bind
(
"
textchange
"
,
$
.
event
.
special
.
hastext
.
handler
)},
teardown
:
function
(){
$
(
this
).
unbind
(
"
textchange
"
,
$
.
event
.
special
.
hastext
.
handler
)},
handler
:
function
(
e
,
t
){
""
===
t
&&
t
!==
$
(
this
).
val
()
&&
$
(
this
).
trigger
(
"
hastext
"
)}},
$
.
event
.
special
.
notext
=
{
setup
:
function
(){
$
(
this
).
bind
(
"
textchange
"
,
$
.
event
.
special
.
notext
.
handler
)},
teardown
:
function
(){
$
(
this
).
unbind
(
"
textchange
"
,
$
.
event
.
special
.
notext
.
handler
)},
handler
:
function
(
e
,
t
){
""
===
$
(
this
).
val
()
&&
$
(
this
).
val
()
!==
t
&&
$
(
this
).
trigger
(
"
notext
"
)}};
var
r
=
$
.
fn
.
val
;
$
.
fn
.
val
=
function
(){
var
e
=
r
.
apply
(
this
,
arguments
);
return
arguments
.
length
&&
this
.
each
(
function
(){
$
.
event
.
special
.
textchange
.
triggerIfChanged
(
$
(
this
))}),
e
},
$
.
tmplMustache
=
function
(
e
,
t
){
return
String
.
prototype
.
format
=
function
(
e
){
function
t
(
t
){
var
i
=
t
.
slice
(
2
,
-
2
).
split
(
"
.
"
),
n
=
i
[
0
],
a
=
i
[
1
];
return
e
[
n
]
instanceof
Object
?
e
[
n
][
a
]:
e
[
n
]}
return
this
.
replace
(
/{{
\s
*
[\w\.]
+
\s
*}}/g
,
t
)},
$
(
e
.
format
(
t
))},
String
.
prototype
.
toPersianDigit
=
function
(
e
){
return
this
.
replace
(
/
\d
+/g
,
function
(
t
){
for
(
var
i
=
[],
n
=
[],
a
=
0
;
t
.
length
>
a
;
a
++
)
i
.
push
(
t
.
charCodeAt
(
a
));
for
(
var
s
=
0
;
i
.
length
>
s
;
s
++
)
n
.
push
(
String
.
fromCharCode
(
i
[
s
]
+
(
e
&&
1
==
e
?
1584
:
1728
)));
return
n
.
join
(
""
)})},
String
.
prototype
.
toEngilshDigit
=
function
(
e
){
return
this
.
replace
(
/
\d
+/g
,
function
(
t
){
for
(
var
i
=
[],
n
=
[],
a
=
0
;
t
.
length
>
a
;
a
++
)
i
.
push
(
t
.
charCodeAt
(
a
));
for
(
var
s
=
0
;
i
.
length
>
s
;
s
++
)
n
.
push
(
String
.
fromCharCode
(
i
[
s
]
-
(
e
&&
1
==
e
?
1584
:
1728
)));
return
i
.
join
(
""
)})};
var
o
=
function
(
e
,
t
){
clearTimeout
(
window
.
datepickerTimer
),
window
.
datepickerTimer
=
setTimeout
(
e
,
t
)},
c
=
function
(
e
){
for
(
var
t
=
[],
i
=
0
;
e
-
1
>=
i
;)
t
.
push
(
i
),
i
++
;
return
t
},
h
=
function
(
e
,
t
){
var
i
=
function
(
e
){
return
$
.
extend
(
!
0
,{},
e
)},
a
=
[
!
0
,
e
,
i
(
n
)],
s
=
[];
for
(
var
r
in
t
){
var
o
=
i
(
t
[
r
]);
o
&&
(
o
.
events
&&
Object
.
keys
(
o
.
events
).
length
>
0
&&
s
.
push
(
o
.
events
),
o
.
events
=
{},
a
.
push
(
o
))}
$
.
extend
.
apply
(
e
,
a
);
for
(
var
r
in
s
){
var
c
=
s
[
r
],
h
=
Object
.
keys
(
c
);
for
(
var
d
in
h
){
var
l
=
h
[
d
],
u
=
c
[
l
];
l
&&
u
&&
e
.
attachEvent
(
l
,
u
)}}
return
e
.
init
(),
e
};
if
(
jQuery
.
uaMatch
=
function
(
e
){
e
=
e
.
toLowerCase
();
var
t
=
/
(
chrome
)[
\/]([\w
.
]
+
)
/
.
exec
(
e
)
||
/
(
webkit
)[
\/]([\w
.
]
+
)
/
.
exec
(
e
)
||
/
(
opera
)(?:
.*version|
)[
\/]([\w
.
]
+
)
/
.
exec
(
e
)
||
/
(
msie
)
([\w
.
]
+
)
/
.
exec
(
e
)
||
0
>
e
.
indexOf
(
"
compatible
"
)
&&
/
(
mozilla
)(?:
.*
?
rv:
([\w
.
]
+
)
|
)
/
.
exec
(
e
)
||
[];
return
{
browser
:
t
[
1
]
||
""
,
version
:
t
[
2
]
||
"
0
"
}},
!
jQuery
.
browser
){
var
d
=
jQuery
.
uaMatch
(
window
.
navigator
.
userAgent
),
l
=
{};
d
.
browser
&&
(
l
[
d
.
browser
]
=!
0
,
l
.
version
=
d
.
version
),
l
.
chrome
?
l
.
webkit
=!
0
:
l
.
webkit
&&
(
l
.
safari
=!
0
),
jQuery
.
browser
=
l
}
var
u
=
{
state
:{
year
:
null
,
month
:
null
,
date
:
null
,
firstWeekDayOfMonth
:
null
,
daysCount
:
null
},
persianDigit
:
!
0
,
_formatDigit
:
function
(
e
){
return
this
.
persianDigit
?(
""
+
e
).
toPersianDigit
():
e
},
events
:{
init
:
function
(){},
render
:
function
(){
this
.
state
.
month
=
this
.
month
,
this
.
state
.
year
=
this
.
year
},
reRender
:
function
(){
this
.
_markToday
()},
selectDay
:
function
(){}},
_markToday
:
function
(){
var
e
=
this
,
t
=
new
persianDate
;
return
$
(
e
.
element
).
removeClass
(
e
.
cssClass
.
today
),
$
.
each
(
e
.
daysList
,
function
(){
var
i
=
$
(
this
).
data
().
day
,
n
=
$
(
this
).
data
().
month
,
a
=
$
(
this
).
data
().
year
;
i
==
t
.
date
()
&&
n
==
t
.
month
()
&&
a
==
t
.
year
()
&&
(
$
(
this
).
addClass
(
e
.
cssClass
.
today
),
$
(
e
.
element
).
addClass
(
e
.
cssClass
.
today
))}),
this
},
_updateState
:
function
(){
var
e
=
this
,
t
=
new
persianDate
;
return
e
.
daysCount
=
t
.
daysInMonth
(
e
.
state
.
year
,
e
.
state
.
month
),
e
.
firstWeekDayOfMonth
=
t
.
getFirstWeekDayOfMonth
(
e
.
state
.
year
,
e
.
state
.
month
),
this
},
selectDate
:
function
(
e
){
var
t
,
i
=
this
,
n
=
new
persianDate
(
e
);
return
t
=
i
.
state
.
year
==
n
.
year
()
&&
i
.
state
.
month
==
n
.
month
()?
!
1
:
!
0
,
i
.
state
.
year
=
n
.
year
(),
i
.
state
.
month
=
n
.
month
(),
i
.
state
.
date
=
n
.
date
(),
t
&&
i
.
view
.
renderDays
(
i
),
i
.
markSelectedDate
(
e
),
this
},
markSelectedDate
:
function
(
e
){
var
t
=
this
;
$
.
each
(
t
.
daysList
,
function
(
i
,
n
){
var
a
=
parseInt
(
$
(
n
).
attr
(
"
unixDate
"
));
t
.
isSameDay
(
a
,
e
)?
$
(
this
).
addClass
(
t
.
cssClass
.
selected
):
$
(
this
).
removeClass
(
t
.
cssClass
.
selected
)})},
updateAs
:
function
(
e
,
t
){
var
i
=
this
;
return
i
.
state
.
year
=
e
,
i
.
state
.
month
=
t
,
i
.
view
.
renderDays
(
i
),
this
},
goToNextMonth
:
function
(){
var
e
=
this
;
return
12
===
e
.
state
.
month
?(
e
.
state
.
month
=
1
,
e
.
state
.
viewYear
+=
1
):
e
.
state
.
month
+=
1
,
e
.
updateAs
(
e
.
state
.
year
,
e
.
state
.
month
),
!
1
},
goToPrevMonth
:
function
(){},
goToYear
:
function
(
e
){
this
.
updateAs
(
e
,
this
.
state
.
month
)},
applyStory
:
function
(){}};
MonthGrid
=
function
(
e
){
return
h
(
this
,[
a
,
p
,
t
,
u
,
e
]),
this
};
var
p
=
{
cssClass
:{
main
:
"
month-grid-box
"
,
header
:
"
header
"
,
headerTitle
:
"
title
"
,
headerRow
:
"
header-row
"
,
headerRowCell
:
"
header-row-cell
"
,
daysTable
:
"
table-days
"
,
currentMonth
:
"
current-month
"
,
today
:
"
today
"
,
selected
:
"
selected
"
,
disbaled
:
"
disabled
"
},
views
:{
"
default
"
:{
render
:
function
(
e
){
e
.
viewData
=
{
css
:
e
.
cssClass
},
e
.
element
=
$
.
tmplMustache
(
i
.
monthGrid
,
e
.
viewData
).
appendTo
(
e
.
container
),
e
.
header
=
e
.
createElementByClass
(
e
.
cssClass
.
header
),
e
.
headerRow
=
e
.
createElementByClass
(
e
.
cssClass
.
headerRow
);
var
t
;
for
(
t
in
e
.
weekRange
)
$
(
"
<div/>
"
).
text
(
e
.
weekRange
[
t
].
abbr
.
fa
).
addClass
(
e
.
cssClass
.
headerRowCell
).
appendTo
(
e
.
headerRow
)[
0
];
e
.
daysBox
=
e
.
createElementByClass
(
e
.
cssClass
.
daysTable
),
this
.
renderDays
(
e
)},
renderDays
:
function
(
e
){
e
.
_updateState
(),
e
.
daysList
=
[];
var
t
=
function
(
t
,
i
,
n
,
a
){
var
s
=
new
persianDate
([
n
,
i
,
t
]).
valueOf
(),
r
=
$
(
"
<span/>
"
).
text
(
e
.
_formatDigit
(
t
)).
attr
(
"
unixDate
"
,
s
).
data
({
day
:
t
,
month
:
i
,
year
:
n
,
unixDate
:
s
}).
addClass
(
a
).
appendTo
(
$
(
this
))[
0
];
e
.
daysList
.
push
(
r
)},
i
=
new
persianDate
;
e
.
daysCount
=
i
.
daysInMonth
(
e
.
state
.
year
,
e
.
state
.
month
),
e
.
firstWeekDayOfMonth
=
i
.
getFirstWeekDayOfMonth
(
e
.
state
.
year
,
e
.
state
.
month
);
var
n
=
1
,
a
=
1
;
$
(
e
.
daysBox
).
find
(
"
td
"
).
each
(
function
(
s
){
if
(
$
(
this
).
empty
(),
e
.
firstWeekDayOfMonth
>
1
&&
e
.
firstWeekDayOfMonth
>
s
+
1
){
if
(
1
===
e
.
state
.
month
)
var
r
=
12
,
o
=
parseInt
(
e
.
state
.
year
)
-
1
;
else
var
r
=
parseInt
(
e
.
state
.
month
)
-
1
,
o
=
parseInt
(
e
.
state
.
year
);
var
c
=
i
.
daysInMonth
(
o
,
r
),
h
=
parseInt
(
c
-
e
.
firstWeekDayOfMonth
+
(
s
+
2
));
t
.
apply
(
this
,[
h
,
r
,
o
,
"
other-month
"
])}
else
if
(
s
+
2
===
n
+
e
.
firstWeekDayOfMonth
&&
e
.
daysCount
>=
n
){
var
h
=
n
;
t
.
apply
(
this
,[
h
,
parseInt
(
e
.
state
.
month
),
parseInt
(
e
.
state
.
year
)]),
n
++
}
else
{
if
(
12
===
e
.
state
.
month
)
var
d
=
1
,
l
=
parseInt
(
e
.
state
.
year
)
+
1
;
else
var
d
=
parseInt
(
e
.
state
.
month
)
+
1
,
l
=
e
.
state
.
year
;
var
h
=
a
;
t
.
apply
(
this
,[
h
,
d
,
l
,
"
other-month
"
]),
a
+=
1
}
var
u
=
$
(
this
).
children
(
"
span
"
).
data
(
"
unixDate
"
);
e
.
datepicker
.
state
.
_filetredDate
?
e
.
minDate
&&
e
.
maxDate
?
u
>=
e
.
minDate
&&
e
.
maxDate
>=
u
?
$
(
this
).
addClass
(
e
.
cssClass
.
disbaled
):
$
(
this
).
removeClass
(
e
.
cssClass
.
disbaled
):
e
.
minDate
?
u
>=
e
.
minDate
&&
$
(
this
).
addClass
(
e
.
cssClass
.
disbaled
):
e
.
maxDate
&&
e
.
maxDate
>=
u
&&
$
(
this
).
removeClass
(
e
.
cssClass
.
disbaled
):
e
.
datepicker
.
checkDate
(
u
)?
$
(
this
).
removeClass
(
e
.
cssClass
.
disbaled
):
$
(
this
).
addClass
(
e
.
cssClass
.
disbaled
)}),
$
(
e
.
daysBox
).
find
(
"
td
"
).
not
(
"
.disabled
"
).
children
(
"
span
"
).
click
(
function
(){
var
t
=
$
(
this
).
data
(
"
unixDate
"
);
return
e
.
raiseEvent
(
"
selectDay
"
,[
t
]),
!
1
}),
$
(
e
.
daysBox
).
find
(
"
td.disabled
"
).
children
(
"
span
"
).
click
(
function
(){
return
!
1
}),
e
.
raiseEvent
(
"
reRender
"
)}}}},
v
=
{
cssClass
:{
datePickerPlotArea
:
"
datepicker-plot-area
"
,
yearView
:
"
datepicker-year-view
"
,
monthView
:
"
datepicker-month-view
"
,
dayView
:
"
datepicker-day-view
"
,
timeView
:
"
datepicker-time-view
"
,
navigator
:
"
navigator
"
,
toolbox
:
"
toolbox
"
},
container
:{},
views
:{
"
default
"
:{
render
:
function
(
e
){
var
t
=
{
css
:
e
.
cssClass
};
return
e
.
element
=
{},
e
.
element
.
main
=
$
.
tmplMustache
(
i
.
datepciker
,
t
).
appendTo
(
e
.
$container
),
e
.
_inlineView
?(
e
.
element
.
main
.
addClass
(
"
datepicker-plot-area-inline-view
"
),
e
.
element
.
main
.
show
()):
e
.
element
.
main
.
hide
(),
e
.
view
.
fixPosition
(
e
),
e
.
container
.
navigator
=
$
(
e
.
element
.
main
).
children
(
"
.
"
+
e
.
cssClass
.
navigator
),
e
.
container
.
dayView
=
$
(
e
.
element
.
main
).
children
(
"
.
"
+
e
.
cssClass
.
dayView
),
e
.
container
.
monthView
=
$
(
e
.
element
.
main
).
children
(
"
.
"
+
e
.
cssClass
.
monthView
),
e
.
container
.
yearView
=
$
(
e
.
element
.
main
).
children
(
"
.
"
+
e
.
cssClass
.
yearView
),
e
.
container
.
timeView
=
$
(
e
.
element
.
main
).
children
(
"
.
"
+
e
.
cssClass
.
timeView
),
e
.
container
.
toolbox
=
$
(
e
.
element
.
main
).
children
(
"
.
"
+
e
.
cssClass
.
toolbox
),
e
.
navigator
.
enabled
&&
0
==
e
.
onlyTimePicker
?
e
.
navigator
=
new
y
(
$
.
extend
(
!
0
,
e
.
navigator
,{
datepicker
:
e
}),
e
.
container
.
navigator
):(
e
.
container
.
navigator
.
remove
(),
e
.
navigator
=!
1
),
e
.
toolbox
.
enabled
&&
e
.
onlyTimePicker
===!
1
?
e
.
toolbox
=
new
C
(
$
.
extend
(
!
0
,
e
.
toolbox
,{
datepicker
:
e
}),
e
.
container
.
toolbox
):(
e
.
container
.
toolbox
.
remove
(),
e
.
toolbox
=!
1
),
e
.
dayPicker
.
enabled
&&
e
.
onlyTimePicker
===!
1
?(
e
.
dayPicker
=
new
D
(
$
.
extend
(
!
0
,
e
.
dayPicker
,{
datepicker
:
e
}),
e
.
container
.
dayView
),
e
.
_pickers
.
day
=
e
.
dayPicker
):(
e
.
container
.
dayView
.
hide
(),
e
.
dayPicker
=!
1
),
e
.
monthPicker
.
enabled
&&
e
.
onlyTimePicker
===!
1
?(
e
.
monthPicker
=
new
b
(
$
.
extend
(
!
0
,
e
.
monthPicker
,{
datepicker
:
e
}),
e
.
container
.
monthView
),
e
.
_pickers
.
month
=
e
.
monthPicker
):(
e
.
monthPicker
=!
1
,
e
.
container
.
monthView
.
hide
()),
e
.
yearPicker
.
enabled
&&
e
.
onlyTimePicker
===!
1
?(
e
.
yearPicker
=
new
_
(
$
.
extend
(
!
0
,
e
.
yearPicker
,{
datepicker
:
e
}),
e
.
container
.
yearView
),
e
.
_pickers
.
year
=
e
.
yearPicker
):(
e
.
yearPicker
=!
1
,
e
.
container
.
yearView
.
hide
()),
e
.
timePicker
.
enabled
|
e
.
onlyTimePicker
===!
0
?
e
.
timePicker
=
new
I
(
$
.
extend
(
!
0
,
e
.
timePicker
,{
datepicker
:
e
}),
e
.
container
.
timeView
):
e
.
container
.
timeView
.
hide
(),
e
.
changeView
(
e
.
viewMode
),
e
.
_syncWithImportData
(
e
.
state
.
unixDate
),
this
},
fixPosition
:
function
(
e
){
if
(
!
e
.
_inlineView
){
var
t
=
e
.
inputElem
.
offset
().
top
,
i
=
e
.
inputElem
.
offset
().
left
;
if
(
"
auto
"
===
e
.
position
){
var
n
=
e
.
fullHeight
(
e
.
inputElem
);
e
.
element
.
main
.
css
({
top
:
t
+
n
+
"
px
"
,
left
:
i
+
"
px
"
})}
else
e
.
element
.
main
.
css
({
top
:
t
+
e
.
position
[
0
]
+
"
px
"
,
left
:
i
+
e
.
position
[
1
]
+
"
px
"
})}
return
this
}}}},
m
=
{
_pickers
:{},
_viewed
:
!
1
,
_inlineView
:
!
1
,
_getNextState
:
function
(
e
){
var
t
=
this
.
currentView
,
i
=
this
.
currentView
;
return
"
next
"
===
e
?(
"
month
"
===
t
&&
this
.
dayPicker
&&
(
i
=
"
day
"
),
"
year
"
===
t
&&
(
this
.
monthPicker
?
i
=
"
month
"
:
this
.
dayPicker
&&
(
i
=
"
day
"
))):
"
prev
"
===
e
&&
(
"
month
"
===
t
&&
this
.
yearPicker
&&
(
i
=
"
year
"
),
"
day
"
===
t
&&
(
this
.
monthPicker
?
i
=
"
month
"
:
this
.
yearPicker
&&
(
i
=
"
year
"
))),
this
.
_checkNextStateAvalibility
(
i
)},
_checkNextStateAvalibility
:
function
(
e
){
return
this
.
_pickers
[
e
]?
e
:(
this
.
element
.
main
.
hide
(),
!
1
)},
updateNavigator
:
function
(
e
){
return
this
.
navigator
&&
this
.
navigator
.
updateSwitchBtn
(
this
.
_formatDigit
(
e
)),
this
},
switchNavigatorRelation
:
function
(
e
){
return
this
.
navigator
&&
this
.
navigator
.
switchRelation
(
e
),
this
},
changeView
:
function
(
e
,
t
){
var
i
,
n
=
this
;
return
i
=
t
?
this
.
_getNextState
(
t
):
this
.
_checkNextStateAvalibility
(
e
),
i
&&
(
n
.
publishInDic
(
n
.
_pickers
,
"
hide
"
),
n
.
_pickers
[
i
].
show
(),
n
.
switchNavigatorRelation
(
i
),
n
.
currentView
=
i
),
this
},
_flagSelfManipulate
:
!
0
,
selectTime
:
function
(
e
,
t
){
this
.
state
.
setTime
(
e
,
t
),
this
.
_updateInputElement
(),
this
.
onSelect
(
e
,
this
)},
selectDate
:
function
(
e
){
var
t
=
this
;
switch
(
t
.
state
.
setSelected
(
"
unix
"
,
e
),
this
.
state
.
syncViewWithelected
(),
t
.
currentView
){
case
"
month
"
:
t
.
monthPicker
.
selectMonth
();
break
;
case
"
year
"
:
t
.
yearPicker
.
selectYear
();
break
;
case
"
day
"
:
t
.
dayPicker
.
selectDay
()}
return
t
.
_updateInputElement
(),
t
.
onSelect
(
e
,
this
),
t
.
autoClose
&&
t
.
element
.
main
.
hide
(),
this
},
selectDateTime
:
function
(
e
){
var
t
=
this
;
switch
(
t
.
state
.
setSelectedDateTime
(
"
unix
"
,
e
),
this
.
state
.
syncViewWithelected
(),
t
.
currentView
){
case
"
month
"
:
t
.
monthPicker
.
selectMonth
();
break
;
case
"
year
"
:
t
.
yearPicker
.
selectYear
();
break
;
case
"
day
"
:
t
.
dayPicker
.
selectDay
()}
return
t
.
_updateInputElement
(),
t
.
onSelect
(
e
,
this
),
t
.
autoClose
&&
t
.
element
.
main
.
hide
(),
this
},
selectMonth
:
function
(
e
){
var
t
=
this
;
return
this
.
justSelectOnDate
?
t
.
state
.
setView
(
"
month
"
,
e
):(
t
.
state
.
setSelected
(
"
month
"
,
e
),
t
.
state
.
setSelected
(
"
year
"
,
t
.
state
.
view
.
year
),
t
.
state
.
syncViewWithelected
()),
t
.
_updateInputElement
(),
t
.
changeView
(
t
.
currentView
,
"
next
"
),
this
},
selectYear
:
function
(
e
){
var
t
=
this
;
return
this
.
justSelectOnDate
?
t
.
state
.
setView
(
"
year
"
,
e
):(
t
.
state
.
setSelected
(
"
year
"
,
e
),
t
.
state
.
syncViewWithelected
()),
t
.
_updateInputElement
(),
t
.
changeView
(
t
.
currentView
,
"
next
"
),
this
},
_formatDigit
:
function
(
e
){
return
this
.
persianDigit
&&
e
?(
""
+
e
).
toPersianDigit
():
e
},
_syncWithImportData
:
function
(
e
){
if
(
e
){
var
t
=
this
;
if
(
jQuery
.
isNumeric
(
e
)){
var
i
=
new
persianDate
(
e
);
t
.
state
.
setSelected
(
"
unix
"
,
i
),
t
.
_updateInputElement
()}
else
{
var
n
=
t
.
validatePersianDateString
(
e
);
null
!=
n
&&
o
(
function
(){
var
e
=
new
persianDate
(
n
);
t
.
selectDate
(
e
.
valueOf
())},
t
.
inputDelay
)}}
return
this
},
_attachEvents
:
function
(){
var
e
=
this
;
if
(
$
(
window
).
resize
(
function
(){
e
.
view
.
fixPosition
(
e
)}),
e
.
observer
){
e
.
inputElem
.
bind
(
"
paste
"
,
function
(
t
){
o
(
function
(){
e
.
_syncWithImportData
(
t
.
target
.
value
)},
60
)}),
$
(
e
.
altField
).
bind
(
"
change
"
,
function
(){
if
(
!
e
.
_flagSelfManipulate
){
var
t
=
new
Date
(
$
(
this
).
val
());
if
(
"
Invalid Date
"
!==
t
){
var
i
=
new
persianDate
(
t
);
e
.
selectDate
(
i
.
valueOf
())}}});
var
t
=!
1
,
i
=
[
17
,
91
],
n
=
86
;
$
(
document
).
keydown
(
function
(
e
){
$
.
inArray
(
e
.
keyCode
,
i
)
>
0
&&
(
t
=!
0
)}).
keyup
(
function
(
e
){
$
.
inArray
(
e
.
keyCode
,
i
)
>
0
&&
(
t
=!
1
)}),
e
.
inputElem
.
bind
(
"
keyup
"
,
function
(
a
){
var
s
=
$
(
this
);
if
(
!
e
.
_flagSelfManipulate
){
var
r
=!
1
;(
8
===
a
.
keyCode
||
105
>
a
.
keyCode
&&
a
.
keyCode
>
96
||
58
>
a
.
keyCode
&&
a
.
keyCode
>
47
||
t
&&
(
a
.
keyCode
==
n
||
$
.
inArray
(
a
.
keyCode
,
i
)
>
0
))
&&
(
r
=!
0
),
r
&&
e
.
_syncWithImportData
(
s
.
val
())}})}
return
e
.
inputElem
.
focus
(
function
(){
e
.
show
()}),
e
.
inputElem
.
click
(
function
(
e
){
return
e
.
stopPropagation
(),
!
1
}),
e
.
inputElem
.
blur
(
function
(){
$
.
browser
.
msie
||
e
.
hide
()}),
$
(
document
).
not
(
"
.datepicker-plot-area,.datepicker-plot-area > *
"
).
click
(
function
(){
e
.
inputElem
.
blur
(),
e
.
hide
()}),
$
(
e
.
element
.
main
).
mousedown
(
function
(
e
){
return
e
.
stopPropagation
(),
!
1
}),
this
},
_updateInputElement
:
function
(){
var
e
=
this
;
return
e
.
_flagSelfManipulate
=!
0
,
e
.
altField
.
val
(
e
.
altFieldFormatter
(
e
.
state
.
selected
.
unixDate
)).
trigger
(
"
change
"
),
e
.
inputElem
.
val
(
e
.
formatter
(
e
.
state
.
selected
.
unixDate
)).
trigger
(
"
change
"
),
e
.
_flagSelfManipulate
=!
1
,
e
},
_defineOnInitState
:
function
(){
if
(
"
INPUT
"
==
$
(
this
.
$container
)[
0
].
nodeName
){
var
e
=
new
Date
(
this
.
inputElem
.
val
()).
valueOf
();
this
.
$container
=
$
(
"
body
"
)}
else
{
var
e
=
new
Date
(
$
(
this
.
$container
).
data
(
"
date
"
)).
valueOf
();
this
.
_inlineView
=!
0
}
return
this
.
state
.
unixDate
=
e
&&
"
undefined
"
!=
e
?
e
:(
new
Date
).
valueOf
(),
this
.
altField
=
$
(
this
.
altField
),
this
.
state
.
setSelectedDateTime
(
"
unix
"
,
this
.
state
.
unixDate
),
this
.
state
.
setTime
(
"
unix
"
,
this
.
state
.
unixDate
),
this
.
state
.
setView
(
"
unix
"
,
this
.
state
.
unixDate
),
this
},
setTime
:
function
(){
this
.
timePicker
.
setTime
(
this
.
state
.
selected
.
unixDate
)},
setDate
:
function
(
e
){
var
t
=
new
persianDate
(
e
);
return
this
.
selectDateTime
(
t
.
valueOf
()),
this
.
setTime
(),
this
},
init
:
function
(){
var
e
=
this
;
return
this
.
state
=
new
T
({
datepicker
:
e
}),
this
.
compatConfig
(),
this
.
_defineOnInitState
(),
this
.
_updateInputElement
(),
this
.
view
=
this
.
views
[
"
default
"
],
this
.
view
.
render
(
this
),
this
.
inputElem
.
data
(
"
datepicker
"
,
this
),
this
.
inputElem
.
addClass
(
e
.
cssClass
),
this
.
_attachEvents
(),
this
}},
f
=
function
(
t
,
i
){
return
h
(
this
,[
a
,
s
,
m
,
v
,
e
,
i
,{
$container
:
t
,
inputElem
:
$
(
t
)}])},
w
=
{
enabled
:
!
0
,
text
:{
btnNextText
:
"
>
"
,
btnPrevText
:
"
<
"
},
cssClass
:{
datpickerHeader
:
"
datepicker-header
"
,
btnNext
:
"
btn-next
"
,
btnSwitch
:
"
btn-switch
"
,
btnPrev
:
"
btn-prev
"
},
relation
:
"
day
"
,
switchRelation
:
function
(
e
){
return
this
.
relation
=
e
,
this
.
onSwitch
(
e
),
this
},
updateSwitchBtn
:
function
(
e
){
return
$
(
this
.
element
).
children
(
"
.
"
+
this
.
cssClass
.
btnSwitch
).
text
(
e
),
this
},
_next
:
function
(){
return
this
.
datepicker
[
this
.
relation
+
"
Picker
"
].
next
(),
this
.
onNext
(
this
),
this
},
_prev
:
function
(){
return
this
.
datepicker
[
this
.
relation
+
"
Picker
"
].
prev
(),
this
.
onPrev
(
this
),
this
},
_switch
:
function
(){
return
this
.
datepicker
.
changeView
(
this
.
relation
,
"
prev
"
),
this
},
_render
:
function
(){
var
e
=
this
;
e
.
viewData
=
{
css
:
e
.
cssClass
,
btnNextText
:
e
.
text
.
btnNextText
,
btnPrevText
:
e
.
text
.
btnPrevText
},
e
.
element
=
$
.
tmplMustache
(
i
.
navigator
,
e
.
viewData
).
appendTo
(
e
.
$container
)},
_attachEvents
:
function
(){
var
e
=
this
;
e
.
element
.
children
(
"
.
"
+
e
.
cssClass
.
btnPrev
).
click
(
function
(){
return
e
.
_prev
(),
!
1
}),
e
.
element
.
children
(
"
.
"
+
e
.
cssClass
.
btnNext
).
click
(
function
(){
return
e
.
_next
(),
!
1
}),
e
.
element
.
children
(
"
.
"
+
e
.
cssClass
.
btnSwitch
).
click
(
function
(){
return
e
.
_switch
(),
!
1
})},
init
:
function
(){
var
e
=
this
;
return
e
.
_render
(),
e
.
_attachEvents
(),
this
}},
y
=
function
(
e
,
t
){
return
h
(
this
,[
a
,
w
,
e
,{
$container
:
t
}])},
k
=
{
next
:
function
(){
var
e
=
this
;
return
12
===
e
.
datepicker
.
state
.
view
.
month
?(
e
.
datepicker
.
state
.
setView
(
"
month
"
,
1
),
e
.
datepicker
.
state
.
setView
(
"
year
"
,
parseInt
(
e
.
datepicker
.
state
.
view
.
year
)
+
1
)):
e
.
datepicker
.
state
.
setView
(
"
month
"
,
parseInt
(
e
.
datepicker
.
state
.
view
.
month
)
+
1
),
e
.
_updateView
(),
this
},
prev
:
function
(){
var
e
=
this
;
return
1
===
e
.
datepicker
.
state
.
view
.
month
?(
e
.
datepicker
.
state
.
setView
(
"
month
"
,
12
),
e
.
datepicker
.
state
.
setView
(
"
year
"
,
parseInt
(
e
.
datepicker
.
state
.
view
.
year
)
-
1
)):
e
.
datepicker
.
state
.
setView
(
"
month
"
,
parseInt
(
e
.
datepicker
.
state
.
view
.
month
)
-
1
),
e
.
_updateView
(),
this
},
updateView
:
function
(){
return
this
.
_updateView
(),
this
},
_updateView
:
function
(){
var
e
=
this
;
return
e
.
mGrid
.
updateAs
(
e
.
datepicker
.
state
.
view
.
year
,
e
.
datepicker
.
state
.
view
.
month
),
e
.
_updateNavigator
(
e
.
datepicker
.
state
.
view
.
year
,
e
.
datepicker
.
state
.
view
.
month
),
this
.
_updateSelectedDay
(
e
.
datepicker
.
state
.
selected
.
unixDate
),
this
},
selectDay
:
function
(){
var
e
=
this
;
return
e
.
mGrid
.
updateAs
(
e
.
datepicker
.
state
.
selected
.
year
,
e
.
datepicker
.
state
.
selected
.
month
),
e
.
_updateNavigator
(
e
.
datepicker
.
state
.
selected
.
year
,
e
.
datepicker
.
state
.
selected
.
month
),
this
.
_updateSelectedDay
(
e
.
datepicker
.
state
.
selected
.
unixDate
),
this
.
_updateView
(),
this
},
_updateNavigator
:
function
(
e
,
t
){
var
i
=
this
,
n
=
this
.
titleFormatter
(
e
,
t
);
return
i
.
datepicker
.
updateNavigator
(
n
),
this
},
hide
:
function
(){
return
this
.
container
.
hide
(),
this
},
show
:
function
(){
return
this
.
container
.
show
(),
this
.
_updateView
(),
this
},
_updateSelectedDay
:
function
(
e
){
return
this
.
mGrid
.
markSelectedDate
(
e
),
this
},
_attachEvents
:
function
(){
var
e
=
this
;
return
this
.
scrollEnabled
&&
(
$
(
this
.
container
).
mousewheel
(
function
(
t
){
t
.
deltaY
>
0
?
e
.
next
():
e
.
prev
()}),
$
(
this
.
container
).
bind
(
"
mousewheel DOMMouseScroll
"
,
function
(
e
){
var
t
=
null
;
"
mousewheel
"
==
e
.
type
?
t
=-
1
*
e
.
originalEvent
.
wheelDelta
:
"
DOMMouseScroll
"
==
e
.
type
&&
(
t
=
40
*
e
.
originalEvent
.
detail
),
t
&&
(
e
.
preventDefault
(),
$
(
this
).
scrollTop
(
t
+
$
(
this
).
scrollTop
()))})),
this
},
_render
:
function
(){
var
e
=
this
;
this
.
mGrid
=
new
MonthGrid
({
container
:
e
.
container
,
persianDigit
:
e
.
datepicker
.
persianDigit
,
month
:
e
.
datepicker
.
state
.
selected
.
month
,
year
:
e
.
datepicker
.
state
.
selected
.
year
,
minDate
:
e
.
datepicker
.
state
.
filterDate
.
start
.
unixDate
,
maxDate
:
e
.
datepicker
.
state
.
filterDate
.
end
.
unixDate
,
datepicker
:
e
.
datepicker
}),
this
.
mGrid
.
attachEvent
(
"
selectDay
"
,
function
(
t
){
e
.
datepicker
.
selectDate
(
t
),
e
.
onSelect
(
t
),
e
.
mGrid
.
selectDate
(
e
.
datepicker
.
state
.
selected
.
unixDate
)}),
this
.
_updateSelectedDay
(
e
.
datepicker
.
state
.
selected
.
unixDate
)},
init
:
function
(){
var
e
=
this
;
return
this
.
_render
(),
this
.
_attachEvents
(),
this
.
_updateNavigator
(
e
.
datepicker
.
state
.
selected
.
year
,
e
.
datepicker
.
state
.
selected
.
month
),
this
}},
D
=
function
(
e
,
t
){
return
h
(
this
,[
a
,
k
,
e
,{
container
:
t
}])},
g
=
{
cssClass
:{
selectedMonth
:
"
selected
"
,
monthItem
:
"
month-item
"
,
disbaleItem
:
"
month-item-disable
"
},
monthRange
:
t
.
monthRange
,
_updateNavigator
:
function
(){
var
e
=
this
;
return
e
.
datepicker
.
updateNavigator
(
this
.
titleFormatter
(
e
.
datepicker
.
state
.
view
.
unixDate
)),
this
},
hide
:
function
(){
return
this
.
container
.
hide
(),
this
},
show
:
function
(){
return
this
.
container
.
show
(),
this
.
_updateNavigator
(),
this
.
_render
(),
this
},
selectMonth
:
function
(){
this
.
defineSelectedMonth
(),
this
.
_updateNavigator
()},
defineSelectedMonth
:
function
(){
var
e
=
this
;
return
e
.
container
.
children
(
"
.
"
+
e
.
cssClass
.
monthItem
).
removeClass
(
e
.
cssClass
.
selectedMonth
),
e
.
datepicker
.
state
.
view
.
year
===
e
.
datepicker
.
state
.
selected
.
year
&&
e
.
container
.
children
(
"
.month
"
+
e
.
datepicker
.
state
.
selected
.
month
).
addClass
(
e
.
cssClass
.
selectedMonth
),
this
},
next
:
function
(){
var
e
=
this
;
return
e
.
datepicker
.
state
.
setView
(
"
year
"
,
e
.
datepicker
.
state
.
view
.
year
+
1
),
e
.
updateView
(),
e
.
_render
(),
this
},
prev
:
function
(){
var
e
=
this
;
return
e
.
datepicker
.
state
.
setView
(
"
year
"
,
e
.
datepicker
.
state
.
view
.
year
-
1
),
e
.
updateView
(),
e
.
_render
(),
this
},
updateView
:
function
(){
return
this
.
defineSelectedMonth
(),
this
.
_updateNavigator
(),
this
},
_checkMonthAccess
:
function
(
e
){
if
(
this
.
datepicker
.
state
.
_filetredDate
){
var
t
=
this
.
datepicker
.
state
.
view
.
year
,
i
=
1
e3
*
new
pDate
([
t
,
e
]).
unix
();
return
i
>=
this
.
datepicker
.
state
.
filterDate
.
start
.
unixDate
&&
this
.
datepicker
.
state
.
filterDate
.
end
.
unixDate
>=
i
?
!
0
:
!
1
}
return
this
.
datepicker
.
checkMonth
(
e
)},
_attachEvents
:
function
(){
var
e
=
this
;
return
this
.
scrollEnabled
&&
(
$
(
this
.
container
).
mousewheel
(
function
(
t
){
t
.
deltaY
>
0
?
e
.
next
():
e
.
prev
()}),
$
(
this
.
container
).
bind
(
"
mousewheel DOMMouseScroll
"
,
function
(
e
){
var
t
=
null
;
"
mousewheel
"
==
e
.
type
?
t
=-
1
*
e
.
originalEvent
.
wheelDelta
:
"
DOMMouseScroll
"
==
e
.
type
&&
(
t
=
40
*
e
.
originalEvent
.
detail
),
t
&&
(
e
.
preventDefault
(),
$
(
this
).
scrollTop
(
t
+
$
(
this
).
scrollTop
()))})),
this
},
_render
:
function
(){
var
e
,
t
=
this
;
t
.
container
.
empty
();
for
(
e
in
this
.
monthRange
){
var
i
=
$
(
"
<div/>
"
).
data
({
monthIndex
:
e
}).
addClass
(
"
month
"
+
e
).
addClass
(
t
.
cssClass
.
monthItem
).
text
(
t
.
monthRange
[
e
].
name
.
fa
).
appendTo
(
t
.
container
);
t
.
_checkMonthAccess
(
e
)?
i
.
click
(
function
(){
return
t
.
onSelect
(
$
(
this
).
data
().
monthIndex
),
t
.
datepicker
.
selectMonth
(
parseInt
(
$
(
this
).
data
().
monthIndex
)),
!
1
}):(
i
.
addClass
(
t
.
cssClass
.
disbaleItem
),
i
.
click
(
function
(){
return
!
1
}))}
return
this
.
defineSelectedMonth
(),
this
},
init
:
function
(){
return
this
.
_render
(),
this
.
_attachEvents
(),
this
}},
b
=
function
(
e
,
t
){
return
h
(
this
,[
a
,
g
,
e
,{
container
:
t
}])},
x
=
{
cssClass
:{
selectedYear
:
"
selected
"
,
yearItem
:
"
year-item
"
,
disbaleItem
:
"
year-item-disable
"
},
events
:{
select
:
function
(){}},
_updateNavigator
:
function
(){
var
e
=
this
,
t
=
e
.
datepicker
.
state
.
view
.
year
;
return
e
.
datepicker
.
updateNavigator
(
e
.
titleFormatter
(
t
)),
this
},
hide
:
function
(){
return
this
.
container
.
hide
(),
this
},
show
:
function
(){
return
this
.
container
.
show
(),
this
.
updateView
(),
this
},
next
:
function
(){
var
e
=
this
;
return
e
.
datepicker
.
state
.
view
.
year
+=
12
,
e
.
_render
().
updateView
(),
this
},
prev
:
function
(){
var
e
=
this
;
return
e
.
datepicker
.
state
.
view
.
year
-=
12
,
e
.
_render
().
updateView
(),
this
},
selectYear
:
function
(){
this
.
updateView
()},
updateView
:
function
(){
var
e
=
this
;
return
e
.
_render
(),
e
.
container
.
children
(
"
.
"
+
e
.
cssClass
.
yearItem
).
each
(
function
(){
$
(
this
).
removeClass
(
e
.
cssClass
.
selectedYear
),
$
(
this
).
data
().
year
===
e
.
datepicker
.
state
.
selected
.
year
&&
$
(
this
).
addClass
(
e
.
cssClass
.
selectedYear
)}),
e
.
_updateNavigator
(),
this
},
_checkYearAccess
:
function
(
e
){
if
(
this
.
datepicker
.
state
.
_filetredDate
){
var
t
=
this
.
datepicker
.
state
.
filterDate
.
start
.
year
,
i
=
this
.
datepicker
.
state
.
filterDate
.
end
.
year
;
return
e
>=
t
&
i
>=
e
?
!
0
:
!
1
}
return
this
.
datepicker
.
checkYear
(
e
)},
_attachEvents
:
function
(){
var
e
=
this
;
return
this
.
scrollEnabled
&&
(
$
(
this
.
container
).
mousewheel
(
function
(
t
){
t
.
deltaY
>
0
?
e
.
next
():
e
.
prev
()}),
$
(
this
.
container
).
bind
(
"
mousewheel DOMMouseScroll
"
,
function
(
e
){
var
t
=
null
;
"
mousewheel
"
==
e
.
type
?
t
=-
1
*
e
.
originalEvent
.
wheelDelta
:
"
DOMMouseScroll
"
==
e
.
type
&&
(
t
=
40
*
e
.
originalEvent
.
detail
),
t
&&
(
e
.
preventDefault
(),
$
(
this
).
scrollTop
(
t
+
$
(
this
).
scrollTop
()))})),
this
},
_render
:
function
(){
var
e
,
t
=
this
,
i
=
t
.
datepicker
.
state
.
view
.
year
,
n
=
12
*
parseInt
(
i
/
12
);
t
.
container
.
children
(
"
.
"
+
t
.
cssClass
.
yearItem
).
remove
();
var
a
;
for
(
a
in
c
(
12
))
e
=
$
(
"
<div/>
"
).
addClass
(
t
.
cssClass
.
yearItem
).
data
({
year
:
n
+
parseInt
(
a
)}).
text
(
t
.
datepicker
.
_formatDigit
(
n
+
parseInt
(
a
))).
appendTo
(
t
.
container
),
i
===
n
+
parseInt
(
a
)
&&
e
.
addClass
(
t
.
cssClass
.
selectedYear
),
t
.
_checkYearAccess
(
n
+
parseInt
(
a
))?
e
.
click
(
function
(){
var
e
=
$
(
this
).
data
().
year
;
return
t
.
datepicker
.
selectYear
(
parseInt
(
e
)),
t
.
onSelect
(
e
),
!
1
}):(
e
.
addClass
(
t
.
cssClass
.
disbaleItem
),
e
.
click
(
function
(){
return
!
1
}));
return
this
},
init
:
function
(){
return
this
.
_render
(),
this
.
_attachEvents
(),
this
}},
_
=
function
(
e
,
t
){
return
h
(
this
,[
a
,
x
,
e
,{
container
:
t
}])},
S
=
{
text
:{
btnToday
:
"
امروز
"
},
enabled
:
!
0
,
cssClass
:{
btnToday
:
"
btn-today
"
},
_goToday
:
function
(){
var
e
=
this
,
t
=
(
new
Date
).
valueOf
();
return
e
.
datepicker
.
selectDate
(
t
),
this
.
onToday
(
this
),
this
},
_render
:
function
(){
var
e
=
this
;
return
this
.
todayBtn
=
$
(
"
<div></div>
"
).
text
(
e
.
text
.
btnToday
).
addClass
(
e
.
cssClass
.
btnToday
).
click
(
function
(){
return
e
.
_goToday
(),
!
1
}).
appendTo
(
this
.
$container
),
this
},
init
:
function
(){
return
this
.
_render
()}},
C
=
function
(
e
,
t
){
return
h
(
this
,[
a
,
S
,
e
,{
$container
:
t
}])},
M
=
{
secondStep
:
1
,
minuteStep
:
1
,
hourStep
:
1
,
cssClss
:{
timepicker
:
"
viewModel
"
},
show
:
function
(){
"
use strict
"
;
return
this
.
container
.
show
(),
this
},
hide
:
function
(){
"
use strict
"
;
return
this
.
container
.
hide
(),
this
},
_render
:
function
(){
var
e
=
this
,
t
=
{
css
:
e
.
cssClass
};
return
$
.
tmplMustache
(
i
.
timepicker
,
t
).
appendTo
(
this
.
container
),
this
},
_currentMeridian
:
null
,
convert24hTo12
:
function
(
e
){
var
t
=
e
,
i
=
"
AM
"
;
return
e
>=
12
&&
(
t
=
e
-
12
,
i
=
"
PM
"
),
0
===
e
&&
(
t
=
12
),[
t
,
i
]},
convert12hTo24
:
function
(
e
){
var
t
=
e
;
return
"
PM
"
===
this
.
_currentMeridian
&&
12
>
e
&&
(
t
=
e
+
12
),
"
AM
"
===
this
.
_currentMeridian
&&
12
===
e
&&
(
t
=
e
-
12
),
t
},
_updateTime
:
function
(
e
){
var
t
=
e
.
selected
,
i
=
this
.
convert24hTo12
(
t
.
hour
);
return
this
.
hourInput
.
val
(
t
.
hour
),
this
.
minuteInput
.
val
(
t
.
minute
),
this
.
secondInput
.
val
(
t
.
second
),
this
.
meridianInput
.
val
(
t
.
dateObj
.
format
(
"
a
"
)),
this
.
_currentMeridian
=
i
[
1
],
this
.
meridianInput
.
attr
({
"
data-meridian-mode
"
:
this
.
_currentMeridian
}),
this
},
_updateMeridian
:
function
(
e
){
var
t
=
e
.
selected
;
return
this
.
meridianInput
.
val
(
t
.
dateObj
.
format
(
"
a
"
)),
this
},
_toggleMeridian
:
function
(){
return
"
AM
"
===
this
.
_currentMeridian
?(
this
.
_currentMeridian
=
"
PM
"
,
this
.
meridianInput
.
val
(
"
PM
"
)):
"
PM
"
===
this
.
_currentMeridian
&&
(
this
.
_currentMeridian
=
"
AM
"
,
this
.
meridianInput
.
val
(
"
AM
"
)),
this
},
_movehour
:
function
(
e
){
var
t
=
parseInt
(
this
.
hourInput
.
val
());
return
"
up
"
===
e
?
t
>=
12
?
t
=
this
.
hourStep
:
t
+=
this
.
hourStep
:
1
>=
t
?
t
=
12
:
t
-=
this
.
hourStep
,
this
.
hourInput
.
val
(
t
),
this
.
_updateState
(
"
hour
"
,
this
.
convert12hTo24
(
t
)),
this
},
_moveminute
:
function
(
e
){
var
t
=
parseInt
(
this
.
minuteInput
.
val
());
return
"
up
"
===
e
?
59
===
t
?
t
=
0
:
t
+=
this
.
minuteStep
:
0
===
t
?
t
=
59
:
t
-=
this
.
minuteStep
,
this
.
minuteInput
.
val
(
t
),
this
.
_updateState
(
"
minute
"
,
t
),
this
},
_movesecond
:
function
(
e
){
var
t
=
parseInt
(
this
.
secondInput
.
val
());
return
"
up
"
===
e
?
59
===
t
?
t
=
0
:
t
+=
this
.
secondStep
:
0
===
t
?
t
=
59
:
t
-=
this
.
secondStep
,
this
.
secondInput
.
val
(
t
),
this
.
_updateState
(
"
second
"
,
t
),
this
},
_movemeridian
:
function
(){
return
this
.
_toggleMeridian
(),
this
.
_updateState
(
"
hour
"
,
this
.
convert12hTo24
(
parseInt
(
this
.
hourInput
.
val
()))),
this
},
_updateState
:
function
(
e
,
t
){
return
this
.
datepicker
.
selectTime
(
e
,
t
),
this
.
_updateMeridian
(
this
.
datepicker
.
state
),
this
},
_attachEvent
:
function
(){
var
e
=
this
;
return
$
(
"
.up-btn
"
,
this
.
container
).
click
(
function
(){
return
e
[
"
_move
"
+
$
(
this
).
parent
().
attr
(
"
data-time-key
"
)](
"
up
"
),
!
1
}),
$
(
"
.down-btn
"
,
this
.
container
).
click
(
function
(){
return
e
[
"
_move
"
+
$
(
this
).
parent
().
attr
(
"
data-time-key
"
)](
"
down
"
),
!
1
}),
this
.
scrollEnabled
&&
(
$
(
"
> div.time-segment
"
,
this
.
container
).
mousewheel
(
function
(
t
){
var
i
=
"
down
"
;
t
.
deltaY
>
0
&&
(
i
=
"
up
"
),
e
[
"
_move
"
+
$
(
this
).
attr
(
"
data-time-key
"
)](
i
)}),
$
(
"
> div.time-segment
"
,
this
.
container
).
bind
(
"
mousewheel DOMMouseScroll
"
,
function
(
e
){
var
t
=
null
;
"
mousewheel
"
==
e
.
type
?
t
=-
1
*
e
.
originalEvent
.
wheelDelta
:
"
DOMMouseScroll
"
==
e
.
type
&&
(
t
=
40
*
e
.
originalEvent
.
detail
),
t
&&
(
e
.
preventDefault
(),
$
(
this
).
scrollTop
(
t
+
$
(
this
).
scrollTop
()))})),
this
},
_bootstrap
:
function
(){
return
this
.
showMeridian
===!
1
&&
(
$
(
"
.meridian
"
,
this
.
container
).
hide
(),
$
(
"
.meridian-divider
"
,
this
.
container
).
hide
(),
$
(
"
.time-segment
"
,
this
.
container
).
css
({
width
:
"
31%
"
})),
this
.
showSeconds
===!
1
&&
(
$
(
"
.second
"
,
this
.
container
).
hide
(),
$
(
"
.second-divider
"
,
this
.
container
).
hide
(),
$
(
"
.time-segment
"
,
this
.
container
).
css
({
width
:
"
31%
"
})),
this
.
showMeridian
===!
1
&&
this
.
showSeconds
===!
1
&&
$
(
"
.time-segment
"
,
this
.
container
).
css
({
width
:
"
47%
"
}),
this
.
hourInput
=
$
(
"
.hour-input
"
,
this
.
container
),
this
.
minuteInput
=
$
(
"
.minute-input
"
,
this
.
container
),
this
.
secondInput
=
$
(
"
.second-input
"
,
this
.
container
),
this
.
meridianInput
=
$
(
"
.meridian-input
"
,
this
.
container
),
this
.
_updateTime
(
this
.
datepicker
.
state
),
this
},
setTime
:
function
(
e
){
var
t
=
new
persianDate
(
e
);
this
.
_updateState
(
"
hour
"
,
t
.
hour
()),
this
.
_updateState
(
"
minute
"
,
t
.
minute
()),
this
.
_updateState
(
"
second
"
,
t
.
second
()),
this
.
minuteInput
.
val
(
t
.
minute
()),
this
.
secondInput
.
val
(
t
.
second
()),
this
.
hourInput
.
val
(
t
.
hour
())},
init
:
function
(){
return
this
.
_render
().
_bootstrap
().
_attachEvent
(),
this
}},
I
=
function
(
e
,
t
){
return
h
(
this
,[
a
,
M
,
e
,{
container
:
t
}])},
P
=
{
filterDate
:{
start
:{
year
:
0
,
month
:
0
,
date
:
0
,
hour
:
0
,
minute
:
0
,
second
:
0
,
unixDate
:
0
},
end
:{
year
:
0
,
month
:
0
,
date
:
0
,
hour
:
0
,
minute
:
0
,
second
:
0
,
unixDate
:
100
}},
view
:{
year
:
0
,
month
:
0
,
date
:
0
,
hour
:
0
,
minute
:
0
,
second
:
0
,
unixDate
:
0
},
selected
:{
year
:
0
,
month
:
0
,
date
:
0
,
hour
:
0
,
minute
:
0
,
second
:
0
,
unixDate
:
0
},
setFilterDate
:
function
(
e
,
t
,
i
){
var
n
=
this
;
t
||
(
t
=-
99999999999999
);
var
a
=
new
persianDate
(
t
);
n
.
filterDate
.
start
.
unixDate
=
t
,
n
.
filterDate
.
start
.
hour
=
a
.
hour
(),
n
.
filterDate
.
start
.
minute
=
a
.
minute
(),
n
.
filterDate
.
start
.
second
=
a
.
second
(),
n
.
filterDate
.
start
.
month
=
a
.
month
(),
n
.
filterDate
.
start
.
date
=
a
.
date
(),
n
.
filterDate
.
start
.
year
=
a
.
year
(),
i
||
(
i
=
99999999999999
);
var
a
=
new
persianDate
(
i
);
n
.
filterDate
.
end
.
unixDate
=
i
,
n
.
filterDate
.
end
.
hour
=
a
.
hour
(),
n
.
filterDate
.
end
.
minute
=
a
.
minute
(),
n
.
filterDate
.
end
.
second
=
a
.
second
(),
n
.
filterDate
.
end
.
month
=
a
.
month
(),
n
.
filterDate
.
end
.
date
=
a
.
date
(),
n
.
filterDate
.
end
.
year
=
a
.
year
()},
_updateSelectedUnix
:
function
(){
return
this
.
selected
.
dateObj
=
new
persianDate
([
this
.
selected
.
year
,
this
.
selected
.
month
,
this
.
selected
.
date
,
this
.
selected
.
hour
,
this
.
selected
.
minute
,
this
.
selected
.
second
]),
this
.
selected
.
unixDate
=
this
.
selected
.
dateObj
.
valueOf
(),
this
},
setTime
:
function
(
e
,
t
){
var
i
=
this
;
switch
(
e
){
case
"
unix
"
:
i
.
selected
.
unixDate
=
t
;
var
n
=
new
persianDate
(
t
);
i
.
selected
.
hour
=
n
.
hour
(),
i
.
selected
.
minute
=
n
.
minute
(),
i
.
selected
.
second
=
n
.
second
(),
i
.
_updateSelectedUnix
();
break
;
case
"
hour
"
:
this
.
selected
.
hour
=
t
,
i
.
_updateSelectedUnix
();
break
;
case
"
minute
"
:
this
.
selected
.
minute
=
t
,
i
.
_updateSelectedUnix
();
break
;
case
"
second
"
:
this
.
selected
.
second
=
t
,
i
.
_updateSelectedUnix
()}
return
this
},
setSelected
:
function
(
e
,
t
){
var
i
=
this
;
switch
(
e
){
case
"
unix
"
:
i
.
selected
.
unixDate
=
t
;
var
n
=
new
persianDate
(
t
);
i
.
selected
.
year
=
n
.
year
(),
i
.
selected
.
month
=
n
.
month
(),
i
.
selected
.
date
=
n
.
date
(),
i
.
_updateSelectedUnix
();
break
;
case
"
year
"
:
this
.
selected
.
year
=
t
,
i
.
_updateSelectedUnix
();
break
;
case
"
month
"
:
this
.
selected
.
month
=
t
,
i
.
_updateSelectedUnix
();
break
;
case
"
date
"
:
this
.
selected
.
month
=
t
,
i
.
_updateSelectedUnix
()}
return
this
},
setSelectedDateTime
:
function
(
e
,
t
){
var
i
=
this
;
switch
(
e
){
case
"
unix
"
:
i
.
selected
.
unixDate
=
t
;
var
n
=
new
persianDate
(
t
);
i
.
selected
.
year
=
n
.
year
(),
i
.
selected
.
month
=
n
.
month
(),
i
.
selected
.
date
=
n
.
date
(),
i
.
selected
.
hour
=
n
.
hour
(),
i
.
selected
.
minute
=
n
.
minute
(),
i
.
selected
.
second
=
n
.
second
(),
i
.
_updateSelectedUnix
();
break
;
case
"
year
"
:
this
.
selected
.
year
=
t
,
i
.
_updateSelectedUnix
();
break
;
case
"
month
"
:
this
.
selected
.
month
=
t
,
i
.
_updateSelectedUnix
();
break
;
case
"
date
"
:
this
.
selected
.
month
=
t
,
i
.
_updateSelectedUnix
()}
return
this
},
syncViewWithelected
:
function
(){
return
this
.
view
.
year
=
this
.
selected
.
year
,
this
.
view
.
month
=
this
.
selected
.
month
,
this
.
view
.
date
=
this
.
selected
.
date
,
this
.
view
.
unixDate
=
this
.
selected
.
unixDate
,
this
},
_updateViewUnix
:
function
(){
return
this
.
view
.
dateObj
=
new
persianDate
([
this
.
view
.
year
,
this
.
view
.
month
,
this
.
view
.
date
,
this
.
view
.
hour
,
this
.
view
.
minute
,
this
.
view
.
second
]),
this
.
view
.
unixDate
=
this
.
view
.
dateObj
.
valueOf
(),
this
},
setView
:
function
(
e
,
t
){
var
i
=
this
;
switch
(
e
){
case
"
unix
"
:
var
n
=
new
persianDate
(
t
);
i
.
view
.
year
=
n
.
year
(),
i
.
view
.
month
=
n
.
month
(),
i
.
view
.
date
=
n
.
date
(),
i
.
view
.
unixDate
=
t
;
break
;
case
"
year
"
:
this
.
view
.
year
=
t
,
this
.
_updateViewUnix
();
break
;
case
"
month
"
:
this
.
view
.
month
=
t
,
this
.
_updateViewUnix
();
break
;
case
"
date
"
:
this
.
view
.
month
=
t
,
this
.
_updateViewUnix
()}
return
this
}},
T
=
function
(
e
){
return
h
(
this
,[
P
,
e
])};(
function
(
e
){
"
function
"
==
typeof
define
&&
define
.
amd
?
define
([
"
jquery
"
],
e
):
"
object
"
==
typeof
exports
?
module
.
exports
=
e
:
e
(
jQuery
)})(
function
(
e
){
function
t
(
t
){
var
r
=
t
||
window
.
event
,
o
=
c
.
call
(
arguments
,
1
),
h
=
0
,
l
=
0
,
u
=
0
,
p
=
0
,
v
=
0
,
m
=
0
;
if
(
t
=
e
.
event
.
fix
(
r
),
t
.
type
=
"
mousewheel
"
,
"
detail
"
in
r
&&
(
u
=-
1
*
r
.
detail
),
"
wheelDelta
"
in
r
&&
(
u
=
r
.
wheelDelta
),
"
wheelDeltaY
"
in
r
&&
(
u
=
r
.
wheelDeltaY
),
"
wheelDeltaX
"
in
r
&&
(
l
=-
1
*
r
.
wheelDeltaX
),
"
axis
"
in
r
&&
r
.
axis
===
r
.
HORIZONTAL_AXIS
&&
(
l
=-
1
*
u
,
u
=
0
),
h
=
0
===
u
?
l
:
u
,
"
deltaY
"
in
r
&&
(
u
=-
1
*
r
.
deltaY
,
h
=
u
),
"
deltaX
"
in
r
&&
(
l
=
r
.
deltaX
,
0
===
u
&&
(
h
=-
1
*
l
)),
0
!==
u
||
0
!==
l
){
if
(
1
===
r
.
deltaMode
){
var
f
=
e
.
data
(
this
,
"
mousewheel-line-height
"
);
h
*=
f
,
u
*=
f
,
l
*=
f
}
else
if
(
2
===
r
.
deltaMode
){
var
w
=
e
.
data
(
this
,
"
mousewheel-page-height
"
);
h
*=
w
,
u
*=
w
,
l
*=
w
}
if
(
p
=
Math
.
max
(
Math
.
abs
(
u
),
Math
.
abs
(
l
)),(
!
s
||
s
>
p
)
&&
(
s
=
p
,
n
(
r
,
p
)
&&
(
s
/=
40
)),
n
(
r
,
p
)
&&
(
h
/=
40
,
l
/=
40
,
u
/=
40
),
h
=
Math
[
h
>=
1
?
"
floor
"
:
"
ceil
"
](
h
/
s
),
l
=
Math
[
l
>=
1
?
"
floor
"
:
"
ceil
"
](
l
/
s
),
u
=
Math
[
u
>=
1
?
"
floor
"
:
"
ceil
"
](
u
/
s
),
d
.
settings
.
normalizeOffset
&&
this
.
getBoundingClientRect
){
var
y
=
this
.
getBoundingClientRect
();
v
=
t
.
clientX
-
y
.
left
,
m
=
t
.
clientY
-
y
.
top
}
return
t
.
deltaX
=
l
,
t
.
deltaY
=
u
,
t
.
deltaFactor
=
s
,
t
.
offsetX
=
v
,
t
.
offsetY
=
m
,
t
.
deltaMode
=
0
,
o
.
unshift
(
t
,
h
,
l
,
u
),
a
&&
clearTimeout
(
a
),
a
=
setTimeout
(
i
,
200
),(
e
.
event
.
dispatch
||
e
.
event
.
handle
).
apply
(
this
,
o
)}}
function
i
(){
s
=
null
}
function
n
(
e
,
t
){
return
d
.
settings
.
adjustOldDeltas
&&
"
mousewheel
"
===
e
.
type
&&
0
===
t
%
120
}
var
a
,
s
,
r
=
[
"
wheel
"
,
"
mousewheel
"
,
"
DOMMouseScroll
"
,
"
MozMousePixelScroll
"
],
o
=
"
onwheel
"
in
document
||
document
.
documentMode
>=
9
?[
"
wheel
"
]:[
"
mousewheel
"
,
"
DomMouseScroll
"
,
"
MozMousePixelScroll
"
],
c
=
Array
.
prototype
.
slice
;
if
(
e
.
event
.
fixHooks
)
for
(
var
h
=
r
.
length
;
h
;)
e
.
event
.
fixHooks
[
r
[
--
h
]]
=
e
.
event
.
mouseHooks
;
var
d
=
e
.
event
.
special
.
mousewheel
=
{
version
:
"
3.1.12
"
,
setup
:
function
(){
if
(
this
.
addEventListener
)
for
(
var
i
=
o
.
length
;
i
;)
this
.
addEventListener
(
o
[
--
i
],
t
,
!
1
);
else
this
.
onmousewheel
=
t
;
e
.
data
(
this
,
"
mousewheel-line-height
"
,
d
.
getLineHeight
(
this
)),
e
.
data
(
this
,
"
mousewheel-page-height
"
,
d
.
getPageHeight
(
this
))},
teardown
:
function
(){
if
(
this
.
removeEventListener
)
for
(
var
i
=
o
.
length
;
i
;)
this
.
removeEventListener
(
o
[
--
i
],
t
,
!
1
);
else
this
.
onmousewheel
=
null
;
e
.
removeData
(
this
,
"
mousewheel-line-height
"
),
e
.
removeData
(
this
,
"
mousewheel-page-height
"
)},
getLineHeight
:
function
(
t
){
var
i
=
e
(
t
),
n
=
i
[
"
offsetParent
"
in
e
.
fn
?
"
offsetParent
"
:
"
parent
"
]();
return
n
.
length
||
(
n
=
e
(
"
body
"
)),
parseInt
(
n
.
css
(
"
fontSize
"
),
10
)
||
parseInt
(
i
.
css
(
"
fontSize
"
),
10
)
||
16
},
getPageHeight
:
function
(
t
){
return
e
(
t
).
height
()},
settings
:{
adjustOldDeltas
:
!
0
,
normalizeOffset
:
!
0
}};
e
.
fn
.
extend
({
mousewheel
:
function
(
e
){
return
e
?
this
.
bind
(
"
mousewheel
"
,
e
):
this
.
trigger
(
"
mousewheel
"
)},
unmousewheel
:
function
(
e
){
return
this
.
unbind
(
"
mousewheel
"
,
e
)}})})})();
\ No newline at end of file
src/styles.css
View file @
f0fec773
/* You can add global styles to this file, and also import other style files */
@font-face
{
font-family
:
"iransans"
;
src
:
url('./assets/font/IRANSansWeb.ttf')
;
}
body
{
font-family
:
iransans
;
font-size
:
.875rem
;
}
.feather
{
width
:
16px
;
height
:
16px
;
vertical-align
:
text-bottom
;
}
/*
* Sidebar
*/
.sidebar
{
position
:
initial
;
top
:
0
;
right
:
0
;
bottom
:
0
;
/* rtl:remove */
z-index
:
100
;
/* Behind the navbar */
padding
:
48px
0
0
;
/* Height of navbar */
box-shadow
:
inset
1px
2px
3px
rgba
(
0
,
0
,
0
,
0.363
);
}
@media
(
max-width
:
767.98px
)
{
.sidebar
{
top
:
5rem
;
}
}
.sidebar-sticky
{
position
:
relative
;
top
:
0
;
height
:
calc
(
100vh
-
48px
);
padding-top
:
.5rem
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
/* Scrollable contents if viewport is shorter than content. */
}
.sidebar
.nav-link
{
font-weight
:
500
;
color
:
#333
;
}
.sidebar
.nav-link
.feather
{
margin-right
:
4px
;
color
:
#727272
;
}
.sidebar
.nav-link.active
{
color
:
#ff00b3
;
}
.sidebar
.nav-link
:hover
.feather
,
.sidebar
.nav-link.active
.feather
{
color
:
inherit
;
}
.sidebar-heading
{
font-size
:
.75rem
;
text-transform
:
uppercase
;
}
/*
* Navbar
*/
.navbar-brand
{
padding-top
:
.75rem
;
padding-bottom
:
.75rem
;
font-size
:
1rem
;
background-color
:
rgba
(
0
,
0
,
0
,
.25
);
box-shadow
:
inset
-1px
0
0
rgba
(
0
,
0
,
0
,
.25
);
}
.navbar
.navbar-toggler
{
top
:
.25rem
;
right
:
1rem
;
}
.navbar
.form-control
{
padding
:
.75rem
1rem
;
border-width
:
0
;
border-radius
:
0
;
}
.form-control-dark
{
color
:
#fff
;
background-color
:
rgba
(
255
,
255
,
255
,
.1
);
border-color
:
rgba
(
255
,
255
,
255
,
.1
);
}
.form-control-dark
:focus
{
border-color
:
transparent
;
box-shadow
:
0
0
0
3px
rgba
(
255
,
255
,
255
,
.25
);
}
.center-all
{
width
:
100%
;
height
:
100vh
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.box-me
{
padding
:
25px
;
border-radius
:
15px
;
box-shadow
:
0
0
10px
6px
rgba
(
29
,
29
,
29
,
0.185
);
}
tsconfig.json
View file @
f0fec773
...
...
@@ -5,7 +5,7 @@
"baseUrl"
:
"./"
,
"outDir"
:
"./dist/out-tsc"
,
"forceConsistentCasingInFileNames"
:
true
,
"strict"
:
tru
e
,
"strict"
:
fals
e
,
"noImplicitReturns"
:
true
,
"noFallthroughCasesInSwitch"
:
true
,
"sourceMap"
:
true
,
...
...
@@ -16,6 +16,7 @@
"importHelpers"
:
true
,
"target"
:
"es2017"
,
"module"
:
"es2020"
,
"allowSyntheticDefaultImports"
:
true
,
"lib"
:
[
"es2018"
,
"dom"
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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