Тепловая панель, динамическое смещение позиции текста - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу вставить новый столбец в свой отчет, чтобы графически отобразить «стрелку», отображающую положение в диапазоне 0% - 100%, например так: enter image description here

Я ищу идеи, пожалуйста!

Моя идея

Использовать графику (радуга 0% -100% в каждом столбце подробностей). Использовать смещение в пикселях (каким-то образом ??), где я просто помещаю слишком большое «|» тип. Поэтому, если 0% -100% - это 200px, это означает, что для отображения иглы на 50% я бы сместил тип 100px!

1 Ответ

0 голосов
/ 08 ноября 2018

Самый простой / простой вариант, который я нашел и реализовал:

<image scaleImage="RetainShape" onErrorType="Blank">
    <reportElement x="575" y="1" width="100" height="13" uuid="7cf54aff-65ac-40e5-8dc9-7f95d6f34d49"/>
        <imageExpression>
        <![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText("
        <svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"100\" height=\"13\" viewBox=\"0 0 100 13\">
            <defs>
            <linearGradient id=\"linear-gradient\" x1=\"-176.88\" y1=\"316.13\" x2=\"-150.45\" y2=\"316.13\" gradientTransform=\"matrix(3.78, 0, 0, -3.78, 689.01, 1202.56)\" gradientUnits=\"userSpaceOnUse\">
            <stop offset=\"0\" stop-color=\"green\"/>
            <stop offset=\"1\" stop-color=\"green\" stop-opacity=\"0\"/>
            </linearGradient>
            </defs>
            <path d=\"M0,1.26H100v10.4H0Z\" style=\"fill: url(#linear-gradient)\"/>
            <path d=\"M" + !!! OFFSET CALCULATION !!! + ",0V13\" style=\"fill: none;stroke: #000\"/>
        </svg>
        ")]]></imageExpression>
</image>

Результат:

enter image description here

...