Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
FFS Gluon
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
firmware
FFS Gluon
Commits
ba1df47d
Unverified
Commit
ba1df47d
authored
6 years ago
by
Matthias Schiffer
Browse files
Options
Downloads
Patches
Plain Diff
gluon-web-model: add custom events for form elements
parent
a3a1d217
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
package/gluon-web-model/files/lib/gluon/web/www/static/gluon-web-model.js
+1
-1
1 addition, 1 deletion
...b-model/files/lib/gluon/web/www/static/gluon-web-model.js
package/gluon-web-model/javascript/gluon-web-model.js
+5
-0
5 additions, 0 deletions
package/gluon-web-model/javascript/gluon-web-model.js
with
6 additions
and
1 deletion
package/gluon-web-model/files/lib/gluon/web/www/static/gluon-web-model.js
+
1
−
1
View file @
ba1df47d
!
function
(){
var
e
=
{};
function
t
(
e
){
return
/^-
?\d
+$/
.
test
(
e
)?
+
e
:
NaN
}
function
n
(
e
){
return
/^-
?\d
*
\.?\d
+
?
$/
.
test
(
e
)?
+
e
:
NaN
}
var
a
=
{
integer
:
function
(){
return
!
isNaN
(
t
(
this
))},
uinteger
:
function
(){
return
t
(
this
)
>=
0
},
float
:
function
(){
return
!
isNaN
(
n
(
this
))},
ufloat
:
function
(){
return
n
(
this
)
>=
0
},
ipaddr
:
function
(){
return
a
.
ip4addr
.
apply
(
this
)
||
a
.
ip6addr
.
apply
(
this
)},
ip4addr
:
function
(){
var
e
;
return
!!
(
e
=
this
.
match
(
/^
(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
$/
))
&&
(
e
[
1
]
>=
0
&&
e
[
1
]
<=
255
&&
e
[
2
]
>=
0
&&
e
[
2
]
<=
255
&&
e
[
3
]
>=
0
&&
e
[
3
]
<=
255
&&
e
[
4
]
>=
0
&&
e
[
4
]
<=
255
)},
ip6addr
:
function
(){
return
this
.
indexOf
(
"
::
"
)
<
0
?
null
!=
this
.
match
(
/^
(?:[
a-f0-9
]{1,4}
:
){7}[
a-f0-9
]{1,4}
$/i
):
!
(
this
.
indexOf
(
"
:::
"
)
>=
0
||
this
.
match
(
/::.+::/
)
||
this
.
match
(
/^:
[^
:
]
/
)
||
this
.
match
(
/
[^
:
]
:$/
))
&&
(
!!
this
.
match
(
/^
(?:[
a-f0-9
]{0,4}
:
){2,7}[
a-f0-9
]{0,4}
$/i
)
||
(
!!
this
.
match
(
/^
(?:[
a-f0-9
]{1,4}
:
){7}
:$/i
)
||!!
this
.
match
(
/^:
(?:
:
[
a-f0-9
]{1,4}){7}
$/i
)))},
wpakey
:
function
(){
var
e
=
this
;
return
64
==
e
.
length
?
null
!=
e
.
match
(
/^
[
a-f0-9
]{64}
$/i
):
e
.
length
>=
8
&&
e
.
length
<=
63
},
range
:
function
(
e
,
t
){
var
a
=
n
(
this
);
return
a
>=+
e
&&
a
<=+
t
},
min
:
function
(
e
){
return
n
(
this
)
>=+
e
},
max
:
function
(
e
){
return
n
(
this
)
<=+
e
},
irange
:
function
(
e
,
n
){
var
a
=
t
(
this
);
return
a
>=+
e
&&
a
<=+
n
},
imin
:
function
(
e
){
return
t
(
this
)
>=+
e
},
imax
:
function
(
e
){
return
t
(
this
)
<=+
e
},
minlength
:
function
(
e
){
return
(
""
+
this
).
length
>=+
e
},
maxlength
:
function
(
e
){
return
(
""
+
this
).
length
<=+
e
}};
function
r
(
e
){
for
(
var
t
=
0
;
t
<
e
.
length
;
t
++
){
var
n
=!
0
;
for
(
var
a
in
e
[
t
])
n
=
n
&&
(
r
=
a
,
i
=
e
[
t
][
a
],
o
=
void
0
,(
o
=
document
.
getElementById
(
r
))?(
"
checkbox
"
==
o
.
type
?
o
.
checked
:
o
.
value
?
o
.
value
:
""
)
==
i
:
!!
(
o
=
document
.
getElementById
(
r
+
"
.
"
+
i
))
&&
"
radio
"
==
o
.
type
&&
o
.
checked
);
if
(
n
)
return
!
0
}
var
r
,
i
,
o
;
return
!
1
}
function
i
(){
var
t
=!
1
;
for
(
var
n
in
e
){
var
a
=
e
[
n
],
o
=
document
.
getElementById
(
n
),
d
=
document
.
getElementById
(
a
.
parent
);
if
(
o
&&
o
.
parentNode
&&!
r
(
a
.
deps
))
o
.
parentNode
.
removeChild
(
o
),
t
=!
0
;
else
if
(
d
&&
(
!
o
||!
o
.
parentNode
)
&&
r
(
a
.
deps
)){
var
u
=
void
0
;
for
(
u
=
d
.
firstChild
;
u
&&!
(
u
.
getAttribute
&&
parseInt
(
u
.
getAttribute
(
"
data-index
"
),
10
)
>
a
.
index
);
u
=
u
.
nextSibling
);
u
?
d
.
insertBefore
(
a
.
node
,
u
):
d
.
appendChild
(
a
.
node
),
t
=!
0
}
d
&&
d
.
parentNode
&&
d
.
getAttribute
(
"
data-optionals
"
)
&&
(
d
.
parentNode
.
style
.
display
=
d
.
options
.
length
<=
1
?
"
none
"
:
""
)}
t
&&
i
()}
function
o
(
e
,
t
,
n
,
a
){
return
e
.
addEventListener
?
e
.
addEventListener
(
t
,
n
,
!!
a
):
e
.
attachEvent
(
"
on
"
+
t
,
function
(){
var
e
=
window
.
event
;
return
!
e
.
target
&&
e
.
srcElement
&&
(
e
.
target
=
e
.
srcElement
),
!!
n
(
e
)}),
e
}
function
d
(
e
,
t
){
var
n
=
t
.
prefix
;
function
a
(
a
,
l
,
s
){
for
(
var
c
=
[];
e
.
firstChild
;){
var
p
=
e
.
firstChild
;(
f
=+
p
.
index
)
!=
s
&&
(
"
input
"
==
p
.
nodeName
.
toLowerCase
()?
c
.
push
(
p
.
value
||
""
):
"
select
"
==
p
.
nodeName
.
toLowerCase
()
&&
(
c
[
c
.
length
-
1
]
=
p
.
options
[
p
.
selectedIndex
].
value
)),
e
.
removeChild
(
p
)}
l
>=
0
?(
a
=
l
+
1
,
c
.
splice
(
l
,
0
,
""
)):
t
.
optional
||
0
!=
c
.
length
||
c
.
push
(
""
);
for
(
var
f
=
1
;
f
<=
c
.
length
;
f
++
){
var
v
=
document
.
createElement
(
"
input
"
);
if
(
v
.
id
=
n
+
"
.
"
+
f
,
v
.
name
=
n
,
v
.
value
=
c
[
f
-
1
],
v
.
type
=
"
text
"
,
v
.
index
=
f
,
v
.
className
=
"
gluon-input-text
"
,
t
.
size
&&
(
v
.
size
=
t
.
size
),
t
.
placeholder
&&
(
v
.
placeholder
=
t
.
placeholder
),
e
.
appendChild
(
v
),
t
.
type
&&
u
(
v
,
!
1
,
t
.
type
),
o
(
v
,
"
keydown
"
,
i
),
o
(
v
,
"
keypress
"
,
r
),
f
==
a
)
v
.
focus
();
else
if
(
-
f
==
a
){
v
.
focus
();
var
h
=
v
.
value
;
v
.
value
=
"
"
,
v
.
value
=
h
}
if
(
t
.
optional
||
c
.
length
>
1
)(
m
=
document
.
createElement
(
"
span
"
)).
className
=
"
gluon-remove
"
,
e
.
appendChild
(
m
),
o
(
m
,
"
click
"
,
d
(
!
1
)),
e
.
appendChild
(
document
.
createElement
(
"
br
"
))}
var
m
;(
m
=
document
.
createElement
(
"
span
"
)).
className
=
"
gluon-add
"
,
e
.
appendChild
(
m
),
o
(
m
,
"
click
"
,
d
(
!
0
))}
function
r
(
e
){
var
t
=
(
e
=
e
||
window
.
event
).
target
?
e
.
target
:
e
.
srcElement
;
switch
(
3
==
t
.
nodeType
&&
(
t
=
t
.
parentNode
),
e
.
keyCode
){
case
8
:
case
46
:
return
0
!=
t
.
value
.
length
||
(
e
.
preventDefault
&&
e
.
preventDefault
(),
!
1
);
case
13
:
case
38
:
case
40
:
return
e
.
preventDefault
&&
e
.
preventDefault
(),
!
1
}
return
!
0
}
function
i
(
e
){
var
t
,
r
,
i
=
(
e
=
e
||
window
.
event
).
target
?
e
.
target
:
e
.
srcElement
,
o
=
0
;
if
(
i
){
for
(
3
==
i
.
nodeType
&&
(
i
=
i
.
parentNode
),
o
=
i
.
index
,
t
=
i
.
previousSibling
;
t
&&
t
.
name
!=
n
;)
t
=
t
.
previousSibling
;
for
(
r
=
i
.
nextSibling
;
r
&&
r
.
name
!=
n
;)
r
=
r
.
nextSibling
}
switch
(
e
.
keyCode
){
case
8
:
case
46
:
if
(
"
select
"
==
i
.
nodeName
.
toLowerCase
()
||
0
==
i
.
value
.
length
){
e
.
preventDefault
&&
e
.
preventDefault
();
var
d
=
i
.
index
;
return
8
==
e
.
keyCode
&&
(
d
=
1
-
d
),
a
(
d
,
-
1
,
o
),
!
1
}
break
;
case
13
:
a
(
-
1
,
o
,
-
1
);
break
;
case
38
:
t
&&
t
.
focus
();
break
;
case
40
:
r
&&
r
.
focus
()}
return
!
0
}
function
d
(
e
){
return
function
(
t
){
for
(
var
a
=
((
t
=
t
||
window
.
event
).
target
?
t
.
target
:
t
.
srcElement
).
previousSibling
;
a
&&
a
.
name
!=
n
;)
a
=
a
.
previousSibling
;
return
e
?
i
({
target
:
a
,
keyCode
:
13
}):(
a
.
value
=
""
,
i
({
target
:
a
,
keyCode
:
8
})),
!
1
}}
a
(
NaN
,
-
1
,
-
1
)}
function
u
(
e
,
t
,
n
){
var
r
,
i
,
d
,
u
=
(
d
=
(
r
=
n
).
match
(
/^
([^\(]
+
)\(([^
,
]
+
)
,
([^\)]
+
)\)
$/
))
&&
void
0
!==
(
i
=
a
[
d
[
1
]])?
function
(){
return
i
.
apply
(
this
,[
d
[
2
],
d
[
3
]])}:(
d
=
r
.
match
(
/^
([^\(]
+
)\(([^
,
\)]
+
)\)
$/
))
&&
void
0
!==
(
i
=
a
[
d
[
1
]])?
function
(){
return
i
.
apply
(
this
,[
d
[
2
]])}:
a
[
r
];
if
(
u
){
var
l
=
function
(){
if
(
e
.
form
){
e
.
className
=
e
.
className
.
replace
(
/ gluon-input-invalid/g
,
""
);
var
n
=
e
.
options
&&
e
.
options
.
selectedIndex
>-
1
?
e
.
options
[
e
.
options
.
selectedIndex
].
value
:
e
.
value
;
0
==
n
.
length
&&
t
||
u
.
apply
(
n
)
||
(
e
.
className
+=
"
gluon-input-invalid
"
)}};
o
(
e
,
"
blur
"
,
l
),
o
(
e
,
"
keyup
"
,
l
),
"
select
"
==
e
.
nodeName
.
toLowerCase
()
&&
(
o
(
e
,
"
change
"
,
l
),
o
(
e
,
"
click
"
,
l
)),
l
()}}
!
function
(){
var
t
,
n
,
a
,
r
,
l
;
t
=
document
.
querySelectorAll
(
"
[data-depends]
"
);
for
(
var
s
=
0
;
void
0
!==
(
g
=
t
[
s
]);
s
++
){
var
c
=
parseInt
(
g
.
getAttribute
(
"
data-index
"
),
10
),
p
=
JSON
.
parse
(
g
.
getAttribute
(
"
data-depends
"
));
if
(
!
isNaN
(
c
)
&&
p
.
length
>
0
)
for
(
var
f
=
0
;
f
<
p
.
length
;
f
++
)
n
=
g
,
a
=
p
[
f
],
r
=
c
,
l
=
void
0
,(
l
=
e
[
n
.
id
])
||
(
l
=
{
node
:
n
,
parent
:
n
.
parentNode
.
id
,
deps
:[],
index
:
r
},
e
[
n
.
id
]
=
l
),
l
.
deps
.
push
(
a
)}
t
=
document
.
querySelectorAll
(
"
[data-update]
"
);
for
(
s
=
0
;
void
0
!==
(
g
=
t
[
s
]);
s
++
)
for
(
var
v
,
h
=
g
.
getAttribute
(
"
data-update
"
).
split
(
"
"
),
m
=
0
;
void
0
!==
(
v
=
h
[
m
]);
m
++
)
o
(
g
,
v
,
i
);
t
=
document
.
querySelectorAll
(
"
[data-type]
"
);
for
(
s
=
0
;
void
0
!==
(
g
=
t
[
s
]);
s
++
)
u
(
g
,
"
true
"
===
g
.
getAttribute
(
"
data-optional
"
),
g
.
getAttribute
(
"
data-type
"
));
t
=
document
.
querySelectorAll
(
"
[data-dynlist]
"
);
var
g
;
for
(
s
=
0
;
void
0
!==
(
g
=
t
[
s
]);
s
++
){
d
(
g
,
JSON
.
parse
(
g
.
getAttribute
(
"
data-dynlist
"
)))}
i
()}()}();
!
function
(){
var
f
=
{};
function
a
(
e
){
return
/^-
?\d
+$/
.
test
(
e
)?
+
e
:
NaN
}
function
r
(
e
){
return
/^-
?\d
*
\.?\d
+
?
$/
.
test
(
e
)?
+
e
:
NaN
}
var
u
=
{
integer
:
function
(){
return
!
isNaN
(
a
(
this
))},
uinteger
:
function
(){
return
0
<=
a
(
this
)},
float
:
function
(){
return
!
isNaN
(
r
(
this
))},
ufloat
:
function
(){
return
0
<=
r
(
this
)},
ipaddr
:
function
(){
return
u
.
ip4addr
.
apply
(
this
)
||
u
.
ip6addr
.
apply
(
this
)},
ip4addr
:
function
(){
var
e
;
return
!!
(
e
=
this
.
match
(
/^
(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
$/
))
&&
(
0
<=
e
[
1
]
&&
e
[
1
]
<=
255
&&
0
<=
e
[
2
]
&&
e
[
2
]
<=
255
&&
0
<=
e
[
3
]
&&
e
[
3
]
<=
255
&&
0
<=
e
[
4
]
&&
e
[
4
]
<=
255
)},
ip6addr
:
function
(){
return
this
.
indexOf
(
"
::
"
)
<
0
?
null
!=
this
.
match
(
/^
(?:[
a-f0-9
]{1,4}
:
){7}[
a-f0-9
]{1,4}
$/i
):
!
(
0
<=
this
.
indexOf
(
"
:::
"
)
||
this
.
match
(
/::.+::/
)
||
this
.
match
(
/^:
[^
:
]
/
)
||
this
.
match
(
/
[^
:
]
:$/
))
&&
(
!!
this
.
match
(
/^
(?:[
a-f0-9
]{0,4}
:
){2,7}[
a-f0-9
]{0,4}
$/i
)
||
(
!!
this
.
match
(
/^
(?:[
a-f0-9
]{1,4}
:
){7}
:$/i
)
||!!
this
.
match
(
/^:
(?:
:
[
a-f0-9
]{1,4}){7}
$/i
)))},
wpakey
:
function
(){
var
e
=
this
;
return
64
==
e
.
length
?
null
!=
e
.
match
(
/^
[
a-f0-9
]{64}
$/i
):
8
<=
e
.
length
&&
e
.
length
<=
63
},
range
:
function
(
e
,
t
){
var
n
=
r
(
this
);
return
+
e
<=
n
&&
n
<=+
t
},
min
:
function
(
e
){
return
r
(
this
)
>=+
e
},
max
:
function
(
e
){
return
r
(
this
)
<=+
e
},
irange
:
function
(
e
,
t
){
var
n
=
a
(
this
);
return
+
e
<=
n
&&
n
<=+
t
},
imin
:
function
(
e
){
return
a
(
this
)
>=+
e
},
imax
:
function
(
e
){
return
a
(
this
)
<=+
e
},
minlength
:
function
(
e
){
return
+
e
<=
(
""
+
this
).
length
},
maxlength
:
function
(
e
){
return
(
""
+
this
).
length
<=+
e
}};
function
o
(
e
){
for
(
var
t
=
0
;
t
<
e
.
length
;
t
++
){
var
n
=!
0
;
for
(
var
a
in
e
[
t
])
n
=
n
&&
(
r
=
a
,
i
=
e
[
t
][
a
],
o
=
void
0
,(
o
=
document
.
getElementById
(
r
))?(
"
checkbox
"
==
o
.
type
?
o
.
checked
:
o
.
value
?
o
.
value
:
""
)
==
i
:
!!
(
o
=
document
.
getElementById
(
r
+
"
.
"
+
i
))
&&
"
radio
"
==
o
.
type
&&
o
.
checked
);
if
(
n
)
return
!
0
}
var
r
,
i
,
o
;
return
!
1
}
function
v
(){
window
.
dispatchEvent
(
new
Event
(
"
gluon-update
"
));
var
e
=!
1
;
for
(
var
t
in
f
){
var
n
=
f
[
t
],
a
=
document
.
getElementById
(
t
),
r
=
document
.
getElementById
(
n
.
parent
);
if
(
a
&&
a
.
parentNode
&&!
o
(
n
.
deps
))
a
.
parentNode
.
removeChild
(
a
),
a
.
dispatchEvent
(
new
Event
(
"
gluon-hide
"
)),
e
=!
0
;
else
if
(
r
&&
(
!
a
||!
a
.
parentNode
)
&&
o
(
n
.
deps
)){
var
i
=
void
0
;
for
(
i
=
r
.
firstChild
;
i
&&!
(
i
.
getAttribute
&&
parseInt
(
i
.
getAttribute
(
"
data-index
"
),
10
)
>
n
.
index
);
i
=
i
.
nextSibling
);
i
?
r
.
insertBefore
(
n
.
node
,
i
):
r
.
appendChild
(
n
.
node
),
n
.
node
.
dispatchEvent
(
new
Event
(
"
gluon-show
"
)),
e
=!
0
}
r
&&
r
.
parentNode
&&
r
.
getAttribute
(
"
data-optionals
"
)
&&
(
r
.
parentNode
.
style
.
display
=
r
.
options
.
length
<=
1
?
"
none
"
:
""
)}
e
&&
v
()}
function
h
(
e
,
t
,
n
,
a
){
return
e
.
addEventListener
?
e
.
addEventListener
(
t
,
n
,
!!
a
):
e
.
attachEvent
(
"
on
"
+
t
,
function
(){
var
e
=
window
.
event
;
return
!
e
.
target
&&
e
.
srcElement
&&
(
e
.
target
=
e
.
srcElement
),
!!
n
(
e
)}),
e
}
function
g
(
l
,
s
){
var
c
=
s
.
prefix
;
function
o
(
e
,
t
,
n
){
for
(
var
a
=
[];
l
.
firstChild
;){
var
r
=
l
.
firstChild
;(
i
=+
r
.
index
)
!=
n
&&
(
"
input
"
==
r
.
nodeName
.
toLowerCase
()?
a
.
push
(
r
.
value
||
""
):
"
select
"
==
r
.
nodeName
.
toLowerCase
()
&&
(
a
[
a
.
length
-
1
]
=
r
.
options
[
r
.
selectedIndex
].
value
)),
l
.
removeChild
(
r
)}
0
<=
t
?(
e
=
t
+
1
,
a
.
splice
(
t
,
0
,
""
)):
s
.
optional
||
0
!=
a
.
length
||
a
.
push
(
""
);
for
(
var
i
=
1
;
i
<=
a
.
length
;
i
++
){
var
o
=
document
.
createElement
(
"
input
"
);
if
(
o
.
id
=
c
+
"
.
"
+
i
,
o
.
name
=
c
,
o
.
value
=
a
[
i
-
1
],
o
.
type
=
"
text
"
,
o
.
index
=
i
,
o
.
className
=
"
gluon-input-text
"
,
s
.
size
&&
(
o
.
size
=
s
.
size
),
s
.
placeholder
&&
(
o
.
placeholder
=
s
.
placeholder
),
l
.
appendChild
(
o
),
s
.
type
&&
m
(
o
,
!
1
,
s
.
type
),
h
(
o
,
"
keydown
"
,
f
),
h
(
o
,
"
keypress
"
,
p
),
i
==
e
)
o
.
focus
();
else
if
(
-
i
==
e
){
o
.
focus
();
var
d
=
o
.
value
;
o
.
value
=
"
"
,
o
.
value
=
d
}
if
(
s
.
optional
||
1
<
a
.
length
)(
u
=
document
.
createElement
(
"
span
"
)).
className
=
"
gluon-remove
"
,
l
.
appendChild
(
u
),
h
(
u
,
"
click
"
,
v
(
!
1
)),
l
.
appendChild
(
document
.
createElement
(
"
br
"
))}
var
u
;(
u
=
document
.
createElement
(
"
span
"
)).
className
=
"
gluon-add
"
,
l
.
appendChild
(
u
),
h
(
u
,
"
click
"
,
v
(
!
0
))}
function
p
(
e
){
var
t
=
(
e
=
e
||
window
.
event
).
target
?
e
.
target
:
e
.
srcElement
;
switch
(
3
==
t
.
nodeType
&&
(
t
=
t
.
parentNode
),
e
.
keyCode
){
case
8
:
case
46
:
return
0
!=
t
.
value
.
length
||
(
e
.
preventDefault
&&
e
.
preventDefault
(),
!
1
);
case
13
:
case
38
:
case
40
:
return
e
.
preventDefault
&&
e
.
preventDefault
(),
!
1
}
return
!
0
}
function
f
(
e
){
var
t
,
n
,
a
=
(
e
=
e
||
window
.
event
).
target
?
e
.
target
:
e
.
srcElement
,
r
=
0
;
if
(
a
){
for
(
3
==
a
.
nodeType
&&
(
a
=
a
.
parentNode
),
r
=
a
.
index
,
t
=
a
.
previousSibling
;
t
&&
t
.
name
!=
c
;)
t
=
t
.
previousSibling
;
for
(
n
=
a
.
nextSibling
;
n
&&
n
.
name
!=
c
;)
n
=
n
.
nextSibling
}
switch
(
e
.
keyCode
){
case
8
:
case
46
:
if
(
"
select
"
==
a
.
nodeName
.
toLowerCase
()
||
0
==
a
.
value
.
length
){
e
.
preventDefault
&&
e
.
preventDefault
();
var
i
=
a
.
index
;
return
8
==
e
.
keyCode
&&
(
i
=
1
-
i
),
o
(
i
,
-
1
,
r
),
!
1
}
break
;
case
13
:
o
(
-
1
,
r
,
-
1
);
break
;
case
38
:
t
&&
t
.
focus
();
break
;
case
40
:
n
&&
n
.
focus
()}
return
!
0
}
function
v
(
n
){
return
function
(
e
){
for
(
var
t
=
((
e
=
e
||
window
.
event
).
target
?
e
.
target
:
e
.
srcElement
).
previousSibling
;
t
&&
t
.
name
!=
c
;)
t
=
t
.
previousSibling
;
return
n
?
f
({
target
:
t
,
keyCode
:
13
}):(
t
.
value
=
""
,
f
({
target
:
t
,
keyCode
:
8
})),
!
1
}}
o
(
NaN
,
-
1
,
-
1
)}
function
m
(
t
,
n
,
e
){
var
a
,
r
,
i
,
o
=
(
i
=
(
a
=
e
).
match
(
/^
([^\(]
+
)\(([^
,
]
+
)
,
([^\)]
+
)\)
$/
))
&&
void
0
!==
(
r
=
u
[
i
[
1
]])?
function
(){
return
r
.
apply
(
this
,[
i
[
2
],
i
[
3
]])}:(
i
=
a
.
match
(
/^
([^\(]
+
)\(([^
,
\)]
+
)\)
$/
))
&&
void
0
!==
(
r
=
u
[
i
[
1
]])?
function
(){
return
r
.
apply
(
this
,[
i
[
2
]])}:
u
[
a
];
if
(
o
){
var
d
=
function
(){
if
(
t
.
form
){
t
.
className
=
t
.
className
.
replace
(
/ gluon-input-invalid/g
,
""
);
var
e
=
t
.
options
&&-
1
<
t
.
options
.
selectedIndex
?
t
.
options
[
t
.
options
.
selectedIndex
].
value
:
t
.
value
;
0
==
e
.
length
&&
n
||
o
.
apply
(
e
)
||
(
t
.
className
+=
"
gluon-input-invalid
"
)}};
h
(
t
,
"
blur
"
,
d
),
h
(
t
,
"
keyup
"
,
d
),
h
(
t
,
"
gluon-revalidate
"
,
d
),
"
select
"
==
t
.
nodeName
.
toLowerCase
()
&&
(
h
(
t
,
"
change
"
,
d
),
h
(
t
,
"
click
"
,
d
)),
d
()}}
!
function
(){
var
e
,
t
,
n
,
a
,
r
;
e
=
document
.
querySelectorAll
(
"
[data-depends]
"
);
for
(
var
i
=
0
;
void
0
!==
(
p
=
e
[
i
]);
i
++
){
var
o
=
parseInt
(
p
.
getAttribute
(
"
data-index
"
),
10
),
d
=
JSON
.
parse
(
p
.
getAttribute
(
"
data-depends
"
));
if
(
!
isNaN
(
o
)
&&
0
<
d
.
length
)
for
(
var
u
=
0
;
u
<
d
.
length
;
u
++
)
t
=
p
,
n
=
d
[
u
],
a
=
o
,
r
=
void
0
,(
r
=
f
[
t
.
id
])
||
(
r
=
{
node
:
t
,
parent
:
t
.
parentNode
.
id
,
deps
:[],
index
:
a
},
f
[
t
.
id
]
=
r
),
r
.
deps
.
push
(
n
)}
e
=
document
.
querySelectorAll
(
"
[data-update]
"
);
for
(
i
=
0
;
void
0
!==
(
p
=
e
[
i
]);
i
++
)
for
(
var
l
,
s
=
p
.
getAttribute
(
"
data-update
"
).
split
(
"
"
),
c
=
0
;
void
0
!==
(
l
=
s
[
c
]);
c
++
)
h
(
p
,
l
,
v
);
e
=
document
.
querySelectorAll
(
"
[data-type]
"
);
for
(
i
=
0
;
void
0
!==
(
p
=
e
[
i
]);
i
++
)
m
(
p
,
"
true
"
===
p
.
getAttribute
(
"
data-optional
"
),
p
.
getAttribute
(
"
data-type
"
));
e
=
document
.
querySelectorAll
(
"
[data-dynlist]
"
);
var
p
;
for
(
i
=
0
;
void
0
!==
(
p
=
e
[
i
]);
i
++
){
g
(
p
,
JSON
.
parse
(
p
.
getAttribute
(
"
data-dynlist
"
)))}
v
()}()}();
\ No newline at end of file
\ No newline at end of file
This diff is collapsed.
Click to expand it.
package/gluon-web-model/javascript/gluon-web-model.js
+
5
−
0
View file @
ba1df47d
...
@@ -183,6 +183,8 @@
...
@@ -183,6 +183,8 @@
}
}
function
update
()
{
function
update
()
{
window
.
dispatchEvent
(
new
Event
(
'
gluon-update
'
));
var
state
=
false
;
var
state
=
false
;
for
(
var
id
in
dep_entries
)
{
for
(
var
id
in
dep_entries
)
{
var
entry
=
dep_entries
[
id
];
var
entry
=
dep_entries
[
id
];
...
@@ -191,6 +193,7 @@
...
@@ -191,6 +193,7 @@
if
(
node
&&
node
.
parentNode
&&
!
check
(
entry
.
deps
))
{
if
(
node
&&
node
.
parentNode
&&
!
check
(
entry
.
deps
))
{
node
.
parentNode
.
removeChild
(
node
);
node
.
parentNode
.
removeChild
(
node
);
node
.
dispatchEvent
(
new
Event
(
'
gluon-hide
'
));
state
=
true
;
state
=
true
;
}
else
if
(
parent
&&
(
!
node
||
!
node
.
parentNode
)
&&
check
(
entry
.
deps
))
{
}
else
if
(
parent
&&
(
!
node
||
!
node
.
parentNode
)
&&
check
(
entry
.
deps
))
{
var
next
=
undefined
;
var
next
=
undefined
;
...
@@ -207,6 +210,7 @@
...
@@ -207,6 +210,7 @@
parent
.
insertBefore
(
entry
.
node
,
next
);
parent
.
insertBefore
(
entry
.
node
,
next
);
}
}
entry
.
node
.
dispatchEvent
(
new
Event
(
'
gluon-show
'
));
state
=
true
;
state
=
true
;
}
}
...
@@ -471,6 +475,7 @@
...
@@ -471,6 +475,7 @@
bind
(
field
,
"
blur
"
,
validator
);
bind
(
field
,
"
blur
"
,
validator
);
bind
(
field
,
"
keyup
"
,
validator
);
bind
(
field
,
"
keyup
"
,
validator
);
bind
(
field
,
"
gluon-revalidate
"
,
validator
);
if
(
field
.
nodeName
.
toLowerCase
()
==
'
select
'
)
{
if
(
field
.
nodeName
.
toLowerCase
()
==
'
select
'
)
{
bind
(
field
,
"
change
"
,
validator
);
bind
(
field
,
"
change
"
,
validator
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment