天天看點

Java實作日程圖(Samples)功能

分享知識 傳遞快樂

示例圖:

Java實作日程圖(Samples)功能

第一步:建立一個HTML檔案,引入需要的檔案

建立一個HTML檔案,引入必要的檔案,需要的檔案是這兩個:

  • dhtmlxscheduler.js
  • dhtmlxscheduler.css

這兩個檔案在dhtmlxScheduler下的一個codebase檔案夾裡。

第二步:建立相關的DIV元素

在初始化日程表之前,你需要定義相關的div元素,來存放日程表,标準的div可以像下面這樣建立:

<span style="font-family:SimSun;font-size:18px;"><body onload="doOnLoad();">
<div id="scheduler_div" class="dhx_cal_container" style='width: 100%; height: 100%;'>
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button"> </div>
<div class="dhx_cal_next_button"> </div>
<div class="dhx_cal_today_button"></div>
<div class="dhx_cal_date"></div>
<div class="dhx_cal_tab" name="day_tab" style="right: 204px;"></div>
<div class="dhx_cal_tab" name="week_tab" style="right: 140px;"></div>
<div class="dhx_cal_tab" name="month_tab" style="right: 76px;"></div>
</div>
<div class="dhx_cal_header"></div>
<div class="dhx_cal_data"></div>
</div>
</body></span>      

第三步:樣式為日程表定義了以下樣式

<span style="font-family:SimSun;font-size:18px;"><style type="text/css" media="screen">  
    html, body{  
        margin:0px;  
        padding:0px;  
        height:100%;  
        overflow:hidden;  
    }     
</style>  </span>      

第四步:初始化并加載資料

完成上述準備後,接下來我們就要手動加載資料了,需要用如下的parse方法加載。

<span style="font-family:SimSun;font-size:18px;">function doOnLoad() {
scheduler.config.xml_date = "%Y-%m-%d %H:%i";
scheduler.init('scheduler_div', new Date(), "week");


var data= [{"id":"1","text":"AAA","start_date":"2016-08-20 10:04:22","end_date":"2016-08-20 10:04:27"},
{"id":"2","text":"BBB","start_date":"2016-08-22 10:04:23","end_date":"2016-08-23 10:04:27"},
{"id":"3","text":"CCC","start_date":"2016-08-22 10:04:24","end_date":"2016-08-23 10:04:27"}];


scheduler.parse(data, "json");
}
</span>      

一個資料對象的屬性如下:

  • id - (string,number) id編号
  • start_date - (string) 資料的開始時間,它的預設格式是:"%m/%d/%Y %H:%i"
  • end_date - (string) 事件開始的時間,它的預設格式是:"%m/%d/%Y %H:%i"
  • text - (string) 事件描述

以上是靜态加載資料。

第五步:先成功完成Samples(靜态加載資料)的操作步驟。

修改doOnLoad方法

<span style="font-family:SimSun;font-size:18px;">function doOnLoad() {
    scheduler.config.xml_date = "%Y-%m-%d %H:%i";
    scheduler.init('scheduler_here', new Date(), "week");
    scheduler.load("queryAllScheduler", "json");
}
</span>      

第六步建立資料庫

<span style="font-family:SimSun;font-size:18px;">CREATE TABLE `samples` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `start_date` datetime NOT NULL,
  `end_date` datetime NOT NULL,
  `text` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
)</span>      

第七步寫背景程式

這裡隻先寫一個controller類,其它類和方法就不再寫了。

<span style="font-family:SimSun;font-size:18px;">@Controller
@SuppressWarnings("all")
public class SchedulerController {


  @Resource
  private SchedulerService schedulerService;


  @RequestMapping(value = "goScheduler")
  public String goScheduler() {
    return "scheduler_index";
  }
  
