@using
FinancialChartExplorer.Models
@model
List<
FinanceData
>
@
{
ViewBag.DemoSettings =
true
;
var overlays =
new
List<
AnalysisType
> {
new
AnalysisType{Name =
"Bollinger Bands"
, Abbreviation =
"bollinger"
},
new
AnalysisType{Name =
"Envelopes"
, Abbreviation =
"envelopes"
}
};
}
<script type="text/javascript">
var
overlayOpts = [
@Html
.Raw(
string
.Join(
","
, overlays.Select(ovl =>
"'"
+ ovl.Abbreviation +
"'"
)))];
function
showOption(overlay) {
for
(
var
i = 0; i <
overlayOpts.length
; i++) {
toggleGroup(overlayOpts[i], overlayOpts[i] == overlay);
}
}
function
toggleGroup(overlay, shown) {
var
optGroup
=
wijmo
.getElement(
'#'
+ overlay);
if
(optGroup) {
if
(shown) {
optGroup.style.display
=
''
;
}
else
{
optGroup.style.display
=
'none'
;
}
}
}
function
showSeries(index) {
var
chart
=
wijmo
.Control.getControl(
'#overlays'
);
if
(index ==
null
|| !chart) {
return
;
}
for
(
var
i
=
1
; i < chart.series.length; i++) {
chart.series[i].visibility = (index == i) ? wijmo.chart.SeriesVisibility.Visible : wijmo.chart.SeriesVisibility.Hidden;
}
}
function
updateOverlayType(combo) {
showSeries(combo.selectedIndex + 1);
showOption(combo.selectedValue);
}
function
updateBBPeriod(number) {
var
chart
=
wijmo
.Control.getControl(
'#overlays'
);
if
(!checkValue(number)) {
return
;
}
if
(chart) {
chart.series[1]
.period
=
number
.value;
}
}
function
updateBBMultiplier(number) {
var
chart
=
wijmo
.Control.getControl(
'#overlays'
);
if
(!checkValue(number)) {
return
;
}
if
(chart) {
chart.series[1]
.multiplier
=
number
.value;
}
}
function
updateEnvelopePeriod(number) {
var
chart
=
wijmo
.Control.getControl(
'#overlays'
);
if
(!checkValue(number)) {
return
;
}
if
(chart) {
chart.series[2]
.period
=
number
.value;
}
}
function
updateEnvelopeSize(number) {
var
chart
=
wijmo
.Control.getControl(
'#overlays'
);
if
(!checkValue(number)) {
return
;
}
if
(chart) {
chart.series[2]
.size
=
number
.value;
}
}
function
envelopeTypeChanged(menu) {
var
chart
=
wijmo
.Control.getControl(
'#overlays'
);
menu.header =
'@Html.Raw(Resources.Home.Overlays_TypeLabel) <b>'
+ menu.selectedItem.Header +
'</b>'
;
if
(chart) {
chart.series[2].type = wijmo.chart.finance.analytics.MovingAverageType[menu.selectedItem.CommandParameter];
}
}
function
checkValue(number) {
return
number.value >= number.min && number.value <= number.max;
}
c1.documentReady(
function
() {
var
combo = wijmo.Control.getControl(
'#overlayComboBox'
);
if
(combo) {
combo.selectedIndex = 0;
updateOverlayType(combo);
}
});
</script>
@
(Html.C1().FinancialChart()
.Id(
"overlays"
)
.Bind(Model)
.BindingX(
"X"
)
.SymbolSize(6)
.ChartType(C1.Web.Mvc.Finance.ChartType.Candlestick)
.Series(sers =>
{
sers.Add().Binding(
"High,Low,Open,Close"
).Name(
"BOX"
);
sers.AddBollingerBands().Binding(
"Close"
).Period(20).Multiplier(2).Name(
"Bollinger Bands"
);
sers.AddEnvelopes().Binding(
"Close"
).Period(20).Size(0.03).Type(C1.Web.Mvc.Finance.MovingAverageType.Simple).Name(
"Envelopes"
).Visibility(C1.Web.Mvc.Chart.SeriesVisibility.Hidden);
})
.Tooltip(t => t.Content(
"tooltip"
)))
@section
Settings{
<
div
class
=
"panel-body"
>
<
ul
class
=
"list-inline"
>
<
li
>
<
label
>
@Html
.Raw(Resources.Home.Overlays_Overlay)</
label
>
@
(Html.C1().ComboBox().Id(
"overlayComboBox"
).Bind(overlays).SelectedValuePath(
"Abbreviation"
).DisplayMemberPath(
"Name"
).OnClientSelectedIndexChanged(
"updateOverlayType"
).IsEditable(
false
))
</
li
>
</
ul
>
<
ul
class
=
"list-inline"
id
=
"bollinger"
>
<
li
>
<
label
>
@Html
.Raw(Resources.Home.Overlays_Period)</
label
>
@
(Html.C1().InputNumber().Value(20).Min(2).Step(1).Max((Model.Count - 1)).Format(
"n0"
).OnClientValueChanged(
"updateBBPeriod"
))
</
li
>
<
li
>
<
label
>
@Html
.Raw(Resources.Home.Overlays_Multiplier)</
label
>
@
(Html.C1().InputNumber().Value(2).Min(1).Step(1).Max(100).Format(
"n0"
).OnClientValueChanged(
"updateBBMultiplier"
))
</
li
>
</
ul
>
<
ul
class
=
"list-inline"
id
=
"envelopes"
>
<
li
>
<
label
>
@Html
.Raw(Resources.Home.Overlays_Period)</
label
>
@
(Html.C1().InputNumber().Value(20).Min(2).Step(1).Max((Model.Count - 1)).Format(
"n0"
).OnClientValueChanged(
"updateEnvelopePeriod"
))
</
li
>
<
li
>
<
label
>
@Html
.Raw(Resources.Home.Overlays_Size)</
label
>
@
(Html.C1().InputNumber().Value(0.03).Min(0).Step(0.01).Max(1).Format(
"p0"
).OnClientValueChanged(
"updateEnvelopeSize"
))
</
li
>
<
li
>
@
(Html.C1().Menu().Header(Resources.Home.Overlays_TypeBSimpleHeader)
.MenuItems(mifb =>
{
mifb.Add().Header(Resources.Home.Overlays_TypeSimple).CommandParameter(
"Simple"
);
mifb.Add().Header(Resources.Home.Overlays_TypeExponential).CommandParameter(
"Exponential"
);
})
.OnClientItemClicked(
"envelopeTypeChanged"
))
</
li
>
</
ul
>
</
div
>
}
@section
Description{
<
p
>
@Html
.Raw(Resources.Home.Overlays_Text0)</
p
>
}
@section
Summary{
<
p
>
@Html
.Raw(Resources.Home.Overlays_Text1)</
p
>
}