Grafana: 本地化图表中的 time_format

创建于 2015-02-10  ·  140评论  ·  资料来源: grafana/grafana

你好亲爱的开发团队。
感谢您提供出色的产品,但我有一个问题。

现在time_format 函数中有一个已编码的美国日期格式。
最烦人的情况是显示月份和日期。 当我看到像“2/3”这样的东西时,我有点困惑。 是“玛特二号”还是“二月三号”?
最可悲的是,我无法配置这种行为。

不幸的是,最简单的方法(并且可能是最合适的)在这里无济于事。 我的意思是带有附加选项的toLocaleString 。 您可以返回不同的选项数组而不是硬编码格式模式,并且此方法根据正确的语言环境转换日期。
但在我们的例子中,有一个 jquery 图,它需要日期格式来自行转换时间戳。

所以,第二种方法是制作某种映射语言环境-> 格式数组。 例子。 好像有点丑。 但它可能是一个单一的工作解决方案。

可能是我错过了一些明显更好的解决方案。 这就是我没有创建拉取请求的原因。 =)

arepanegraph typfeature-request

最有用的评论

+1
我认为 Grafana 是一种时间序列数据可视化软件,即使不是最好的,也是同类软件中最好的之一。
因此,屏幕上的时间戳对于使用可视化数据和维护出色的用户体验至关重要。
在美国以外的全球范围内,许多人、公司和组织都在使用 Grafana。
请允许基于 UI 的简单配置如何在不同文化中显示时间戳。 如果这不能是仪表板、图形或浏览器客户端特定的,即使是 Grafana 实例特定的设置也是很好的开始。
在我看来,这不仅仅是正常的缺失功能,而是用户暗中期望和假设在这种超级(!)软件中具有的核心功能之一。

所有140条评论

是的,应该为此添加更好的选择。 不确定最好的方法是什么,甚至可能有一个很久以前提交的 PR,我还没有时间审查。

酷,谢谢!
现在,我在我的项目中使用硬编码的欧洲格式重建了 grafana =)

这将很有用,因为欧洲日期格式的顺序不同(日/月/年)日期实际上令人困惑

+1

+1

+1

对于任何想要解决此问题的人;
我将它用于我的 solaris 构建。

尝试 public_gen incase grunt 已经运行。