  /**
   * 查詢清單
   * 
   * */
  @RequestMapping(value = "queryAllScheduler", produces = "application/json; charset=utf-8")
  @ResponseBody
  public Map queryAllScheduler(){
    List list = schedulerService.findAll();
    System.out.println("============="+list.size());
    
    Map<String,Object> map = new HashMap<String,Object>();
    map.put("data", list);
    return map;
  }


  /**
   * 添加
   * 
   * */
  @RequestMapping(value = "addScheduler", produces = "application/json; charset=utf-8")
  @ResponseBody
  public String addScheduler(Scheduler params) {
    System.out.println("=================="+params.toString());
    
    int result = schedulerService.add(params);
    String msg = result > 0 ? "添加成功" : "添加失敗";
    System.out.println(msg);
    return result > 0 ? "0" : "1";
  }
  
  /**
   * 更新
   * 
   * */
  @RequestMapping(value = "editScheduler", produces = "application/json; charset=utf-8")
  @ResponseBody
  public String editScheduler(Scheduler params) {
    System.out.println("=================="+params.toString());
    
    Scheduler scheduler = schedulerService.find(params.getId());
    scheduler.setText(params.getText());
    scheduler.setStart_date(params.getStart_date());
    scheduler.setEnd_date(params.getEnd_date());
    
    int result = schedulerService.edit(scheduler);
    String msg = result > 0 ? "更新成功" : "更新失敗";
    System.out.println(msg);
    return result > 0 ? "0" : "1";
  }
  
  /**
   * 删除
   * 
   * */
  @RequestMapping(value = "removeScheduler", produces = "application/json; charset=utf-8")
  @ResponseBody
  public String removeScheduler(Integer param) {
    System.out.println("=================="+param);
    
    int result = schedulerService.remove(param);
    String msg = result > 0 ? "删除成功" : "删除失敗";
    System.out.println(msg);
    return result > 0 ? "0" : "1";
  }


}</span>      

第八步完成Samples增删改功能

//儲存

<span style="font-family:SimSun;font-size:18px;">var convert = scheduler.date.date_to_str("%Y-%m-%d %H:%i");
  scheduler.attachEvent("onEventAdded", function(event_id, event_object) {
    var url = "addScheduler";
    var id = event_object.id;
    var text = event_object.text;
    // date 需要實作格式化
    var start_date = convert(event_object.start_date);
    var end_date = convert(event_object.end_date);
    var details = event_object.details;
    var str = start_date + "#" + end_date + "#" + text;
    $.ajax({
      type : "POST",
      url : url,
      data : {
        "text" : text,
        "start_date" : start_date,
        "end_date" : end_date
      },
      success : function(data) {
        if(data == 0){
          location.reload();
          //location=location;
        }else{
          alert("添加失敗");
        }
      }
    });
  });


  //删除
  scheduler.attachEvent("onBeforeEventDelete", function(event_id, event_object) {
    var url = "removeScheduler";
    var id = event_object.id;
    var text = event_object.text;
    $.ajax({
      type : "POST",
      url : url,
      dataType:"text",
      data:{"param":id},
      success : function(data) {
        if(data == 0){
          location.reload();
          //location=location;
        }else{
          alert("删除失敗");
        }
      }
    });
  });
  
  //修改事件
  scheduler.attachEvent("onEventChanged", function(event_id, event_object) {
    var url = "editScheduler";
    var id = event_object.id;
    var text = event_object.text;
    var start_date = convert(event_object.start_date);
    var end_date = convert(event_object.end_date);
    var details = event_object.details;
    var pars = "id=" + id + "&start_date=" + start_date + "&end_date="
        + end_date + "&text=" + text + "&details=" + details;


    var str = start_date + "#" + end_date + "#" + text + "#" + id;
    $.ajax({
      url : url,
      type : "POST",
      data : {
        "id" : id,
        "text" : text,
        "start_date" : start_date,
        "end_date" : end_date
      },
      success : function(data) {
        if(data == 0){
          location.reload();
          //location=location;
        }else{
          alert("更新失敗");
        }
      }
    });
  });</span>      

以上是所有功能。