Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
3229aaf5
Commit
3229aaf5
authored
May 20, 2013
by
cahrens
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Call polyfill at right time.
parent
aa41aed9
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
282 additions
and
282 deletions
+282
-282
cms/static/coffee/src/views/module_edit.coffee
+0
-3
cms/static/js/views/metadata_editor_view.js
+14
-8
common/static/js/vendor/html5-input-polyfills/number-polyfill.js
+268
-271
No files found.
cms/static/coffee/src/views/module_edit.coffee
View file @
3229aaf5
...
...
@@ -29,9 +29,6 @@ class CMS.Views.ModuleEdit extends Backbone.View
model
:
new
Backbone
.
Model
(
metadataEditor
.
data
(
'metadata'
))
});
#Manually runs polyfill for input number types to correct for Firefox non-support
#numberPolyfill()
# Need to update set "active" class on data editor if there is one.
# If we are only showing settings, hide the data editor controls and update settings accordingly.
if
@
hasDataEditor
()
...
...
cms/static/js/views/metadata_editor_view.js
View file @
3229aaf5
...
...
@@ -100,12 +100,15 @@ CMS.Views.Metadata.AbstractEditor = Backbone.View.extend({
showClearButton
:
function
()
{
if
(
!
this
.
$el
.
hasClass
(
'is-set'
))
{
this
.
$el
.
addClass
(
'is-set'
);
// TODO: can we use toggleclass?
this
.
$el
.
find
(
'.setting-clear'
).
removeClass
(
'inactive'
);
this
.
$el
.
find
(
'.setting-clear'
).
addClass
(
'active'
);
this
.
getClearButton
().
removeClass
(
'inactive'
);
this
.
getClearButton
().
addClass
(
'active'
);
}
},
getClearButton
:
function
()
{
return
this
.
$el
.
find
(
'.setting-clear'
);
},
render
:
function
()
{
if
(
!
this
.
template
)
return
;
...
...
@@ -116,9 +119,8 @@ CMS.Views.Metadata.AbstractEditor = Backbone.View.extend({
}
else
{
this
.
$el
.
removeClass
(
'is-set'
);
// TODO: can we use toggleclass?
this
.
$el
.
find
(
'.setting-clear'
).
addClass
(
'inactive'
);
this
.
$el
.
find
(
'.setting-clear'
).
removeClass
(
'active'
);
this
.
getClearButton
().
addClass
(
'inactive'
);
this
.
getClearButton
().
removeClass
(
'active'
);
}
}
});
...
...
@@ -154,7 +156,7 @@ CMS.Views.Metadata.Number = CMS.Views.Metadata.AbstractEditor.extend({
render
:
function
()
{
CMS
.
Views
.
Metadata
.
AbstractEditor
.
prototype
.
render
.
apply
(
this
);
if
(
!
this
.
in
putAttributesSet
)
{
if
(
!
this
.
in
itialized
)
{
var
min
=
"min"
;
var
max
=
"max"
;
var
step
=
"step"
;
...
...
@@ -175,7 +177,11 @@ CMS.Views.Metadata.Number = CMS.Views.Metadata.AbstractEditor.extend({
if
(
stepValue
!==
undefined
)
{
this
.
$el
.
find
(
'input'
).
attr
(
step
,
stepValue
);
}
this
.
inputAttributesSet
=
true
;
// Manually runs polyfill for input number types to correct for Firefox non-support
this
.
$el
.
find
(
'.setting-input-number'
).
inputNumber
();
this
.
initialized
=
true
;
}
},
...
...
common/static/js/vendor/html5-input-polyfills/number-polyfill.js
View file @
3229aaf5
...
...
@@ -3,299 +3,296 @@
/*
HTML5 Number polyfill | Jonathan Stipe | https://github.com/jonstipe/number-polyfill
*/
function
numberPolyfill
()
{
(
function
()
{
(
function
()
{
(
function
(
$
)
{
var
i
;
i
=
document
.
createElement
(
"input"
);
i
.
setAttribute
(
"type"
,
"number"
);
if
(
i
.
type
===
"text"
)
{
$
.
fn
.
inputNumber
=
function
()
{
var
clipValues
,
decrement
,
domMouseScrollHandler
,
extractNumDecimalDigits
,
getParams
,
increment
,
matchStep
,
mouseWheelHandler
;
getParams
=
function
(
elem
)
{
var
$elem
,
max
,
min
,
step
,
val
;
$elem
=
$
(
elem
);
step
=
$elem
.
attr
(
'step'
);
min
=
$elem
.
attr
(
'min'
);
max
=
$elem
.
attr
(
'max'
);
val
=
parseFloat
(
$elem
.
val
());
step
=
/^-
?\d
+
(?:\.\d
+
)?
$/
.
test
(
step
)
?
parseFloat
(
step
)
:
null
;
min
=
/^-
?\d
+
(?:\.\d
+
)?
$/
.
test
(
min
)
?
parseFloat
(
min
)
:
null
;
max
=
/^-
?\d
+
(?:\.\d
+
)?
$/
.
test
(
max
)
?
parseFloat
(
max
)
:
null
;
if
(
isNaN
(
val
))
{
val
=
min
||
0
;
}
return
{
min
:
min
,
max
:
max
,
step
:
step
,
val
:
val
};
};
clipValues
=
function
(
value
,
min
,
max
)
{
if
((
max
!=
null
)
&&
value
>
max
)
{
return
max
;
}
else
if
((
min
!=
null
)
&&
value
<
min
)
{
return
min
;
}
else
{
return
value
;
}
(
function
(
$
)
{
var
i
;
i
=
document
.
createElement
(
"input"
);
i
.
setAttribute
(
"type"
,
"number"
);
if
(
i
.
type
===
"text"
)
{
$
.
fn
.
inputNumber
=
function
()
{
var
clipValues
,
decrement
,
domMouseScrollHandler
,
extractNumDecimalDigits
,
getParams
,
increment
,
matchStep
,
mouseWheelHandler
;
getParams
=
function
(
elem
)
{
var
$elem
,
max
,
min
,
step
,
val
;
$elem
=
$
(
elem
);
step
=
$elem
.
attr
(
'step'
);
min
=
$elem
.
attr
(
'min'
);
max
=
$elem
.
attr
(
'max'
);
val
=
parseFloat
(
$elem
.
val
());
step
=
/^-
?\d
+
(?:\.\d
+
)?
$/
.
test
(
step
)
?
parseFloat
(
step
)
:
null
;
min
=
/^-
?\d
+
(?:\.\d
+
)?
$/
.
test
(
min
)
?
parseFloat
(
min
)
:
null
;
max
=
/^-
?\d
+
(?:\.\d
+
)?
$/
.
test
(
max
)
?
parseFloat
(
max
)
:
null
;
if
(
isNaN
(
val
))
{
val
=
min
||
0
;
}
return
{
min
:
min
,
max
:
max
,
step
:
step
,
val
:
val
};
extractNumDecimalDigits
=
function
(
input
)
{
var
num
,
raisedNum
;
if
(
input
!=
null
)
{
num
=
0
;
raisedNum
=
input
;
while
(
raisedNum
!==
Math
.
round
(
raisedNum
))
{
num
+=
1
;
raisedNum
=
input
*
Math
.
pow
(
10
,
num
);
}
return
num
;
}
else
{
return
0
;
};
clipValues
=
function
(
value
,
min
,
max
)
{
if
((
max
!=
null
)
&&
value
>
max
)
{
return
max
;
}
else
if
((
min
!=
null
)
&&
value
<
min
)
{
return
min
;
}
else
{
return
value
;
}
};
extractNumDecimalDigits
=
function
(
input
)
{
var
num
,
raisedNum
;
if
(
input
!=
null
)
{
num
=
0
;
raisedNum
=
input
;
while
(
raisedNum
!==
Math
.
round
(
raisedNum
))
{
num
+=
1
;
raisedNum
=
input
*
Math
.
pow
(
10
,
num
);
}
};
matchStep
=
function
(
value
,
min
,
max
,
step
)
{
var
mod
,
raiseTo
,
raisedMod
,
raisedStep
,
raisedStepDown
,
raisedStepUp
,
raisedValue
,
stepDecimalDigits
,
stepDown
,
stepUp
;
stepDecimalDigits
=
extractNumDecimalDigits
(
step
);
if
(
step
==
null
)
{
return
num
;
}
else
{
return
0
;
}
};
matchStep
=
function
(
value
,
min
,
max
,
step
)
{
var
mod
,
raiseTo
,
raisedMod
,
raisedStep
,
raisedStepDown
,
raisedStepUp
,
raisedValue
,
stepDecimalDigits
,
stepDown
,
stepUp
;
stepDecimalDigits
=
extractNumDecimalDigits
(
step
);
if
(
step
==
null
)
{
return
value
;
}
else
if
(
stepDecimalDigits
===
0
)
{
mod
=
(
value
-
(
min
||
0
))
%
step
;
if
(
mod
===
0
)
{
return
value
;
}
else
if
(
stepDecimalDigits
===
0
)
{
mod
=
(
value
-
(
min
||
0
))
%
step
;
if
(
mod
===
0
)
{
return
value
;
}
else
{
stepDown
=
value
-
mod
;
stepUp
=
stepDown
+
step
;
if
((
stepUp
>
max
)
||
((
value
-
stepDown
)
<
(
stepUp
-
value
)))
{
return
stepDown
;
}
else
{
stepDown
=
value
-
mod
;
stepUp
=
stepDown
+
step
;
if
((
stepUp
>
max
)
||
((
value
-
stepDown
)
<
(
stepUp
-
value
)))
{
return
stepDown
;
}
else
{
return
stepUp
;
}
return
stepUp
;
}
}
}
else
{
raiseTo
=
Math
.
pow
(
10
,
stepDecimalDigits
);
raisedStep
=
step
*
raiseTo
;
raisedMod
=
(
value
-
(
min
||
0
))
*
raiseTo
%
raisedStep
;
if
(
raisedMod
===
0
)
{
return
value
;
}
else
{
raise
To
=
Math
.
pow
(
10
,
stepDecimalDigits
)
;
raisedStep
=
step
*
raiseTo
;
raised
Mod
=
(
value
-
(
min
||
0
))
*
raiseTo
%
raisedStep
;
if
(
raisedMod
===
0
)
{
return
value
;
raise
dValue
=
value
*
raiseTo
;
raisedStep
Down
=
raisedValue
-
raisedMod
;
raised
StepUp
=
raisedStepDown
+
raisedStep
;
if
(
((
raisedStepUp
/
raiseTo
)
>
max
)
||
((
raisedValue
-
raisedStepDown
)
<
(
raisedStepUp
-
raisedValue
))
)
{
return
raisedStepDown
/
raiseTo
;
}
else
{
raisedValue
=
value
*
raiseTo
;
raisedStepDown
=
raisedValue
-
raisedMod
;
raisedStepUp
=
raisedStepDown
+
raisedStep
;
if
(((
raisedStepUp
/
raiseTo
)
>
max
)
||
((
raisedValue
-
raisedStepDown
)
<
(
raisedStepUp
-
raisedValue
)))
{
return
raisedStepDown
/
raiseTo
;
}
else
{
return
raisedStepUp
/
raiseTo
;
}
return
raisedStepUp
/
raiseTo
;
}
}
};
increment
=
function
(
elem
)
{
var
newVal
,
params
,
raiseTo
;
if
(
!
$
(
elem
).
is
(
":disabled"
))
{
params
=
getParams
(
elem
);
raiseTo
=
Math
.
pow
(
10
,
Math
.
max
(
extractNumDecimalDigits
(
params
[
'val'
]),
extractNumDecimalDigits
(
params
[
'step'
])));
newVal
=
(
Math
.
round
(
params
[
'val'
]
*
raiseTo
)
+
Math
.
round
((
params
[
'step'
]
||
1
)
*
raiseTo
))
/
raiseTo
;
if
((
params
[
'max'
]
!=
null
)
&&
newVal
>
params
[
'max'
])
{
newVal
=
params
[
'max'
];
}
newVal
=
matchStep
(
newVal
,
params
[
'min'
],
params
[
'max'
],
params
[
'step'
]);
$
(
elem
).
val
(
newVal
).
change
();
}
};
increment
=
function
(
elem
)
{
var
newVal
,
params
,
raiseTo
;
if
(
!
$
(
elem
).
is
(
":disabled"
))
{
params
=
getParams
(
elem
);
raiseTo
=
Math
.
pow
(
10
,
Math
.
max
(
extractNumDecimalDigits
(
params
[
'val'
]),
extractNumDecimalDigits
(
params
[
'step'
])));
newVal
=
(
Math
.
round
(
params
[
'val'
]
*
raiseTo
)
+
Math
.
round
((
params
[
'step'
]
||
1
)
*
raiseTo
))
/
raiseTo
;
if
((
params
[
'max'
]
!=
null
)
&&
newVal
>
params
[
'max'
])
{
newVal
=
params
[
'max'
];
}
return
null
;
}
;
decrement
=
function
(
elem
)
{
var
newVal
,
params
,
raiseTo
;
if
(
!
$
(
elem
).
is
(
":disabled"
))
{
params
=
getParams
(
elem
);
raiseTo
=
Math
.
pow
(
10
,
Math
.
max
(
extractNumDecimalDigits
(
params
[
'val'
]),
extractNumDecimalDigits
(
params
[
'step'
])))
;
newVal
=
(
Math
.
round
(
params
[
'val'
]
*
raiseTo
)
-
Math
.
round
((
params
[
'step'
]
||
1
)
*
raiseTo
))
/
raiseTo
;
if
((
params
[
'min'
]
!=
null
)
&&
newVal
<
params
[
'min'
])
{
newVal
=
params
[
'min'
]
;
}
newVal
=
matchStep
(
newVal
,
params
[
'min'
],
params
[
'max'
],
params
[
'step'
]);
$
(
elem
).
val
(
newVal
).
change
()
;
newVal
=
matchStep
(
newVal
,
params
[
'min'
],
params
[
'max'
],
params
[
'step'
])
;
$
(
elem
).
val
(
newVal
).
change
()
;
}
return
null
;
};
decrement
=
function
(
elem
)
{
var
newVal
,
params
,
raiseTo
;
if
(
!
$
(
elem
).
is
(
":disabled"
))
{
params
=
getParams
(
elem
);
raiseTo
=
Math
.
pow
(
10
,
Math
.
max
(
extractNumDecimalDigits
(
params
[
'val'
]),
extractNumDecimalDigits
(
params
[
'step'
])))
;
newVal
=
(
Math
.
round
(
params
[
'val'
]
*
raiseTo
)
-
Math
.
round
((
params
[
'step'
]
||
1
)
*
raiseTo
))
/
raiseTo
;
if
((
params
[
'min'
]
!=
null
)
&&
newVal
<
params
[
'min'
])
{
newVal
=
params
[
'min'
]
;
}
return
null
;
};
domMouseScrollHandler
=
function
(
e
)
{
e
.
preventDefault
();
if
(
e
.
originalEvent
.
detail
<
0
)
{
increment
(
this
);
}
else
{
decrement
(
this
);
newVal
=
matchStep
(
newVal
,
params
[
'min'
],
params
[
'max'
],
params
[
'step'
]);
$
(
elem
).
val
(
newVal
).
change
();
}
return
null
;
};
domMouseScrollHandler
=
function
(
e
)
{
e
.
preventDefault
();
if
(
e
.
originalEvent
.
detail
<
0
)
{
increment
(
this
);
}
else
{
decrement
(
this
);
}
return
null
;
};
mouseWheelHandler
=
function
(
e
)
{
e
.
preventDefault
();
if
(
e
.
originalEvent
.
wheelDelta
>
0
)
{
increment
(
this
);
}
else
{
decrement
(
this
);
}
return
null
;
};
$
(
this
).
filter
(
'input[type="number"]'
).
each
(
function
()
{
var
$downBtn
,
$elem
,
$upBtn
,
attrMutationCallback
,
attrObserver
,
btnContainer
,
downBtn
,
elem
,
halfHeight
,
upBtn
;
elem
=
this
;
$elem
=
$
(
elem
);
halfHeight
=
(
$elem
.
outerHeight
()
/
2
)
+
'px'
;
upBtn
=
document
.
createElement
(
'div'
);
downBtn
=
document
.
createElement
(
'div'
);
$upBtn
=
$
(
upBtn
);
$downBtn
=
$
(
downBtn
);
btnContainer
=
document
.
createElement
(
'div'
);
$upBtn
.
addClass
(
'number-spin-btn number-spin-btn-up'
).
css
(
'height'
,
halfHeight
);
$downBtn
.
addClass
(
'number-spin-btn number-spin-btn-down'
).
css
(
'height'
,
halfHeight
);
btnContainer
.
appendChild
(
upBtn
);
btnContainer
.
appendChild
(
downBtn
);
$
(
btnContainer
).
addClass
(
'number-spin-btn-container'
).
insertAfter
(
elem
);
$elem
.
on
({
focus
:
function
(
e
)
{
$elem
.
on
({
DOMMouseScroll
:
domMouseScrollHandler
,
mousewheel
:
mouseWheelHandler
});
return
null
;
},
blur
:
function
(
e
)
{
$elem
.
off
({
DOMMouseScroll
:
domMouseScrollHandler
,
mousewheel
:
mouseWheelHandler
});
return
null
;
},
keypress
:
function
(
e
)
{
var
_ref
,
_ref1
;
if
(
e
.
keyCode
===
38
)
{
increment
(
this
);
}
else
if
(
e
.
keyCode
===
40
)
{
decrement
(
this
);
}
else
if
(((
_ref
=
e
.
keyCode
)
!==
8
&&
_ref
!==
9
&&
_ref
!==
35
&&
_ref
!==
36
&&
_ref
!==
37
&&
_ref
!==
39
)
&&
((
_ref1
=
e
.
which
)
!==
45
&&
_ref1
!==
46
&&
_ref1
!==
48
&&
_ref1
!==
49
&&
_ref1
!==
50
&&
_ref1
!==
51
&&
_ref1
!==
52
&&
_ref1
!==
53
&&
_ref1
!==
54
&&
_ref1
!==
55
&&
_ref1
!==
56
&&
_ref1
!==
57
))
{
e
.
preventDefault
();
}
return
null
;
},
change
:
function
(
e
)
{
var
newVal
,
params
;
if
(
e
.
originalEvent
!=
null
)
{
params
=
getParams
(
this
);
newVal
=
clipValues
(
params
[
'val'
],
params
[
'min'
],
params
[
'max'
]);
newVal
=
matchStep
(
newVal
,
params
[
'min'
],
params
[
'max'
],
params
[
'step'
],
params
[
'stepDecimal'
]);
$
(
this
).
val
(
newVal
);
}
return
null
;
}
});
$upBtn
.
on
(
"mousedown"
,
function
(
e
)
{
var
releaseFunc
,
timeoutFunc
;
increment
(
elem
);
timeoutFunc
=
function
(
elem
,
incFunc
)
{
incFunc
(
elem
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
10
,
elem
,
incFunc
));
return
null
;
};
releaseFunc
=
function
(
e
)
{
window
.
clearTimeout
(
$elem
.
data
(
"timeoutID"
));
$
(
document
).
off
(
'mouseup'
,
releaseFunc
);
$upBtn
.
off
(
'mouseleave'
,
releaseFunc
);
return
null
;
};
$
(
document
).
on
(
'mouseup'
,
releaseFunc
);
$upBtn
.
on
(
'mouseleave'
,
releaseFunc
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
700
,
elem
,
increment
));
return
null
;
};
mouseWheelHandler
=
function
(
e
)
{
e
.
preventDefault
();
if
(
e
.
originalEvent
.
wheelDelta
>
0
)
{
increment
(
this
);
}
else
{
decrement
(
this
);
}
});
$downBtn
.
on
(
"mousedown"
,
function
(
e
)
{
var
releaseFunc
,
timeoutFunc
;
decrement
(
elem
);
timeoutFunc
=
function
(
elem
,
decFunc
)
{
decFunc
(
elem
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
10
,
elem
,
decFunc
));
return
null
;
};
releaseFunc
=
function
(
e
)
{
window
.
clearTimeout
(
$elem
.
data
(
"timeoutID"
));
$
(
document
).
off
(
'mouseup'
,
releaseFunc
);
$downBtn
.
off
(
'mouseleave'
,
releaseFunc
);
return
null
;
};
$
(
document
).
on
(
'mouseup'
,
releaseFunc
);
$downBtn
.
on
(
'mouseleave'
,
releaseFunc
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
700
,
elem
,
decrement
));
return
null
;
};
$
(
this
).
filter
(
'input[type="number"]'
).
each
(
function
()
{
var
$downBtn
,
$elem
,
$upBtn
,
attrMutationCallback
,
attrObserver
,
btnContainer
,
downBtn
,
elem
,
halfHeight
,
upBtn
;
elem
=
this
;
$elem
=
$
(
elem
);
halfHeight
=
(
$elem
.
outerHeight
()
/
2
)
+
'px'
;
upBtn
=
document
.
createElement
(
'div'
);
downBtn
=
document
.
createElement
(
'div'
);
$upBtn
=
$
(
upBtn
);
$downBtn
=
$
(
downBtn
);
btnContainer
=
document
.
createElement
(
'div'
);
$upBtn
.
addClass
(
'number-spin-btn number-spin-btn-up'
).
css
(
'height'
,
halfHeight
);
$downBtn
.
addClass
(
'number-spin-btn number-spin-btn-down'
).
css
(
'height'
,
halfHeight
);
btnContainer
.
appendChild
(
upBtn
);
btnContainer
.
appendChild
(
downBtn
);
$
(
btnContainer
).
addClass
(
'number-spin-btn-container'
).
insertAfter
(
elem
);
$elem
.
on
({
focus
:
function
(
e
)
{
$elem
.
on
({
DOMMouseScroll
:
domMouseScrollHandler
,
mousewheel
:
mouseWheelHandler
});
return
null
;
},
blur
:
function
(
e
)
{
$elem
.
off
({
DOMMouseScroll
:
domMouseScrollHandler
,
mousewheel
:
mouseWheelHandler
});
return
null
;
},
keypress
:
function
(
e
)
{
var
_ref
,
_ref1
;
if
(
e
.
keyCode
===
38
)
{
increment
(
this
);
}
else
if
(
e
.
keyCode
===
40
)
{
decrement
(
this
);
}
else
if
(((
_ref
=
e
.
keyCode
)
!==
8
&&
_ref
!==
9
&&
_ref
!==
35
&&
_ref
!==
36
&&
_ref
!==
37
&&
_ref
!==
39
)
&&
((
_ref1
=
e
.
which
)
!==
45
&&
_ref1
!==
46
&&
_ref1
!==
48
&&
_ref1
!==
49
&&
_ref1
!==
50
&&
_ref1
!==
51
&&
_ref1
!==
52
&&
_ref1
!==
53
&&
_ref1
!==
54
&&
_ref1
!==
55
&&
_ref1
!==
56
&&
_ref1
!==
57
))
{
e
.
preventDefault
();
}
return
null
;
},
change
:
function
(
e
)
{
var
newVal
,
params
;
if
(
e
.
originalEvent
!=
null
)
{
params
=
getParams
(
this
);
newVal
=
clipValues
(
params
[
'val'
],
params
[
'min'
],
params
[
'max'
]);
newVal
=
matchStep
(
newVal
,
params
[
'min'
],
params
[
'max'
],
params
[
'step'
],
params
[
'stepDecimal'
]);
$
(
this
).
val
(
newVal
);
});
$elem
.
css
(
"textAlign"
,
'right'
);
if
(
$elem
.
css
(
"opacity"
)
!==
"1"
)
{
$
(
btnContainer
).
css
(
"opacity"
,
$elem
.
css
(
"opacity"
));
}
if
(
$elem
.
css
(
"visibility"
)
!==
"visible"
)
{
$
(
btnContainer
).
css
(
"visibility"
,
$elem
.
css
(
"visibility"
));
}
if
(
elem
.
style
.
display
!==
""
)
{
$
(
btnContainer
).
css
(
"display"
,
$elem
.
css
(
"display"
));
}
if
((
typeof
WebKitMutationObserver
!==
"undefined"
&&
WebKitMutationObserver
!==
null
)
||
(
typeof
MutationObserver
!==
"undefined"
&&
MutationObserver
!==
null
))
{
attrMutationCallback
=
function
(
mutations
,
observer
)
{
var
mutation
,
_i
,
_len
;
for
(
_i
=
0
,
_len
=
mutations
.
length
;
_i
<
_len
;
_i
++
)
{
mutation
=
mutations
[
_i
];
if
(
mutation
.
type
===
"attributes"
)
{
if
(
mutation
.
attributeName
===
"class"
)
{
$
(
btnContainer
).
removeClass
(
mutation
.
oldValue
).
addClass
(
elem
.
className
);
}
else
if
(
mutation
.
attributeName
===
"style"
)
{
$
(
btnContainer
).
css
({
"opacity"
:
elem
.
style
.
opacity
,
"visibility"
:
elem
.
style
.
visibility
,
"display"
:
elem
.
style
.
display
});
}
}
return
null
;
}
});
$upBtn
.
on
(
"mousedown"
,
function
(
e
)
{
var
releaseFunc
,
timeoutFunc
;
increment
(
elem
);
timeoutFunc
=
function
(
elem
,
incFunc
)
{
incFunc
(
elem
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
10
,
elem
,
incFunc
));
return
null
;
};
releaseFunc
=
function
(
e
)
{
window
.
clearTimeout
(
$elem
.
data
(
"timeoutID"
));
$
(
document
).
off
(
'mouseup'
,
releaseFunc
);
$upBtn
.
off
(
'mouseleave'
,
releaseFunc
);
return
null
;
};
$
(
document
).
on
(
'mouseup'
,
releaseFunc
);
$upBtn
.
on
(
'mouseleave'
,
releaseFunc
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
700
,
elem
,
increment
));
return
null
;
};
attrObserver
=
(
typeof
WebKitMutationObserver
!==
"undefined"
&&
WebKitMutationObserver
!==
null
)
?
new
WebKitMutationObserver
(
attrMutationCallback
)
:
((
typeof
MutationObserver
!==
"undefined"
&&
MutationObserver
!==
null
)
?
new
MutationObserver
(
attrMutationCallback
)
:
null
);
attrObserver
.
observe
(
elem
,
{
attributes
:
true
,
attributeOldValue
:
true
,
attributeFilter
:
[
"class"
,
"style"
]
});
$downBtn
.
on
(
"mousedown"
,
function
(
e
)
{
var
releaseFunc
,
timeoutFunc
;
decrement
(
elem
);
timeoutFunc
=
function
(
elem
,
decFunc
)
{
decFunc
(
elem
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
10
,
elem
,
decFunc
));
return
null
;
};
releaseFunc
=
function
(
e
)
{
window
.
clearTimeout
(
$elem
.
data
(
"timeoutID"
));
$
(
document
).
off
(
'mouseup'
,
releaseFunc
);
$downBtn
.
off
(
'mouseleave'
,
releaseFunc
);
return
null
;
};
$
(
document
).
on
(
'mouseup'
,
releaseFunc
);
$downBtn
.
on
(
'mouseleave'
,
releaseFunc
);
$elem
.
data
(
"timeoutID"
,
window
.
setTimeout
(
timeoutFunc
,
700
,
elem
,
decrement
));
}
else
if
(
typeof
MutationEvent
!==
"undefined"
&&
MutationEvent
!==
null
)
{
$elem
.
on
(
"DOMAttrModified"
,
function
(
evt
)
{
if
(
evt
.
originalEvent
.
attrName
===
"class"
)
{
$
(
btnContainer
).
removeClass
(
evt
.
originalEvent
.
prevValue
).
addClass
(
evt
.
originalEvent
.
newValue
);
}
else
if
(
evt
.
originalEvent
.
attrName
===
"style"
)
{
$
(
btnContainer
).
css
({
"display"
:
elem
.
style
.
display
,
"visibility"
:
elem
.
style
.
visibility
,
"opacity"
:
elem
.
style
.
opacity
});
}
return
null
;
});
$elem
.
css
(
"textAlign"
,
'right'
);
if
(
$elem
.
css
(
"opacity"
)
!==
"1"
)
{
$
(
btnContainer
).
css
(
"opacity"
,
$elem
.
css
(
"opacity"
));
}
if
(
$elem
.
css
(
"visibility"
)
!==
"visible"
)
{
$
(
btnContainer
).
css
(
"visibility"
,
$elem
.
css
(
"visibility"
));
}
if
(
elem
.
style
.
display
!==
""
)
{
$
(
btnContainer
).
css
(
"display"
,
$elem
.
css
(
"display"
));
}
if
((
typeof
WebKitMutationObserver
!==
"undefined"
&&
WebKitMutationObserver
!==
null
)
||
(
typeof
MutationObserver
!==
"undefined"
&&
MutationObserver
!==
null
))
{
attrMutationCallback
=
function
(
mutations
,
observer
)
{
var
mutation
,
_i
,
_len
;
for
(
_i
=
0
,
_len
=
mutations
.
length
;
_i
<
_len
;
_i
++
)
{
mutation
=
mutations
[
_i
];
if
(
mutation
.
type
===
"attributes"
)
{
if
(
mutation
.
attributeName
===
"class"
)
{
$
(
btnContainer
).
removeClass
(
mutation
.
oldValue
).
addClass
(
elem
.
className
);
}
else
if
(
mutation
.
attributeName
===
"style"
)
{
$
(
btnContainer
).
css
({
"opacity"
:
elem
.
style
.
opacity
,
"visibility"
:
elem
.
style
.
visibility
,
"display"
:
elem
.
style
.
display
});
}
}
}
return
null
;
};
attrObserver
=
(
typeof
WebKitMutationObserver
!==
"undefined"
&&
WebKitMutationObserver
!==
null
)
?
new
WebKitMutationObserver
(
attrMutationCallback
)
:
((
typeof
MutationObserver
!==
"undefined"
&&
MutationObserver
!==
null
)
?
new
MutationObserver
(
attrMutationCallback
)
:
null
);
attrObserver
.
observe
(
elem
,
{
attributes
:
true
,
attributeOldValue
:
true
,
attributeFilter
:
[
"class"
,
"style"
]
});
}
else
if
(
typeof
MutationEvent
!==
"undefined"
&&
MutationEvent
!==
null
)
{
$elem
.
on
(
"DOMAttrModified"
,
function
(
evt
)
{
if
(
evt
.
originalEvent
.
attrName
===
"class"
)
{
$
(
btnContainer
).
removeClass
(
evt
.
originalEvent
.
prevValue
).
addClass
(
evt
.
originalEvent
.
newValue
);
}
else
if
(
evt
.
originalEvent
.
attrName
===
"style"
)
{
$
(
btnContainer
).
css
({
"display"
:
elem
.
style
.
display
,
"visibility"
:
elem
.
style
.
visibility
,
"opacity"
:
elem
.
style
.
opacity
});
}
return
null
;
});
}
return
null
;
});
return
$
(
this
);
};
$
(
function
()
{
$
(
'input[type="number"]'
).
inputNumber
();
}
return
null
;
});
null
;
}
else
{
$
.
fn
.
inputNumber
=
function
()
{
return
$
(
this
);
};
null
;
}
return
null
;
})(
jQuery
);
}).
call
(
this
);
return
$
(
this
);
};
$
(
function
()
{
$
(
'input[type="number"]'
).
inputNumber
();
return
null
;
});
null
;
}
else
{
$
.
fn
.
inputNumber
=
function
()
{
return
$
(
this
);
};
null
;
}
return
null
;
})(
jQuery
);
};
}
).
call
(
this
)
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment