getCellText.mjs

import isnum from 'wsemi/src/isnum.mjs'
import isstr from 'wsemi/src/isstr.mjs'
import isnull from 'wsemi/src/isnull.mjs'
import isundefined from 'wsemi/src/isundefined.mjs'
import cstr from 'wsemi/src/cstr.mjs'
import dig from 'wsemi/src/dig.mjs'


/**
 * 取得表格儲存格之顯示文字
 *
 * 給予idig(kpDig內該欄位之小數位數)且值為數字(含數字字串)時取位,其餘空值為空字串、字串與數字原樣轉字串、物件與陣列轉JSON字串(含循環參照時為空字串),
 * 轉換規則同w-aggrid-vue預設儲存格顯示,使儲存格slot與數值欄轉型前後之顯示比對共用同一份定義
 *
 * @param {*} v 輸入儲存格值
 * @param {Integer} [idig] 輸入小數位數,未給或undefined代表不取位
 * @returns {String} 回傳顯示文字字串
 */
function getCellText(v, idig) {

    //dig
    if (idig !== undefined && isnum(v)) {
        return dig(v, idig)
    }

    //check
    if (isnull(v) || isundefined(v)) {
        return ''
    }
    if (isstr(v) || isnum(v)) {
        return cstr(v)
    }

    //物件與陣列
    try {
        return JSON.stringify(v)
    }
    catch (err) {
        return ''
    }

}


export default getCellText