淘汰赛JS动态图表与highcharts

2024-01-11

所以,过去一周我一直在打高排行榜和KO。高图表的语法非常简单且易于阅读。

我来自 Java,对 JS 还很陌生,所以我不确定如何真正使用这个范围。

有没有办法使用淘汰赛或将淘汰赛与高图表结合起来轻松制作动态图表?我可以简单地将它们放在同一个 JS 文件中吗?

高图表代码看起来如此简单,必须有一个简单的解决方案!预先感谢您的意见/帮助!

这是我的高图表的代码:

$(function() {
    var chart;
    //alert(users);
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart : {
                renderTo : 'container',
                type : 'line',
                marginRight : 130,
                marginBottom : 25
            },

            title : {
                text : 'Body Weight',
                x : -20 //center
            },
            xAxis : {
                categories : ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            },

            yAxis : {
                title : {
                    text : 'Weight (lbs)'
                },
                plotLines : [{
                    value : 0,
                    width : 1,
                    color : '#808080'
                }]
            },
            tooltip : {
                formatter : function() {
                    return '<b>' + this.series.name + '</b><br/>' + this.x + ': ' + this.y + 'lbs';
                }
            },
            legend : {
                layout : 'vertical',
                align : 'right',
                verticalAlign : 'top',
                x : -10,
                y : 100,
                borderWidth : 0
            },
            series : [{
                name : 'George',
                data : [185,190,185,180]
            }, {
                name : 'Bindu',
                data : [115,110,112,115]
            }, {
                name : 'Phil',
                data : [195,190,190,185]
            }]
        });
    });
});

这是我的 KO 模型:

/*
 * Reading class
 * containts health readings
 */
function Reading(date,weight,glucose)
{
    var self = this;

    self.date=ko.observable(date);
    self.weight=ko.observable(weight);
    self.glucose=ko.observable(glucose);
    self.readingId=ko.observable(0);

      self.formattedWeight = ko.computed(function(){
        var formatted = self.weight();

        return formatted+" lb"
    });
}

/*
 * User class
 * contains a user name, date, and an array or readings
 */
function User(name,date,readings) {
    var self = this;

    self.name = name;
    self.date = date;
    self.userId = ko.observable(0);
    self.readingsArray = ko.observableArray([
        new Reading(99,22,88),new Reading(11,22,33)
    ]); 
}
// Overall viewmodel for this screen, along with initial state
function userHealthModel() {
    var self = this;
    self.inputWeight = ko.observable();
    self.inputDate = ko.observable();
    self.inputId = ko.observable();
    self.inputGlucose = ko.observable();

    // Operations
    self.subscribe = function(){
        var users = this.users();
        for(var x = 0; x < users.length; x++)
        {
            self.users()[x].userId(x); 
        }

    }
    self.addUser = function(){
        self.users.push(new User("",0,0,(new Reading(0,0))));
        self.subscribe();
    }

   self.removeUser = function(userName){
    self.users.remove(userName);
    self.subscribe();}

     //adds a readings to the edittable array of readings (not yet the reading array in a user)
    self.addReading = function(){
        var iD = self.inputId();
        var date = self.inputDate();
        var weight = self.inputWeight();
        var glucose = self.inputGlucose();
        if((weight&&date)||(glucose&&date))
        {
            self.users()[iD].readingsArray.push(new Reading(date,weight,glucose));
            self.readings.push(new Reading(date,weight,glucose));
        }
        else{
            alert("Please complete the form!")
        }
    }
    self.removeLastReading = function(userName){
        var lastIndex = (userName.readingsArray().length)-1;
        var removeThisReading = userName.readingsArray()[lastIndex];
        userName.readingsArray.remove(removeThisReading);
    }


    //editable data
     self.readings = ko.observableArray([
        new Reading(12,99,3),new Reading(22,33,2),
        new Reading(44,55,3)
    ]);

      self.users = ko.observableArray([
        new User("George",2012),new User("Bindu",2012)
    ]);
    self.subscribe();

}

