private static void AddRowsByGridDashboardItem(GridDashboardItem gridItem, MultiDimensionalData mData, DataTable dataTable)
        {
            IList <string> axis     = mData.GetAxisNames();
            int            rowCount = GetRowCount(mData, axis);

            for (int i = 0; i < rowCount; i++)
            {
                AxisPoint point  = mData.GetAxisPoints(axis[0])[i];
                DataRow   newRow = dataTable.NewRow();
                foreach (GridColumnBase column in gridItem.Columns)
                {
                    GridMeasureColumn mCol = column as GridMeasureColumn;
                    if (mCol != null)
                    {
                        newRow[mCol.Measure.DataMember] = GetMesureValue(mData, point, mCol);
                    }

                    GridDimensionColumn dCol = column as GridDimensionColumn;
                    if (dCol != null)
                    {
                        newRow[dCol.Dimension.DataMember] = GetDimenstionValue(mData, axis, point, dCol);
                    }
                }
                dataTable.Rows.Add(newRow);
            }
        }
예제 #2
0
        // Obtains a value of the axis point placed on the "default" axis
        // to display this value in the invoked form title.
        string GetFormTitle(MultiDimensionalData clickedItemData)
        {
            AxisPoint clickedPoint      = clickedItemData.GetAxisPoints(DashboardDataAxisNames.DefaultAxis)[0];
            string    clickedPointValue = clickedPoint.Value.ToString();

            return(clickedPointValue);
        }
        void CustomizePieTotalLabel(string componentName, MultiDimensionalData data, CustomizePieTotalLabelEventArgs e)
        {
            PieTotalSettings settings   = PieTotalSettings.FromJson(dashboardControl.Dashboard.Items[componentName].CustomProperties[customPropertyName]);
            string           resultText = string.Empty;

            if (!string.IsNullOrEmpty(settings.Prefix))
            {
                resultText += settings.Prefix + Environment.NewLine;
            }



            MeasureDescriptor measure = data.GetMeasures().First();

            if (!string.IsNullOrEmpty(settings.MeasureId) ||
                data.GetMeasures().Where(m => m.ID == settings.MeasureId).Any())
            {
                measure = data.GetMeasures().FirstOrDefault(m => m.ID == settings.MeasureId);
            }
            if (measure != null)
            {
                AxisPoint axisPoint = e.Series.Tag as AxisPoint;
                resultText += data.GetSlice(axisPoint).GetValue(measure).DisplayText;
            }
            if (!string.IsNullOrEmpty(settings.Postfix))
            {
                resultText += Environment.NewLine + settings.Postfix;
            }
            e.Text = resultText;
        }
예제 #4
0
 private void RefrushPointInfo(string pointName)
 {
     if (string.IsNullOrEmpty(pointName))//新建点位时,只需要刷新轴的位置信息
     {
         foreach (DataGridViewRow mem in dGV_PointInfo.Rows)
         {
             double axisCurrentP = 0;
             logicAxisUnit.AxisDeviceS[mem.Cells[1].Value.ToString()].Motor.GetAxisCPoint(ref axisCurrentP);
             mem.Cells[4].Value = axisCurrentP;
         }
     }
     else
     {
         if (logicAxisUnit.AxisUnitPoints.ContainsKey(pointName))
         {
             foreach (DataGridViewRow mem in dGV_PointInfo.Rows)
             {
                 AxisPoint axisPoint = logicAxisUnit.AxisUnitPoints[pointName].AxisPoints.Find(x => x.LogicAxisName == mem.Cells[1].Value.ToString());
                 mem.Cells[0].Value = axisPoint.IsMove;
                 mem.Cells[2].Value = axisPoint.Speed;
                 mem.Cells[3].Value = axisPoint.MoveIndex.ToString();
                 mem.Cells[4].Value = axisPoint.Position;
             }
         }
     }
 }
        AxisPoint EnsureInstancePoint(MultiDimensionalData data, AxisPoint axisPoint)
        {
            IEnumerable <DimensionDescriptor> axisDimensions = data.GetDimensions(axisPoint.AxisName);
            DimensionDescriptor     instanceDimension        = axisDimensions.FirstOrDefault(dim => dim.ID == axisPoint.Dimension.ID);
            IEnumerable <AxisPoint> points = data.GetAxisPointsByDimension(instanceDimension);

            return(points.Single(p => p.Equals(axisPoint)));
        }
 /// <summary>
 /// Sets Parameters' values for dimensions from a specific axis (Column or Row)
 /// </summary>
 void SetParameterValue(AxisPoint axisPoint)
 {
     while (axisPoint != null && axisPoint.Dimension != null)
     {
         string parameterName = GetParameterDataMember(axisPoint.Dimension.DataMember);
         dashboardDesigner1.Parameters[parameterName].SelectedValue = axisPoint.Value;
         axisPoint = axisPoint.Parent;
     }
 }
예제 #7
0
        private static string GetOid(DashboardItemMouseActionEventArgs e)
        {
            AxisPoint axisPoint = e.GetAxisPoint();

            if (axisPoint is null)
            {
                return(null);
            }
            MultiDimensionalData data         = e.Data.GetSlice(axisPoint);
            MeasureDescriptor    descriptor   = data.GetMeasures().SingleOrDefault(item => item.DataMember == "Oid");
            MeasureValue         measureValue = data.GetValue(descriptor);

            return(measureValue.Value.ToString());
        }
