scout chart data

by Shang-De You

HTML

<input type="button" value="取得資料" onClick="getChartData()">

JavaScript

const uniID = '12652575'

function getChartData () {
	fetchData(uniID, (data) => {
    /* console.log(data) */
    const formatedData = to_old_format(data)
    const chartData = makeChartData(formatedData.d3.nodes, formatedData.d3.edges, uniID)
    console.log(chartData)
  })
}

function fetchData (uniID, callback) {
	fetch('https://scout.blueplanet.com.tw/search/api/v3/go', {
    method: 'POST', // or 'PUT'
    body: JSON.stringify({
    	'force_split': 1,
      'format': "json",
      'mode': "up",
      'scope': "classic",
      'uniid': uniID
    }), // data can be `string` or {object}!
    headers: new Headers({ 'Content-Type': 'application/json' })
  })
    .then(function(response) {
      return response.json();
    })
    .then(function(json) {
      callback(json)
    });
}

function makeChartData (sourceNodes, sourceEdges, rootID) {
	const roleStyleMap = {
    政府機關: {
      circle: 'circleGov',
      circleText: 'circleTextGov',
      pathTop: 'pathTopGov',
      pathDown: 'pathDownGov',
      arrow: 'arrowGov'
    },
    外資法人: {
      circle: 'circleForeign',
      circleText: 'circleTextForeign',
      pathTop: 'pathTopForeign',
      pathDown: 'pathDownForeign',
      arrow: 'arrowForeign'
    },
    自然人: {
      circle: 'circlePerson',
      circleText: 'circleTextPerson',
      pathTop: 'pathTopPerson',
      pathDown: 'pathDownPerson',
      arrow: 'arrowPerson'
    },
    法人: {
      circle: 'circleCompany',
      circleText: 'circleTextCompany',
      pathTop: 'pathTopCompany',
      pathDown: 'pathDownCompany',
      arrow: 'arrowCompany'
    }
  }
	const formatNumberWithComma = (num) => {
    if (num == null || num == '' || isNaN(num) == true) {
      return num
    }
    var parts = num.toString().split('.')
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',')
    return parts.join('.')
  }
  const isCompanyClosed = (company_state) => {
    if (company_state && company_state !== '核准設立') {
      if (company_state === '歇業'
      ||...