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
5f988fd9
Commit
5f988fd9
authored
Dec 13, 2012
by
Alexander Kryklia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sliders and inputs are now optional
parent
78a3b7cf
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
90 deletions
+35
-90
common/lib/xmodule/xmodule/gst_module.py
+35
-90
No files found.
common/lib/xmodule/xmodule/gst_module.py
View file @
5f988fd9
...
...
@@ -41,65 +41,8 @@ class GraphicalSliderToolModule(XModule):
def
__init__
(
self
,
system
,
location
,
definition
,
descriptor
,
instance_state
=
None
,
shared_state
=
None
,
**
kwargs
):
"""
Definition should have....
sliders, text, module
Sample file:
<sequential>
<vertical>
<graphical_slider_tool>
<render>
<p>Graphic slider tool html.</p>
<p>Can include 'input', 'slider' and 'plot' tags.
They will be replaced by proper number, slider and plot
widgets. </p>
For example: $slider a$, second $slider b$,
number $input a$, and, plot:
$plot$
<!-- Sliders, and plot cannot be inside <p> -->
</render>
<configuration>
<sliders>
<!-- optional: width=100 (in pixels), default is 400,
show_value=[editable, not-editable], default is disabled.-->
<slider var="a" range="-100, 1, 100" />
<slider var="b" range="-1000, 100, 1000" witdh="300"/>
</sliders>
<inputs>
<!-- optional: width=100 (in pixels), readonly=[true|false] -->
<input var="a" initial="1"/>
</inputs>
<plot>
<!-- optional: color=[standard web]; line=[true|false], default true;
dot=[true|false], default false; label="string",
style of line =[normal, dashed], default normal,
point size-->
<function y="x^2 + a" />
<function y="3*x + b" color="red"/>
<!-- asymtotes are functions,
optional: name="string" -->
<function y="b" color="red" style="dashed" name="b"/>
<function y="b/2" color="red" style="dashed" name="b/2"/>
<!-- xrange: min, max, yrange is calculated automatically -->
<xrange>-10, 10</xrange>
<!-- optional number of points, default is 300 -->
<numpoints>60</numpoints>
<!-- xticks and yticks are optional: min, step, max -->
<xticks>-9, 1, 9</xticks>
<yticks>-9, 1, 9</yticks>
<!-- xaxis and xaxis are optional -->
<xaxis unit="cm"/>
<yaxis unit="s"/>
</plot>
<!-- if some parameter in function is not related to any slider or
number, then only error message is displayed.
Sliders and numbers are optional. Plot is required.-->
</configuration>
</graphical_slider_tool>
</vertical>
</sequential>
For XML file format please look at documentation.
"""
XModule
.
__init__
(
self
,
system
,
location
,
definition
,
descriptor
,
instance_state
,
shared_state
,
**
kwargs
)
...
...
@@ -130,37 +73,39 @@ class GraphicalSliderToolModule(XModule):
style="width: 600px; height: 600px; padding: 0px; position: relative;">This is plot</div>'
html_string
=
html_string
.
replace
(
'$plot$'
,
plot_div
)
# substitute sliders
sliders
=
json
.
loads
(
self
.
configuration_json
)[
'root'
][
'sliders'
][
'slider'
]
if
type
(
sliders
)
==
dict
:
sliders
=
[
sliders
]
vars
=
[
x
[
'@var'
]
for
x
in
sliders
]
slider_div
=
'<span class="{element_class}_slider" id="{element_id}_slider_{var}"
\
data-var="{var}"></span>'
for
var
in
vars
:
html_string
=
re
.
sub
(
r'\$slider\s+'
+
var
+
r'\$'
,
slider_div
.
format
(
element_class
=
self
.
html_class
,
element_id
=
self
.
html_id
,
var
=
var
),
html_string
,
flags
=
re
.
IGNORECASE
|
re
.
UNICODE
)
# substitute numbers
inputs
=
json
.
loads
(
self
.
configuration_json
)[
'root'
][
'inputs'
][
'input'
]
if
type
(
inputs
)
==
dict
:
inputs
=
[
inputs
]
vars
=
[
x
[
'@var'
]
for
x
in
inputs
]
input_div
=
'<span class="{element_class}_input" id="{element_id}_input_{var}"
\
data-var="{var}"></span>'
for
var
in
vars
:
html_string
=
re
.
sub
(
r'\$input\s+'
+
var
+
r'\$'
,
input_div
.
format
(
element_class
=
self
.
html_class
,
element_id
=
self
.
html_id
,
var
=
var
),
html_string
,
flags
=
re
.
IGNORECASE
|
re
.
UNICODE
)
# substitute sliders if we have them
if
json
.
loads
(
self
.
configuration_json
)[
'root'
]
.
get
(
'sliders'
):
sliders
=
json
.
loads
(
self
.
configuration_json
)[
'root'
][
'sliders'
][
'slider'
]
if
type
(
sliders
)
==
dict
:
sliders
=
[
sliders
]
vars
=
[
x
[
'@var'
]
for
x
in
sliders
]
slider_div
=
'<span class="{element_class}_slider" id="{element_id}_slider_{var}"
\
data-var="{var}"></span>'
for
var
in
vars
:
html_string
=
re
.
sub
(
r'\$slider\s+'
+
var
+
r'\$'
,
slider_div
.
format
(
element_class
=
self
.
html_class
,
element_id
=
self
.
html_id
,
var
=
var
),
html_string
,
flags
=
re
.
IGNORECASE
|
re
.
UNICODE
)
# substitute numbers if we have them
if
json
.
loads
(
self
.
configuration_json
)[
'root'
]
.
get
(
'inputs'
):
inputs
=
json
.
loads
(
self
.
configuration_json
)[
'root'
][
'inputs'
][
'input'
]
if
type
(
inputs
)
==
dict
:
inputs
=
[
inputs
]
vars
=
[
x
[
'@var'
]
for
x
in
inputs
]
input_div
=
'<span class="{element_class}_input" id="{element_id}_input_{var}"
\
data-var="{var}"></span>'
for
var
in
vars
:
html_string
=
re
.
sub
(
r'\$input\s+'
+
var
+
r'\$'
,
input_div
.
format
(
element_class
=
self
.
html_class
,
element_id
=
self
.
html_id
,
var
=
var
),
html_string
,
flags
=
re
.
IGNORECASE
|
re
.
UNICODE
)
# import ipdb; ipdb.set_trace()
return
html_string
...
...
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