Commit 034e7d91 by liangkaiping

copy

parent ff2cdf72
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud-job</artifactId>
<groupId>com.fulan.job</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.fulan.job</groupId>
<artifactId>cloud-job-api</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-common-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.fulan.application.job.domain;
import lombok.Data;
/**
* 创建Job实体类
* @author yinyuyan 2018/06/06
*
*/
@Data
public class VmyJob {
/**
* 任务分组
*/
private String group;
/**
* 任务名称
*/
private String jobName;
/**
* 任务job的class名
*/
private String jobClassName;
/**
* 秒
*/
private String second="0";
/**
* 分
*/
private String minute="*";
/**
* 时
*/
private String hour="*";
/**
* 天
*/
private String day="*";
/**
* 月
*/
private String month="*";
/**
* 星期
*/
private String week="?";
/**
* 年
*/
private String year="2099";
}
package com.fulan.application.job.remote;
import com.fulan.application.job.domain.VmyJob;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(value = "job", contextId = "JobClient")
public interface JobClient {
/**
* 新增任务
*
* @param job
* @throws Exception
*/
@RequestMapping(value = "/remote/job/insert", method = RequestMethod.POST)
void insert(@RequestBody VmyJob job) throws Exception;
/**
* 修改任务
*
* @param job
* @throws Exception
*/
@RequestMapping(value = "/remote/job/update", method = RequestMethod.POST)
void update(@RequestBody VmyJob job) throws Exception;
/**
* 删除任务
*
* @param jobKey
* @throws Exception
*/
@RequestMapping(value = "/remote/job/delete", method = RequestMethod.POST)
void delete(@RequestParam("jobKey") String jobKey) throws Exception;
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cloud-job</artifactId>
<groupId>com.fulan.job</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.fulan.job</groupId>
<artifactId>cloud-job-service</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-common-service</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>${quartz.version}</version>
</dependency>
<dependency>
<groupId>com.fulan.job</groupId>
<artifactId>cloud-job-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.fulan.site</groupId>
<artifactId>cloud-site-api</artifactId>
</dependency>
<!-- 专辑api 依赖 -->
<dependency>
<groupId>com.fulan.album</groupId>
<artifactId>cloud-album-api</artifactId>
</dependency>
<!-- 本地依赖 -->
<!-- 课程api 依赖 -->
<dependency>
<groupId>com.fulan.course</groupId>
<artifactId>cloud-course-api</artifactId>
</dependency>
<!-- 报表 -->
<dependency>
<groupId>com.fulan.statistics</groupId>
<artifactId>cloud-statistics-api</artifactId>
</dependency>
<!-- 培训项目api 依赖 -->
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-training-project-api</artifactId>
</dependency>
<!-- 签到api 依赖 -->
<dependency>
<groupId>com.fulan.sign</groupId>
<artifactId>cloud-sign-api</artifactId>
</dependency>
<!-- 学习日志api 依赖 -->
<dependency>
<groupId>com.fulan.studyLog</groupId>
<artifactId>cloud-course-studyLog-api</artifactId>
</dependency>
<!-- 积分api 依赖 -->
<dependency>
<groupId>com.fulan.point</groupId>
<artifactId>cloud-point-api</artifactId>
</dependency>
<!-- 考试api 依赖 -->
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-exam-api</artifactId>
</dependency>
<!-- 调研api 依赖 -->
<dependency>
<groupId>com.fulan.research</groupId>
<artifactId>cloud-research-api</artifactId>
</dependency>
<!--微信服务依赖-->
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-wechat-api</artifactId>
</dependency>
<!-- 案例api 依赖 -->
<dependency>
<groupId>com.fulan.caselibrary</groupId>
<artifactId>library-api</artifactId>
</dependency>
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-system-api</artifactId>
</dependency>
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-newMessage-api</artifactId>
</dependency>
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-aliyun-api</artifactId>
</dependency>
<dependency>
<groupId>com.fulan</groupId>
<artifactId>cloud-suyinbean-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.2</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-jaxrpc</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis-saaj</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- deploy 时跳过该模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.fulan.application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.fulan"})
public class JobApplication {
public static void main(String[] args) {
new SpringApplication(JobApplication.class).run(args);
}
}
package com.fulan.application.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
import org.springframework.web.context.request.async.DeferredResult;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter{
/**
* 这个地方要重新注入一下资源文件,不然不会注入资源的,也没有注入requestHandlerMappping,相当于xml配置的
* <!--swagger资源配置-->
* <mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
* <mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>
* 不知道为什么,这也是spring boot的一个缺点(菜鸟觉得的)
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
}
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.fulan.application"))
.build()
.genericModelSubstitutes(DeferredResult.class)
.genericModelSubstitutes(ResponseEntity.class)
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("任务调度的服务")
.version("1.0")//版本
.build();
}
}
package com.fulan.application.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/templates/**")
.addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/templates/");
registry.addResourceHandler("/static/**")
.addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/");
super.addResourceHandlers(registry);
}
}
/**
*
*/
package com.fulan.application.constant;
/**
* 任务有关错误
*
* @author scotthu
*
* @date 2018年1月24日
*/
public interface JobError {
final String TASK_EXIST = "TASK_EXIST";
final String TASK_EXIST_MSG = "同名任务已存在";
final String CRON_ERROR = "TASK_EXIST";
final String CRON_ERROR_MSG = "cron表达式错误";
final String JOB_CLASS_NOT_FOUND = "JOB_CLASS_NOT_FOUND";
final String JOB_CLASS_NOT_FOUND_MSG = "任务类不存在";
final String SCHEDULE_ERROR = "TASK_EXIST";
final String SCHEDULE_ERROR_MSG = "任务调度错误";
}
package com.fulan.application.controller;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/admin")
public class AdminController {
private static Logger logger = LoggerFactory.getLogger(AdminController.class);
@RequestMapping("/index")
public String main(HttpServletRequest request) {
logger.info("index");
return "index";
}
}
package com.fulan.application.controller.remote;
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import java.io.IOException;
import java.util.List;
import javax.annotation.Resource;
import org.quartz.CronExpression;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.fulan.application.constant.JobError;
import com.fulan.application.exception.BizException;
import com.fulan.application.handle.quartz.QuartzConfigration;
import com.fulan.application.job.domain.VmyJob;
import com.fulan.application.util.constant.ReturnCode;
import com.fulan.application.util.domain.Response;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.Extension;
import io.swagger.annotations.ExtensionProperty;
@RestController
@RequestMapping("/remote/job")
public class RemoteQuartzController {
@Resource
private Scheduler scheduler;
@Autowired
private QuartzConfigration quartzConfigration;
private static Logger logger = LoggerFactory.getLogger(RemoteQuartzController.class);
/**
* 添加任务的处理
*/
@ApiOperation(value = "定时任务新增", notes = "新增定时任务",
extensions = {
@Extension( name = ReturnCode.API_SUB_FLAG, properties = {
@ExtensionProperty(name = JobError.TASK_EXIST, value = JobError.TASK_EXIST_MSG),
@ExtensionProperty(name = JobError.CRON_ERROR, value = JobError.CRON_ERROR_MSG),
@ExtensionProperty(name = JobError.JOB_CLASS_NOT_FOUND, value = JobError.JOB_CLASS_NOT_FOUND_MSG),
})
}
)
@PostMapping(value = "/insert")
public void insert(@RequestBody VmyJob job) throws SchedulerException, IOException {
// 验证任务是否存在
boolean flag = scheduler.checkExists(JobKey.jobKey(job.getJobName(), job.getGroup()));
if (flag) {
throw new BizException(JobError.TASK_EXIST,JobError.TASK_EXIST_MSG);
}
Trigger trigger = null;
String cronExpression = String.format("%s %s %s %s %s %s %s",
job.getSecond(), job.getMinute(), job.getHour(), job.getDay(), job.getMonth(), job.getWeek(), job.getYear());
boolean isValid = CronExpression.isValidExpression(cronExpression);
if (!isValid) {
throw new BizException(JobError.CRON_ERROR,JobError.CRON_ERROR_MSG);
}
try {
trigger = newTrigger().withIdentity(job.getJobName(), job.getGroup()).withSchedule(cronSchedule(cronExpression).withMisfireHandlingInstructionFireAndProceed()).build();
} catch (Exception e) {
logger.error("addJob:", e);
throw new BizException(ReturnCode.SERVICE_UNAVAILABLE.getCode(),ReturnCode.SERVICE_UNAVAILABLE.getMsg());
}
@SuppressWarnings("rawtypes")
Class jobClass = null;
try {
jobClass = Class.forName(job.getJobClassName());
} catch (ClassNotFoundException e1) {
logger.error("addJob:", e1);
}
if (jobClass == null) {
throw new BizException(JobError.JOB_CLASS_NOT_FOUND,JobError.JOB_CLASS_NOT_FOUND_MSG);
}
JobDetail jobDetail = newJob(jobClass).withIdentity(job.getJobName(), job.getGroup()).build();
scheduler.scheduleJob(jobDetail, trigger);
// 启动
if (!scheduler.isShutdown()) {
scheduler.start();
}
}
/**
* 修改处理
*/
@ApiOperation(value = "定时任务修改", notes = "修改定时任务",
extensions = {
@Extension( name = ReturnCode.API_SUB_FLAG, properties = {
@ExtensionProperty(name = JobError.CRON_ERROR, value = JobError.CRON_ERROR_MSG),
@ExtensionProperty(name = JobError.SCHEDULE_ERROR, value = JobError.SCHEDULE_ERROR_MSG),
})
}
)
@PostMapping(value = "/update")
public void update(@RequestBody VmyJob job)throws SchedulerException {
String jobName=job.getJobName();
String group=job.getGroup();
List<? extends Trigger> triggers = scheduler.getTriggersOfJob(JobKey.jobKey(jobName, group));
jobName = triggers.get(0).getKey().getName();
group = triggers.get(0).getKey().getGroup();
Trigger trigger = null;
String cronExpression = String.format("%s %s %s %s %s %s",
job.getSecond(), job.getMinute(), job.getHour(), job.getDay(), job.getMonth(), job.getWeek(), job.getYear());
boolean isValid = CronExpression.isValidExpression(cronExpression);
if (!isValid) {
new BizException(JobError.CRON_ERROR,JobError.CRON_ERROR_MSG);
}
try {
trigger = newTrigger().withIdentity(jobName, group).withSchedule(cronSchedule(cronExpression).withMisfireHandlingInstructionFireAndProceed()).build();
} catch (Exception e) {
logger.error("newTrigger Exception",e);
new BizException(JobError.SCHEDULE_ERROR,JobError.SCHEDULE_ERROR_MSG);
}
scheduler.rescheduleJob(trigger.getKey(), trigger);
}
/**
* 删除TASK
*/
@ApiOperation(value = "定时任务删除", notes = "删除定时任务", response = Response.class)
@PostMapping(value = "/delete")
public void delete(
@ApiParam(name = "jobKey", value = "任务key,即任务组group+'.'+任务job名",required = true) @RequestParam(value = "jobKey",required = true) String jobKey) throws SchedulerException {
jobKey = jobKey.trim();
String group = jobKey.substring(0, jobKey.indexOf("."));
String jobName = jobKey.substring(jobKey.indexOf(".")+1);
scheduler.deleteJob(JobKey.jobKey(jobName, group));
}
}
package com.fulan.application.handle.quartz;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public interface BaseJob extends Job{
@Override
void execute(JobExecutionContext context) throws JobExecutionException;
}
/**
* FileName: MyJobFactory
* Author: wenjunlong
* Date: 2018/6/4 15:09
* Description: spring 自动注入
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.fulan.application.handle.quartz;
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;
import org.springframework.stereotype.Component;
/**
* 〈一句话功能简述〉<br>
* 〈spring 自动注入〉
*
* @author wenjunlong
* @create 2018/6/4
* @since 1.0.0
*/
@Component
public class MyJobFactory extends AdaptableJobFactory {
@Autowired
private AutowireCapableBeanFactory capableBeanFactory;
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
// 调用父类的方法
Object jobInstance = super.createJobInstance(bundle);
// 进行注入
capableBeanFactory.autowireBean(jobInstance);
return jobInstance;
}
}
\ No newline at end of file
package com.fulan.application.handle.quartz;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import com.fulan.application.util.file.FileUtils;
/**
* Quartz配置类
*/
@Configuration
@EnableScheduling
public class QuartzConfigration {
private static Logger logger = LoggerFactory.getLogger(QuartzConfigration.class);
public static final String PACKAGE_BASE = "com.fulan.application.handle.quartz.job";
// public static final String JOB_GROUP = "group";
// public static final String TIGGERNAME = "tigger";
private Map<String, List<String>> jobClassesMap = new HashMap<String, List<String>>();
@Value("${spring.datasource.url}")
private String qzDS_URL;
@Value("${spring.datasource.username}")
private String qzDS_user;
@Value("${spring.datasource.password}")
private String qzDS_password;
@Autowired
private MyJobFactory myJobFactory;
/**
* 定义quartz调度工厂
*/
@Bean(name = "scheduler")
public SchedulerFactoryBean schedulerFactory() {
SchedulerFactoryBean schedulerFactory = null;
try {
schedulerFactory = new SchedulerFactoryBean();
schedulerFactory.setJobFactory(myJobFactory);
schedulerFactory.setQuartzProperties(quartzProperties());
schedulerFactory.afterPropertiesSet();
// 用于quartz集群,QuartzScheduler 启动时更新己存在的Job
schedulerFactory.setOverwriteExistingJobs(true);
schedulerFactory.setStartupDelay(1);
if (jobClassesMap == null) {
jobClassesMap = new HashMap<String, List<String>>();
}
getAllJobClasses();
// initJobs(schedulerFactory);
} catch (Exception e) {
logger.error("schedulerFactory", e);
}
return schedulerFactory;
}
/**
* 初始化任务
*/
public void initJobs(SchedulerFactoryBean schedulerFactory) throws SchedulerException, ClassNotFoundException {
// Scheduler sched = schedulerFactory.getScheduler();
// schedulerFactory.setJobFactory(myJobFactory);
// TriggerKey triggerKey = TriggerKey.triggerKey("OneScheduleJobImpl",
// "trigger1");
}
/**
* 从配置文件中获取数据源配置信息
*/
@Bean
public Properties quartzProperties() throws IOException {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
propertiesFactoryBean.setSingleton(false);
Properties db = propertiesFactoryBean.getObject();
db.setProperty("org.quartz.dataSource.qzDS.URL", qzDS_URL);
db.setProperty("org.quartz.dataSource.qzDS.user", qzDS_user);
db.setProperty("org.quartz.dataSource.qzDS.password", qzDS_password);
return db;
}
/***
* 获取任务类 com.handle.quartz.job
*/
private void getAllJobClasses() {
List<String> classesList = new ArrayList<String>();
List<Class<?>> classs = FileUtils.getClasses(PACKAGE_BASE);
logger.info("classs:" + classs);
if (classs != null && classs.size() > 0) {
for (Class<?> class1 : classs) {
classesList.add(class1.getName());
}
}
logger.info("classesList:" + classesList);
if (classesList.size() > 0) {
jobClassesMap.put(PACKAGE_BASE, classesList);
}
logger.info("jobClassesMap:" + jobClassesMap);
}
public Map<String, List<String>> getJobClassesMap() {
return jobClassesMap;
}
public void setJobClassesMap(Map<String, List<String>> jobClassesMap) {
this.jobClassesMap = jobClassesMap;
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.feign.AliyunClient;
import com.fulan.application.handle.quartz.BaseJob;
import lombok.extern.log4j.Log4j2;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 媒体转码
*/
@Log4j2
public class AddMediaTranscodeJob implements BaseJob, InterruptableJob {
@Autowired
private AliyunClient aliyunClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
log.info("-------------------------开始 处理媒体转码-----------------------------");
aliyunClient.dealFinishedTranscoding();
log.info("-------------------------结束 处理媒体转码-----------------------------");
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.application.feign.AlbumJobHandleClient;
import com.fulan.application.handle.quartz.BaseJob;
public class AlbumUnLockJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(AlbumUnLockJob.class);
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Autowired
private AlbumJobHandleClient albumJobHandleClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LOG.info("定时任务开始执行解锁课程,当前时间:" + format.format(new Date()));
try {
albumJobHandleClient.unLockCourse();
} catch (Exception e) {
LOG.error("解锁课程失败=====================",e);
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.feign.BannerManageFeignClients;
import com.fulan.application.handle.quartz.BaseJob;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* @author lilingye
* @create 2018-9-5 14:48:16
* @since 1.0.0
*/
public class BannerUpJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(BannerUpJob.class);
// @Autowired
// SystemMessageClient messageClient;
@Autowired
BannerManageFeignClients bannerManageFeignClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
Long id=Long.parseLong(context.getTrigger().getJobKey().getName());
LOG.info("执行banner上架的操作:"+id);
try {
bannerManageFeignClient.upBanner(id);
} catch (Exception e) {
LOG.error("=====================",e);
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.api.feign.StatisticStudentCaseClient;
import com.fulan.application.feign.CourseReportClient;
import com.fulan.application.feign.StatisticsCourseClient;
import com.fulan.application.handle.quartz.BaseJob;
public class CourseIntoTableJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(CourseIntoTableJob.class);
@Autowired
private CourseReportClient courseReportClient;
@Autowired
private StatisticsCourseClient statisticsCourseClient;
@Autowired
private StatisticStudentCaseClient statisticStudentCaseClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
try {
LOG.info("在线课程自动入表任务,启动");
//courseReportClient.AsynchronousCourse(null,null);
statisticsCourseClient.AsynchronousCourse(null, null);
LOG.info("在线课程自动入表任务,完毕");
} catch (Exception e) {
LOG.info("在线课程自动入表任务,异常");
e.printStackTrace();
}
try {
LOG.info("学员案例自动入表任务,启动");
statisticStudentCaseClient.insertAll();
LOG.info("学员案例自动入表任务,完毕");
} catch (Exception e) {
LOG.info("学员案例自动入表任务,完毕");
e.printStackTrace();
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.feign.CourseClient;
import com.fulan.application.feign.InformationManageFeignClients;
import com.fulan.application.handle.quartz.BaseJob;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 授权到期下架 失效
* @since 2018-9-19 16:38:24
* @author lilingye
*/
public class CourseInvalidJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(BannerUpJob.class);
@Autowired
CourseClient courseClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
Long id=Long.parseLong(context.getTrigger().getJobKey().getName());
LOG.info("执行授权课程的下架和失效的操作:"+id);
try {
courseClient.invalidCourse(id);
} catch (Exception e) {
LOG.error("=====================",e);
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.feign.CourseStudyHourRankingClient;
import com.fulan.application.handle.quartz.BaseJob;
import com.fulan.application.system.remote.SiteClient;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* 课程学习时长排名处理
* <br> 第二步骤START_TIME 时间初始化为0,表示job不会触发,等功能实现完需要填写开始启动的时间戳
* <br> 如果需要在job的corn之前再次启动可以修改第二步的NEXT_FIRE_TIME 字段为下次启动的时间戳
*
*/
public class CourseStudyHourRankingJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(CourseStudyHourRankingJob.class);
//feature_867_xiehaijun
@Autowired
private CourseStudyHourRankingClient courseStudyHourRankingClient;
@Autowired
private SiteClient siteClient;
// 参考http://www.ibloger.net/article/2650.html
// 1 在QRTZ_JOB_DETAILS 配置 job执行的处理类,实现 implements BaseJob, InterruptableJob
//SCHED_NAME JOB_NAME JOB_GROUP DESCRIPTION JOB_CLASS_NAME IS_DURABLE IS_NONCONCURRENT IS_UPDATE_DATA REQUESTS_RECOVERY
//scheduler studyHourRanking course 课程学习时间排名 Job定义 com.fulan.application.handle.quartz.job.CourseStudyHourRankingJob 0 0 0 0
// 2 在QRTZ_TRIGGERS(存储已配置的 Trigger 的信息)表添加触发时间点(每次执行完批处理后,根据QRTZ_CRON_TRIGGERS表配置的cron表达式生成新的下一个执行时间)
// NEXT_FIRE_TIME(下次执行时间戳例如1566282600000)和NEXT_FIRE_TIME设置为0;为0表示初始化,这些字段在下个job启动完会更新
// NEXT_FIRE_TIME的更新:在暂停、恢复任务状态或是每次时间轮询时都会判断NEXT_FIRE_TIME值是否小于当前时间,如果小于当前时间将永远不会执行
//SCHED_NAME TRIGGER_NAME TRIGGER_GROUP JOB_NAME JOB_GROUP DESCRIPTION NEXT_FIRE_TIME PREV_FIRE_TIME PRIORITY TRIGGER_STATE TRIGGER_TYPE START_TIME END_TIME CALENDAR_NAME MISFIRE_INSTR
//scheduler studyHourRankingTrig courseTrig studyHourRanking course 课程学习时间排名触发器 0 0 null WAITING CRON 填写开始启动时间戳 0 null null
// 3 在QRTZ_CRON_TRIGGERS 表配置cron表达式
//SCHED_NAME TRIGGER_NAME TRIGGER_GROUP CRON_EXPRESSION TIME_ZONE_ID
//scheduler studyHourRankingTrig courseTrig 0 0 4 * * ? Asia/Shanghai
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LOG.info("######################################################课程学习时长排名生成处理开始");
List<Long> siteIds = siteClient.getAllSiteId();
for(Long id : siteIds){
LOG.info("站点{}开始生成站点排名......",id);
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
LOG.info("等待发生一次{}", e);
}
courseStudyHourRankingClient.rankingGenerated(id);
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import cn.hutool.core.date.DateUtil;
import com.fulan.application.feign.RemoteDaIndicatorCourseClient;
import com.fulan.application.feign.RemoteDaIndicatorTpClient;
import com.fulan.application.handle.quartz.BaseJob;
import com.fulan.application.system.remote.RemoteDaIndicatorSystemClient;
import com.fulan.application.system.remote.SiteClient;
import com.fulan.application.vo.RemoteDaIndicatorVo;
import org.apache.commons.collections.CollectionUtils;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
import java.util.List;
/**
* 首页dashboard指标job
*/
public class DashboardJob implements BaseJob, InterruptableJob {
private static final Logger log = LoggerFactory.getLogger(DashboardJob.class);
@Autowired
private RemoteDaIndicatorSystemClient systemClient;
@Autowired
private RemoteDaIndicatorCourseClient courseClient;
@Autowired
private RemoteDaIndicatorTpClient tpClient;
@Autowired
private SiteClient siteClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
List<Long> allSiteIds = siteClient.getAllSiteId();
if (CollectionUtils.isEmpty(allSiteIds)) {
log.info("-------------------- dashboard 未查询到站点列表,结束执行 ----------------------");
return;
}
Date now = new Date();
Date yesterday = DateUtil.offsetDay(now, -1).toJdkDate();
Date endOfWeek = DateUtil.beginOfDay(DateUtil.endOfWeek(yesterday)).toJdkDate();
Date startOfWeek = DateUtil.beginOfDay(DateUtil.beginOfWeek(yesterday)).toJdkDate();
allSiteIds.forEach(siteId -> {
try {
log.info("-------------------- dashboard 折线图 开始处理 site_id: {} ----------------------", siteId);
systemClient.accountDay(new RemoteDaIndicatorVo(siteId, null, null, yesterday, now));
log.info("-------------------- dashboard 折线图 处理完成 site_id: {} ----------------------", siteId);
} catch (Exception e) {
e.printStackTrace();
}
// 如果是最后一天,则统计dashboard4个指标
if (DateUtil.isSameDay(yesterday, endOfWeek)) {
try {
log.info("-------------------- dashboard 活跃用户比例 开始处理 site_id: {} ----------------------", siteId);
systemClient.account(new RemoteDaIndicatorVo(siteId, startOfWeek, endOfWeek, null, now));
log.info("-------------------- dashboard 活跃用户比例 处理完成 site_id: {} ----------------------", siteId);
} catch (Exception e) {
e.printStackTrace();
}
try {
log.info("-------------------- dashboard 课程完成数 开始处理 site_id: {} ----------------------", siteId);
courseClient.courseFinish(new RemoteDaIndicatorVo(siteId, startOfWeek, endOfWeek, null, now));
log.info("-------------------- dashboard 课程完成数 处理完成 site_id: {} ----------------------", siteId);
} catch (Exception e) {
e.printStackTrace();
}
try {
log.info("-------------------- dashboard 课程学习时长 开始处理 site_id: {} ----------------------", siteId);
courseClient.courseTime(new RemoteDaIndicatorVo(siteId, startOfWeek, endOfWeek, null, now));
log.info("-------------------- dashboard 课程学习时长 处理完成 site_id: {} ----------------------", siteId);
} catch (Exception e) {
e.printStackTrace();
}
try {
log.info("-------------------- dashboard 项目通过率 开始处理 site_id: {} ----------------------", siteId);
tpClient.tpFinish(new RemoteDaIndicatorVo(siteId, startOfWeek, endOfWeek, null, now));
log.info("-------------------- dashboard 项目通过率 处理完成 site_id: {} ----------------------", siteId);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
//package com.fulan.application.handle.quartz.job;
//
//import org.quartz.InterruptableJob;
//import org.quartz.JobExecutionContext;
//import org.quartz.JobExecutionException;
//import org.quartz.JobKey;
//import org.quartz.UnableToInterruptJobException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import com.fulan.application.handle.quartz.BaseJob;
//import com.fulan.application.util.spring.JobUtil;
//
///**
// * 数据下发任务
// *
// * @author c_liziqing
// */
//public class DataInputJob implements BaseJob, InterruptableJob {
//
// private final Logger logger = LoggerFactory.getLogger(DataInputJob.class);
//
// private boolean _interrupted = false;
//
// private JobKey jobKey = null;
//
// @Override
// public void execute(JobExecutionContext context) throws JobExecutionException {
// logger.info("定时任务YxImgUploadJobImpl------>开始");
// jobKey = context.getJobDetail().getKey();
// // 执行job服务地址
// if (context.getMergedJobDataMap().get("host") != null) {
// String execJobHost = (String) context.getMergedJobDataMap().get("host");
// if (!"".equals(execJobHost) && !JobUtil.isCurrentServer(execJobHost)) {
// logger.info("当前服务不能执行任务!");
// return;
// }
// }
// try {
// if (_interrupted) {
// logger.info("被外界因素停止了这个任务key: " + jobKey + "");
// return;
// }
//
// } catch (Exception e) {
// JobExecutionException exception = new JobExecutionException(e);
// exception.setUnscheduleAllTriggers(true);
// logger.error("job定时任务异常:", exception);
// }
//
// }
//
// @Override
// public void interrupt() throws UnableToInterruptJobException {
// logger.info("外界正在调用调度器停止这个任务key: " + jobKey);
// _interrupted = true;
// }
//
//}
package com.fulan.application.handle.quartz.job;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.api.feign.StatisticsExamMetadataClient;
import com.fulan.application.handle.quartz.BaseJob;
public class ExamInToTableJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(ExamInToTableJob.class);
@Autowired
private StatisticsExamMetadataClient statisticsExamMetadataClient;
@Override
public void interrupt() throws UnableToInterruptJobException {
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
try {
LOG.info("考试报表自动入表任务,启动");
statisticsExamMetadataClient.AsynchronousExam("", "");
LOG.info("考试报表自动入表任务,完毕");
} catch (Exception e) {
// TODO Auto-generated catch block
LOG.info("考试报表自动入表任务,异常");
e.printStackTrace();
}
}
}
/**
* FileName: HttpSetjob
* Author: wenjunlong
* Date: 2018/5/26 13:59
* Description: 发送请求job
* History:
* <author> <time> <version> <desc>
* 作者姓名 修改时间 版本号 描述
*/
package com.fulan.application.handle.quartz.job;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.api.feign.ExamQuestionApiClient;
import com.fulan.api.vo.exam.ExamAnswerVO;
import com.fulan.application.handle.quartz.BaseJob;
/**
* 定时检查是否有过期的考试,有的话自动提交考试信息
* @author mei
*
*/
public class ExamJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(ExamJob.class);
@Autowired
ExamQuestionApiClient examQuestionApiClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
try{
LOG.info("考试失效自动提交任务,启动");
ExamAnswerVO answerVo = new ExamAnswerVO();
examQuestionApiClient.jobSubmitExamLose(answerVo);
LOG.info("考试失效自动提交任务,完毕");
} catch(Exception e){
LOG.info("考试失效自动提交任务,异常");
e.printStackTrace();
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.feign.InformationManageFeignClients;
import com.fulan.application.handle.quartz.BaseJob;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 新闻资讯上架
* @since 2018-9-7 14:40:12
* @author lilingye
*/
public class InformationUpJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(BannerUpJob.class);
@Autowired
InformationManageFeignClients informationClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
Long id=Long.parseLong(context.getTrigger().getJobKey().getName());
LOG.info("执行informartion上架的操作:"+id);
try {
informationClient.upInfomation(id);
} catch (Exception e) {
LOG.error("=====================",e);
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.handle.quartz.BaseJob;
import com.fulan.application.system.remote.OrganizationClient;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
/**
* @ClassName OrganizationJob
* @Description 定时重置部门索引
* @Author shengchenglong
* @DATE 2019-04-10 14:59
* @Version 1.0
*/
public class OrganizationJob implements BaseJob, InterruptableJob {
private static final Logger LOGGER = LoggerFactory.getLogger(OrganizationJob.class);
@Autowired
private OrganizationClient organizationClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// 重置所有企业部门索引
LOGGER.info("----------------开始 重建部门索引---------------------");
organizationClient.rebuildOrgIndex(new ArrayList<>());
LOGGER.info("----------------完成 重建部门索引---------------------");
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.cache.CacheNamespace;
import com.fulan.application.handle.quartz.BaseJob;
import com.fulan.application.system.remote.OrganizationClient;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.collections.CollectionUtils;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import redis.clients.jedis.util.SafeEncoder;
import java.util.ArrayList;
import java.util.Set;
/**
* @ClassName OrganizationRedisJob
* @Description 定时重置部门索引
* @Author shengchenglong
* @DATE 2019-04-10 14:59
* @Version 1.0
*/
@Log4j2
public class OrganizationRedisJob implements BaseJob, InterruptableJob {
private static final Logger LOGGER = LoggerFactory.getLogger(OrganizationRedisJob.class);
@Autowired
private OrganizationClient organizationClient;
@Autowired
private RedisTemplate redisTemplate;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
try {
LOGGER.info("----------------开始 redis 队列 重建部门索引 ---------------------");
boolean continueFlag = true;
Set<byte[]> set = null;
Long companyId = null;
while (continueFlag) {
set = redisTemplate.getConnectionFactory().getConnection().zRange(SafeEncoder.encode(CacheNamespace.ORG_INDEX_INIT_KEY), 0, 10);
if (CollectionUtils.isEmpty(set)) {
continueFlag = false;
} else {
for (byte[] o : set) {
if (o == null) {
continue;
}
companyId = Long.valueOf(SafeEncoder.encode(o));
LOGGER.info("----------------开始 redis 队列 重建部门索引 companyId: ---------------------" + companyId);
organizationClient.rebuildOrgIndexJob(companyId);
LOGGER.info("----------------完成 redis 队列 重建部门索引 companyId: ---------------------" + companyId);
redisTemplate.getConnectionFactory().getConnection().zRem(SafeEncoder.encode(CacheNamespace.ORG_INDEX_INIT_KEY), o);
}
}
}
LOGGER.info("----------------结束 redis 队列 重建部门索引 ---------------------");
} catch (Exception e) {
e.printStackTrace();
log.error("");
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.application.feign.ResearchReportClient;
import com.fulan.application.handle.quartz.BaseJob;
public class ResearchIntoTable implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(ResearchIntoTable.class);
@Autowired
private ResearchReportClient researchReportClient;
@Override
public void interrupt() throws UnableToInterruptJobException {
// TODO Auto-generated method stub
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
try {
LOG.info("调研自动入表任务,启动");
researchReportClient.asynchronousResearch("", "");
LOG.info("调研自动入表任务,完毕");
} catch (Exception e) {
// TODO Auto-generated catch block
LOG.info("调研自动入表任务,异常");
e.printStackTrace();
}
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.handle.quartz.BaseJob;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* @author lilingye
* @create 2018-6-5 13:32:45
* @since 1.0.0
*/
public class SendMessageJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(SendMessageJob.class);
@Autowired
// SystemMessageClient messageClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
Long messageId=Long.parseLong(context.getTrigger().getJobKey().getName());
LOG.info("执行发送消息=========messageId==="+messageId);
try {
// messageClient.send(messageId);
} catch (Exception e) {
LOG.error("发送消息失败=====================",e);
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.feign.remote.RemoteJobHandleClient;
import com.fulan.application.handle.quartz.BaseJob;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author hutao
* @create
* @since 1.0.0
*/
public class SendNewMessageJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(SendNewMessageJob.class);
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Autowired
private RemoteJobHandleClient remoteJobHandleClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LOG.info("定时任务开始执行发送消息,当前时间:" + format.format(new Date()));
remoteJobHandleClient.sendMessageHandle();
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.application.feign.ReportSignClient;
import com.fulan.application.handle.quartz.BaseJob;
public class SignInToTable implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(SignInToTable.class);
@Autowired
private ReportSignClient reportSignClient;
@Override
public void interrupt() throws UnableToInterruptJobException {
// TODO Auto-generated method stub
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
try {
LOG.info("签到自动入表任务,启动");
reportSignClient.asynchronousSign("", "");
LOG.info("签到自动入表任务,完毕");
} catch (Exception e) {
// TODO Auto-generated catch block
LOG.info("签到自动入表任务,异常");
e.printStackTrace();
}
}
}
package com.fulan.application.handle.quartz.job;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.application.feign.TrainingProjectReportClient;
import com.fulan.application.handle.quartz.BaseJob;
public class StatisticsTrainingProjectJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(StatisticsTrainingProjectJob.class);
@Autowired
private TrainingProjectReportClient trainingProjectReportClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
try {
LOG.info("项目自动入表任务,启动");
trainingProjectReportClient.AsynchronousCourse(null,null);
LOG.info("项目自动入表任务,完毕");
} catch (Exception e) {
LOG.info("项目自动入表任务,异常");
e.printStackTrace();
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.fulan.application.feign.SydPointAcctranClient;
import com.fulan.application.handle.quartz.BaseJob;
public class SydPointAcctranJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(AlbumUnLockJob.class);
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Autowired
private SydPointAcctranClient sydPointAcctranClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LOG.info("定时任务开始处理江苏银行苏银豆积分,当前时间:" + format.format(new Date()));
try {
sydPointAcctranClient.AsynchronousPointAcctran(null, null, null, null);
} catch (Exception e) {
LOG.error("处理江苏银行苏银豆积分异常!!!",e);
}
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.handle.quartz.job;
import com.fulan.application.handle.quartz.BaseJob;
import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestJob implements BaseJob, InterruptableJob {
private final Logger logger = LoggerFactory.getLogger(TestJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
logger.info("测试定时任务 !!!!!!!!!!!!!!!!");
System.out.println("测试定时任务 !!!!!!!!!!!!!!!!");
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
//package com.fulan.application.handle.quartz.job;
//
//import org.quartz.InterruptableJob;
//import org.quartz.JobExecutionContext;
//import org.quartz.JobExecutionException;
//import org.quartz.UnableToInterruptJobException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import com.fulan.application.feign.ReportVoteClient;
//import com.fulan.application.handle.quartz.BaseJob;
//
//public class VoteToTable implements BaseJob, InterruptableJob {
//
// private final Logger LOG = LoggerFactory.getLogger(VoteToTable.class);
// @Autowired
// private ReportVoteClient reportVoteClient;
//
//
// @Override
// public void interrupt() throws UnableToInterruptJobException {
// // TODO Auto-generated method stub
//
//
// }
//
// @Override
// public void execute(JobExecutionContext context) throws JobExecutionException {
// // TODO Auto-generated method stub
// try {
// LOG.info("投票自动入表任务,启动");
// reportVoteClient.asynchronousSign("", "");
// LOG.info("投票自动入表任务,完毕");
// } catch (Exception e) {
// // TODO Auto-generated catch block
// LOG.info("投票自动入表任务,异常");
// e.printStackTrace();
// }
//
// }
//
//}
package com.fulan.application.handle.quartz.job;
import com.alibaba.fastjson.JSONArray;
import com.fulan.application.cache.RedisCache;
import com.fulan.application.domain.Chapter;
import com.fulan.application.domain.Recorde;
import com.fulan.application.domain.StudyLog;
import com.fulan.application.event.EventWrapper;
import com.fulan.application.feign.*;
import com.fulan.application.handle.quartz.BaseJob;
import com.fulan.application.publish.CloudEventPublisher;
import com.fulan.application.task.AbstractTaskHandler;
import com.fulan.application.task.TaskExecutor;
import com.fulan.application.util.constant.QueueConstant;
import com.fulan.application.util.event.TrainingProjectEvent;
import com.fulan.application.vo.PointParamVO;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.UnableToInterruptJobException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import java.util.*;
/**
*
* @author lilingye
* @create 2018-6-5 13:32:45
* @since 1.0.0
*/
public class WechatJob implements BaseJob, InterruptableJob {
private final Logger LOG = LoggerFactory.getLogger(WechatJob.class);
@Autowired
WeiXinClient weiXinClient;
@Autowired
TrainingProjectClient trainingProjectClient;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
LOG.info("执行微信access_token和jsapiticket的新增/更新");
weiXinClient.saveAccessTokenToRedis();
LOG.info("执行培训项目已学习人数的更新");
trainingProjectClient.getJoinNumber();
}
@Override
public void interrupt() throws UnableToInterruptJobException {
}
}
package com.fulan.application.task;
import com.fulan.application.feign.HeartbeatHandleClient;
import com.fulan.application.file.task.AbstractDefaultTask;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 心跳异步处理
*/
@Component
public class HeartbeatHandleAsync extends AbstractDefaultTask<String, Map<String,Object>> {
private static final Logger logger = LoggerFactory.getLogger(HeartbeatHandleAsync.class);
public final static String PARAM_NAME = "sessionId";
@Autowired
private HeartbeatHandleClient heartbeatHandleClient;
@Override
protected String execute(Map<String, Object> stringObjectMap) {
Object param = stringObjectMap.get(PARAM_NAME);
logger.info("HeartbeatHandleAsync 处理开始");
heartbeatHandleClient.calculate(param.toString());
return "OK";
}
}
app.name=com.fulan.application.job
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<domain id="com.fulan.application.job"/>
</config>
server.port=34998
spring.application.name=job
ACTIVE=${spring.profiles.active}
spring.profiles.active=prod
# nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.0.203:8848
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
<property name="LOG_HOME" value="${LOG_PATH}"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%yellow(%date{yyyy-MM-dd HH:mm:ss}) %blue([%thread]) %-5level %green(%logger{70}) - %cyan(%msg%n)</pattern>
<charset>UTF-8</charset>
</encoder>
<param name="Encoding" value="UTF-8"/>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/${LOG_FILE}-%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<param name="Encoding" value="UTF-8"/>
<!--日志文件最大的大小 -->
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>200MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="FILE"/>
<!-- 生产环境将请stdout,testfile去掉 -->
<appender-ref ref="STDOUT"/>
</root>
<logger name="com.fulan.application.mapper" level="debug" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
</configuration>
\ No newline at end of file
# 固定前缀org.quartz
# 主要分为scheduler、threadPool、jobStore、plugin等部分
#scheduler
#集群中每个instanceName必须相同,instanceId自动生成
org.quartz.scheduler.instanceName = scheduler
org.quartz.scheduler.instanceId=auto
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
#ThreadPool
# 并发个数
org.quartz.threadPool.threadCount = 10
# 优先级
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
# 实例化ThreadPool时,使用的线程类为SimpleThreadPool
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
#jobStore
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.dataSource = qzDS
org.quartz.jobStore.isClustered=true
# 10 mins 调度实例失效的检查时间间隔
org.quartz.jobStore.clusterCheckinInterval=600000
#容许的最大作业延长时间
org.quartz.jobStore.misfireThreshold = 5000
#dataSource
org.quartz.dataSource.qzDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.qzDS.URL = ${spring.datasource.url}
org.quartz.dataSource.qzDS.user = ${spring.datasource.username}
org.quartz.dataSource.qzDS.password = ${spring.datasource.password}
org.quartz.dataSource.qzDS.maxConnection = 10
#plugin
org.quartz.plugin.triggHistory.class=org.quartz.plugins.history.LoggingTriggerHistoryPlugin
org.quartz.plugin.triggHistory.triggerFiredMessage=Trigger {1}.{0} fired job {6}.{5} at: {4,date, HH:mm:ss MM/dd/yyyy}
/* Syntax highlighting for JSON objects */
ul.json-dict, ol.json-array {
list-style-type: none;
margin: 0 0 0 1px;
border-left: 1px dotted #ccc;
padding-left: 2em;
}
.json-string {
color: #0B7500;
}
.json-literal {
color: #1A01CC;
font-weight: bold;
}
/* Toggle button */
a.json-toggle {
position: relative;
color: inherit;
text-decoration: none;
}
a.json-toggle:focus {
outline: none;
}
a.json-toggle:before {
color: #aaa;
content: "\25BC"; /* down arrow */
position: absolute;
display: inline-block;
width: 1em;
left: -1em;
}
a.json-toggle.collapsed:before {
transform: rotate(-90deg); /* Use rotated down arrow, prevents right arrow appearing smaller than down arrow in some browsers */
-ms-transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
}
/* Collapsable placeholder links */
a.json-placeholder {
color: #aaa;
padding: 0 1em;
text-decoration: none;
}
a.json-placeholder:hover {
text-decoration: underline;
}
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}audio,canvas,video{display:inline-block;}audio:not([controls]){display:none;height:0;}[hidden]{display:none;}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}a:focus{outline:thin dotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em 0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"\201C" "\201D" "\2018" "\2019";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:0;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0;}button,input{line-height:normal;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}textarea{overflow:auto;vertical-align:top;}table{border-collapse:collapse;border-spacing:0;}
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html decorator="null">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改计划任务</title>
<link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/icon.css">
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="/static/js/jquery-form.js"></script>
<script type="text/javascript">
$(function(){
$('#saveForm').ajaxForm(function(msg){
if(msg.success == "1"){
alert(msg.msg);
window.location.href="/scheduleman/list.do?time="+new Date;
}else{
}
});
});
function backList(){
window.location.href="/scheduleman/list.do?time="+new Date;
}
function displayFields(){
var triggerType = $("input[name='triggerType']:checked").val();
if (triggerType == 1) {
$("#simpleTriggerTable").show();
$("#cronTriggerTable").hide();
} else if (triggerType == 2){
$("#simpleTriggerTable").hide();
$("#cronTriggerTable").show();
}else{
$("#simpleTriggerTable").hide();
$("#cronTriggerTable").hide();
}
}
$(document).ready(
function(){
$("#submitButton").click(function(){
triggerType = $("input[name='triggerType']:checked").val();
rate=$.trim($("#rate").val());
times=$.trim($("#times").val());
secondField=$.trim($("#secondField").val());
minutesField=$.trim($("#minutesField").val());
hourField=$.trim($("#hourField").val());
dayField=$.trim($("#dayField").val());
monthField=$.trim($("#monthField").val());
weekField=$.trim($("#weekField").val());
yearField=$.trim($("#yearField").val());
if(triggerType==1){
if(!rate){
alert("请填写执行频率!");
return false;
}
if(!/^(\-?)(\d+)$/.test(rate)){
alert("频率请填写数字!");
return false;
}
if(!times){
alert("请填写执行次数");
return false;
}
if(!/^(\-?)(\d+)$/.test(times)){
alert("执行次数请填写数字!");
return false;
}
}
if(triggerType==2){
if(!secondField){
alert("请填写秒字段!");
return false;
}
if(!minutesField){
alert("请填写分字段!");
return false;
}
if(!hourField){
alert("请填写小时字段!");
return false;
}
if(!dayField){
alert("请填写日字段!");
return false;
}
if(!monthField){
alert("请填写月字段!");
return false;
}
if(!weekField){
alert("请填写周字段!");
return false;
}
if (!yearField) {
alert("请填写年字段!");
return false;
}
}
return true;
});
displayFields();
});
</script>
</head>
<body>
<div id="update" class="easyui-panel" title="任务清单" style="padding: 10px">
<form id="saveForm" action="/scheduleman/editJob" method="post">
<input type="hidden" name="jobKey" value="${jobDetail.key!}" />
<input type="hidden" name="queryJobName" value="${queryJobName!}" />
<table cellpadding="0" cellspacing="0"
style="width: 100%; line-height: 28px; margin-top: 0px;">
<tr>
<td colspan="2" height="10px" class="red1"><b>请注意:</b>任务名称、任务组可使用中文命名,任务参数可为空,参数名请使用英文字符和数字,参数值可以为中文,任务描述可以为中文。</td>
</tr>
<tr>
<td class="text_right">组名称:</td>
<td>
<span id="groupSpan" style="display: block;">
<select id="jobGroup" name="jobGroup">
<#list jobGroups as group>
<option value="${group}">${group}</option>
</#list>
</select>
</span>
</td>
</tr>
<tr>
<td class="text_right">任务名称:</td>
<td>
<input id="jobName" style="width:400px;" name="jobName" type="text" disabled=disabled
value="${jobDetail.key.name!}" class="text_wd400" />
</td>
</tr>
<tr>
<td class="text_right">任务class:</td>
<td><input type="text" style="width:400px;" id="jobClassName"
value="${jobDetail.jobClass.name!}" disabled=disabled
name="jobClassName" value="" />
</td>
</tr>
<tr>
<td class="text_right">任务参数:</td>
<td>
<table id="paramsTable">
<#assign keys=jobDetail.jobDataMap?keys/>
<#list keys as key>
<tr>
<td><input type="text" name="argsNames" value="${key}" class="input1 in_w_5" disabled=disabled /></td>
<td><input type="text" name="argsValues" value="jobDetail.jobDataMap["${key}"]" class="input1 in_w_5" disabled=disabled /></td>
</tr>
</#list>
</table>
</td>
</tr>
<tr>
<td class="text_right">触发器设置:</td>
<td>
<input type="radio" name="triggerType" value="2"
onclick="displayFields();" class="radio" />&nbsp;cron表达式触发器
<input type="radio" name="triggerType" value="3" checked
onclick="displayFields();" class="radio" />&nbsp;手动触发
</td>
</tr>
<tr>
<td></td>
<td>
<table id="simpleTriggerTable" style="display: block;">
<tr>
<td></td>
<td>执行频率:<input type="text" class="text" id="rate"
name="rate" />&nbsp;分钟执行一次</td>
</tr>
<tr>
<td></td>
<td>执行次数:<input type="text" class="text" id="times"
name="times" />&nbsp;次(-1表示永远执行下去)</td>
</tr>
</table>
<table id="cronTriggerTable" style="display: none;">
<tr>
<td></td>
<td>秒:<input type="text" class="text" id="secondField"
name="secondField" value="0" /> 允许输入字符:0-59 , - * /</td>
</tr>
<tr>
<td></td>
<td>分:<input type="text" class="text" id="minutesField"
name="minutesField" value="*" /> 允许输入字符:0-59 , - * /</td>
</tr>
<tr>
<td></td>
<td>时:<input type="text" class="text" id="hourField"
name="hourField" value="*" /> 允许输入字符: 0-23 , - * /</td>
</tr>
<tr>
<td></td>
<td>日:<input type="text" class="text" id="dayField"
name="dayField" value="*" /> 允许输入字符: 1-31 , - * ? </td>
</tr>
<tr>
<td></td>
<td>月:<input type="text" class="text" id="monthField"
name="monthField" value="*" /> 允许输入字符: 1-12 , - * ? /</td>
</tr>
<tr>
<td></td>
<td>周:<input type="text" id="weekField" name="weekField"
class="text" value="?" /> 允许输入字符: 1-7 , - * ? /</td>
</tr>
<tr>
<td></td>
<td>年:<input type="text" id="yearField" name="yearField"
class="text" value="*" /> 允许输入字符: 1970-2099 , - * ? /</td>
</tr>
</table></td>
</tr>
<tr>
<td colspan="2" height="10px"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提 交" id="submitButton"
class="search_btn" />
</td>
</tr>
</table>
</form>
<div style="margin-left:400px;">
<a href="javascript:backList()" class="easyui-linkbutton" iconCls="icon-redo" plain="true">返回</a>
</div>
</div>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>车险理赔移动应用中台管理界面</title>
<link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/icon.css">
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript">
var url;
function openTab(text,url,iconCls){
if($("#tabs").tabs("exists",text)){
$("#tabs").tabs("select",text);
}else{
var content="<iframe frameborder=0 scrolling='auto' style='width:100%;height:100%' src='/static/pages/"+url+"'></iframe>";
$("#tabs").tabs("add",{
title:text,
iconCls:iconCls,
closable:true,
content:content
});
}
}
function openTabController(text,url,iconCls){
//showadd
if($("#tabs").tabs("exists",text)){
$("#tabs").tabs("select",text);
}else{
var content="<iframe frameborder=0 scrolling='auto' style='width:100%;height:100%' src='"+url+"'></iframe>";
$("#tabs").tabs("add",{
title:text,
iconCls:iconCls,
closable:true,
content:content
});
}
}
function openTabControllerData(text,url,iconCls){
//showadd
if($("#tabs").tabs("exists",text)){
$("#tabs").tabs("select",text);
}else{
var content="<iframe frameborder=0 scrolling='auto' style='width:100%;height:100%' src='/scheduleman/"+url+"'></iframe>";
$("#tabs").tabs("add",{
title:text,
iconCls:iconCls,
closable:true,
content:content
});
}
}
</script>
</head>
<#setting classic_compatible=true>
<body class="easyui-layout">
<div region="north" style="height:50px;line-height:50px; background-color:#0058bc;text-align:center;">
<span style="font-size:18px;font-weight:hold;color:white; "> 车险理赔移动应用中台管理</span>
</div>
<div region="center">
<div class="easyui-tabs" fit="true" border="false" id="tabs">
<div title="首页" data-options="iconCls:'icon-home'">
<div align="center" style="padding-top: 100px"><font color="red" size="10">欢迎使用</font></div>
</div>
</div>
</div>
<div region="west" style="width: 200px" title="导航菜单" split="true">
<div class="easyui-accordion" data-options="fit:true,border:false">
<div title="任务管理" data-options="iconCls:'icon-system'" style="padding:10px">
<a href="javascript:openTabController('任务清单','/scheduleman/list','icon-item')" class="easyui-linkbutton" data-options="plain:true,iconCls:'icon-search'" style="width: 150px;">任务清单</a>
</div>
<!-- <div title="应用程序管理" data-options="iconCls:'icon-system'" style="padding:10px">
<a href="javascript:openTabController('应用程序管理','/apk/index','icon-item')" class="easyui-linkbutton" data-options="plain:true,iconCls:'icon-search'" style="width: 150px;">应用程序管理</a>
</div> -->
<div title="日志管理" data-options="iconCls:'icon-system'" style="padding:10px">
<a href="javascript:openTabController('公共应用请求日志','/log/logIndex','icon-item')" class="easyui-linkbutton" data-options="plain:true,iconCls:'icon-search'" style="width: 150px;">公共应用请求日志</a>
<a href="javascript:openTabController('公共应用调用第三方日志','/log/tlogIndex','icon-item')" class="easyui-linkbutton" data-options="plain:true,iconCls:'icon-search'" style="width: 150px;">公共应用调用第三方日志</a>
</div>
</div>
</div>
<div region="south" style="height: 25px;padding: 5px" align="center">
Copyright
</div>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Job任务列表</title>
<link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/icon.css">
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/static/jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="/static/js/jquery-form.js"></script>
<style>
.tb_tr_header{background-color:#d31135; height:24px; color:#fff;}
.tb_tr_header td{ border-right:1px solid #fff;}
.table_red { text-align:center !important; background: #0058BC!important; color: #FFF!important; font-weight:normal!important; }
.tb_tr_content td{border-right:1px solid #ccc; border-bottom:1px solid #ccc;}
.tb_tr_content_font{ text-align:left;border-bottom:0px; border-right:1px solid #ccc; line-height:18px; padding:5px;}
.tb_tr_content span{ padding:0px 4px;}
</style>
<script type="text/javascript">
function changeType(type){
$("#type").val(type);
}
</script>
</head>
<body>
<!--内页主体结构开始 -->
<div id="sear" class="easyui-panel" title="任务清单" style="padding: 10px">
<div style="width: 99.5%;">
<div class="" style=" width:100%; margin:0 auto;">
<h2>任务列表:</h2>
<div id="con2" style="width: 100%;">
<div id="tagContent" style="height: auto; width: 100%; padding-bottom: 30px;">
<div>
<a style="font-size:16px;text-align: center;" href="/scheduleman/list" class="easyui-linkbutton" iconCls="icon-refresh" plain="true">刷新任务清单</a>
</div>
<div class="" id="tagContent0">
<form id="searchForm" action="/scheduleman/list.do" method="get">
<table cellpadding="0" cellspacing="0" style="margin: 10px 0px 10px 0px;">
<tr>
<td>任务名:</td>
<td><input type="text" class="text" name="queryJobName"
id="queryJobName" value="${queryJobName!}" />
</td>
<td width="10px"></td>
<td>
<input style="background-color:#0058BC;color:#fff;cursor:pointer; " type="submit" value="查 询" class="button_bg2" />
<input style="background-color:#0058BC;color:#fff;cursor:pointer; " type="button" value="添加"
onclick="window.location='/scheduleman/showadd'" class="button_bg2" />
</td>
</tr>
</table>
</form>
<form method='post' action="scheduleman/pauseOrRunAllJobs.do?queryJobName=${queryJobName!}">
<div style="width:100%; overflow-x:auto;*padding-bottom:18px;*overflow-y:hidden;">
<table class="" border="0" align="center" cellpadding="2" cellspacing="2" style=" width:100%; margin:0 auto; border:1px solid #D2D2D2;">
<tr style="height:70px;">
<td style="text-align: left; height:45px; display:none;" colspan="2"><span class="fl">&nbsp;&nbsp;
</td>
<td style="font-size:18px;font-weight:bold; " colspan="6">&nbsp;&nbsp;总共查询出<span
style="color:red;" >${count!}</span>条数据,正在执行的任务<span style="color:red;">${executingJobCount!}</span>个。&nbsp;&nbsp;</td>
</tr>
<tr class="tb_tr_header">
<td class="table_red">序号 </td>
<td class="table_red">名称</td>
<td class="table_red">类名</td>
<td class="table_red">参数</td>
<td class="table_red">触发器状态</td>
<td class="table_red">相关操作</td>
</tr>
<#list jobList as jobInfoMap>
<tr class="tb_tr_content">
<td>${jobInfoMap_index+1}</td>
<td>${jobInfoMap.jobDetail.key}</td>
<td>${jobInfoMap.jobDetail.jobClass}<br>
${jobInfoMap.crondesc}<br>
上次:${jobInfoMap.preFire}
下次:${jobInfoMap.nextFire}
</td>
<td>
<#assign keys=jobInfoMap.jobDetail.jobDataMap?keys/>
<#list keys as key>
${key}=jobInfoMap.jobDetail.jobDataMap["${key}"]
</#list>
</td>
<td>
${jobInfoMap.isRunning}
</td>
<td>
<span style=" display:block; width:120px;">
<a href="/scheduleman/interruptJob?jobKey=${jobInfoMap.jobDetail.key}&queryJobName=${queryJobName!}"
onclick="return confirm('您确定要中止此任务执行么?');" class="easyui-linkbutton" iconCls="icon-redo" plain="true">中止</a>
<a href="/scheduleman/executeOnce?jobKey=${jobInfoMap.jobDetail.key}&queryJobName=${queryJobName!}"
onclick="return confirm('您确定要执行一次此任务么?');" class="easyui-linkbutton" iconCls="icon-reload" plain="true">执行</a>
<a href="/scheduleman/showEditJob?jobKey=${jobInfoMap.jobDetail.key}&queryJobName=${queryJobName!}"
class="easyui-linkbutton" iconCls="icon-edit" plain="true">修改</a>
<a class="easyui-linkbutton" iconCls="icon-cancel" plain="true" href="/scheduleman/deleteJob?jobKey=${jobInfoMap.jobDetail.key}&queryJobName=${queryJobName!}"
onclick="return confirm('您确定要删除此任务么?');">删除</a>
</span>
</td>
</tr>
</#list>
</table>
</div>
<input type="hidden" name="type" id="type" />
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
/**
* jQuery EasyUI 1.3.3
*
* Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL or commercial licenses
* To use it on other terms please contact us: info@jeasyui.com
* http://www.gnu.org/licenses/gpl.txt
* http://www.jeasyui.com/license_commercial.php
*
*/
(function(){
var _1={draggable:{js:"jquery.draggable.js"},droppable:{js:"jquery.droppable.js"},resizable:{js:"jquery.resizable.js"},linkbutton:{js:"jquery.linkbutton.js",css:"linkbutton.css"},progressbar:{js:"jquery.progressbar.js",css:"progressbar.css"},tooltip:{js:"jquery.tooltip.js",css:"tooltip.css"},pagination:{js:"jquery.pagination.js",css:"pagination.css",dependencies:["linkbutton"]},datagrid:{js:"jquery.datagrid.js",css:"datagrid.css",dependencies:["panel","resizable","linkbutton","pagination"]},treegrid:{js:"jquery.treegrid.js",css:"tree.css",dependencies:["datagrid"]},propertygrid:{js:"jquery.propertygrid.js",css:"propertygrid.css",dependencies:["datagrid"]},panel:{js:"jquery.panel.js",css:"panel.css"},window:{js:"jquery.window.js",css:"window.css",dependencies:["resizable","draggable","panel"]},dialog:{js:"jquery.dialog.js",css:"dialog.css",dependencies:["linkbutton","window"]},messager:{js:"jquery.messager.js",css:"messager.css",dependencies:["linkbutton","window","progressbar"]},layout:{js:"jquery.layout.js",css:"layout.css",dependencies:["resizable","panel"]},form:{js:"jquery.form.js"},menu:{js:"jquery.menu.js",css:"menu.css"},tabs:{js:"jquery.tabs.js",css:"tabs.css",dependencies:["panel","linkbutton"]},splitbutton:{js:"jquery.splitbutton.js",css:"splitbutton.css",dependencies:["linkbutton","menu"]},menubutton:{js:"jquery.menubutton.js",css:"menubutton.css",dependencies:["linkbutton","menu"]},accordion:{js:"jquery.accordion.js",css:"accordion.css",dependencies:["panel"]},calendar:{js:"jquery.calendar.js",css:"calendar.css"},combo:{js:"jquery.combo.js",css:"combo.css",dependencies:["panel","validatebox"]},combobox:{js:"jquery.combobox.js",css:"combobox.css",dependencies:["combo"]},combotree:{js:"jquery.combotree.js",dependencies:["combo","tree"]},combogrid:{js:"jquery.combogrid.js",dependencies:["combo","datagrid"]},validatebox:{js:"jquery.validatebox.js",css:"validatebox.css",dependencies:["tooltip"]},numberbox:{js:"jquery.numberbox.js",dependencies:["validatebox"]},searchbox:{js:"jquery.searchbox.js",css:"searchbox.css",dependencies:["menubutton"]},spinner:{js:"jquery.spinner.js",css:"spinner.css",dependencies:["validatebox"]},numberspinner:{js:"jquery.numberspinner.js",dependencies:["spinner","numberbox"]},timespinner:{js:"jquery.timespinner.js",dependencies:["spinner"]},tree:{js:"jquery.tree.js",css:"tree.css",dependencies:["draggable","droppable"]},datebox:{js:"jquery.datebox.js",css:"datebox.css",dependencies:["calendar","combo"]},datetimebox:{js:"jquery.datetimebox.js",dependencies:["datebox","timespinner"]},slider:{js:"jquery.slider.js",dependencies:["draggable"]},parser:{js:"jquery.parser.js"}};
var _2={"af":"easyui-lang-af.js","ar":"easyui-lang-ar.js","bg":"easyui-lang-bg.js","ca":"easyui-lang-ca.js","cs":"easyui-lang-cs.js","cz":"easyui-lang-cz.js","da":"easyui-lang-da.js","de":"easyui-lang-de.js","el":"easyui-lang-el.js","en":"easyui-lang-en.js","es":"easyui-lang-es.js","fr":"easyui-lang-fr.js","it":"easyui-lang-it.js","jp":"easyui-lang-jp.js","nl":"easyui-lang-nl.js","pl":"easyui-lang-pl.js","pt_BR":"easyui-lang-pt_BR.js","ru":"easyui-lang-ru.js","sv_SE":"easyui-lang-sv_SE.js","tr":"easyui-lang-tr.js","zh_CN":"easyui-lang-zh_CN.js","zh_TW":"easyui-lang-zh_TW.js"};
var _3={};
function _4(_5,_6){
var _7=false;
var _8=document.createElement("script");
_8.type="text/javascript";
_8.language="javascript";
_8.src=_5;
_8.onload=_8.onreadystatechange=function(){
if(!_7&&(!_8.readyState||_8.readyState=="loaded"||_8.readyState=="complete")){
_7=true;
_8.onload=_8.onreadystatechange=null;
if(_6){
_6.call(_8);
}
}
};
document.getElementsByTagName("head")[0].appendChild(_8);
};
function _9(_a,_b){
_4(_a,function(){
document.getElementsByTagName("head")[0].removeChild(this);
if(_b){
_b();
}
});
};
function _c(_d,_e){
var _f=document.createElement("link");
_f.rel="stylesheet";
_f.type="text/css";
_f.media="screen";
_f.href=_d;
document.getElementsByTagName("head")[0].appendChild(_f);
if(_e){
_e.call(_f);
}
};
function _10(_11,_12){
_3[_11]="loading";
var _13=_1[_11];
var _14="loading";
var _15=(easyloader.css&&_13["css"])?"loading":"loaded";
if(easyloader.css&&_13["css"]){
if(/^http/i.test(_13["css"])){
var url=_13["css"];
}else{
var url=easyloader.base+"themes/"+easyloader.theme+"/"+_13["css"];
}
_c(url,function(){
_15="loaded";
if(_14=="loaded"&&_15=="loaded"){
_16();
}
});
}
if(/^http/i.test(_13["js"])){
var url=_13["js"];
}else{
var url=easyloader.base+"plugins/"+_13["js"];
}
_4(url,function(){
_14="loaded";
if(_14=="loaded"&&_15=="loaded"){
_16();
}
});
function _16(){
_3[_11]="loaded";
easyloader.onProgress(_11);
if(_12){
_12();
}
};
};
function _17(_18,_19){
var mm=[];
var _1a=false;
if(typeof _18=="string"){
add(_18);
}else{
for(var i=0;i<_18.length;i++){
add(_18[i]);
}
}
function add(_1b){
if(!_1[_1b]){
return;
}
var d=_1[_1b]["dependencies"];
if(d){
for(var i=0;i<d.length;i++){
add(d[i]);
}
}
mm.push(_1b);
};
function _1c(){
if(_19){
_19();
}
easyloader.onLoad(_18);
};
var _1d=0;
function _1e(){
if(mm.length){
var m=mm[0];
if(!_3[m]){
_1a=true;
_10(m,function(){
mm.shift();
_1e();
});
}else{
if(_3[m]=="loaded"){
mm.shift();
_1e();
}else{
if(_1d<easyloader.timeout){
_1d+=10;
setTimeout(arguments.callee,10);
}
}
}
}else{
if(easyloader.locale&&_1a==true&&_2[easyloader.locale]){
var url=easyloader.base+"locale/"+_2[easyloader.locale];
_9(url,function(){
_1c();
});
}else{
_1c();
}
}
};
_1e();
};
easyloader={modules:_1,locales:_2,base:".",theme:"default",css:true,locale:null,timeout:2000,load:function(_1f,_20){
if(/\.css$/i.test(_1f)){
if(/^http/i.test(_1f)){
_c(_1f,_20);
}else{
_c(easyloader.base+_1f,_20);
}
}else{
if(/\.js$/i.test(_1f)){
if(/^http/i.test(_1f)){
_4(_1f,_20);
}else{
_4(easyloader.base+_1f,_20);
}
}else{
_17(_1f,_20);
}
}
},onProgress:function(_21){
},onLoad:function(_22){
}};
var _23=document.getElementsByTagName("script");
for(var i=0;i<_23.length;i++){
var src=_23[i].src;
if(!src){
continue;
}
var m=src.match(/easyloader\.js(\W|$)/i);
if(m){
easyloader.base=src.substring(0,m.index);
}
}
window.using=easyloader.load;
if(window.jQuery){
jQuery(function(){
easyloader.load("parser",function(){
jQuery.parser.parse();
});
});
}
})();
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* edatagrid - jQuery EasyUI
*
* Licensed under the GPL:
* http://www.gnu.org/licenses/gpl.txt
*
* Copyright 2011 stworthy [ stworthy@gmail.com ]
*
* Dependencies:
* datagrid
* messager
*
*/
(function($){
function buildGrid(target){
var opts = $.data(target, 'edatagrid').options;
$(target).datagrid($.extend({}, opts, {
onDblClickCell:function(index,field){
if (opts.editing){
$(this).edatagrid('editRow', index);
focusEditor(field);
}
},
onClickCell:function(index,field){
if (opts.editing && opts.editIndex >= 0){
$(this).edatagrid('editRow', index);
focusEditor(field);
}
},
onAfterEdit: function(index, row){
opts.editIndex = undefined;
var url = row.isNewRecord ? opts.saveUrl : opts.updateUrl;
if (url){
$.post(url, row, function(data){
data.isNewRecord = null;
$(target).datagrid('updateRow', {
index: index,
row: data
});
if (opts.tree){
var idValue = row[opts.idField||'id'];
var t = $(opts.tree);
var node = t.tree('find', idValue);
if (node){
node.text = row[opts.treeTextField];
t.tree('update', node);
} else {
var pnode = t.tree('find', row[opts.treeParentField]);
t.tree('append', {
parent: (pnode ? pnode.target : null),
data: [{id:idValue,text:row[opts.treeTextField]}]
});
}
}
opts.onSave.call(target, index, row);
},'json');
} else {
opts.onSave.call(target, index, row);
}
if (opts.onAfterEdit) opts.onAfterEdit.call(target, index, row);
},
onCancelEdit: function(index, row){
opts.editIndex = undefined;
if (row.isNewRecord) {
$(this).datagrid('deleteRow', index);
}
if (opts.onCancelEdit) opts.onCancelEdit.call(target, index, row);
},
onBeforeLoad: function(param){
if (opts.onBeforeLoad.call(target, param) == false){return false}
$(this).datagrid('rejectChanges');
if (opts.tree){
var node = $(opts.tree).tree('getSelected');
param[opts.treeParentField] = node ? node.id : undefined;
}
}
}));
function focusEditor(field){
var editor = $(target).datagrid('getEditor', {index:opts.editIndex,field:field});
if (editor){
editor.target.focus();
} else {
var editors = $(target).datagrid('getEditors', opts.editIndex);
if (editors.length){
editors[0].target.focus();
}
}
}
if (opts.tree){
$(opts.tree).tree({
url: opts.treeUrl,
onClick: function(node){
$(target).datagrid('load');
},
onDrop: function(dest,source,point){
var targetId = $(this).tree('getNode', dest).id;
$.ajax({
url: opts.treeDndUrl,
type:'post',
data:{
id:source.id,
targetId:targetId,
point:point
},
dataType:'json',
success:function(){
$(target).datagrid('load');
}
});
}
});
}
}
$.fn.edatagrid = function(options, param){
if (typeof options == 'string'){
var method = $.fn.edatagrid.methods[options];
if (method){
return method(this, param);
} else {
return this.datagrid(options, param);
}
}
options = options || {};
return this.each(function(){
var state = $.data(this, 'edatagrid');
if (state){
$.extend(state.options, options);
} else {
$.data(this, 'edatagrid', {
options: $.extend({}, $.fn.edatagrid.defaults, $.fn.edatagrid.parseOptions(this), options)
});
}
buildGrid(this);
});
};
$.fn.edatagrid.parseOptions = function(target){
return $.extend({}, $.fn.datagrid.parseOptions(target), {
});
};
$.fn.edatagrid.methods = {
options: function(jq){
var opts = $.data(jq[0], 'edatagrid').options;
return opts;
},
enableEditing: function(jq){
return jq.each(function(){
var opts = $.data(this, 'edatagrid').options;
opts.editing = true;
});
},
disableEditing: function(jq){
return jq.each(function(){
var opts = $.data(this, 'edatagrid').options;
opts.editing = false;
});
},
editRow: function(jq, index){
return jq.each(function(){
var dg = $(this);
var opts = $.data(this, 'edatagrid').options;
var editIndex = opts.editIndex;
if (editIndex != index){
if (dg.datagrid('validateRow', editIndex)){
if (editIndex>=0){
if (opts.onBeforeSave.call(this, editIndex) == false) {
setTimeout(function(){
dg.datagrid('selectRow', editIndex);
},0);
return;
}
}
dg.datagrid('endEdit', editIndex);
dg.datagrid('beginEdit', index);
opts.editIndex = index;
var rows = dg.datagrid('getRows');
opts.onEdit.call(this, index, rows[index]);
} else {
setTimeout(function(){
dg.datagrid('selectRow', editIndex);
}, 0);
}
}
});
},
addRow: function(jq){
return jq.each(function(){
var dg = $(this);
var opts = $.data(this, 'edatagrid').options;
if (opts.editIndex >= 0){
if (!dg.datagrid('validateRow', opts.editIndex)){
dg.datagrid('selectRow', opts.editIndex);
return;
}
if (opts.onBeforeSave.call(this, opts.editIndex) == false){
setTimeout(function(){
dg.datagrid('selectRow', opts.editIndex);
},0);
return;
}
dg.datagrid('endEdit', opts.editIndex);
}
dg.datagrid('appendRow', {isNewRecord:true});
var rows = dg.datagrid('getRows');
opts.editIndex = rows.length - 1;
dg.datagrid('beginEdit', opts.editIndex);
dg.datagrid('selectRow', opts.editIndex);
if (opts.tree){
var node = $(opts.tree).tree('getSelected');
rows[opts.editIndex][opts.treeParentField] = (node ? node.id : 0);
}
opts.onAdd.call(this, opts.editIndex, rows[opts.editIndex]);
});
},
saveRow: function(jq){
return jq.each(function(){
var dg = $(this);
var opts = $.data(this, 'edatagrid').options;
if (opts.onBeforeSave.call(this, opts.editIndex) == false) {
setTimeout(function(){
dg.datagrid('selectRow', opts.editIndex);
},0);
return;
}
$(this).datagrid('endEdit', opts.editIndex);
});
},
cancelRow: function(jq){
return jq.each(function(){
var index = $(this).edatagrid('options').editIndex;
$(this).datagrid('cancelEdit', index);
});
},
destroyRow: function(jq){
return jq.each(function(){
var dg = $(this);
var opts = $.data(this, 'edatagrid').options;
var row = dg.datagrid('getSelected');
if (!row){
$.messager.show({
title: opts.destroyMsg.norecord.title,
msg: opts.destroyMsg.norecord.msg
});
return;
}
$.messager.confirm(opts.destroyMsg.confirm.title,opts.destroyMsg.confirm.msg,function(r){
if (r){
var index = dg.datagrid('getRowIndex', row);
if (row.isNewRecord){
dg.datagrid('cancelEdit', index);
} else {
if (opts.destroyUrl){
var idValue = row[opts.idField||'id'];
$.post(opts.destroyUrl, {id:idValue}, function(){
if (opts.tree){
dg.datagrid('reload');
var t = $(opts.tree);
var node = t.tree('find', idValue);
if (node){
t.tree('remove', node.target);
}
} else {
dg.datagrid('cancelEdit', index);
dg.datagrid('deleteRow', index);
}
opts.onDestroy.call(dg[0], index, row);
});
} else {
dg.datagrid('cancelEdit', index);
dg.datagrid('deleteRow', index);
opts.onDestroy.call(dg[0], index, row);
}
}
}
});
});
}
};
$.fn.edatagrid.defaults = $.extend({}, $.fn.datagrid.defaults, {
editing: true,
editIndex: -1,
destroyMsg:{
norecord:{
title:'警告',
msg:'没有记录被选中!'
},
confirm:{
title:'系统提示',
msg:'您确定要删除这条记录吗?'
}
},
// destroyConfirmTitle: 'Confirm',
// destroyConfirmMsg: 'Are you sure you want to delete?',
url: null, // return the datagrid data
saveUrl: null, // return the added row
updateUrl: null, // return the updated row
destroyUrl: null, // return {success:true}
tree: null, // the tree selector
treeUrl: null, // return tree data
treeDndUrl: null, // to process the drag and drop operation, return {success:true}
treeTextField: 'name',
treeParentField: 'parentId',
onAdd: function(index, row){},
onEdit: function(index, row){},
onBeforeSave: function(index){},
onSave: function(index, row){},
onDestroy: function(index, row){}
});
})(jQuery);
\ No newline at end of file
This license agreement refers to jQuery EasyUI software - Commercial License.
jQuery EasyUI Team grants to you a limited, non-transferable and non-exclusive right to use, royalty-free, copy and modify the software.
The Licensee has the right to use the software by up to 5 developers at a time. There are no limitations on the number of projects/sites you can use the software in, you can use it on any number of projects/sites you need. There is no time limit, you can use the software for any period of time you need. There is no restriction while you are developing your solution. There are no royalties of any kind involved.
Modifications to the software are allowed but you may not:
a) Distribute the modified software or part(s) of it as standalone application.
b) Sublicense, rent, lease or lend any portion of the software.
c) Modify or remove any copyright notices from any of the software files.
The Licensee has the right to apply for tech support on the software within 1 month since purchasing the product and bug fixing during the same period.
The Licensee has the right to get free upgrades for 1 year since purchasing the product.
jQuery EasyUI Team retain all ownership rights to the software.
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Bladsy';
$.fn.pagination.defaults.afterPageText = 'Van {pages}';
$.fn.pagination.defaults.displayMsg = 'Wys (from) tot (to) van (total) items';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Verwerking, wag asseblief ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Die styl';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = "Die veld is verpligtend.";
$.fn.validatebox.defaults.rules.email.message = "Gee 'n geldige e-pos adres.";
$.fn.validatebox.defaults.rules.url.message = "Gee 'n geldige URL nie.";
$.fn.validatebox.defaults.rules.length.message = "Voer 'n waarde tussen {0} en {1}.";
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Die veld is verpligtend.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Die veld is verpligtend.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Die veld is verpligtend.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Die veld is verpligtend.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Vandag';
$.fn.datebox.defaults.closeText = 'Sluit';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Die veld is verpligtend.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'صفحة';
$.fn.pagination.defaults.afterPageText = 'من {pages}';
$.fn.pagination.defaults.displayMsg = 'عرض {from} إلى {to} من {total} عنصر';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'معالجة, الرجاء الإنتظار ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'موافق';
$.messager.defaults.cancel = 'إلغاء';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'هذا الحقل مطلوب.';
$.fn.validatebox.defaults.rules.email.message = 'الرجاء إدخال بريد إلكتروني صحيح.';
$.fn.validatebox.defaults.rules.url.message = 'الرجاء إدخال رابط صحيح.';
$.fn.validatebox.defaults.rules.length.message = 'الرجاء إدخال قيمة بين {0} و {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'الرجاء التأكد من الحقل.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'هذا الحقل مطلوب.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'هذا الحقل مطلوب.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'هذا الحقل مطلوب.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'هذا الحقل مطلوب.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'اليوم';
$.fn.datebox.defaults.closeText = 'إغلاق';
$.fn.datebox.defaults.okText = 'موافق';
$.fn.datebox.defaults.missingMessage = 'هذا الحقل مطلوب.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Страница';
$.fn.pagination.defaults.afterPageText = 'от {pages}';
$.fn.pagination.defaults.displayMsg = 'Показани {from} за {to} от {total} продукти';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Обработка, моля изчакайте ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Добре';
$.messager.defaults.cancel = 'Задрасквам';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Това поле е задължително.';
$.fn.validatebox.defaults.rules.email.message = 'Моля, въведете валиден имейл адрес.';
$.fn.validatebox.defaults.rules.url.message = 'Моля въведете валиден URL.';
$.fn.validatebox.defaults.rules.length.message = 'Моля, въведете стойност между {0} и {1}.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Това поле е задължително.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Това поле е задължително.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Това поле е задължително.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Това поле е задължително.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Днес';
$.fn.datebox.defaults.closeText = 'Близо';
$.fn.datebox.defaults.okText = 'Добре';
$.fn.datebox.defaults.missingMessage = 'Това поле е задължително.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Pàgina';
$.fn.pagination.defaults.afterPageText = 'de {pages}';
$.fn.pagination.defaults.displayMsg = "Veient {from} a {to} de {total} d'articles";
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Elaboració, si us plau esperi ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Cancel';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Aquest camp és obligatori.';
$.fn.validatebox.defaults.rules.email.message = 'Introduïu una adreça de correu electrònic vàlida.';
$.fn.validatebox.defaults.rules.url.message = 'Si us plau, introduïu un URL vàlida.';
$.fn.validatebox.defaults.rules.length.message = 'Si us plau, introduïu un valor entre {0} i {1}.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Aquest camp és obligatori.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Aquest camp és obligatori.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Aquest camp és obligatori.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Aquest camp és obligatori.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Avui';
$.fn.datebox.defaults.closeText = 'Tancar';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Aquest camp és obligatori.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Strana';
$.fn.pagination.defaults.afterPageText = 'z {pages}';
$.fn.pagination.defaults.displayMsg = 'Zobrazuji {from} do {to} z {total} položky';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Zpracování, čekejte prosím ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Zrušit';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Toto pole je vyžadováno.';
$.fn.validatebox.defaults.rules.email.message = 'Zadejte prosím platnou e-mailovou adresu.';
$.fn.validatebox.defaults.rules.url.message = 'Zadejte prosím platnou adresu URL.';
$.fn.validatebox.defaults.rules.length.message = 'Prosím, zadejte hodnotu mezi {0} a {1}.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Dnes';
$.fn.datebox.defaults.closeText = 'Zavřít';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Strana';
$.fn.pagination.defaults.afterPageText = 'z {pages}';
$.fn.pagination.defaults.displayMsg = 'Zobrazuji záznam {from} až {to} z {total}.';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Pracuji, čekejte prosím…';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Zrušit';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Toto pole je vyžadováno.';
$.fn.validatebox.defaults.rules.email.message = 'Zadejte, prosím, platnou e-mailovou adresu.';
$.fn.validatebox.defaults.rules.url.message = 'Zadejte, prosím, platnou adresu URL.';
$.fn.validatebox.defaults.rules.length.message = 'Zadejte, prosím, hodnotu mezi {0} a {1}.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['N','P','Ú','S','Č','P','S']; //neděle pondělí úterý středa čtvrtek pátek sobota
$.fn.calendar.defaults.months = ['led', 'únr', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro']; //leden únor březen duben květen červen červenec srpen září říjen listopad prosinec
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Dnes';
$.fn.datebox.defaults.closeText = 'Zavřít';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Toto pole je vyžadováno.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Page';
$.fn.pagination.defaults.afterPageText = 'af {pages}';
$.fn.pagination.defaults.displayMsg = 'Viser {from} til {to} af {total} poster';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Behandling, vent venligst ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Annuller';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Dette felt er påkrævet.';
$.fn.validatebox.defaults.rules.email.message = 'Angiv en gyldig e-mail-adresse.';
$.fn.validatebox.defaults.rules.url.message = 'Angiv en gyldig webadresse.';
$.fn.validatebox.defaults.rules.length.message = 'Angiv en værdi mellem {0} og {1}.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Dette felt er påkrævet.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Dette felt er påkrævet.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Dette felt er påkrævet.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Dette felt er påkrævet.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'I dag';
$.fn.datebox.defaults.closeText = 'Luk';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Dette felt er påkrævet.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Seite';
$.fn.pagination.defaults.afterPageText = 'von {pages}';
$.fn.pagination.defaults.displayMsg = '{from} bis {to} von {total} Datensätzen';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Verarbeitung läuft, bitte warten ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'OK';
$.messager.defaults.cancel = 'Abbruch';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Dieses Feld wird benötigt.';
$.fn.validatebox.defaults.rules.email.message = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.';
$.fn.validatebox.defaults.rules.url.message = 'Bitte geben Sie eine gültige URL ein.';
$.fn.validatebox.defaults.rules.length.message = 'Bitte geben Sie einen Wert zwischen {0} und {1} ein.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Dieses Feld wird benötigt.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Dieses Feld wird benötigt.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Dieses Feld wird benötigt.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Dieses Feld wird benötigt.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.firstDay = 1;
$.fn.calendar.defaults.weeks = ['S','M','D','M','D','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Heute';
$.fn.datebox.defaults.closeText = 'Schließen';
$.fn.datebox.defaults.okText = 'OK';
$.fn.datebox.defaults.missingMessage = 'Dieses Feld wird benötigt.';
$.fn.datebox.defaults.formatter = function(date){
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
return (d<10?('0'+d):d)+'.'+(m<10?('0'+m):m)+'.'+y;
};
$.fn.datebox.defaults.parser = function(s){
if (!s) return new Date();
var ss = s.split('.');
var m = parseInt(ss[1],10);
var d = parseInt(ss[0],10);
var y = parseInt(ss[2],10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
return new Date(y,m-1,d);
} else {
return new Date();
}
};
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Σελίδα';
$.fn.pagination.defaults.afterPageText = 'από {pages}';
$.fn.pagination.defaults.displayMsg = 'Εμφάνιση {from} εώς {to} από {total} αντικείμενα';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Γίνεται Επεξεργασία, Παρακαλώ Περιμένετε ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Εντάξει';
$.messager.defaults.cancel = 'Άκυρο';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.';
$.fn.validatebox.defaults.rules.email.message = 'Παρακαλώ εισάγετε σωστή Ηλ.Διεύθυνση.';
$.fn.validatebox.defaults.rules.url.message = 'Παρακαλώ εισάγετε σωστό σύνδεσμο.';
$.fn.validatebox.defaults.rules.length.message = 'Παρακαλώ εισάγετε τιμή μεταξύ {0} και {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Παρακαλώ διορθώστε αυτό το πεδίο.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ'];
$.fn.calendar.defaults.months = ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιου', 'Ιου', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Σήμερα';
$.fn.datebox.defaults.closeText = 'Κλείσιμο';
$.fn.datebox.defaults.okText = 'Εντάξει';
$.fn.datebox.defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Page';
$.fn.pagination.defaults.afterPageText = 'of {pages}';
$.fn.pagination.defaults.displayMsg = 'Displaying {from} to {to} of {total} items';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Processing, please wait ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Cancel';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'This field is required.';
$.fn.validatebox.defaults.rules.email.message = 'Please enter a valid email address.';
$.fn.validatebox.defaults.rules.url.message = 'Please enter a valid URL.';
$.fn.validatebox.defaults.rules.length.message = 'Please enter a value between {0} and {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Please fix this field.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'This field is required.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'This field is required.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'This field is required.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'This field is required.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Today';
$.fn.datebox.defaults.closeText = 'Close';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'This field is required.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'P&aacute;gina';
$.fn.pagination.defaults.afterPageText = 'de {pages}';
$.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} elementos';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Procesando, por favor espere ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Aceptar';
$.messager.defaults.cancel = 'Cancelar';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Este campo es obligatorio.';
$.fn.validatebox.defaults.rules.email.message = 'Por favor ingrese una direcci&oacute;n de correo v&aacute;lida.';
$.fn.validatebox.defaults.rules.url.message = 'Por favor ingrese una URL v&aacute;lida.';
$.fn.validatebox.defaults.rules.length.message = 'Por favor ingrese un valor entre {0} y {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Por favor corrija este campo.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Este campo es obligatorio.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Este campo es obligatorio.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Este campo es obligatorio.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Este campo es obligatorio.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'];
$.fn.calendar.defaults.months = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Hoy';
$.fn.datebox.defaults.closeText = 'Cerrar';
$.fn.datebox.defaults.okText = 'Aceptar';
$.fn.datebox.defaults.missingMessage = 'Este campo es obligatorio.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Page';
$.fn.pagination.defaults.afterPageText = 'de {pages}';
$.fn.pagination.defaults.displayMsg = 'Affichage de {from} et {to} au {total} des articles';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = "Traitement, s'il vous plaît patienter ...";
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Annuler';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Ce champ est obligatoire.';
$.fn.validatebox.defaults.rules.email.message = "S'il vous plaît entrer une adresse email valide.";
$.fn.validatebox.defaults.rules.url.message = "S'il vous plaît entrer une URL valide.";
$.fn.validatebox.defaults.rules.length.message = "S'il vous plaît entrez une valeur comprise entre {0} et {1}.";
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Ce champ est obligatoire.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Ce champ est obligatoire.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Ce champ est obligatoire.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Ce champ est obligatoire.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = "Aujourd'hui";
$.fn.datebox.defaults.closeText = 'Fermer';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Ce champ est obligatoire.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Pagina';
$.fn.pagination.defaults.afterPageText = 'di {pages}';
$.fn.pagination.defaults.displayMsg = 'Visualizzazione {from} a {to} di {total} elementi';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'In lavorazione, attendere ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Annulla';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Questo campo è richiesto.';
$.fn.validatebox.defaults.rules.email.message = 'Inserisci un indirizzo email valido.';
$.fn.validatebox.defaults.rules.url.message = 'Inserisci un URL valido.';
$.fn.validatebox.defaults.rules.length.message = 'Inserisci un valore tra {0} e {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Aggiusta questo campo.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Questo campo è richiesto.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Questo campo è richiesto.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Questo campo è richiesto.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Questo campo è richiesto.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Oggi';
$.fn.datebox.defaults.closeText = 'Chiudi';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Questo campo è richiesto.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'ページ';
$.fn.pagination.defaults.afterPageText = '{pages} 中';
$.fn.pagination.defaults.displayMsg = '全 {total} アイテム中 {from} から {to} を表示中';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = '処理中です。少々お待ちください...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'OK';
$.messager.defaults.cancel = 'キャンセル';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = '入力は必須です。';
$.fn.validatebox.defaults.rules.email.message = '正しいメールアドレスを入力してください。';
$.fn.validatebox.defaults.rules.url.message = '正しいURLを入力してください。';
$.fn.validatebox.defaults.rules.length.message = '{0} から {1} の範囲の正しい値を入力してください。';
$.fn.validatebox.defaults.rules.remote.message = 'このフィールドを修正してください。';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = '入力は必須です。';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = '入力は必須です。';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = '入力は必須です。';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = '入力は必須です。';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['日','月','火','水','木','金','土'];
$.fn.calendar.defaults.months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = '今日';
$.fn.datebox.defaults.closeText = '閉じる';
$.fn.datebox.defaults.okText = 'OK';
$.fn.datebox.defaults.missingMessage = '入力は必須です。';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Pagina';
$.fn.pagination.defaults.afterPageText = 'van {pages}';
$.fn.pagination.defaults.displayMsg = 'Tonen van {from} tot {to} van de {total} items';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Verwerking, even geduld ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Annuleren';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Dit veld is verplicht.';
$.fn.validatebox.defaults.rules.email.message = 'Geef een geldig e-mailadres.';
$.fn.validatebox.defaults.rules.url.message = 'Vul een geldige URL.';
$.fn.validatebox.defaults.rules.length.message = 'Voer een waarde tussen {0} en {1}.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Dit veld is verplicht.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Dit veld is verplicht.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Dit veld is verplicht.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Dit veld is verplicht.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Vandaag';
$.fn.datebox.defaults.closeText = 'Dicht';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Dit veld is verplicht.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Strona';
$.fn.pagination.defaults.afterPageText = 'z {pages}';
$.fn.pagination.defaults.displayMsg = 'Wyświetlono elementy od {from} do {to} z {total}';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Przetwarzanie, proszę czekać ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Cancel';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'To pole jest wymagane.';
$.fn.validatebox.defaults.rules.email.message = 'Wprowadź poprawny adres email.';
$.fn.validatebox.defaults.rules.url.message = 'Wprowadź poprawny adres URL.';
$.fn.validatebox.defaults.rules.length.message = 'Wprowadź wartość z zakresu od {0} do {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Proszę poprawić to pole.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'To pole jest wymagane.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'To pole jest wymagane.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'To pole jest wymagane.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'To pole jest wymagane.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['N','P','W','Ś','C','P','S'];
$.fn.calendar.defaults.months = ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Dzisiaj';
$.fn.datebox.defaults.closeText = 'Zamknij';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'To pole jest wymagane.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Página';
$.fn.pagination.defaults.afterPageText = 'de {pages}';
$.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} itens';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Processando, aguarde ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Cancelar';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Esse campo é requerido.';
$.fn.validatebox.defaults.rules.email.message = 'Insira um endereço de email válido.';
$.fn.validatebox.defaults.rules.url.message = 'Insira uma URL válida.';
$.fn.validatebox.defaults.rules.length.message = 'Insira uma valor entre {0} e {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Corrija esse campo.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Esse campo é requerido.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Esse campo é requerido.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Esse campo é requerido.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Esse campo é requerido.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['D','S','T','Q','Q','S','S'];
$.fn.calendar.defaults.months = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Hoje';
$.fn.datebox.defaults.closeText = 'Fechar';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Esse campo é requerido.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Страница';
$.fn.pagination.defaults.afterPageText = 'из {pages}';
$.fn.pagination.defaults.displayMsg = 'Просмотр {from} до {to} из {total} записей';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = 'Обрабатывается, пожалуйста ждите ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Ок';
$.messager.defaults.cancel = 'Закрыть';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Это поле необходимо.';
$.fn.validatebox.defaults.rules.email.message = 'Пожалуйста введите корректный e-mail адрес.';
$.fn.validatebox.defaults.rules.url.message = 'Пожалуйста введите корректный URL.';
$.fn.validatebox.defaults.rules.length.message = 'Пожалуйста введите зачение между {0} и {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Пожалуйста исправте это поле.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Это поле необходимо.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Это поле необходимо.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Это поле необходимо.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Это поле необходимо.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.firstDay = 1;
$.fn.calendar.defaults.weeks = ['В','П','В','С','Ч','П','С'];
$.fn.calendar.defaults.months = ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Сегодня';
$.fn.datebox.defaults.closeText = 'Закрыть';
$.fn.datebox.defaults.okText = 'Ок';
$.fn.datebox.defaults.missingMessage = 'Это поле необходимо.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination) {
$.fn.pagination.defaults.beforePageText = 'Sida';
$.fn.pagination.defaults.afterPageText = 'av {pages}';
$.fn.pagination.defaults.displayMsg = 'Visar {from} till {to} av {total} poster';
}
if ($.fn.datagrid) {
$.fn.datagrid.defaults.loadMsg = 'Bearbetar, vänligen vänta ...';
}
if ($.fn.treegrid && $.fn.datagrid) {
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager) {
$.messager.defaults.ok = 'Ok';
$.messager.defaults.cancel = 'Avbryt';
}
if ($.fn.validatebox) {
$.fn.validatebox.defaults.missingMessage = 'Detta fält är obligatoriskt.';
$.fn.validatebox.defaults.rules.email.message = 'Vänligen ange en korrekt e-post adress.';
$.fn.validatebox.defaults.rules.url.message = 'Vänligen ange en korrekt URL.';
$.fn.validatebox.defaults.rules.length.message = 'Vänligen ange ett nummer mellan {0} och {1}.';
$.fn.validatebox.defaults.rules.remote.message = 'Vänligen åtgärda detta fält.';
}
if ($.fn.numberbox) {
$.fn.numberbox.defaults.missingMessage = 'Detta fält är obligatoriskt.';
}
if ($.fn.combobox) {
$.fn.combobox.defaults.missingMessage = 'Detta fält är obligatoriskt.';
}
if ($.fn.combotree) {
$.fn.combotree.defaults.missingMessage = 'Detta fält är obligatoriskt.';
}
if ($.fn.combogrid) {
$.fn.combogrid.defaults.missingMessage = 'Detta fält är obligatoriskt.';
}
if ($.fn.calendar) {
$.fn.calendar.defaults.weeks = ['Sön', 'Mån', 'Tis', 'Ons', 'Tors', 'Fre', 'Lör'];
$.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'];
}
if ($.fn.datebox) {
$.fn.datebox.defaults.currentText = 'I dag';
$.fn.datebox.defaults.closeText = 'Stäng';
$.fn.datebox.defaults.okText = 'Ok';
$.fn.datebox.defaults.missingMessage = 'Detta fält är obligatoriskt.';
}
if ($.fn.datetimebox && $.fn.datebox) {
$.extend($.fn.datetimebox.defaults, {
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = 'Sayfa';
$.fn.pagination.defaults.afterPageText = ' / {pages}';
$.fn.pagination.defaults.displayMsg = '{from} ile {to} arası gösteriliyor, toplam {total} kayıt';
}
if ($.fn.datagrid){
$.fn.panel.defaults.loadingMessage = "Yükleniyor...";
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadingMessage = "Yükleniyor...";
$.fn.datagrid.defaults.loadMsg = 'İşleminiz Yapılıyor, lütfen bekleyin ...';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = 'Tamam';
$.messager.defaults.cancel = 'İptal';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = 'Bu alan zorunludur.';
$.fn.validatebox.defaults.rules.email.message = 'Lütfen geçerli bir email adresi giriniz.';
$.fn.validatebox.defaults.rules.url.message = 'Lütfen geçerli bir URL giriniz.';
$.fn.validatebox.defaults.rules.length.message = 'Lütfen {0} ile {1} arasında bir değer giriniz.';
$.fn.validatebox.defaults.rules.remote.message = 'Lütfen bu alanı düzeltiniz.';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = 'Bu alan zorunludur.';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = 'Bu alan zorunludur.';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = 'Bu alan zorunludur.';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = 'Bu alan zorunludur.';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['Pz','Pt','Sa','Ça','Pe','Cu','Ct'];
$.fn.calendar.defaults.months = ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = 'Bugün';
$.fn.datebox.defaults.closeText = 'Kapat';
$.fn.datebox.defaults.okText = 'Tamam';
$.fn.datebox.defaults.missingMessage = 'Bu alan zorunludur.';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
$.fn.datebox.defaults.formatter=function(date){
var y=date.getFullYear();
var m=date.getMonth()+1;
var d=date.getDate();
if(m<10){m="0"+m;}
if(d<10){d="0"+d;}
return d+"."+m+"."+y;
};
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = '第';
$.fn.pagination.defaults.afterPageText = '共{pages}页';
$.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = '正在处理,请稍待。。。';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = '确定';
$.messager.defaults.cancel = '取消';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = '该输入项为必输项';
$.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址';
$.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址';
$.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间';
$.fn.validatebox.defaults.rules.remote.message = '请修正该字段';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = '该输入项为必输项';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = '该输入项为必输项';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = '该输入项为必输项';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = '该输入项为必输项';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六'];
$.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = '今天';
$.fn.datebox.defaults.closeText = '关闭';
$.fn.datebox.defaults.okText = '确定';
$.fn.datebox.defaults.missingMessage = '该输入项为必输项';
$.fn.datebox.defaults.formatter = function(date){
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d);
};
$.fn.datebox.defaults.parser = function(s){
if (!s) return new Date();
var ss = s.split('-');
var y = parseInt(ss[0],10);
var m = parseInt(ss[1],10);
var d = parseInt(ss[2],10);
if (!isNaN(y) && !isNaN(m) && !isNaN(d)){
return new Date(y,m-1,d);
} else {
return new Date();
}
};
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
if ($.fn.pagination){
$.fn.pagination.defaults.beforePageText = '第';
$.fn.pagination.defaults.afterPageText = '共{pages}頁';
$.fn.pagination.defaults.displayMsg = '顯示{from}到{to},共{total}記錄';
}
if ($.fn.datagrid){
$.fn.datagrid.defaults.loadMsg = '正在處理,請稍待。。。';
}
if ($.fn.treegrid && $.fn.datagrid){
$.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg;
}
if ($.messager){
$.messager.defaults.ok = '確定';
$.messager.defaults.cancel = '取消';
}
if ($.fn.validatebox){
$.fn.validatebox.defaults.missingMessage = '該輸入項為必輸項';
$.fn.validatebox.defaults.rules.email.message = '請輸入有效的電子郵件地址';
$.fn.validatebox.defaults.rules.url.message = '請輸入有效的URL地址';
$.fn.validatebox.defaults.rules.length.message = '輸入內容長度必須介於{0}和{1}之間';
$.fn.validatebox.defaults.rules.remote.message = '請修正此欄位';
}
if ($.fn.numberbox){
$.fn.numberbox.defaults.missingMessage = '該輸入項為必輸項';
}
if ($.fn.combobox){
$.fn.combobox.defaults.missingMessage = '該輸入項為必輸項';
}
if ($.fn.combotree){
$.fn.combotree.defaults.missingMessage = '該輸入項為必輸項';
}
if ($.fn.combogrid){
$.fn.combogrid.defaults.missingMessage = '該輸入項為必輸項';
}
if ($.fn.calendar){
$.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六'];
$.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
}
if ($.fn.datebox){
$.fn.datebox.defaults.currentText = '今天';
$.fn.datebox.defaults.closeText = '關閉';
$.fn.datebox.defaults.okText = '確定';
$.fn.datebox.defaults.missingMessage = '該輸入項為必輸項';
}
if ($.fn.datetimebox && $.fn.datebox){
$.extend($.fn.datetimebox.defaults,{
currentText: $.fn.datebox.defaults.currentText,
closeText: $.fn.datebox.defaults.closeText,
okText: $.fn.datebox.defaults.okText,
missingMessage: $.fn.datebox.defaults.missingMessage
});
}
/**
* jQuery EasyUI 1.3.3
*
* Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL or commercial licenses
* To use it on other terms please contact us: info@jeasyui.com
* http://www.gnu.org/licenses/gpl.txt
* http://www.jeasyui.com/license_commercial.php
*
*/
(function($){
function _1(_2){
var _3=$.data(_2,"accordion").options;
var _4=$.data(_2,"accordion").panels;
var cc=$(_2);
_3.fit?$.extend(_3,cc._fit()):cc._fit(false);
if(_3.width>0){
cc._outerWidth(_3.width);
}
var _5="auto";
if(_3.height>0){
cc._outerHeight(_3.height);
var _6=_4.length?_4[0].panel("header").css("height","")._outerHeight():"auto";
var _5=cc.height()-(_4.length-1)*_6;
}
for(var i=0;i<_4.length;i++){
var _7=_4[i];
var _8=_7.panel("header");
_8._outerHeight(_6);
_7.panel("resize",{width:cc.width(),height:_5});
}
};
function _9(_a){
var _b=$.data(_a,"accordion").panels;
for(var i=0;i<_b.length;i++){
var _c=_b[i];
if(_c.panel("options").collapsed==false){
return _c;
}
}
return null;
};
function _d(_e,_f){
var _10=$.data(_e,"accordion").panels;
for(var i=0;i<_10.length;i++){
if(_10[i][0]==$(_f)[0]){
return i;
}
}
return -1;
};
function _11(_12,_13,_14){
var _15=$.data(_12,"accordion").panels;
if(typeof _13=="number"){
if(_13<0||_13>=_15.length){
return null;
}else{
var _16=_15[_13];
if(_14){
_15.splice(_13,1);
}
return _16;
}
}
for(var i=0;i<_15.length;i++){
var _16=_15[i];
if(_16.panel("options").title==_13){
if(_14){
_15.splice(i,1);
}
return _16;
}
}
return null;
};
function _17(_18){
var _19=$.data(_18,"accordion").options;
var cc=$(_18);
if(_19.border){
cc.removeClass("accordion-noborder");
}else{
cc.addClass("accordion-noborder");
}
};
function _1a(_1b){
var cc=$(_1b);
cc.addClass("accordion");
var _1c=[];
cc.children("div").each(function(){
var _1d=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)});
var pp=$(this);
_1c.push(pp);
_20(_1b,pp,_1d);
});
cc.bind("_resize",function(e,_1e){
var _1f=$.data(_1b,"accordion").options;
if(_1f.fit==true||_1e){
_1(_1b);
}
return false;
});
return {accordion:cc,panels:_1c};
};
function _20(_21,pp,_22){
pp.panel($.extend({},_22,{collapsible:false,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body",onBeforeExpand:function(){
var _23=_9(_21);
if(_23){
var _24=$(_23).panel("header");
_24.removeClass("accordion-header-selected");
_24.find(".accordion-collapse").triggerHandler("click");
}
var _24=pp.panel("header");
_24.addClass("accordion-header-selected");
_24.find(".accordion-collapse").removeClass("accordion-expand");
},onExpand:function(){
var _25=$.data(_21,"accordion").options;
_25.onSelect.call(_21,pp.panel("options").title,_d(_21,this));
},onBeforeCollapse:function(){
var _26=pp.panel("header");
_26.removeClass("accordion-header-selected");
_26.find(".accordion-collapse").addClass("accordion-expand");
}}));
var _27=pp.panel("header");
var t=$("<a class=\"accordion-collapse accordion-expand\" href=\"javascript:void(0)\"></a>").appendTo(_27.children("div.panel-tool"));
t.bind("click",function(e){
var _28=$.data(_21,"accordion").options.animate;
_35(_21);
if(pp.panel("options").collapsed){
pp.panel("expand",_28);
}else{
pp.panel("collapse",_28);
}
return false;
});
_27.click(function(){
$(this).find(".accordion-collapse").triggerHandler("click");
return false;
});
};
function _29(_2a,_2b){
var _2c=_11(_2a,_2b);
if(!_2c){
return;
}
var _2d=_9(_2a);
if(_2d&&_2d[0]==_2c[0]){
return;
}
_2c.panel("header").triggerHandler("click");
};
function _2e(_2f){
var _30=$.data(_2f,"accordion").panels;
for(var i=0;i<_30.length;i++){
if(_30[i].panel("options").selected){
_31(i);
return;
}
}
if(_30.length){
_31(0);
}
function _31(_32){
var _33=$.data(_2f,"accordion").options;
var _34=_33.animate;
_33.animate=false;
_29(_2f,_32);
_33.animate=_34;
};
};
function _35(_36){
var _37=$.data(_36,"accordion").panels;
for(var i=0;i<_37.length;i++){
_37[i].stop(true,true);
}
};
function add(_38,_39){
var _3a=$.data(_38,"accordion").options;
var _3b=$.data(_38,"accordion").panels;
if(_39.selected==undefined){
_39.selected=true;
}
_35(_38);
var pp=$("<div></div>").appendTo(_38);
_3b.push(pp);
_20(_38,pp,_39);
_1(_38);
_3a.onAdd.call(_38,_39.title,_3b.length-1);
if(_39.selected){
_29(_38,_3b.length-1);
}
};
function _3c(_3d,_3e){
var _3f=$.data(_3d,"accordion").options;
var _40=$.data(_3d,"accordion").panels;
_35(_3d);
var _41=_11(_3d,_3e);
var _42=_41.panel("options").title;
var _43=_d(_3d,_41);
if(_3f.onBeforeRemove.call(_3d,_42,_43)==false){
return;
}
var _41=_11(_3d,_3e,true);
if(_41){
_41.panel("destroy");
if(_40.length){
_1(_3d);
var _44=_9(_3d);
if(!_44){
_29(_3d,0);
}
}
}
_3f.onRemove.call(_3d,_42,_43);
};
$.fn.accordion=function(_45,_46){
if(typeof _45=="string"){
return $.fn.accordion.methods[_45](this,_46);
}
_45=_45||{};
return this.each(function(){
var _47=$.data(this,"accordion");
var _48;
if(_47){
_48=$.extend(_47.options,_45);
_47.opts=_48;
}else{
_48=$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_45);
var r=_1a(this);
$.data(this,"accordion",{options:_48,accordion:r.accordion,panels:r.panels});
}
_17(this);
_1(this);
_2e(this);
});
};
$.fn.accordion.methods={options:function(jq){
return $.data(jq[0],"accordion").options;
},panels:function(jq){
return $.data(jq[0],"accordion").panels;
},resize:function(jq){
return jq.each(function(){
_1(this);
});
},getSelected:function(jq){
return _9(jq[0]);
},getPanel:function(jq,_49){
return _11(jq[0],_49);
},getPanelIndex:function(jq,_4a){
return _d(jq[0],_4a);
},select:function(jq,_4b){
return jq.each(function(){
_29(this,_4b);
});
},add:function(jq,_4c){
return jq.each(function(){
add(this,_4c);
});
},remove:function(jq,_4d){
return jq.each(function(){
_3c(this,_4d);
});
}};
$.fn.accordion.parseOptions=function(_4e){
var t=$(_4e);
return $.extend({},$.parser.parseOptions(_4e,["width","height",{fit:"boolean",border:"boolean",animate:"boolean"}]));
};
$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,onSelect:function(_4f,_50){
},onAdd:function(_51,_52){
},onBeforeRemove:function(_53,_54){
},onRemove:function(_55,_56){
}};
})(jQuery);
/**
* jQuery EasyUI 1.3.3
*
* Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
*
* Licensed under the GPL or commercial licenses
* To use it on other terms please contact us: info@jeasyui.com
* http://www.gnu.org/licenses/gpl.txt
* http://www.jeasyui.com/license_commercial.php
*
*/
(function($){
function _1(_2){
var _3=$.data(_2,"calendar").options;
var t=$(_2);
if(_3.fit==true){
var p=t.parent();
_3.width=p.width();
_3.height=p.height();
}
var _4=t.find(".calendar-header");
t._outerWidth(_3.width);
t._outerHeight(_3.height);
t.find(".calendar-body")._outerHeight(t.height()-_4._outerHeight());
};
function _5(_6){
$(_6).addClass("calendar").html("<div class=\"calendar-header\">"+"<div class=\"calendar-prevmonth\"></div>"+"<div class=\"calendar-nextmonth\"></div>"+"<div class=\"calendar-prevyear\"></div>"+"<div class=\"calendar-nextyear\"></div>"+"<div class=\"calendar-title\">"+"<span>Aprial 2010</span>"+"</div>"+"</div>"+"<div class=\"calendar-body\">"+"<div class=\"calendar-menu\">"+"<div class=\"calendar-menu-year-inner\">"+"<span class=\"calendar-menu-prev\"></span>"+"<span><input class=\"calendar-menu-year\" type=\"text\"></input></span>"+"<span class=\"calendar-menu-next\"></span>"+"</div>"+"<div class=\"calendar-menu-month-inner\">"+"</div>"+"</div>"+"</div>");
$(_6).find(".calendar-title span").hover(function(){
$(this).addClass("calendar-menu-hover");
},function(){
$(this).removeClass("calendar-menu-hover");
}).click(function(){
var _7=$(_6).find(".calendar-menu");
if(_7.is(":visible")){
_7.hide();
}else{
_14(_6);
}
});
$(".calendar-prevmonth,.calendar-nextmonth,.calendar-prevyear,.calendar-nextyear",_6).hover(function(){
$(this).addClass("calendar-nav-hover");
},function(){
$(this).removeClass("calendar-nav-hover");
});
$(_6).find(".calendar-nextmonth").click(function(){
_9(_6,1);
});
$(_6).find(".calendar-prevmonth").click(function(){
_9(_6,-1);
});
$(_6).find(".calendar-nextyear").click(function(){
_f(_6,1);
});
$(_6).find(".calendar-prevyear").click(function(){
_f(_6,-1);
});
$(_6).bind("_resize",function(){
var _8=$.data(_6,"calendar").options;
if(_8.fit==true){
_1(_6);
}
return false;
});
};
function _9(_a,_b){
var _c=$.data(_a,"calendar").options;
_c.month+=_b;
if(_c.month>12){
_c.year++;
_c.month=1;
}else{
if(_c.month<1){
_c.year--;
_c.month=12;
}
}
_d(_a);
var _e=$(_a).find(".calendar-menu-month-inner");
_e.find("td.calendar-selected").removeClass("calendar-selected");
_e.find("td:eq("+(_c.month-1)+")").addClass("calendar-selected");
};
function _f(_10,_11){
var _12=$.data(_10,"calendar").options;
_12.year+=_11;
_d(_10);
var _13=$(_10).find(".calendar-menu-year");
_13.val(_12.year);
};
function _14(_15){
var _16=$.data(_15,"calendar").options;
$(_15).find(".calendar-menu").show();
if($(_15).find(".calendar-menu-month-inner").is(":empty")){
$(_15).find(".calendar-menu-month-inner").empty();
var t=$("<table></table>").appendTo($(_15).find(".calendar-menu-month-inner"));
var idx=0;
for(var i=0;i<3;i++){
var tr=$("<tr></tr>").appendTo(t);
for(var j=0;j<4;j++){
$("<td class=\"calendar-menu-month\"></td>").html(_16.months[idx++]).attr("abbr",idx).appendTo(tr);
}
}
$(_15).find(".calendar-menu-prev,.calendar-menu-next").hover(function(){
$(this).addClass("calendar-menu-hover");
},function(){
$(this).removeClass("calendar-menu-hover");
});
$(_15).find(".calendar-menu-next").click(function(){
var y=$(_15).find(".calendar-menu-year");
if(!isNaN(y.val())){
y.val(parseInt(y.val())+1);
}
});
$(_15).find(".calendar-menu-prev").click(function(){
var y=$(_15).find(".calendar-menu-year");
if(!isNaN(y.val())){
y.val(parseInt(y.val()-1));
}
});
$(_15).find(".calendar-menu-year").keypress(function(e){
if(e.keyCode==13){
_17();
}
});
$(_15).find(".calendar-menu-month").hover(function(){
$(this).addClass("calendar-menu-hover");
},function(){
$(this).removeClass("calendar-menu-hover");
}).click(function(){
var _18=$(_15).find(".calendar-menu");
_18.find(".calendar-selected").removeClass("calendar-selected");
$(this).addClass("calendar-selected");
_17();
});
}
function _17(){
var _19=$(_15).find(".calendar-menu");
var _1a=_19.find(".calendar-menu-year").val();
var _1b=_19.find(".calendar-selected").attr("abbr");
if(!isNaN(_1a)){
_16.year=parseInt(_1a);
_16.month=parseInt(_1b);
_d(_15);
}
_19.hide();
};
var _1c=$(_15).find(".calendar-body");
var _1d=$(_15).find(".calendar-menu");
var _1e=_1d.find(".calendar-menu-year-inner");
var _1f=_1d.find(".calendar-menu-month-inner");
_1e.find("input").val(_16.year).focus();
_1f.find("td.calendar-selected").removeClass("calendar-selected");
_1f.find("td:eq("+(_16.month-1)+")").addClass("calendar-selected");
_1d._outerWidth(_1c._outerWidth());
_1d._outerHeight(_1c._outerHeight());
_1f._outerHeight(_1d.height()-_1e._outerHeight());
};
function _20(_21,_22,_23){
var _24=$.data(_21,"calendar").options;
var _25=[];
var _26=new Date(_22,_23,0).getDate();
for(var i=1;i<=_26;i++){
_25.push([_22,_23,i]);
}
var _27=[],_28=[];
var _29=-1;
while(_25.length>0){
var _2a=_25.shift();
_28.push(_2a);
var day=new Date(_2a[0],_2a[1]-1,_2a[2]).getDay();
if(_29==day){
day=0;
}else{
if(day==(_24.firstDay==0?7:_24.firstDay)-1){
_27.push(_28);
_28=[];
}
}
_29=day;
}
if(_28.length){
_27.push(_28);
}
var _2b=_27[0];
if(_2b.length<7){
while(_2b.length<7){
var _2c=_2b[0];
var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-1);
_2b.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]);
}
}else{
var _2c=_2b[0];
var _28=[];
for(var i=1;i<=7;i++){
var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-i);
_28.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]);
}
_27.unshift(_28);
}
var _2d=_27[_27.length-1];
while(_2d.length<7){
var _2e=_2d[_2d.length-1];
var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+1);
_2d.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]);
}
if(_27.length<6){
var _2e=_2d[_2d.length-1];
var _28=[];
for(var i=1;i<=7;i++){
var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+i);
_28.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]);
}
_27.push(_28);
}
return _27;
};
function _d(_2f){
var _30=$.data(_2f,"calendar").options;
$(_2f).find(".calendar-title span").html(_30.months[_30.month-1]+" "+_30.year);
var _31=$(_2f).find("div.calendar-body");
_31.find(">table").remove();
var t=$("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><thead></thead><tbody></tbody></table>").prependTo(_31);
var tr=$("<tr></tr>").appendTo(t.find("thead"));
for(var i=_30.firstDay;i<_30.weeks.length;i++){
tr.append("<th>"+_30.weeks[i]+"</th>");
}
for(var i=0;i<_30.firstDay;i++){
tr.append("<th>"+_30.weeks[i]+"</th>");
}
var _32=_20(_2f,_30.year,_30.month);
for(var i=0;i<_32.length;i++){
var _33=_32[i];
var tr=$("<tr></tr>").appendTo(t.find("tbody"));
for(var j=0;j<_33.length;j++){
var day=_33[j];
$("<td class=\"calendar-day calendar-other-month\"></td>").attr("abbr",day[0]+","+day[1]+","+day[2]).html(day[2]).appendTo(tr);
}
}
t.find("td[abbr^=\""+_30.year+","+_30.month+"\"]").removeClass("calendar-other-month");
var now=new Date();
var _34=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate();
t.find("td[abbr=\""+_34+"\"]").addClass("calendar-today");
if(_30.current){
t.find(".calendar-selected").removeClass("calendar-selected");
var _35=_30.current.getFullYear()+","+(_30.current.getMonth()+1)+","+_30.current.getDate();
t.find("td[abbr=\""+_35+"\"]").addClass("calendar-selected");
}
var _36=6-_30.firstDay;
var _37=_36+1;
if(_36>=7){
_36-=7;
}
if(_37>=7){
_37-=7;
}
t.find("tr").find("td:eq("+_36+")").addClass("calendar-saturday");
t.find("tr").find("td:eq("+_37+")").addClass("calendar-sunday");
t.find("td").hover(function(){
$(this).addClass("calendar-hover");
},function(){
$(this).removeClass("calendar-hover");
}).click(function(){
t.find(".calendar-selected").removeClass("calendar-selected");
$(this).addClass("calendar-selected");
var _38=$(this).attr("abbr").split(",");
_30.current=new Date(_38[0],parseInt(_38[1])-1,_38[2]);
_30.onSelect.call(_2f,_30.current);
});
};
$.fn.calendar=function(_39,_3a){
if(typeof _39=="string"){
return $.fn.calendar.methods[_39](this,_3a);
}
_39=_39||{};
return this.each(function(){
var _3b=$.data(this,"calendar");
if(_3b){
$.extend(_3b.options,_39);
}else{
_3b=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_39)});
_5(this);
}
if(_3b.options.border==false){
$(this).addClass("calendar-noborder");
}
_1(this);
_d(this);
$(this).find("div.calendar-menu").hide();
});
};
$.fn.calendar.methods={options:function(jq){
return $.data(jq[0],"calendar").options;
},resize:function(jq){
return jq.each(function(){
_1(this);
});
},moveTo:function(jq,_3c){
return jq.each(function(){
$(this).calendar({year:_3c.getFullYear(),month:_3c.getMonth()+1,current:_3c});
});
}};
$.fn.calendar.parseOptions=function(_3d){
var t=$(_3d);
return $.extend({},$.parser.parseOptions(_3d,["width","height",{firstDay:"number",fit:"boolean",border:"boolean"}]));
};
$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date(),onSelect:function(_3e){
}};
})(jQuery);
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment