SAPUI5:在PlanningCalendar中扩展和移动约会

时间:2016-07-04 08:42:27

标签: drag-and-drop sapui5 appointment

我与工人及其任务进行了规划,现在我需要通过轻松修改约会来改进它。我想知道是否可以进行一些拖放来移动任务并改变其持续时间?

我认为是,但我在互联网上找到的所有东西都不适合mvc应用程序。由于规划是在一个视图中,我只想在视图的控制器中完成我的工作。

编辑:在我的控制器中,我执行了以下代码:

onInit : function(){
        var oView = this.getView();

        //load jquery libraries for drag n drop
        jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-core");
        jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-widget");
        jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-mouse");
        jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-draggable");
        jQuery.sap.require("sap.ui.thirdparty.jqueryui.jquery-ui-droppable");

        //make the appointments drag n droppables
        var oAppointment = oView.byId("draggable");
        var idAppointment = oAppointment.getId();
        oAppointment.onAfterRendering = function(){
            $("#"+idAppointment).draggable({
                cancel:false
            })
        };
    }

draggable ID设置为我的CalendarAppointments,如下所示:

<appointments>
     <unified:CalendarAppointment
          id="draggable"
          startDate="{CustomModel>EarlSchedStartdate}"
          endDate="{CustomModel>EarlSchedFindate}"
          title="{CustomModel>Description}">

     </unified:CalendarAppointment>
 </appointments>

在一个只有一个按钮的单独项目中,它可以正常工作,但它不适用于我的计划约会。

1 个答案:

答案 0 :(得分:1)

我们通过扩展控件使得Drag和Drop与PlanningCalendar很好地协同工作。

IMO在控制器中执行这种DOM逻辑没有意义。

  

“Dom操作不应存在于控制器,服务或   除了指令“

之外的任何地方

AngularJS最佳实践,将指令替换为UI5的控件或组件

jQuery UI不支持触摸,因此无法在手机,平板电脑或触摸屏中使用,道路测试了许多替代Drag和Touch库,一些很酷的东西,大部分都是需要的东西,本机JS和标准的SAPUI5尽可能地控制事件处理,在需要的地方回退到jQuery。

在PlanningCalendar中 - 在约会的onAfterRendering中添加了一个事件委托,有条件地添加了像draggable和鼠标光标这样的元素样式,用于调整大小等。

在CalendarROW控件中添加了类似的事件代理,在PlanningCalendar中也很容易,他们设置了可放置区域并管理时间冲突等。

很多学习都在研究KendoUI Scheduler和Widjimo Events Calendar的来源,两者都与OData很好地配合。建议任何必须添加不在SAPUI5中的功能的人去查看这些和类似的UI库以获取灵感。

我对最终结果感到非常满意,与OData V2无缝地运行Batch,缺少一个ghost功能(sap.ui.dt.plugin.DragDrop中的一些代码为此,从未得到过添加它)和承诺通过控制器或回调等处理事件