我对 KO 和 Highcharts 都有使用经验,但奇怪的是我从未以这种方式将它们结合起来。如果简单地在内存中保存一个模仿 HC 配置对象的 KO 模型,并且两者运行得很好,那就太好了。不幸的是,这不会发生,因为 KO 的可观察量是函数,而 HC 需要纯 json。您可以这样做,但每次都必须销毁图表并使用 KO 模型的未映射副本重新创建,因此可能不是您所想的那样。

当您说动态时,我假设您仅指数据?

图表/系列对象有多种方法记录在这里 http://www.highcharts.com/ref/#chart-object可用于将您的模型连接到图表。一个非常简单且不完整的方法是这样的。

self.addUser = function() {
    var user = new User("Foo", 0, 0, new Reading(0, 0));
    self.users.push();
    self.subscribe();

    // chart handler
    /// need to convert the readingsArray into a data array
    chart.addSeries({ name: user.name, data: [180, 175, 195, 180] });
}

或者,您可以订阅用户数组并相应地更新图表。 (请注意,我没有将您的用户读数数据映射到数组,但您明白了)

viewModel.users.subscribe(function() {
  .. update chart here
});

See here http://knockoutjs.com/documentation/observables.html有关订阅可观察量的更多详细信息。

这是我为了测试这个而创建的小提琴。

http://jsfiddle.net/madcapnmckay/uVTNU/ http://jsfiddle.net/madcapnmckay/uVTNU/

恐怕需要将模型对象手动映射到 highchart 的数据格式。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

淘汰赛JS动态图表与highcharts 的相关文章

  • 怎么格式化啊!从条件表达式返回 &str?

    我遇到这个问题的地方format 据我所知 以不锚定任何东西的模式创建一个临时值 let x 42 let category match x 0 9 gt Between 0 and 9 number 10 gt format It s a
  • RestKit:带有数组的动态嵌套属性

    我正在努力寻找一种将一些 JSON 映射到 RestKit 的方法 这是我正在查看的示例 results Test1 id 1 name Test 1 here language English type Test1 Test2 id 3
  • 用于创建类似于 StackOverflow 的分页 UI/链接的淘汰赛模板

    我有一个用于某些分页 UI 的功能 Knockout 模板 可与基于 Knockout 的共享数据网格配合使用 该模板为网格中的每个数据 页面 呈现一个 HREF 该模板可以工作 但它很笨重 因为如果我获取大量数据 那么我最终会在网格下方出
  • 为什么 afterRender 从未被调用?

    看一下下面的 HTML 示例 这是一个简单的KOforeach绑定和一个将新项目添加到的按钮observableArray 添加工作正常并且新项目出现 但是 那afterRender方法永远不会被调用 不会在初始绑定之后 也不会在添加 和呈
  • clearInterval() 不起作用[重复]

    这个问题在这里已经有答案了 可能的重复 JS 如何在使用 setInterval 后清除间隔 https stackoverflow com questions 8266726 js how to clear interval after
  • 为什么函数可以修改调用者感知到的某些参数,但不能修改其他参数?

    我试图理解 Python 的变量作用域方法 在这个例子中 为什么是f 能够改变的值x 如内部所感知的main 但不是值n def f n x n 2 x append 4 print In f n x def main n 1 x 0 1
  • 根据下拉选择动态填充字段(Javascript / HTML)

    我正在寻求一些帮助来编码我的公司网站 我们正在尝试根据下拉框中的选择创建自定义 零件编号生成器 我们的目标是 当用户在下拉框中选择一个选项时 它会动态填充下面的框 最终创建一个零件号 所附的屏幕截图很好地直观地展示了设计以及我们想要输出框的
  • 淘汰赛,内容可编辑(和降价)

    使用由 markdown 字符串支持的 Knockout 绑定处理程序并进行渲染 使用 markdown js 和内置的 html 绑定处理程序 工作正常 但尝试添加内容可编辑行为 并且在可观察值未在模糊时更新或仅使用删除了所有降价格式的文
  • 首选的客户端路由解决方案? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否支持动态变量?

    我想知道Go中是否可以动态创建变量 我在下面提供了一个伪代码来说明我的意思 我将新创建的变量存储在切片中 func method slice make type for i 0 i lt 10 i var variable i i slic
  • JavaScript 中提升名称解析顺序如何工作?

    我遇到一个有趣的quiz http davidshariff com js quiz q 5 function bar return foo foo 10 function foo var foo 11 alert typeof bar 我
  • 如何将 JavaScript 图表导出到 Excel 文件 (HighCharts)

    我必须将 Javascript 图表 HighCharts 导出到 Excel 文件中 图表在div中呈现 但excel不呈现javascript生成的html css内容 仅呈现没有样式的文本 一个解决方案是将图表渲染为图像 jpeg 但
  • jQueryUI 可排序列表与 Knockout 相结合 - 嵌套可排序列表

    我是 Knockout 的新手 几天 正在尝试重新设计一个包含嵌套可排序列表的页面以使用它 我在这里找到了使用可排序列表和 Knockout 的一个很好的答案 jQuery UI Sortable 的 Knockout 自定义绑定 奇怪的行
  • ko.applyBindings 上是否有某种回调可用?

    Using 淘汰赛 js questions tagged knockout js在我们当前的项目中 我们已经多次遇到过这一点 我怎样才能确保某些 Javascript 代码只被执行after页面上的所有绑定均已通过 Knockout 应用
  • 为什么子程序需要在声明其中使用的变量之后编写?

    假设我们有这段代码 为什么它会因显式包名称错误而失败 因为该函数仅在声明后才被调用 value use strict use warnings sub print value print n value my value 2 print v
  • 在经纬度高地图上为国家着色

    我正在使用高地图并陷入了一项要求 我想在经纬度世界地图中用特定颜色为一个国家着色 假设我需要在下面的地图小提琴上将美国颜色设为蓝色 将俄罗斯颜色设为红色 highmaps中有没有API支持相同的功能 http jsfiddle net dn
  • 如何动态地将 &autoplay=1 添加到 youtube 嵌入代码?

    这是我网站上的 YouTube 嵌入代码示例
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points
  • 淘汰赛中的lostfocus/onblur 事件

    我想在绑定到的淘汰可观察对象上执行一个事件input 当控件失去焦点时 即使没有输入任何内容 也应该执行此函数 我尝试更改事件绑定 但当用户离开控件而不输入任何内容时 它不会触发 我尝试了 mouseout 事件 但只有当用户在失去焦点后单
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下

