DataTable Экспорт данных -> Индивидуальный HTML зачистки - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь экспортировать некоторые данные из моей таблицы данных с отформатированными тегами HTML. Моя цель - извлечь весь видимый текст (внутренний html), а также текст всплывающей подсказки из отдельного поля данных (data-original-title="xxx").

Например, некоторые строки с данными:

<td><span class="text-success"><abbr data-container="body" data-toggle="tooltip" data-placement="bottom" data-html="true" data-original-title="XX: 2.55 (0.00|5.00) <br>YY: -10.15 (-27.96|-9.00)">xx/yy</abbr></span></td>
<td><span class="text-success"><abbr data-container="body" data-toggle="tooltip" data-placement="bottom" data-html="true" data-original-title="<b>section 1</b>: 0, <b>section 2</b>: 0, <b>section 3</b>: 2, <b>section 4</b>: 5, <b>section 5</b>: 1">8</abbr></span></td>

Я хочу что-то вроде этого:

XX: 2.55 (0.00|5.00) <br>YY: -10.15 (-27.96|-9.00) - xx/yy
section 1: 0, section 2: 0, section 3: 2, section 4: 5, section 5: 1 - 8

Поведение по умолчанию хорошо, но строит это (проблема: ">):

XX: 2.55 (0.00|5.00) <br>YY: -10.15 (-27.96|-9.00)">xx/yy
section 1: 0, section 2: 0, section 3: 2, section 4: 5, section 5: 1">8

Есть ли способ использовать дополнительный заменить после бортовой HTML полоску с датой?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Если у кого-то возник такой же вопрос, это мое решение. Я не смог получить ответ «атрибут данных», потому что мои данные строки часто имели несколько html уровней.

Это мой результат:

format:  {
    // Manipulation der Export Daten
    body: (data, row, column, node) => {
        // Extract tooltip, if available
        const tooltipExtract = (data) => {
            const regex = /(data-original-title=").*?(">)/g
            if (regex.test(data)) {
                const tooltipExtraced = data.match(regex) // Matched Tooltip with html in innertext
                return tooltipExtraced[0].replace(/<[^>"']*((("[^"]*")|('[^']*'))[^"'>]*)*>|(data-original-title=")|">/g, '').trim() // Deletes html tags and the beginning/ending of the tooltip
            }
            return false
        }

        // Extract data
        const innerData = data.replace(/<[^>"']*((("[^"]*")|('[^']*'))[^"'>]*)*>/g, '').trim() // Innertext
        const tooltip = tooltipExtract(data)    // Tooltip

        // Result with or without Tooltip
        if (tooltip) {
            return `${innerData} -> ${tooltip}`
        }
        return innerData
    }
}
0 голосов
/ 04 февраля 2020

Вы можете попробовать это:

var buttonCommon = {
        exportOptions: {
            format: {
                body: function ( data, row, column, node ) {

                    title = $(row).data('original-title');
                }
            }
        }
    };
...