@model System.Collections.IEnumerable
@using Ext.Net;
@using Ext.Net.MVC;

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@(Html.X().ResourceManager()) 
@(Html.X().GridPanel()
        .Title("GridPanel Calculated Fields")
        .Width(500)
        .Frame(true)
        .Store
        (
            Html.X().Store()
                 .ID("Store1")
                 .DataSource(Model)
                .Model
                (
                    Html.X().Model()
                    .Fields
                    (
                        new ModelField("Name", ModelFieldType.String),
                        new ModelField("UnitPrice", ModelFieldType.Float),
                        new ModelField("Amount", ModelFieldType.Float),
                        new ModelField("Total", ModelFieldType.Float)
                    )
                )
                .ServerProxy
                (
                    Html.X().AjaxProxy()
                    .Url(Url.Action("GetData"))
                )
        )
        .ColumnModel
        (
            Html.X().RowNumbererColumn().Width(50),

            Html.X().Column()
                .Text("Name")
                .DataIndex("Name")
                .Flex(1),

            Html.X().Column()
                .Text("UnitPrice")
                .DataIndex("UnitPrice")
                .Width(150)
                .Editor
                (
                    Html.X().TextField()
                     .MaskRe(@"/[0-9\$\.]/")
                 )
                .Align(Alignment.Right),


            Html.X().Column()
                .Text("Amount")
                .DataIndex("Amount")
                .Width(75)
                .Align(Alignment.Right)
                .Editor(Html.X().NumberField()),


            Html.X().Column()
                    .Text("Total")
                    .DataIndex("Total")
                    .Width(75)
                    .Align(Alignment.Right)
        )
        .SelectionModel
        (
            Html.X().RowSelectionModel().Mode(SelectionMode.Single)
        )
        .Plugins
        (
             Html.X()
             .CellEditing()
             .ClicksToEdit(1)
             .DirectEvents
             (
               de =>
               {
                   de.Edit.Url = Url.Action("CellEditing");
                   de.Edit.ExtraParams.Add(new Parameter("id", "e.record.data.id", ParameterMode.Raw));
                   de.Edit.ExtraParams.Add(new Parameter("field", "e.field", ParameterMode.Raw));
                   de.Edit.ExtraParams.Add(new Parameter("oldValue", "e.originalValue", ParameterMode.Raw));
                   de.Edit.ExtraParams.Add(new Parameter("newValue", "e.value", ParameterMode.Raw));
                   de.Edit.ExtraParams.Add(new Parameter("vmStock", "e.record.data", ParameterMode.Raw));
               }
             )
        )
)