七月上旬更新速递丨 聚焦集成、安全与AI深度进化

更新亮点: 本次重点强化系统集成能力与AI认知升级,新增4大核心模块9项资源,优化4项资源,点击标题了解(持续互动赢麦豆,解锁高阶技能)

重点推荐:《场景化数据分析实战》课程操作手册

配套六月王炸课程的全套落地指南,手把手教你复现实战场景!

二、实战技巧分享

高效处理资源集成难题》→ 从基础出发,深入探究集成的秘密

三、开发技能突破

第三方系统调用Smartbi接口》→讲解系统集成时的jar包获取,以及集成时代码调用的基本流程。

集成接口介绍》→梳理Smartbi目前提供的接口,以及不同接口的调用流程。

AI每日一学

DeepSeek-R1-0528模型升级:推理与生态的双重升级》→ 解析模型性能提升40%的关键技术 (技术前沿)

简单总结一下机器学习中的几种常见的学习方式与区别》→ 监督/无监督/强化学习差异与应用场景图解 (基础重构)

五、资源更新

CAS单点登录 V2版》上线→ 接入到 CAS 平台中,并实现单点登录

组织/用户/角色信息管理API接口》上线→ 一套 HTTP API的组织、用户、角色信息管理接口

竹云统一身份认证平台组织用户同步对接》上线→ Smartbi封装对应的服务接口,给竹云的统一身份认证平台实时调用,完成组织、用户和角色信息的实时同步。

交互式仪表盘支持自定义字体》优化→ 修复了文本组件编辑状态不生效的问题

只允许外网某种移动端APP访问》优化→ 针对V11版本,增加了钉钉、企业微信访问限制功能

AD域(LDAP/LDAPS)登录验证》优化→ 修复了“更新白名单状态之前没有判断判断用户是否存”的问题

元数据分析落地到知识库》优化→ 增加获取资源创建者的逻辑判断,对空值空对象等情况做优化

麦粉社区
>
帖子详情

表格设置与在线预览不一样

数据分析 发表于 2021-4-20 15:00
发表于 2021-4-20 15:00:20
表格设置为图1 54826607e7be9dc14d.png
在线预览为图2 223607e7be75c7c7.png



发表于 2021-4-20 16:22:48
怎么设置的?是否可以把设置界面截图?
回复

使用道具 举报

发表于 2021-4-21 09:09:20
30400607f7b2fbe92c.png 32779607f7b3f4d1b2.png
回复

使用道具 举报

发表于 2021-4-21 09:09:46
Jaylin 发表于 2021-4-20 16:22
怎么设置的?是否可以把设置界面截图?

您看一下三楼我的截图
回复

使用道具 举报

发表于 2021-4-21 09:11:38
Jaylin 发表于 2021-4-20 16:22
怎么设置的?是否可以把设置界面截图?

但是导出表格,显示是对的,就是在线预览不一样
回复

使用道具 举报

发表于 2021-4-21 20:35:19
这个目前支持不了。

/**
* 客户端宏
* 对象:spreadsheetReport
* 事件:onRenderReport
*/

可以用下面这个宏尝试:
function main(spreadsheetReport) {
    // 数据条位置配置信息,key为sheet名称或者照相机的名称
    // 例如"标题"表示对"标题"sheet页进行配置
   
    var config = {
        "Sheet1": [{
            // 数据条的区域
            area: {
                start: "D2"
            },
            // 数据条的位置:MID表示单元格中点值对齐,AUTO表示自动
            position: "MID"
        }]
    };
   
    spreadsheetReport.processConditionalFormattingsHTMLs_0331 = spreadsheetReport.processConditionalFormattingsHTMLs;
   
    spreadsheetReport.processConditionalFormattingsHTMLs = function (win) {
        var data = buildDataBarPositionData.call(this, config, win)
        var ret = spreadsheetReport.processConditionalFormattingsHTMLs_0331.apply(this, arguments);
        resetDataBarPositionData.call(this, data)
        return ret;
    };
}

