Укорочение URL в r блестящих приложений - PullRequest
1 голос
/ 15 марта 2019

У меня есть блестящее приложение, в котором мы используем URL закладок.URL кажутся слишком длинными.Я сохраняю эти URL в datatable.Как я могу закорачивать их перед добавлением в приложение?Пример для длинного URL приведен ниже:

http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Используя тег <a href=full URL target=_blank>URL</a>, мы можем передать тег URL in span и добавить заголовок атрибута, который является атрибутом HTML, используемым по умолчанию для наведения мыши. Вот как мы можем использовать тег span:
<a href=full URL target=_blank> <span title= full URL > Short URL </span> </a>

Затем мы будем использовать JS для отображения разумной длины для span в data.table, в этом случае будет 30

library(DT)
datatable(data.frame(URLs), options = list(columnDefs = list(list(
  targets = c(1),
  render = JS(
    "function(data, type, row, meta) {",
    "return type === 'display' && data.length > 30 ?",
    "'<a href=\"' + data + 'target=\"_blank\"> <span title=\"' + data + '\">' +
         data.substr(0, 30) + '...</span></a>' : data;",
    "}")
))))

Данные

URLs <- c("http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0
", "http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0
")
0 голосов
/ 20 марта 2019

В действительности сжимает строку, используя кодировку gzip.Следующее будет представлять необработанную кодировку в виде строки base64:

library(base64enc)

url <- "http://127.0.0.1:4534/?_inputs_&bookmarkName=%2211m%22&budget_input=11000000&col=%22table%22&col1=%22bud_digi_table%22&drop624996478=1&drop624996478_state=true&inp_lb=0.5&inp_ub=1.5&iterations=2000&myNavbarPage=%22Optimizer%22&opt_reset=0&opt_run=0"
gzip_url <- memCompress(charToRaw(url),type="gzip")
compressed_url<-base64encode(what=gzip_url)

rawToChar(memDecompress(from=base64decode(what=compressed_url),type="gzip"))

Это сокращает длину всей строки символов.Хотя не очень много.Лучший способ сократить это создать отдельную таблицу поиска, которая заменяет некоторые из ваших более длинных переменных, таких как «bookmarkName», «myNavbarPage» и т. Д., На переменные, которыми вы управляете, например «B» или «m», которыми вы можете управлять по мере использования.замена строки.В противном случае любой тип сжатия или кодирования должен будет захватывать эти длинные строки.Здесь есть полезная дискуссия: Эффективный алгоритм сжатия коротких текстовых строк

Вы также можете преобразовать его в крошечный URL.Это также использует справочную таблицу, взяв длинный URL и создав альтернативный, более короткий ссылочный URL.Вы можете управлять этим внутренне или использовать стандартный крошечный URL-сервис для этого.Есть также пакет R, который помогает управлять этим, и вы можете прочитать больше об этом здесь: https://www.r -bloggers.com / urlshortener-a-package-for-shortтинг-urls /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...