时间表计划页面事件-Servicenow

时间表计划页面事件-Servicenow,servicenow,Servicenow,我开始使用servicenow,我对时间线和双击事件有一个问题 我配置了schedule页面和ScriptInclude(代码为伪代码): 日程安排页面 glideTimeline.setReadOnly(true); glideTimeline.showLeftPane(true); glideTimeline.registerEvent("getItems", "MyTimelineScriptInclude"); function doubleClickCustomFunction(e

我开始使用servicenow,我对时间线和双击事件有一个问题

我配置了schedule页面和ScriptInclude(代码为伪代码):

日程安排页面

glideTimeline.setReadOnly(true); glideTimeline.showLeftPane(true);
glideTimeline.registerEvent("getItems", "MyTimelineScriptInclude");


function doubleClickCustomFunction(evt) {
   try {
      alert('double click: ' + "evt: " + evt + ', target: ' + target );
      action.setRedirectURL( 'my_application.do?sys_id=' + target );
   catch (exception) {
      gs.log(exception);
   }
},
var MyTimelineScriptInclude = Class.create();
MyTimelineScriptInclude.prototype = Object.extendsObject(AbstractTimelineSchedulePage, {


   _getTickets: function(){
      tickets = foo();
      return tickets;
   }

   getItems: function() {
      try {

         var ticket_list = this._getTickets();

         for (var ticket in ticket_list) {
            this._representTicket(ticket_list[ticket].sys_id);
         }


      } catch(exception) {
         this._debugLog(exception, "getItemsException");
      }
   },


   _representTicket: function(sys_id) {

      // ticket Object;
      ticket_object = getTicket(sys_id);
      var timelineItem = new TimelineItem('my_application' , ticket_object.sys_id);
      _representSpans( timelineItem , ticket_object );
      this.add(timelineItem);


   },

   _representSpans: function( timelineItem , ticket_object ) {

         var timelineItemSpan1 = timelineItem.createTimelineSpan(''); // I'm not including any value into the span creator.
         timelineItemSpan1.setTimeSpan( ticket_object.startDateTime1.getNumericValue() , ticket_object.endDateTime1.getNumericValue() );
         timelineItemSpan1.setSpanText(ticket_object.spanText);
         timelineItemSpan1.setSpanColor(ticket_object.spanColor);
         timelineItemSpan1.setTooltip(ticket_object.spanTooltip);


         var timelineItemSpan2 = timelineItem.createTimelineSpan(''); // I'm not including any value into the span creator.
         timelineItemSpan2.setTimeSpan( ticket_object.startDateTime2.getNumericValue() , ticket_object.endDateTime2.getNumericValue() );
         timelineItemSpan2.setSpanText(ticket_object.spanText);
         timelineItemSpan2.setSpanColor(ticket_object.spanColor);
         timelineItemSpan2.setTooltip(ticket_object.spanTooltip);

         var timelineItemSpan3 = timelineItem.createTimelineSpan(''); // I'm not including any value into the span creator.
         timelineItemSpan3.setTimeSpan( ticket_object.startDateTime2.getNumericValue() , ticket_object.endDateTime2.getNumericValue() );
         timelineItemSpan3.setSpanText(ticket_object.spanText);
         timelineItemSpan3.setSpanColor(ticket_object.spanColor);
         timelineItemSpan3.setTooltip(ticket_object.spanTooltip);
   },
});
MyTimelineScriptInclude

glideTimeline.setReadOnly(true); glideTimeline.showLeftPane(true);
glideTimeline.registerEvent("getItems", "MyTimelineScriptInclude");


function doubleClickCustomFunction(evt) {
   try {
      alert('double click: ' + "evt: " + evt + ', target: ' + target );
      action.setRedirectURL( 'my_application.do?sys_id=' + target );
   catch (exception) {
      gs.log(exception);
   }
},
var MyTimelineScriptInclude = Class.create();
MyTimelineScriptInclude.prototype = Object.extendsObject(AbstractTimelineSchedulePage, {


   _getTickets: function(){
      tickets = foo();
      return tickets;
   }

   getItems: function() {
      try {

         var ticket_list = this._getTickets();

         for (var ticket in ticket_list) {
            this._representTicket(ticket_list[ticket].sys_id);
         }


      } catch(exception) {
         this._debugLog(exception, "getItemsException");
      }
   },


   _representTicket: function(sys_id) {

      // ticket Object;
      ticket_object = getTicket(sys_id);
      var timelineItem = new TimelineItem('my_application' , ticket_object.sys_id);
      _representSpans( timelineItem , ticket_object );
      this.add(timelineItem);


   },

   _representSpans: function( timelineItem , ticket_object ) {

         var timelineItemSpan1 = timelineItem.createTimelineSpan(''); // I'm not including any value into the span creator.
         timelineItemSpan1.setTimeSpan( ticket_object.startDateTime1.getNumericValue() , ticket_object.endDateTime1.getNumericValue() );
         timelineItemSpan1.setSpanText(ticket_object.spanText);
         timelineItemSpan1.setSpanColor(ticket_object.spanColor);
         timelineItemSpan1.setTooltip(ticket_object.spanTooltip);


         var timelineItemSpan2 = timelineItem.createTimelineSpan(''); // I'm not including any value into the span creator.
         timelineItemSpan2.setTimeSpan( ticket_object.startDateTime2.getNumericValue() , ticket_object.endDateTime2.getNumericValue() );
         timelineItemSpan2.setSpanText(ticket_object.spanText);
         timelineItemSpan2.setSpanColor(ticket_object.spanColor);
         timelineItemSpan2.setTooltip(ticket_object.spanTooltip);

         var timelineItemSpan3 = timelineItem.createTimelineSpan(''); // I'm not including any value into the span creator.
         timelineItemSpan3.setTimeSpan( ticket_object.startDateTime2.getNumericValue() , ticket_object.endDateTime2.getNumericValue() );
         timelineItemSpan3.setSpanText(ticket_object.spanText);
         timelineItemSpan3.setSpanColor(ticket_object.spanColor);
         timelineItemSpan3.setTooltip(ticket_object.spanTooltip);
   },
});
问题是,当我双击时间线行时,它会触发doubleClickCustomFunction,但是,它无法获取任何evt数据,因此,它不会执行重定向

致意

ServiceNow中的计划页面使用客户端脚本,因此如果doubleClickCustomFunction是计划页面客户端脚本的一部分,服务器端调用(action.setRedirect和gs.log)将失败

默认双击函数包含以下参数:event、this、strRecordSysID、strUserSysID 我没有使用自定义双击覆盖,因此我不确定这些参数是否自动可用。但是,脚本include中编写的其他自定义覆盖(如elementMoveX)就是这种情况

除此之外,如果window.event是客户端脚本的一部分,则可以尝试在函数中调用它

如何将“doubleClickCustomFunction”注册为事件处理程序(以及在何处)?