// 重置数据条的位置
function resetDataBarPositionData(data) {
    if (!data || !data.result || data.result.length == 0) {
        return;
    }
    var result = data.result;
    for (var i = 0; i < result.length; i++) {
        result[i].td.style.backgroundPosition = result[i].marginLeft + "px" + " 50%";
        result[i].td._resetDataBarProcessed = true;
    }
   
    for (var i = 0; i < data.noneImageTdArray.length; i++) {
        /*if (data.options[i] !== "MID") {
            continue;
        }*/
        for (var j = 0; j < data.noneImageTdArray[i].length; j++) {
            
            var td = data.noneImageTdArray[i][j];
            if (!td.style.background || td._resetDataBarProcessed) {
                continue;
            }
            if (util.trim(td.innerHTML) == "0") {
                td.style.backgroundSize = "auto";
                td.style.backgroundPosition = "center";
                //if (data.options[i] !== "MID") {
                    td.style.backgroundPosition = "-10000px 50%";
                //}
            }
        }
    }
}

// 重置数据条的位置的数据
function buildDataBarPositionData(config, win) {
    var htmls = win.conditionalFormattingsHTMLs;
    var cellRange = win.cellRange || [0, 0, 0, 0];
    if (!htmls || !win.frameElement) {
        return;
    }
    // sheet
    var sheetName = this.sheetNames[this.currentSheetIndex];
    var name;
    if (win.frameElement == this.elemSheetFrame) {
        name = sheetName;
    } else {
        if (!win.frameElement.isCamera) {
            return;
        }
        name = sheetName + "/" + win.frameElement.name;
    }
    var options = config[name];
    if (!options) {
        return;
    }
    var tdArray = [];
    var imgWidths = [];
    var noneImageTdArray = [];
    for (var key in htmls) {
                var val = htmls[key];
                var p = this.parseCellIndex(key);
                var optionIndx = findMatchedOptionIndex.call(this, options, p);
                if (optionIndx === undefined) {
                    continue;
                }
                var td = this.getFrameCell(win, p[0] - cellRange[0] + cellRange[2], p[1] - cellRange[1] + cellRange[3]);
                if (!td) {
                        continue;
                }
        var img = td.getElementsByTagName("IMG")[0];
        if (img) {
            putArray(tdArray, optionIndx, td);
            putArray(imgWidths, optionIndx, img.clientWidth);
        } else {
            putArray(noneImageTdArray, optionIndx, td);
        }
    }
   
    var result = [];
    for (var i = 0; i < tdArray.length; i++) {
        if (!tdArray[i]) {
            continue;
        }
        var position = options[i].position;
        var tdValues = [];
        for (var j = 0; j < tdArray[i].length; j++) {
            var valueTd = tdArray[i][j].getElementsByTagName("TD")[0];
            if (!valueTd) {
                continue;
            }
            var val = util.trim(valueTd.innerHTML);
            tdValues[j] = val;
            
            if (position == "MID") {
                var tdWidth = valueTd.clientWidth;
                var marginLeft =  val.indexOf("-") == 0 ?
                        tdWidth/2 - imgWidths[i][j] - 1: tdWidth/2 - 1;
                if (val == "0") {
                    marginLeft = 0;
                }
                result.push({
                    td: tdArray[i][j],
                    marginLeft: marginLeft
                });
            }
        }
        
        if (position !== "MID") {
            var max = 0;
            for (var m = 0; m < tdValues.length; m++) {
                if (tdValues[m].indexOf("-") == 0) {
                    max = Math.max(max, imgWidths[i][m]);
                }
            }
            for (var j = 0; j < tdArray[i].length; j++) {
                result.push({
                    td: tdArray[i][j],
                    marginLeft: (tdValues[j].indexOf("-") == 0 ?
                        max - imgWidths[i][j] : max)
                })
            }
        }
    }
    return {
        result: result,
        noneImageTdArray: noneImageTdArray,
        options: options
    };
}

function putArray(arr, index, val) {
    if (!arr[index]) {
        arr[index] = [];
    }
    arr[index] .push(val);
}

function findMatchedOptionIndex(options, p) {
    for (var i = 0; i < options.length; i++) {
        var option = options[i];
        if (!option.area || !option.area.start) {
            continue;
        }
        var start = option.area._$start;
        if (!start) {
            start = this.parseCellIndex(option.area.start);
            option.area._$start = start;
        }
        if (p[0] >= start[0] && p[1] == start[1]) {
                    return i;
                }
    }
}
回复

使用道具 举报

发表于 2021-4-22 09:23:16
Jaylin 发表于 2021-4-21 20:35
这个目前支持不了。

/**

晕,我又看不懂
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

6回帖数 0关注人数 5432浏览人数
最后回复于:2021-4-22 09:23
快速回复 返回顶部 返回列表