``` r, engine='bash', count_lines

!/bin/bash

设置 -e

修补(){
echo -e "试图修补;n$GRAPHJSFOLDER"
ORIG=$GRAPHJSFOLDER/graph.js
备份=$GRAPHJSFOLDER/graph.js.backup
cp $ORIG $BACKUP
sed 's/%m\/%d/%d\/%m/g' $BACKUP > $ORIG
}

GRAFANAROOT=$GOPATH/src/github.com/grafana/grafana

GRAPHJSFOLDER=$GRAFANAROOT/public/app/panels/graph
修补
GRAPHJSFOLDER=$GRAFANAROOT/public_gen/app/panels/graph
修补
``

+1

+1

+1 对此,在图形中强制使用美国语言环境 MM/dd 并不理想。 #5517 引入的语言环境可能有帮助?

+1

+1,这目前正在阻止我们公司的适应

@tokudan嘿,这就是我们在解决方案中所做的; https://github.com/grafana/grafana/issues/1459#issuecomment -162446127

如果这可以将实际的浏览器本地化考虑在内,或者如果用户至少可以手动配置它,那就太好了。 强迫每个人都使用美国风格的日期真的很不理想。

+1

+1

如果日期通常可以自定义,那就太好了。 例子:
而不是拥有
2016-11-21 21:19:00
我想查看工作日和短日期(此处为德语格式):
摩, 21.11., 21:19

@RyanCarrier知道如何在不从源代码构建的情况下进行此修改吗? 我在我的 Ubuntu 安装(来自 deb 包)中找到了等效文件:

/usr/share/grafana/public/app/plugins/panel/graph/graph.ts

唉,修改该文件,重新启动grafana-server并刷新浏览器并没有发现更改。 我发现了这个缩小版:

/usr/share/grafana/public/app/plugins/panel/graph/graph.js

并以为我是赢家,但唉,同样的结果。 您是否知道 grafana 使用的另一个编译输出可以解释为什么修改这些文件没有任何区别?

嘿伙计,如果我之前写的脚本不起作用并且您仍然遇到问题,请回复我,我会在我有时间回家时(可能是第二个或第三个)看看。

https://github.com/grafana/grafana/issues/1459#issuecomment -162446127

哦对不起,我没有从 deb 包中意识到。 我得回家看看,然后在我的服务器上试一试。 如果我在 3 日之前没有回复,请联系我。 :)

颠簸@RyanCarrier - 还没有弄清楚这个。 怀疑这很简单,但我无法让 Grafana 获取我对 graph.ts 所做的任何更改(不从源代码编译,如果可能,我宁愿避免)。

自从我上次比赛以来,他们已经改变了一些东西,而且我没有像那时那样的环境。 但是我在几个文件中发现了 %m/%d; 让你保持最新状态。

公共/应用程序/app_bundle.js:13
公共/应用程序/boot.js:18
公共/应用程序/boot.fnsdmjkfnasjk.js
其余的在
公共/应用程序/插件/面板/图形

图.ts
图.js
规格/graph_specs.js
规格/graph_specs.ts

嘿,这是 /usr/share/grafana/public/app 中奇怪的 boot.123456.js。

为了安全起见,我也会在 boot.js 中更改它,我假设它是在您安装时构建的?

只需运行我制作的 sed 命令,只需记住您的数字会有所不同,但是;

cp boot.123456.js boot.123456.backup.js
sed 's/%m\/%d/%d\/%m/g' boot.123456.backup.js > boot.123456.js 

然后只需刷新页面(ctrl shift r) probs 可以定期刷新。 但是无所谓。

对不起,我花了这么长时间我完全忘记了。

该命令只是将所有 %m/%d 替换为 %d/%m

我也会在其他文件上运行它,以防它们在重新编译或更新期间连接在一起。

做到了! 定期刷新就足够了。 您提到的其他文件也存在并包含字符串。

有点神秘。 怀疑这对于突然出现的其他问题将是有用的知识。 非常感谢!

有没有办法通过 Grafana GUI 或设置更改日期格式? 我可以看到一些关于对源文件进行更改的喋喋不休,我不想这样做:)

@leinad13目前没有,因此求助于源文件。 不理想,但实际上很容易。

这应该可以,从服务器上的命令行执行:

TARGET_FILE=`ls /usr/share/grafana/public/app/boot.*.js`
cp $TARGET_FILE ${TARGET_FILE}.backup
sed 's/%m\/%d/%d\/%m/g' ${TARGET_FILE}.backup > ${TARGET_FILE}

然后只需刷新浏览器的 Grafana 页面即可。

+1 也适合我

好的,在将 Grafana 与 Kibana 进行比较时偶然发现了这一点。 不幸的是,不支持区域设置(日期/时间/数字格式等)是 Grafana 在专业环境中的一个障碍(根本无法交付区域设置错误的项目)。 如果使用 prio 解决这个问题(并且没有讨厌的源代码修补),那就太好了。 @托克洛

+1

+1

+1

就我而言,我在 X 轴上遇到日期问题,有时只显示时间部分,有时显示日期(美国格式,此处为欧盟),我无法以任何可预测的方式控制它。 以某种方式与#3591有关

+1

+1

+1

乍一看,使用了浮动代码 (jquery)。 在那里,你有格式化选项,如果它们被传递。 见 jquery.flot.time.js
对于全球使用,良好的本地化至关重要。 并且请不要坚持使用从浏览器设置中自动获取的选项。 使用基于美国的语言并不意味着我想要不符合美国本地化...

+1

+1,作为一种解决方法,我现在使用 23 小时视图来禁用在主要用例中显示奇怪的日期。

+1

+1

如果您优先考虑这个问题,我们将不胜感激。 对于欧洲用户来说,这确实令人困惑。 非常感谢!

+1

+1

+1

+1

我不能在英国推出美国日期格式,因为人们肯定会误读日期。

只是要清楚这一点-美国基本上是使用M / d / Y日期格式在这个星球上的唯一国家。 世界其他地方发现这种格式非常混乱。 见https://en.wikipedia.org/wiki/Date_format_by_country

通过不支持本地日期格式,您实际上是在告诉美国以外的任何人他们不应该使用 Grafana。

如果无法进行配置,至少使用 ISO 8601 作为默认值。 这应该是一个可以立即推出的简单修复。

我不敢相信这个错误已经在三年前提交了。

是的,ISO 8601 是一个很好的短期修复。

Grafana 似乎没有这样做的愿望或胃口,我最初没有注意到这张票是 3 年前创建的!

这不是我们不想,但除非您没有注意到大约有 1000 个开放的功能请求:)

我希望你意识到这不仅仅是一个 FR。 这是在美国以外采用的阻滞剂。 似乎很久以前的编码决定现在正在产生令人讨厌的副作用。

我在这个线程的前面两次给了你们解决方法。 如果这对您来说真的是一个很大的问题,并且由于某种原因您无法解决问题。 自己做出改变。 开源的全部意义在于能够做出贡献并共同工作,而不是抱怨这些志愿者没有完全按照您的意愿行事。

@RyanCarrier让你远离你非常重要的任务,我们都非常抱歉。 我们也非常抱歉将我们最喜欢的功能推向了其他 1000 多个 FR。
从现在开始,我们可能会在 Grafana 背后的公司门口开始哭泣: https ://grafana.com/services/support

首先,这是一件很小的事情。 只有在缩小并且将鼠标悬停在一个点上才能看到整个日期时才会明显。 我不明白这是在美国以外采用的障碍的论点。 (我从第一天开始使用 Grafana,住在瑞典,从来没有注意到这个问题)。

我上周实际上看过这个,但它比我想象的要复杂。 我做了一个快速的峰值来尝试自动找出每个语言环境的月-日格式 - 无论是使用 MomentJS 还是使用Date.prototype.toLocaleDateString()

MomentJS 不支持每个语言环境的月/日格式,但 toLocaleDateString 可能有效。 问题在于它取决于您的浏览器设置(Chrome 中的语言设置),因此即使他们位于欧洲,大多数人无论如何都会获得美国格式。

我们得出的结论是,唯一的方法是将其添加为配置设置(可选择:使用浏览器区域设置或明确设置)。

PS @mvhconsult Grafana 在很大程度上是一个开源项目,大多数版本主要由 Grafana 社区贡献的功能和错误修复组成。 你没有为 Grafana 支付任何费用,也从未贡献过任何修复或功能,所以请尽量保持文雅的语气。

@daniellee冒着在这里开始真正的离题讨论的风险,所以这是我的最后一个。 在过去的 15 年里,我一直参与开源,所以我知道收到所有对您来说似乎不重要的请求是什么感觉。 当然,大多数在这里是不可见的。
让人们参与进来并花宝贵时间研究另一个项目(Grafana 之外的生活)的一种方法是,向他们提供如何工作的指导,以及核心团队没有解决问题的原因,以及文档化代码。 吓跑人们(甚至让他们“我为什么还要关心这个产品或团队”)的方法是告诉他们这是无稽之谈,他们应该深入研究源代码并自己实施一些中途补丁,并通过告诉他们他们呻吟/哭泣来贬低他们。 如果这里的政策是只有代码贡献者可以提出请求:我很好,那么我又要回到现实生活了。

@mvhconsult核心团队没有人说这个功能请求是无稽之谈。 我在核心团队中,并花时间研究如何解决它。 也许您没有注意到我最近将这个问题分配给了自己? 我还只是想指出,这是一个小问题,而不是我们将其标记为优先级 1 的问题(这绝对是一个有效的问题,但它不会影响大多数人,即使是注意到它的人也可以轻松解决它)。

围绕功能请求的讨论很好(并受到鼓励),但我觉得这是不必要的:

从现在开始,我们可能会在 Grafana 后面的公司门口开始哭泣:

这就是为什么我问你是否可以调低一点。 谢谢。

如果你想接受这个,那么我很乐意帮助你开始。 您可以从设置 Grafana 开始开发: http ://docs.grafana.org/project/building_from_source/

@daniellee这绝对不是一件小事,据我所知,没有“简单的解决方法”。

图表显示多于一天的数据是非常常见的,例如前一周、前一个月或前一年,并且所有这些图表都在轴上以 MM/DD 格式显示日期。 您无需将鼠标悬停在任何内容上即可查看这些格式错误的日期。

听起来您自己并没有遇到这个问题,但是这个线程上的“+1”数量肯定清楚地表明很多人确实有问题。

我认为大多数人也明白运行一个流行的开源项目的困难,尤其是当有很多功能请求和最少的资源时。 这正是我们中的一些人支持这个问题的原因——我们试图证明这对很多人来说是一个大问题,如果能得到解决就太好了。

@andymadge很酷,我可以理解其他人对我的看法可能完全不同,正如您所说,很多人都投票支持。 此功能将很快实现,因为世界上大部分地区的刻度格式是错误的,应该修复。

只是想找出最用户友好的方式来呈现这个选项。 我想我将使用navigator.languages的第一种语言将刻度格式更改为默认为 toLocaleDateString() 但有一个配置选项可以在用户首选项中设置月/日(或日/月)格式。

我有一个问题,也许来自日期格式包含点或类似内容的国家(例如芬兰、德国或韩国)的人可以回答。

只有两个显式选项是否可以: mm/dddd/mm 。 10 月 20 日将是10/2020/10

@daniellee对我来说听起来不错。

我说蜱只显示月份和日期,或年份和月份,从不显示所有 3 个,我说得对吗?

@andymadge是的,你是对的。 不同的缩放级别有不同的格式。 从最缩小开始:

  • 年年/毫米
  • 毫米/日
  • 毫米/日高:米
  • 高:中
  • 高:中:S

我将要更改的是 mm/dd 和 mm/dd H:M。

@daniellee对于芬兰(和德国)用户,正确的格式是dd.mm.dd/mm yyyy有时会被有瑞典背景的老年人使用,但在这种情况下,普通的dd/mm不清楚,因为无法看到日期和月份的顺序。 如果完全本地化不容易获得,使用dd/mm仍然比当前状态好得多。

@calmjm谢谢 - 这回答了我的问题。 我将添加第三个选项。 其他国家可能还有其他格式,但我认为 3 是一个好的开始,涵盖了很多国家。

使用稍微奇怪的月/日(或日/月)格式的原因是为了节省空间。 我尝试使用 mmm-dd(2 月 12 日),但它在较小尺寸的面板中占用了太多空间。

实现将引入每个用户的设置,有 4 个选项:浏览器、 mm/dddd/mmdd.mm.默认是使用浏览器的区域设置(基于设置中的第一种浏览器语言)。

另一个可能的选项是dd.mm (末尾没有点),这是波兰和乌克兰等国家/地区的格式。

@daniellee这听起来是一个很好的前进方向。

@daniellee刚刚在搜索如何在 Grafana 中正确设置日期格式时发现了这个线程。 :) 即将到来的dd.mm。 对我来说是最重要的(芬兰人),谢谢! 但是当你在做的时候,你能考虑改变 yyyy/mm 吗? 虽然这是可以理解的,但仍然感觉很奇怪。 mm/yyyy 或“mmm yyyy”会更可取。

另外,只是一个侧面评论。 对我们来说,分钟和小时之间的正确分隔符也是点。 但我不认为有很多改变它的需求,因为从那时起就不容易看出“02.02”是时间还是日期(是时间,缺少的结束点表明了这一点)。 当然,如果它也可以进行配置,这将是最好的。

+1

@hraftery

这应该可以,从服务器上的命令行执行ls /usr/share/grafana/public/app/boot.*.js
cp $TARGET_FILE ${TARGET_FILE}.backup sed 's/%m\/%d/%d\/%m/g' ${TARGET_FILE}.backup > ${TARGET_FILE}
然后只需刷新浏览器的 Grafana 页面即可。

我无法找到这些文件(但我使用的是 5.0.4 版)。

@andreasloe嗯,看起来它已经移动了。

/usr/share/grafana/public/build/app.*.js看起来很有希望,但改变它对我没有任何影响......

@daniellee (或任何 Grafana 开发人员):社区有什么方法可以影响此功能的优先级(本地化时间格式)? 例如,打开https://www.bountysource.com/ (或等效的)是否有帮助? 谢谢!

@daniellee
如何使用toLocaleDateStringnavigator.language作为参数?

['en-US','en-IE','en-GB','de-DE','es-ES','nl-NL','pl-PL','ru-RU']
    .forEach(lang => console.log(lang + ': ' + new Date().toLocaleDateString(lang, {day:'numeric', month:'numeric'})))
en-US: 6/4
en-IE: 4/6
en-GB: 04/06
de-DE: 4.6.
es-ES: 4/6
nl-NL: 4-6
pl-PL: 4.06
ru-RU: 04.06

2018-06-04 的 6/4 真的很混乱。

参考:
https://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/#DateTimeFormat
https://caniuse.com/#feat = 国际化

+1
最好的实现可能是使用与语言相关的单位(例如 en-GB = dd/mm/yy 和 en-US = mm/dd/yy 等)但是给我们一个框来输入我们自己的格式轴页面将是最灵活的,然后还可以支持更大时间范围的更模糊的选项,例如仅几个月,或仅在轴上的其他极端分钟。

@hraftery
不幸的是,要应用更改,您需要从源代码重新编译 grafana ......
对于沿 X 轴本地更改日期格式:

  1. ./public/app/plugins/panel/graph/graph.ts中的函数 time_format() 中更改返回模板
    if (secPerTick <= 80000) {return '%d.%m.%Y %H:%M';}
  2. 如果要在日和月中显示两位数,请在./public/vendor/flot/jquery.flot.time.js中的函数 formatDate() 中的 switch case "d" 和 "m" 中添加零
    case 'd': c = leftPad(d.getDate(), "0"); break;
    case 'm': c = leftPad(d.getMonth() + 1, "0"); break;
  3. 重新编译 Grafana: https :

@luxnlex你知道如何在重新编译后构建https://github.com/grafana/grafana-docker似乎来自我们现阶段没有的标签版本。

我很乐意提供和更新这个容器,而 grafana 团队一直坚持this is quite a small thingIt is only noticeable if you are zoomed out 。 看看这里的回复数量似乎不适合观众;)

+1
我认为 Grafana 是一种时间序列数据可视化软件,即使不是最好的,也是同类软件中最好的之一。
因此,屏幕上的时间戳对于使用可视化数据和维护出色的用户体验至关重要。
在美国以外的全球范围内,许多人、公司和组织都在使用 Grafana。
请允许基于 UI 的简单配置如何在不同文化中显示时间戳。 如果这不能是仪表板、图形或浏览器客户端特定的,即使是 Grafana 实例特定的设置也是很好的开始。
在我看来,这不仅仅是正常的缺失功能,而是用户暗中期望和假设在这种超级(!)软件中具有的核心功能之一。

你好@torkelo我不知道该问谁了 :-) Grafana 团队是否有可能告诉我们非美国快乐用户此功能的预计到达时间? 谢谢!

我只能补充 - 尽管之前已经说过 - 这是 Grafana 唯一的、最令人困惑的“功能”。 每当我查看任何图表时,我都会开始挠头,并试图弄清楚我真正看到的时间范围是什么,因为它完全陌生......

很抱歉收到垃圾邮件,但不得不说。 我相信它并没有说太多,对于非美国用户来说,这很容易成为最高要求。

在这个问题上花了这么长时间? 我只是无法想象这如此复杂......

我想社区需要一些代码......由于当前日期时间编码的性质,这非常困难......

@DerKnerd有一个简单的修复(#13429),但我们认为它不够好。 当您想全面解决日期问题时,日期问题就会变得困难。

这个问题最近出现在关于范围蔓延的内部演示中。 前进的道路是设计文档。 如果社区中的任何人想要做志愿者,请加入 slack.raintank.io 上的#grafana-dev并与我联系。

@davkal感谢您指出 #13429。 实际上,对于非美国的我来说,这个修复已经足够好了,而且是一个很大的改进。 也许该修复可以按原样进行,并且设计文档可以并行完成?

@marco-m 该 PR 的重点是 monthDate 首选项字段。 如果我们将日期设置更改为“默认”(即它们现在的状态,美国日期)或“浏览器”(由浏览器区域设置本地化),我们可能会解决这个问题。 下拉菜单只有这两个选项。 您用户的浏览器是否支持Date.prototype.toLocaleDateString并且他们是否拥有您希望他们拥有的语言环境?

@davkal我们正在使用最新版本的 Mozilla 和 Chrome,如果这让我们能够控制日期呈现,我们可以更新到任何内容:-) 是的,我们可以在浏览器上设置我们希望它们拥有的区域设置。 如果我理解正确,我建议从 Grafana 产品的角度在“默认”或“浏览器”之间选择“最佳”; 我们将非常乐意适应您的选择。

@davkal我正在努力了解如何将明确的日期处理视为范围蔓延 - 这是一个重要的混淆来源(特别是对于非美国用户,尽管我认为不明确的日期不应该被接受)。

也就是说,基于浏览器区域设置的方法可能是一种选择,但这是否会产生诸如警报之类的问题? 我怀疑这个配置真的需要被持久化和查询每个用户/每个渲染。 strftime / moment.js方法似乎是一个更全面的答案,我想有预填充的区域设置表随时可用,可以为 UI 生成一些预设。

关于基于浏览器的偏好:请注意,在国际上工作的人可能会选择使用基于英语的浏览器,安装(或被迫安装)美国浏览器,然后仍然得到 mm.dd.yyyy。

对于仍然很好的短期解决方案,但@marco-m 声明的并行应该是一份关于根据用户偏好实现真正本地化的完整文档。

感谢所有反馈。 就个人而言,我会尽量避免使用完整映射的正确输入字段。
不确定警报如何受到影响,但服务器渲染需要向用户的语言环境传递 URL 参数(否则它将使用 phantomjs 的语言环境)。 基于 Slack 的图像渲染也需要决定作为 URL 参数传递的语言环境。

重新完整映射:应该是每个 grafana 服务器、每个组织、每个团队、每个用户吗?

@davkal写道:

我会尽量避免使用完整映射的正确输入字段

你能描述一下你的意思吗? 我会说,当涉及到语言环境显示时,用户有时会有特定的偏好,正如 QT 最近严格的语言环境实现所产生的错误报告所证明的那样。

我相信它必须是针对每个用户的设置,以支持多区域团队,可能在一个或多个更高级别设置默认值。

我真的更喜欢输入字段,这样人们就可以设置他们想要的任何内容。
必须将我的语言环境设置为其他地方才能获得我想要的日期格式
总是以意想不到的副作用和挫折告终。

拥有服务器范围的默认格式,并让用户覆盖
对我来说最有意义。
这样服务器渲染和未登录的人就可以获取服务器
默认,而个人用户可以根据需要设置自己的格式。
我不使用组织,但在那里做也有意义吗?

在周一,2019年3月4日在09:19,大卫[email protected]写道:

感谢所有反馈。 就个人而言,我会尽量避免正确的输入
具有完整映射的字段。
不确定警报如何受到影响,但服务器渲染需要
用户的语言环境要传递一个 URL 参数(否则它将使用 phantomjs'
地区)。 基于 Slack 的图像渲染需要决定要使用的语言环境
也作为 URL 参数传递。

重新完整映射:应该是每个 grafana 服务器、每个组织、每个团队,
每个用户?


您收到此消息是因为您订阅了此线程。
直接回复本邮件,在GitHub上查看
https://github.com/grafana/grafana/issues/1459#issuecomment-469268689
或静音线程
https://github.com/notifications/unsubscribe-auth/ABJyGlmAy9ebfDPryZGyVdffLReqBRp8ks5vTSuNgaJpZM4DelGY
.

完整映射示例: https :

完整映射示例: #13429(评论)

我怀疑暴露这样的映射可能是不可避免的。

致所有在这里发表评论并要求越来越多的人:这个问题自 2015 年 2 月开始开放。 @davkal消耗他必须使这成为现实的能量。 我的 2 美分。

如果不关心花哨的 GUI 或自动浏览器/区域支持,是否可以运行时修补当前的 6 版本?

@bassebaba是的,你可以。 在根文件夹中是一个 public,其中包含一个目录 build。 在有一个文件app.<weird stamp>.js ,在那里搜索time_format ,然后你可以替换格式。

如果我在树莓上运行 grafana,您是否碰巧知道该目录(Raspbian GNU/Linux 8,Linux 版本 4.14.34-v7+(dc4@dc4-XPS13-9333)(gcc 版本 4.9.3(crosstool-NG crosstool- ng-1.22.0-88-g8460611)) #1110 SMP Mon Apr 16 15:18:51 BST 2018)?

是的,它是这样的路径: /usr/share/grafana/public/build/app.e16403019d0332233699.js可能是应用程序之间的部分。 而 .js 则不同。

谢谢! 顺便说一句,文件名是 app.469095018b321ef1da7c.js

我必须再次打扰你。 我找到了这个功能,我已经把它改成了

t.prototype.time_format=function(t,e,n){if(e&&n&&t){var a=ne,r=a/t/1e3;return r<=45?"%H:%M:%S": r<=7200||a<=86400010?"%H:%M":r<=8e4?"%d.%m %H:%M":r<=2419200||a<=31536e6?"% d.%m":"%m.%Y"}return"%H:%M"},t}();

但无济于事。 我也重新启动了服务器,它说

`● grafana-server.service - Grafana 实例
加载:加载(/usr/lib/systemd/system/grafana-server.service;启用)
Active:自 Di 2019-03-05 19:52:28 CET 开始活跃(运行); 3 分 39 秒前
文档: http :
主 PID: 1795 (grafana-server)
CGroup:/system.slice/grafana-server.service
└─1795 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packaging=...

