<commit_before>/* eslint-env browser,jquery */
import $ from 'jquery';
import S from 'string';
import cuid from 'cuid';
import { Record, Map, Iterable } from 'immutable';

/** class名にマッチする親の要素を探す */
export function findParentByClassName(parentNode, className) {
  let node = parentNode;
  for (;;) {
    node = node.parentNode;
    if (!node || !node.classList) return null;
    if (node.classList.contains(className)) {
      return node;
    }
  }
}

/** parseIntのwrapper。NaNだった場合にはdefaultValueを返す */
export function parseInteger(str, defaultValue = NaN) {
  const num = parseInt(str, 10);
  return isNaN(num) ? defaultValue : num;
}

/** PC表示かSP表示かを判定する */
export function isSP() {
  const classList = document.body.classList;
  return classList.contains('m3-enquete__user-agent-group--SP') || classList.contains('m3-enquete__user-agent-group--APP');
}

/** data-dev-id をセットする */
export function setDevId(targetElement, survey) {
  $(targetElement).find('h2, input, select, textarea, .page-no').each((i, el) => {
    const $el = $(el);
    const name = $el.prop('name');
    const devId = survey.findOutputDevIdFromName(name);
    if (devId) {
      $el.attr('data-dev-id', devId);
    }
  });
}

/** data-output-noを表示する */
export function showOutputNo(targetElement) {
  $(targetElement).find('[data-output-no]').each((i, el) => {
    const $el = $(el);
    const outputNo = $el.prop('type') === 'radio' ? `${$el.data('outputNo')}(${$el.val()})` : $el.data('outputNo');
    const $insertEl = $('<span class="output-no" />').text(outputNo);
    $el.after($insertEl);
  });
}

/** data-dev-id, data-dev-id-labelを表示する */
export function showDevId(targetElement) {
  $(targetElement).find('[data-dev-id], [data-dev-id-label]').each((i, el) => {
    const $el = $(el);
    const devId = $el.data('dev-id') || $el.data('dev-id-label');
    const $insertEl = $('<span class="dev-id" />').text(devId);
    if ($el.prop('tagName') === 'H2' || $el.prop('tagName') === 'DIV') {
      $el.prepend($insertEl);
    } else {
      $el.after($insertEl).after('<br/>');
    }
  });
}

/**
 * containerEl内にある表示されている有効なフォームエレメントを取得する
 *<commit_msg>Fix bug for displaying dev-id<commit_after>/* eslint-env browser,jquery */
import $ from 'jquery';
import S from 'string';
import cuid from 'cuid';
import { Record, Map, Iterable } from 'immutable';

/** class名にマッチする親の要素を探す */
export function findParentByClassName(parentNode, className) {
  let node = parentNode;
  for (;;) {
    node = node.parentNode;
    if (!node || !node.classList) return null;
    if (node.classList.contains(className)) {
      return node;
    }
  }
}

/** parseIntのwrapper。NaNだった場合にはdefaultValueを返す */
export function parseInteger(str, defaultValue = NaN) {
  const num = parseInt(str, 10);
  return isNaN(num) ? defaultValue : num;
}

/** PC表示かSP表示かを判定する */
export function isSP() {
  const classList = document.body.classList;
  return classList.contains('m3-enquete__user-agent-group--SP') || classList.contains('m3-enquete__user-agent-group--APP');
}

/** data-dev-id をセットする */
export function setDevId(targetElement, survey) {
  $(targetElement).find('h2, input, select, textarea, .page-no').each((i, el) => {
    const $el = $(el);
    const name = $el.prop('name');
    const devId = survey.findOutputDevIdFromName(name);
    if (devId) {
      $el.attr('data-dev-id', devId);
    }
  });
}

/** data-output-noを表示する */
export function showOutputNo(targetElement) {
  $(targetElement).find('[data-output-no]').each((i, el) => {
    const $el = $(el);
    const outputNo = $el.prop('type') === 'radio' ? `${$el.data('outputNo')}(${$el.val()})` : $el.data('outputNo');
    const $insertEl = $('<span class="output-no" />').text(outputNo);
    $el.after($insertEl);
  });
}

/** data-dev-id, data-dev-id-labelを表示する */
export function showDevId(targetElement) {
  $(targetElement).find('[data-dev-id], [data-dev-id-label]').each((i, el) => {
    const $el = $(el);
    const devId = $el.data('dev-id') || $el.data('dev-id-label');
    const $insertEl = $('<span class="dev-id" />').text(devId);
    if ($el.prop('tagName') === 'H2' || $el.prop('tagName') === 'DIV') {
      $el.prepend($insertEl);
    } else {
      $el.after($insertEl);
    }
  });
}

/**
 * containerEl内にある表示されている有効なフォームエレメントを取得する
 *
{'fraction_non_alphanumeric': 0.20412467775955004, 'fraction_numerical': 0.002812280290602297, 'mean_word_length': 3.8944954128440368, 'pattern_counts': {'":': 0, '<': 8, '<?xml version=': 0, '>': 14, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3653152', 'n_tokens_mistral': 1603, 'n_tokens_neox': 1591, 'n_words': 282}