예제 #8
0
        private void btn_UpdatePointInfo_Click(object sender, EventArgs e)
        {
            RefrushPointInfo(string.Empty);
            DataGridViewRow dataGridViewRow = dGV_PointsName.CurrentRow;
            string          pointName       = dataGridViewRow.Cells[0].Value.ToString();
            AxisUnitPoint   axisUnitPoint   = logicAxisUnit.AxisUnitPoints[pointName];

            foreach (DataGridViewRow mem in dGV_PointInfo.Rows)
            {
                AxisPoint axisPoint = logicAxisUnit.AxisUnitPoints[pointName].AxisPoints.Find(x => x.LogicAxisName == mem.Cells[1].Value.ToString());
                axisPoint.IsMove        = (bool)((DataGridViewCheckBoxCell)mem.Cells[0]).FormattedValue;
                axisPoint.LogicAxisName = mem.Cells[1].Value.ToString();
                axisPoint.Speed         = uint.Parse(mem.Cells[2].Value.ToString());
                axisPoint.MoveIndex     = uint.Parse(mem.Cells[3].Value.ToString());
                axisPoint.Position      = double.Parse(mem.Cells[4].Value.ToString());
            }
        }
예제 #9
0
        // Coherent method with Insertion Sort
        private void ProcessAxis(List <AxisPoint> axis)
        {
            for (int j = 1; j < axis.Count; j++)
            {
                AxisPoint currentPoint = axis[j];
                float     current      = currentPoint.Value;

                int i = j - 1;

                while (i >= 0 && axis[i].Value > current)
                {
                    AxisPoint greater = axis[i];

                    // Make sure we are comparing minimum and maximum points
                    if (currentPoint.isMin && !greater.isMin)
                    {
                        // Check bounds and add if possible collision
                        if (CheckBounds(greater.body, currentPoint.body))
                        {
                            Manifold possible = new Manifold(greater.body, currentPoint.body);

                            // If we already have reported these two objects colliding,
                            // keep them in memory so that impulses can be balanced
                            overlaps.Add(possible);
                        }
                    }

                    //If objects have separated, remove from list
                    if (!currentPoint.isMin && greater.isMin)
                    {
                        overlaps.Remove(new Manifold(greater.body, currentPoint.body));
                    }

                    //Sort
                    axis[i + 1] = greater;
                    --i;
                }
                axis[i + 1] = currentPoint;
            }
        }
예제 #10
0
 private void DControl_DrillUpPerformed(object sender, DrillActionEventArgs e)
 {
     if (HasDashboardItem(e.DashboardItemName))
     {
         string         itemName = e.DashboardItemName;
         int            level    = e.DrillDownLevel;
         AxisPointTuple tuple    = this.dashboardViewer1.GetCurrentDrillDownValues(itemName);
         if (tuple != null)
         {
             AxisPoint point = this.dashboardViewer1.GetCurrentDrillDownValues(itemName).GetAxisPoint();
             int       l     = 0;
             while (point.Parent != null)
             {
                 l++;
                 point = point.Parent;
             }
             if (level + 1 == l && this.dashboardViewer1.CanPerformDrillUp(itemName))
             {
                 this.dashboardViewer1.PerformDrillUp(itemName);
             }
         }
     }
 }
예제 #11
0
        private void AddNewPoint(string pointName)
        {
            if (logicAxisUnit.AxisUnitPoints.ContainsKey(pointName))
            {
                MessageBox.Show("当前点位已存在");
                return;
            }

            AxisUnitPoint axisUnitPoint = new AxisUnitPoint();

            axisUnitPoint.AxisUnitName = pointName;
            foreach (DataGridViewRow mem in dGV_PointInfo.Rows)
            {
                AxisPoint axisPoint = new AxisPoint();
                axisPoint.IsMove        = (bool)((DataGridViewCheckBoxCell)mem.Cells[0]).FormattedValue;
                axisPoint.LogicAxisName = mem.Cells[1].Value.ToString();
                axisPoint.Speed         = uint.Parse(mem.Cells[2].Value.ToString());
                axisPoint.MoveIndex     = uint.Parse(mem.Cells[3].Value.ToString());
                axisPoint.Position      = double.Parse(mem.Cells[4].Value.ToString());
                axisUnitPoint.AxisPoints.Add(axisPoint);
            }
            logicAxisUnit.AxisUnitPoints.Add(pointName, axisUnitPoint);
        }
 private static object GetMesureValue(MultiDimensionalData mData, AxisPoint point, GridMeasureColumn mCol)
 {
     return(mData.GetSlice(point).GetValue(mData.GetMeasures().OfType <MeasureDescriptor>().First(d => d.DataMember == mCol.Measure.DataMember)).Value);
 }
 private static object GetDimenstionValue(MultiDimensionalData mData, IList <string> axis, AxisPoint point, GridDimensionColumn dCol)
 {
     return(point.GetDimensionValue(mData.GetDimensions(axis[0]).OfType <DimensionDescriptor>().First(d => d.DataMember == dCol.Dimension.DataMember)).Value);
 }