Esempio n. 1
0
    /// <summary>
    /// Update the xMin, xMax, yMin, yMax
    /// and indicate where y=0 is only when yMin is less than 0 and yMAx is more than 0.
    /// </summary>
    private void UpdateText()
    {
        if (controller.SeriesCount > 0)
        {
            var minmax = controller.GetMinMaxOfAll();

            yMaxText.text = minmax.yMax.ToString(controller.specifier);
            yMinText.text = minmax.yMin.ToString(controller.specifier);
            xMaxText.text = ChartUtils.SecondsToTime(minmax.xMax);
            xMinText.text = ChartUtils.SecondsToTime(minmax.xMin);

            if (minmax.yMin < 0 && minmax.yMax > 0)
            {
                yZero.SetActive(true);
                yZero.GetComponent <Text>().text = "0";
                float totalY    = minmax.yMax - minmax.yMin;
                float yPos      = -minmax.yMin / totalY * axisHolder.rect.height;
                var   transform = yZero.transform as RectTransform;
                transform.anchoredPosition = new Vector2(transform.anchoredPosition.x, yPos);
            }
            else
            {
                yZero.SetActive(false);
            }
        }
    }
    private void UpdateValues()
    {
        var minmax = controller.GetMinMaxOfAll();

        for (int i = 0; i < controller.values.Length; i++)
        {
            string     name = ChartUtils.NameGenerator(valueChildString, i);
            GameObject obj  = valuePanel.Find(name).gameObject;
            colorBlock.disabledColor           = controller.seriesColors[i];
            obj.GetComponent <Button>().colors = colorBlock;

            float value = controller.values[i];
            obj.GetComponentInChildren <Text>().text = value.ToString(controller.specifier);

            RectTransform rt   = obj.transform as RectTransform;
            float         yPos = (value - minmax.yMin) / (minmax.yMax - minmax.yMin) * valuePanel.rect.height;
            yPos             = Mathf.Clamp(yPos, 0, valuePanel.rect.height - rt.rect.height);
            rt.localPosition = new Vector3(-5, yPos);
        }
    }
Esempio n. 3
0
    /// <summary>
    /// Implementation to draw line chart based on the time-data series.
    /// Only draw if the count of time-data is at least 2.
    /// </summary>
    private void DrawLineChart()
    {
        for (int idx = 0; idx < controller.SeriesCount; idx++)
        {
            var dataCollection = controller.DataContainer.GetTimedDataCollection(idx);

            Vector3[] lines    = ChartUtils.CreateLinesFromData(dataCollection, chartHolder, controller.GetMinMaxOfAll());
            Mesh      lineMesh = ChartUtils.GenerateLineMesh(lines, 1.5f);

            string         name     = ChartUtils.NameGenerator(chartChildString, idx);
            GameObject     obj      = chartHolder.Find(name).gameObject;
            CanvasRenderer renderer = obj.GetComponent <CanvasRenderer>();

            renderer.Clear();
            renderer.SetMaterial(controller.materials[idx], null);
            renderer.SetMesh(lineMesh);
        }
    }