云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港服务器_全能虚拟主机_稳定性好

小七 141 0

大家好,

在我以前的博客中,我写了我使用集成卡的经历。

我提到了一个问题,有时会阻止约会显示在日历时间线中。

所以,今天我们将尝试深入研究ui5集成库(以及更高版本)代码本身的问题,大数据人工智能,看看我们是否能理解是什么导致了这样的行为,以及如何修复它。因为我不在乎"有意"的行为,所以我只是修补了一些东西来做我需要的事。

如果你对一些细节还感兴趣的话,让我们去调查和解决问题。

假设我们有一张日历卡和一些我们想在其中显示的约会

在正常情况下,它看起来是这样的:

如您所注意到的,淘客放单平台,所选日期不是今天(10月10日的日期有一个边界)

一些日期下面的橙色部分称为特殊日期,它是在我的信用卡扩展代码中计算出来的,所以当我们有某个特定日期的信用卡扩展代码时,我们会假设该日期至少有一个约会。

那么,如果我们选择今天并期望看到一些约会,大数据算法,会发生什么?

好吧,事实证明,由于某种原因,什么都没有显示:

怎么可能呢?

好吧,看起来在某些情况下,今天的预约(而且只有今天的预约)是没有提供的。

很显然,优惠券代理平台哪个好,这并不意味着它总是隐藏今天的预约,因为它显然是一个bug,很快就会被修复。

所以,一定有某种特定的条件会使预约消失。

说实话,在我找到解决方案后,我有点沮丧,因为我没有从一开始就明白它,但不管怎样,让我们看看如何找到它。

第一点也是最重要的一点和关键点-始终使用UI5诊断工具和控制树来了解UI5侧的情况。

所以,让我们看看我们的案例中涉及的控制:

好吧,它对我们说了什么?

就是那个家伙sap.ui.integration集成.卡片.日历内容我们当然希望看到

它里面有一些内容,我们对sap.f.PlanningCalendarInvented感兴趣,它扩展了sap.m.PlanningCalendar

PlanningCalendar似乎有一些内部表来处理行聚合,在我们的例子中,我们看到有一个sap.m。internal.PlanningCalendarRowListItem项目它充当我们行元素的容器,并扩展常规的sap.m.ColumnListItem.

负责显示约会的实际人员似乎正在计划calendarRowTimeline,它扩展了sap.ui.unified.CalendarRow.

此时我们假设我们需要sap.ui.unified。我想找到一些线索(我们是对的),但是让我们走很长的路。

让我们看看实际的代码。

第二点-确保您在诊断工具中切换调试源代码,或者只需将sap ui Debug=true添加到本地存储中,这样您就可以看到漂亮的代码-数据库.js浏览器开发工具中的源代码,而不是模糊的源代码(该开关强制ui5内核加载调试)来源)。

事实上,我们可以看到CalendarContent在

中有一个PlanningCalendarInboundRow,这里重要的是在行聚合中我们放置了一些sap.f.PlanningCalendarInboundRow(它扩展了sap.m.PlanningCalendarRow)。记住这个家伙,它最终会回到我们身边。

好吧,但下一步呢?

好吧,我们很快就会发现在sap.f.PlanningCalendarInVentad实现中没有什么有趣的东西,所以我们直接转到sap.m.PlanningCalendar

在那里我们当然可以找到一个证据,证明addRow函数按预期创建了一些PlanningCalendarRowListItem

定义也是:

好的,现在让我们看看这个计划时间表是什么?

原来它和它的渲染器一起在计划日历中声明:

而且它(渲染器)确实扩展了sap.ui.unified.CalendarRowRenderer

好的,最后让我们去看看发生了什么

我们要找的是renderapoints,它反过来调用renderSingleDayInterval函数。

这是我们可以猜到我们发现了什么:

所以,这里发生的是在我们得到一些预约之后,我们想根据一些函数的结果来调整渲染的开始和结束索引

但是我们要在哪里找到它呢?

好吧,我告诉过你要记住那个计划的家伙——他来了。

事实上,我们可以在那里找到这个函数:

一旦你看到(b今天)的表达式,你几乎肯定会喊"宾果!"

这是我在解决方案中使用的1.82.1版本中实现的链接。

从我们所能理解的情况来看,这个想法是,对于当前日期,它试图计算"即将到来的"约会(IneArestAppointIndex),如果没有,它确保什么都没有提供。

我不能说什么会要求这种行为前几天总是显示所有的约会,但你可以清楚地看到他们正是出于这个原因延长了常规的sap.m.planningcalendar行。

我实际上认为仍然存在一个bug,因为当至少有一个即将到来的(更准确地说是未完成的)约会时,今天的约会仍然从索引0开始显示,而我可能希望它"隐藏"它们。

不管怎样,我们现在已经找到了我们想要的一切,让我们修复它。

但是我们将如何更改SAP提供的源框架代码?

好吧,是JavaScript,宝贝!

这意味着我们可以让我们的代码在飞行中覆盖某个对象的原型!是不是太棒了?!

因此,淘客放单,在我的例子中,我发现CardExtension是最适合修补该实现以满足我的需要的地方:

你也可以注意到我重写了getMoreButton实现,因为最初的作者懒得在那里包含i18n内容。

你也可以在我以前的博客中阅读更多关于AppMgr的内容。

等等,我们可以请注意,这是按预期工作的:

同样,这里有一些关键要点(实际上非常明显):