随机推荐

  • 模拟概念和约束的推荐方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在介绍概念和约束之前 有几种方法可以模拟这种编译时检查 采取一个 order 函数例如 如何实现LessThanComparable没有概念或约
  • 展平嵌套的 pandas 数据框

    I m wondering how to flatten the nested pandas dataframe as demonstrated in the picture attached 嵌套属性由 数据 字段给出 简而言之 我有一个
  • 如何在 GAE 中设置反应路由?在基本 create-react-app 上的 GAE 中,通过 URL 直接路由到 react-router-dom 路由失败?

    现在回答 这对我来说很难完全正确 通过谷歌的指导很少 我希望这对其他人有帮助 正如丹 科尔尼列斯库 Dan Cornilescu 指出的那样 教练们接受了第一场比赛 所以我们从更具体到不太具体 我通过遵循创建的文件夹结构解决了这个问题npm
  • 在Python中查找扩展名为.txt的目录中的所有文件

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 如何找到具有扩展名的目录中的所有文件 txt在Python中 您可以使用glob htt
  • Azure IoT 中心证书

    我正在尝试使用 Mqtt 在 Azure IoT 中心发布一些数据 我已使用 SAS 令牌成功发布了一些数据 但我的客户想要一个 x509 自生成和自签名证书 Azure 支持这一点 但没有提供太多相关信息 https learn micr
  • 如何使用共享首选项在Listview中保存动态添加的项目?

    protected void onCreate Bundle savedInstanceState TODO Auto generated method stub super onCreate savedInstanceState setC
  • 使用 DRY 原则帮助在服务类中创建灵活的基本“查找”方法

    多年来 我一直在一遍又一遍地重新实现相同的代码 随着进化 但没有找到某种干净 有效的方法来将其抽象出来 该模式是我的服务层中的基本 find Type s 方法 它将选择查询创建抽象为服务中的单个点 但支持快速创建更易于使用的代理方法的能力
  • 其他父控制器 Rails 3.1 内的控制器的自定义验证错误

    我的 Rails 应用程序中有一个 House 模型 它有很多交易 我正在房子的展示页面上显示这些优惠 当我提交表单时 如果使用redirect to 一切正常 但是 如果交易模型存在验证错误 那么我的系统将无法正常工作 交易模型是否存在验
  • MATLAB - 重新定义 YTickLabel

    我在 MATLAB 中编辑颜色条时遇到问题 颜色条已绘制 我想在 YTickLabels 上添加特定测量的单位 dB 这是通过以下命令完成的 cy get ch YTickLabel set ch YTickLabel set ch YTi
  • 如何在 data.table 中以编程方式选择列?

    我有以下数据表 DT DT lt data table V1 1 3 V2 4 6 V3 7 9 我想通过使用存储相关变量名称的对象以编程方式 动态 选择变量的子集 例如 我想选择存储在变量 keep 中的两列 V1 和 V3 keep l
  • 在没有 Azure Front Door 的情况下使用 Azure AD B2C 自定义域

    我想将自定义域与 Azure AD B2C 结合使用 正如 Microsoft 文档中所述 需要使用 Azure Front Door 来执行此操作 为了避免为此服务付费 我想使用我自己的网络服务器 反向代理 Nginx 来执行此操作 我不
  • 如何在 R 中发送读取 csv 的电子邮件并一次发送多封电子邮件?

    我有包含电子邮件的 CSV 文件 如何在 r 中发送多封电子邮件 错误1 send mail 函数不采用 data frame 值 Error in FUN X i Sorry parameter type NA is ambiguous
  • Rstudio 中的拼写检查

    如何在 Rstudio 中配置和使用拼写检查 在工具 gt 全局选项 gt 拼写中 我已将主要词典语言设置为英语 美国 将自定义词典设置为 usr lib rstudio resources dictionaries en US dic 中
  • 添加多个类 html [重复]

    这个问题在这里已经有答案了 是否可以在html中添加多个类 这是我尝试过的 a href class class2 My Text a 谢谢 是的 这是可能的 但您只能声明class每个 HTML 元素一次属性 只需用空格分隔您要应用的类即
  • 将 Excel 工作表行转换为单独的 XML 文件时出现运行时错误

    我想每行导出一个 xml 文件 请参阅打印屏幕中的示例 我收到以下错误 运行时错误 2147024891 80070005 系统错误 2147024891 on doc Save sFile 我使用以下代码读取 Excel 工作表 Micr
  • SSRS 2008 - 报告标题未显示动态数据

    我有一份按部门名称排序的人事报告 但是当我将部门名称字段添加到标题中时 它只正确打印出第一个部门名称 其他每个页面都有标题 但标题中仍然有初始部门名称 而不是正确的部门名称 换句话说 报表标题中对部门名称的字段引用不会更新 我浏览了存储过程
  • 捕获 TextArea 中的选项卡

    有谁知道一个跨浏览器 可靠的解决方案来捕获文本区域字段中 Tab 键的按下 并替换 在正确的位置 4 个空格 文本区域用于输入文章 需要此功能 注意 我尝试使用 FCKEditor 等 它没有捕获选项卡 并且有很多我不需要的功能 我想要一个
  • useBean 类属性的值...无效[重复]

    这个问题在这里已经有答案了 我想使用 Java 文件SaveProp这是写在一个包中的user 类文件已放置在WEBINF classes 下面是导致问题的两行 jsp useBean id user class user SaveProp
  • 为什么有时可以将 NSArray 转换为 NSMutableArray,有时却不能?

    具体来说 self words NSMutableArray self text componentsSeparatedByString 只要有分隔符就可以正常工作 我看到该方法返回包含在 NSArray 中的原始字符串 如果没有 这个单一
  • 淘汰赛JS动态图表与highcharts

    所以 过去一周我一直在打高排行榜和KO 高图表的语法非常简单且易于阅读 我来自 Java 对 JS 还很陌生 所以我不确定如何真正使用这个范围 有没有办法使用淘汰赛或将淘汰赛与高图表结合起来轻松制作动态图表 我可以简单地将它们放在同一个 J