Mär 05 19:52:28 FHEM grafana-server[1795]: t=2019-03-05T19:52:28+0100 lvl=info msg="Initializing HooksService" logger=server
Mär 05 19:52:28 FHEM grafana-server[1795]: t=2019-03-05T19:52:28+0100 lvl=info msg="Initializing InternalMetricsService" logger=server
Mär 05 19:52:28 FHEM grafana-server[1795]: t=2019-03-05T19:52:28+0100 lvl=info msg="Initializing CleanUpService" logger=server
Mär 05 19:52:28 FHEM grafana-server[1795]: t=2019-03-05T19:52:28+0100 lvl=info msg="Initializing NotificationService" logger=server
Mär 05 19:52:28 FHEM grafana-server[1795]: t=2019-03-05T19:52:28+0100 lvl=info msg="Initializing ProvisioningService" logger=server
Mär 05 19:52:28 FHEM grafana-server[1795]: t=2019-03-05T19:52:28+0100 lvl=info msg="Initializing PluginManager" logger=server
Mär 05 19:52:28 FHEM grafana-server[1795]: t=2019-03-05T19:52:28+0100 lvl=info msg="开始插件搜索" logger=plugins
Mär 05 19:52:29 FHEM grafana-server[1795]: t=2019-03-05T19:52:29+0100 lvl=info msg="Initializing TracingService" logger=server
Mär 05 19:52:29 FHEM grafana-server[1795]: t=2019-03-05T19:52:29+0100 lvl=info msg="初始化流管理器"
Mär 05 19:52:29 FHEM grafana-server[1795]: t=2019-03-05T19:52:29+0100 lvl=info msg="HTTP Server Listen" logger=http.server addr...socket=
提示:有些行被省略,使用 -l 显示完整。
`

这是屏幕截图
screenshot

@andreasloe你能找到另一个地方寻求你的具体帮助吗? 我仍然希望这张票可以像固定在 Grafana 一样被关闭。 谢谢 :-)

@andreasloe不确定。 也许你使用的版本比我旧。 但就像@marco-m 所说的,也许可以在 Stackoverflow 或 reddit 上提问。 有人肯定可以帮助你 :slightly_smiling_face:

Ping @torkelo @daniellee我意识到我之前已经对社区的疏忽提出了

请再看看现有的 PR 或更好的解决方案,并帮助我们。 我不是前端人员,但我可以贡献的任何内容请告诉我。

更准确地说,这个请求_how_重要的是我已经使用 GH api 对这个 repo 进行了快速统计检查:

2010 open issues, thereof
1163 feature requests
4938 comments on feature requests
126 comments on most commented feature requests

热门请求:

  • 第6557章(126条评论)
  • 第1959章(108评论)
  • 第6983章(104条评论)
  • 第3752章(84条评论)

这里的这个请求有 97(!) 条评论,因此排名第 4。 它在此列表中不可见,因为它没有标记为type/feature-request

如果我在不按标签过滤的情况下重新运行分析,它会显示在前 4 名中:

  • 第6557章(126条评论)
  • 第1959章(108评论)
  • 第6983章(104条评论)
  • 第1459章(97条评论)

这是否足以证明这个问题不是“小事”?

鉴于我们可以获得核心团队的支持以实际实施它,我很乐意提出一个提案,在此之前与 flot 合作过,它在基本版本中的外观。 更新:没有必要,因为公开 PR 已经有很大一部分。

是的,这太疯狂了。 我什至不定期更新 grafana,因为那时我必须弄清楚如何再次“破解”时间显示。
(我还在 v6 上:P)

我有一些松散的计划,可以在 Docker 映像中使用 bash 脚本自动执行它,然后我可以重建每个更新,但这只是修复此缺失功能的疯狂方法。

我现在正在查看https://github.com/grafana/grafana/pull/13429 。 我会尝试重新申请当前的主人。 它超出了我的舒适区,但看起来已经完成了。

除非核心团队达到他们排名第 4 的功能要求,否则这些都无济于事……

哇! 疯了吧!

我刚刚花了很长时间寻找一种方法来更改 grafana 设置中的 x 轴日期格式。 这是一个如此基本且需要的功能,我没有想到它可能尚未实现。

如果你能尽快提出来,我会很高兴:)

复制自#18659:

快速提醒一下 #13429 没有成功,因为只解决了月份格式。 ...
第一步应该是在#1459 上添加一条关于你的意图的评论,然后在 slack.grafana.com 上加入公共 slack。

@davcal从讨论中得知 #13429 没有成功是不透明的。 我确实评论说:

从陷入困境的用户的角度来看,我真的不在乎。 一个简单的表单可以将@torkelo建议的所有设置组合到一个下拉列表中,其中包含美国和选定国家/地区的合理默认值。 US 可能看起来像以下内容的串联版本:
...
按照@torkelo 的建议,这可能以配置 json 结尾。 任何不以 P 开头的都是默认格式。 下拉列表中的“自定义”条目将允许指定我自己的格式字符串,无论我是否需要构建外部 grafana UI,因为它确实是一项一次性任务,并且可以轻松地从那里完成附加默认值的 PR。

虽然经过完善的版本会很棒,但经过 4 年多的等待,我(可能还有大多数用户)会很高兴拥有任何东西。

因此,在做任何其他事情(例如编写设计文档)之前,我需要确信 Grafana 甚至对它感兴趣实际上是参与讨论并推进排名最高的功能请求之一:(

我也很沮丧。 明确地说,在使用 Grafana 进行可视化演示我们的服务堆栈时,我必须始终为询问日期格式的客户道歉,Grafana(否则非常棒)不知道并且无法配置为将时间戳显示为客户想要。 这破坏了所有首次演示,因为您总是必须解释为什么这种前端和非常明显的功能不起作用。 这是基本功能,它不起作用,因为它没有提供客户想要的东西。 请开始关注这个问题。

+1,真令人沮丧,我无法在 X 系列上获得国际日期格式。

我会很高兴并支持围绕格式映射的方法,并为流行的语言环境设置默认值。 不过,我们正在社区中寻找某人来承担这项工作。 我可以提供任何指导。

以下是所需工作的概述:

  • 您可以使用 #18659 作为起点,谢谢@andig
  • 指定具有各种时间分辨率格式的日期映射
  • 可能重写monthDayFormat以存储选定的映射
  • 添加逻辑以使用图形日期格式化程序中的映射
  • 在下拉列表中添加流行语言环境的映射
  • 在下拉列表中提供自定义选项以提供自己的映射
  • 添加围绕自定义映射的错误处理
  • 为映射验证编写测试
  • 更新文档

请与我联系或@torkelo我们的公共松弛,如果你想借此上。 在开始任何工作之前,请确保也在这里发帖。 另请参阅我们的贡献指南

很高兴看到这个动作!

指定具有各种时间分辨率格式的日期映射

我认为我们在这里可以做的是提出一个完整的日期格式列表。 但是,我们首先要明确参数。
当前代码依赖刻度长度和图表范围来选择格式。 原始浮点数仅使用刻度长度并检查长度是否低于固定间隔(分钟、日、月、年)。 如果我们想保持这种灵活性,那么我建议:

  • 使间隔可配置
  • 使用 ISO 表示法(Go 和 momentjs 都支持)
  • 检查间隔的刻度长度,如果低于间隔,您有您的格式
  • 应该有预先配置的语言环境和使用您自己的格式的能力

这将需要类似于https://github.com/grafana/grafana/pull/13429 中建议的映射表的内容

[
    ["PT1S", "HH:mm:ss.SSS"],
    ["PT1M", "HH:mm:ss"],
    ["P1DT", "MM/DD HH:mm"],
    ["P1MT", "MM/DD"]
    ["P1YT", "YY-MM"]
    ["", "YYYY"]
]

德国应该是这样的:

[
    ["PT1S", "HH:mm:ss.SSS"],
    ["PT1M", "HH:mm:ss"],
    ["P1DT", "DD.MM HH:mm"],
    ["P1MT", "DD.MM"]
    ["P1YT", "MM/YY"]
    ["", "YYYY"]
]

英国(假设)看起来像这样(12 小时制):

[
    ["PT1S", "hh:mm:ss.SSS"],
    ["PT1M", "hh:mm:ss"],
    ["P1DT", "DD/MM hh:mm"],
    ["P1MT", "DD/MM"]
    ["P1YT", "MM/YY"]
    ["", "YYYY"]
]

格式化可以来自配置文件或基于 UI。 对于基于 UI 的,为流行的语言环境(至少是美国)设置默认值并允许基于用户的自由文本配置可能是有意义的。 后者可能只是:

<duration literal> <momentjs format string>, repeat as needed

这个讨论有点疯狂。 它在公开场合展示了一些核心 grafana 开发人员与其一些用户之间的脱节。

作为欧洲用户(和开发人员但不是 grafana 开发人员),我当然喜欢这个功能。 我也知道 grafana(据我所知)主要是由人们在业余时间作为志愿者开发的,无论如何,所有开发项目都必须优先考虑。

也许愿意为实现此功能做出贡献的人可以表明自己的身份。 有人指出,grafana 开发人员在 slack 上进行通信,因此这可能是这样做的正确场所。 然后让这些人继续认识到所有项目都有程序,并且他们应该遵守这里的任何规定。

也许 Grafana 开发人员可能会将自己视为耐心的导师,以帮助这些人完成将这个功能引入 master 分支的任务。 我认为这只是发生在@davkal 身上。 (点赞。)

@杰夫亚伯拉罕森

作为欧洲用户(和开发人员但不是 grafana 开发人员),我当然喜欢这个功能。 我也知道 grafana(据我所知)主要是由人们在业余时间作为志愿者开发的,无论如何,所有开发项目都必须优先考虑。

确切地。 我对某些评论中的权利假设感到不安,忘记了 Grafana 是 _free_ 和 _open source_,正如我在https://github.com/grafana/grafana/issues/1459#issuecomment -469317707 上面提到的。

我只想再次感谢@davkal的尝试和慷慨。

如果我的评论引起了冒犯,我真诚地道歉。 我非常感谢所有人为这个项目所做的工作。

@andig - 如果这是一个很好的解决方案,您对英国日期格式的假设看起来很合理。

另一种选择,如果我可以这么大胆 - 并且不知道任何内部结构我不知道这是否是一个有效的建议,所以如果不是,请丢弃:图表样式页面上的一个简单框,允许用户粘贴 X 刻度的覆盖日期格式。 也许使用其他地方使用的常见字符串扩展格式,比如在 php 中; https://www.php.net/manual/en/function.date.php可以提供完整的自由格式解释并在每个图形的基础上适合所有用例,而不是对所有应用一种格式。 (例如,在使用中,我有时希望显示星期几而不是日期)

也许是:

覆盖 X 日期格式 [ ]

哪个,如果设置,将扩展令牌,如
%D %d, %M 到 9 月 12 日星期一

%D %G:%H 到周一 13:45

Meta:只是为了澄清 Grafana 的开发是由 Grafana Labs 的大约 25 名开发人员(包括我)领导的。 但是,如果您考虑软件的规模,人员规模非常小,如果没有社区的所有贡献,软件就不会那么有用。 我们对像这里这样的功能的挑战并不紧急但很重要,我们希望找到一种方法使社区能够开发该功能。 我们有很多重要的个人贡献的成功案例,我非常乐意指导您完成这个过程 ([email protected])。

图形样式页面上的一个简单框,允许用户粘贴 X 刻度的覆盖日期格式。

我不太喜欢,因为当在用户的组织中添加新的仪表板时,在整个系统中进行更改将是一个持续的负担。 到目前为止,我仍然提倡上述方法。

为透明起见:我尽可能地使用了 rebase,没有 a) 测试能力(请参阅 pr 了解遇到的问题)和 b) 深入的前端开发知识。 很抱歉,你必须把我排除在外。

+1,我们更喜欢 MMDD 格式以外的任何格式:)

如何自定义绘图系列中的日期时间格式? 说删除时间,或更改日期格式,或添加秒?

+1

使用 Grafana 6.7.1 以上修复对我不起作用但是:

bash -c "find /usr/share/grafana/public -type f -exec sed -i 's@%m/%d@%d/% m@g ' {} +"

注意,我在 docker 容器中运行它,否则我不建议在不先备份 /usr/share/grafana/public 中的文件的情况下运行它。

但它对我有用。

要覆盖 docker-compose 中的默认入口点:
入口点:bash -c "find /usr/share/grafana/public -type f -exec sed -i 's@%m/%d@%d/% m@g ' {} + && /run.sh "

谢谢,对于那些想要德语版本(1.4 而不是 1/4)的人,那么下面的?
bash -c "find /usr/share/grafana/public -type f -exec sed -i 's@%m/%d@%d.% m@g ' {} +"
或者我需要在点前面加一个特殊字符吗?

道歉,我不这样做,如果我找到解决方案,我会回来的,

使用 Grafana 6.7.1 以上修复对我不起作用但是:

bash -c "find /usr/share/grafana/public -type f -exec sed -i 's@%m/%d@%d/% m@g ' {} +"

注意,我在 docker 容器中运行它,否则我不建议在不先备份 /usr/share/grafana/public 中的文件的情况下运行它。

但它对我有用。

要覆盖 docker-compose 中的默认入口点:
入口点:bash -c "find /usr/share/grafana/public -type f -exec sed -i 's@%m/%d@%d/% m@g ' {} + && /run.sh "

是不是很好。 又一年过去了,Grafana 接近第 7 版,尽管本地化是排名第 4 的功能请求,但它被认为是“小事”,在这里我们正在破解二进制文件......

是的,我很想和产品负责人谈谈。 为什么此功能请求不在列表中更高? 高需求,可能,历史悠久,销售/可用性增加...... PO 还需要什么?

@davkal您能否按照https://github.com/grafana/grafana/issues/1459#issuecomment -523313533 将其标记为type/feature-request以便它至少显示在您的优先级中?

我是产品负责人之一,并列出了我的电子邮件和公众空闲时间作为联系方式。 没有人联系过我。

我们的贡献邀请仍然开放。 上面列出了步骤。 我们作为一个工程组织正在走向成熟,因此对于这项工作,想要从事此工作的一方应该开始一份设计文档。 请参阅此示例

我是产品负责人之一,并列出了我的电子邮件和公众空闲时间作为联系方式。 没有人联系过我。

@davkal我不知道如何反应,但你写的东西让我很难过:

不继续这个,另见 #13429

还有你怎么说:

没有人联系过我。

我不会说更多,但现在不觉得受到赞赏。

@andig当然感谢您的努力,并且您尝试推进该问题。 我的观点是,除了我们的讨论(上面在 2019 年 9 月的讨论)之外没有其他讨论。

再次澄清:图形格式的本地化很有意义,它在路线图上。 也许我们甚至可以在今年夏天实现它,但不要依赖我们,路线图可能会改变。 如果此功能将为您带来价值,请随时做出贡献并使其更快实现。

希望它很快就会出现,grafana 缺乏像这样的一些基本功能(使用用户设置格式化日期......)

看起来 stackdriver timeRange url 查询参数需要 ISO 8601 格式的时间而不是 unix 时间戳。 使用 ISO 格式化时间将解锁从面板到 stackdriver 的链接(使用当前时间)。 感谢所有的辛勤工作!

谁能为 Grafana 7 提供 SED/补丁解决方案? (m/d) -> (d/m)

小公关让事情变得更好。 https://github.com/grafana/grafana/pull/25602。
建议图形面板使用本地浏览器格式。

看起来一个选项即将推出,但对于那些正在寻找快速解决方案的人:

for i in /usr/share/grafana/public/build/*.js; do sudo sed -i 's@MM/DD@DD/MM<strong i="6">@g</strong>' "$i"; done

适用于 Grafana v7

+1,不敢相信这么琐碎的事情已经讨论了 5 年以上
Grafana 的企业用户是否也遇到同样的问题?

哈哈。 5年过去了。 这是耻辱。

请优先解决这个问题。 具有 mm/dd 格式的图形是如此无用。

我不关心让每个用户能够选择单独格式的完美解决方案,只要我能够避免暴露于这种可怕的日期格式异常,就可以对日期格式进行单一系统设置。

系统日期格式选项刚刚合并https://github.com/grafana/grafana/pull/27216

添加这些 ini 设置

[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/

# Default system date format used in time range picker and other places where full time is displayed
full_date = YYYY-MM-DD HH:mm:ss

# Used by graph and other places where we only show small intervals
interval_second = HH:mm:ss
interval_minute = HH:mm
interval_hour = MM/DD HH:mm
interval_day = MM/DD
interval_month = YYYY-MM
interval_year = YYYY

# Experimental feature
use_browser_locale = false

请测试并提供反馈。 计划在未来版本中为此添加组织级别设置。 use_browser_locale 仍有一些问题需要修复(检测 12 小时和 24 小时时间)。 first_day_of_week 选项也可以是一个很好的补充。

谢谢@torkelo非常感谢!

这是一个例子

Screenshot from 2020-09-08 20-02-21

配置:

[date_formats]
# Default date format
full_date = MMM Do, YYYY @ hh:mm:ss a
# Used by graph and other places where we only show small intervals
interval_second = hh:mm:ss a
interval_minute = hh:mm a
interval_hour = MMM DD hh:mm a
interval_day = MMM DD
interval_month = YYYY-MM
interval_year = YYYY

这是个好消息,非常感谢! 我重新启动了 grafana,但新格式没有出现。 我应该安装哪个版本 - 你能指点我一个解释这个的网站吗?

每晚构建或等待 7.2 测试版(很快)

每晚构建或等待 7.2 测试版(很快)

dockerhub 的master标签多久更新一次? 已经两天了,是否可以更频繁地触发它?

不错的@torkelo - 以下在grafana:7.3.5 docker 映像(docker-compose.yml 摘录)上运行良好:

version: '2.0'
services:
  grafana:
    image: grafana/grafana:7.3.5
    environment:
      - GF_DATE_FORMATS_INTERVAL_HOUR=DD/MM HH:mm
      - GF_DATE_FORMATS_INTERVAL_DAY=DD/MM

但是,在澳大利亚,在 Mac 上使用 Firefox,设置GF_DATE_FORMATS_USE_BROWSER_LOCALE=true对我不起作用 - 短日期格式仍为美国特定的 MM/DD 格式。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

sslupsky picture sslupsky  ·  3评论

SATHVIKRAJU picture SATHVIKRAJU  ·  3评论

ahmetkakici picture ahmetkakici  ·  3评论

royemmerich picture royemmerich  ·  3评论

ricardclau picture ricardclau  ·  3评论