diff --git a/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/BPA.SaaS.TaskSchedule.Api.Bootstrap.csproj b/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/BPA.SaaS.TaskSchedule.Api.Bootstrap.csproj index b800785..c5a51eb 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/BPA.SaaS.TaskSchedule.Api.Bootstrap.csproj +++ b/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/BPA.SaaS.TaskSchedule.Api.Bootstrap.csproj @@ -7,6 +7,8 @@ + + diff --git a/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/SetupBootstrap.cs b/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/SetupBootstrap.cs index 5c8762e..08d25be 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/SetupBootstrap.cs +++ b/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/SetupBootstrap.cs @@ -9,6 +9,9 @@ using BPA.Component.LogClient.Extensions; using BPA.Component.SDKCommon; using BPA.Component.WebApiExtensions.Extensions; using BPA.SaaS.TaskSchedule.Api.Model; +using BPA.SaaS.TaskSchedule.Api.Service; +using BPA.SaaS.TaskSchedule.Api.Service.QzScheduler; +using BPA.SaaS.TaskSchedule.Api.Service.WarnAlarms; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.Http; @@ -52,10 +55,16 @@ public static class SetupBootstrap services.AddTransient(typeof(Lazy<>), typeof(BPADefaultLazy<>)); services.AddHttpContextAccessor(); services.AddControllers(options => { options.AddDefaultMvcOptions(); }); + services.AddControllersWithViews(mvcOptions => { mvcOptions.AddDefaultMvcOptions(true); }).AddRazorRuntimeCompilation(); services.AddEndpointsApiExplorer(); services.AddServiceSDK(_configuration); services.AddHealthChecks(); + services.SetupTaskSchedule(); + services.AddHttpClient(typeof(SynRequestHttpJobScheduler).FullName); + services.AddHttpClient(typeof(AnyTimeTaskScheduleExecutorService).FullName); + services.AddHttpClient(typeof(WechatWebhookWarnAlarm).FullName); + // services.AddCap(x => // { // var config = services.GetPreConfig(args); @@ -90,8 +99,7 @@ public static class SetupBootstrap public static ContainerBuilder SetupConfigureContainer(this ContainerBuilder builder) { // 注入DB - builder.RegisterType().InstancePerLifetimeScope(); - + // builder.RegisterType().InstancePerLifetimeScope(); // // 服务层 // builder.RegisterAssemblyTypes(typeof(HomeService).Assembly) // .Where(t => t.Name.EndsWith("Service")) @@ -112,7 +120,6 @@ public static class SetupBootstrap public static void PreHeatRun(this IServiceProvider serviceProvider) { serviceProvider.GetService(); - serviceProvider.GetService()?.DbMaintenance.GetTableInfoList(); serviceProvider.PreHeatRunRedis(); serviceProvider.PreHeatRunRabbitMQ(); serviceProvider.SetDebug(true); diff --git a/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/SetupTaskScheduleConfig.cs b/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/SetupTaskScheduleConfig.cs new file mode 100644 index 0000000..9ae0e79 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Bootstrap/SetupTaskScheduleConfig.cs @@ -0,0 +1,95 @@ +using BPA.Component.LogClient; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Service.QzScheduler; +using Microsoft.Extensions.DependencyInjection; +using Quartz.Logging; + +namespace BPA.SaaS.TaskSchedule.Api.Bootstrap +{ + public static class SetupTaskScheduleConfig + { + /// + /// 注入redis + /// + /// + public static void SetupTaskSchedule(this IServiceCollection services) + { + //调度器相关 + services.AddSingleton(); + services.AddSingleton(); + services.AddTransient(); + + //注释不用了 + //services.AddSingleton(); + //services.AddTransient(); + + } + + /// + /// 预热redis + /// + /// + public static void PreHeatTaskSchedule(this IServiceProvider serviceProvider) + { + //LogProvider.SetCurrentLogProvider(new QuartzLogProvider()); + //初始化字典 + serviceProvider.GetService().Start(); + //启动任务 + serviceProvider.GetService().Start(); + //启动日志任务 + //serviceProvider.GetService().Start(); + } + } + + + + /// + /// QuartzLogProvider + /// + public class QuartzLogProvider : ILogProvider + { + private readonly NLog.ILogger logger = BPALogManager.GetCurrentClassLogger(); + public Logger GetLogger(string name) + { + return (level, func, exception, parameters) => + { + if (func == null) return true; + switch (level) + { + case LogLevel.Trace: + logger.Trace(func(), parameters); + break; + case LogLevel.Debug: + logger.Debug(func(), parameters); + break; + case LogLevel.Info: + logger.Info(func(), parameters); + break; + case LogLevel.Warn: + logger.Warn(func(), parameters); + break; + case LogLevel.Error: + logger.Error(func(), parameters); + break; + case LogLevel.Fatal: + logger.Fatal(func(), parameters); + break; + default: + logger.Info(func(), parameters); + break; + } + return true; + }; + } + + public IDisposable OpenMappedContext(string key, object value, bool destructure = false) + { + return null; + } + + public IDisposable OpenNestedContext(string message) + { + return null; + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumExecutedResultType.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumExecutedResultType.cs new file mode 100644 index 0000000..3fdba80 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumExecutedResultType.cs @@ -0,0 +1,25 @@ +using System.ComponentModel; + +namespace BPA.SaaS.TaskSchedule.Api.DTO; + +public enum EnumExecutedResultType +{ + /// 未知 + [Description("未知")] Unknown, + /// 待执行 + [Description("待执行")] Wait, + /// 请求失败 + [Description("请求失败")] CallFail, + /// 正在执行 + [Description("正在执行")] Executing, + /// 执行成功 + [Description("执行成功")] Success, + /// 执行失败 + [Description("执行失败")] Fail, + /// 暂停 + [Description("暂停")] Suspend, + /// 终止 + [Description("终止")] Abort, + /// 超时 + [Description("超时")] Timeout, +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumRequestMethodType.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumRequestMethodType.cs new file mode 100644 index 0000000..0571fdb --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumRequestMethodType.cs @@ -0,0 +1,11 @@ +using System.ComponentModel; + +namespace BPA.SaaS.TaskSchedule.Api.DTO; + +public enum EnumRequestMethodType +{ + /// POST请求 + [Description("POST请求")] POST, + /// GET请求 + [Description("GET请求")] GET, +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumRequestURLType.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumRequestURLType.cs new file mode 100644 index 0000000..07a1f65 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumRequestURLType.cs @@ -0,0 +1,9 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO; + +public enum EnumRequestURLType +{ + /// 自定义 + Custom = 1, + /// 业务系统Api + BizSysApi = 2, +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumTaskType.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumTaskType.cs new file mode 100644 index 0000000..9a5c82c --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumTaskType.cs @@ -0,0 +1,13 @@ +using System.ComponentModel; + +namespace BPA.SaaS.TaskSchedule.Api.DTO; + +public enum EnumTaskType +{ + /// 未知 + [Description("未知")] Unknown, + /// 同步请求任务 + [Description("同步请求任务")] SynRequest, + /// 任意时间任务 + [Description("任意时间任务")] AnyTime, +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumTriggerType.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumTriggerType.cs new file mode 100644 index 0000000..5db107e --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/EnumTriggerType.cs @@ -0,0 +1,13 @@ +using System.ComponentModel; + +namespace BPA.SaaS.TaskSchedule.Api.DTO; + +public enum EnumTriggerType +{ + /// + [Description("简单模式")] Nothing, + /// 简单模式 + [Description("简单模式")] SimpleTrigger, + /// Cron表达式模式 + [Description("Cron表达式模式")] CronTrigger, +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/DeleteSystemDictionaryReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/DeleteSystemDictionaryReq.cs new file mode 100644 index 0000000..db4f62b --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/DeleteSystemDictionaryReq.cs @@ -0,0 +1,15 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary +{ + /// + /// 删除 + /// + public class DeleteSystemDictionaryReq + { + + /// + /// 主键Id + /// + public long Id { set; get; } + + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/SaveSystemDictionaryReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/SaveSystemDictionaryReq.cs new file mode 100644 index 0000000..40330a2 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/SaveSystemDictionaryReq.cs @@ -0,0 +1,39 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; + +/// +/// 更新 +/// +public class SaveSystemDictionaryReq +{ + + /// + /// 主键Id + /// + public long Id { set; get; } + + /// + /// 类型 + /// + public EnumSystemDictionaryType Type { set; get; } + + /// + /// 键 + /// + public string Key { set; get; } + + /// + /// 值 + /// + public string Value { set; get; } + + /// + /// 值Ext + /// + public string ValueExt { set; get; } +} + +public enum EnumSystemDictionaryType +{ + /// 业务系统Api + BizSysApi = 1, +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/SystemDictionaryDTO.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/SystemDictionaryDTO.cs new file mode 100644 index 0000000..80f6008 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/SystemDictionary/SystemDictionaryDTO.cs @@ -0,0 +1,34 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary +{ + /// + /// DTO + /// + public class SystemDictionaryDTO + { + + /// + /// 主键Id + /// + public long Id { set; get; } + + /// + /// 类型 + /// + public EnumSystemDictionaryType Type { set; get; } + + /// + /// 键 + /// + public string Key { set; get; } + + /// + /// 值 + /// + public string Value { set; get; } + + /// + /// 值Ext + /// + public string ValueExt { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/DeleteTaskInfoReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/DeleteTaskInfoReq.cs new file mode 100644 index 0000000..25170ca --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/DeleteTaskInfoReq.cs @@ -0,0 +1,13 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo +{ + /// + /// 删除 + /// + public class DeleteTaskInfoReq + { + /// + /// 主键Id + /// + public long Id { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/DoOnceReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/DoOnceReq.cs new file mode 100644 index 0000000..8d17716 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/DoOnceReq.cs @@ -0,0 +1,29 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo +{ + + /// + /// 执行一次 + /// + public class DoOnceReq + { + /// + /// 任务ID + /// + public long TaskId { set; get; } + + /// + /// 计划执行时间 + /// + public DateTime PlanStartTime { set; get; } + + /// + /// 执行任务的请求参数 + /// + public string RequestParam { set; get; } + + /// + /// 次数 + /// + public int Times { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/SaveTaskInfoReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/SaveTaskInfoReq.cs new file mode 100644 index 0000000..6a46d63 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/SaveTaskInfoReq.cs @@ -0,0 +1,118 @@ +using System.ComponentModel; + +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; + +/// +/// 修改任务信息 +/// +public class SaveTaskInfoReq +{ + /// + /// 主键 + /// + public long Id { set; get; } + + /// + /// 任务名称,必须唯一 + /// + public string Name { set; get; } + + /// + /// 任务标题 + /// + public string Title { set; get; } + + /// + /// 任务类型 + /// + public EnumTaskType TaskType { set; get; } + + /// + /// 请求地址类型 + /// + public EnumRequestURLType RequestURLType { set; get; } + + /// + /// 业务系统Api名称 + /// + public string BizSysApiName { set; get; } + + /// + /// 请求地址 + /// + public string RequestURL { set; get; } + + /// + /// 请求方法类型 + /// + public EnumRequestMethodType RequestMethod { set; get; } + + /// + /// 请求参数 + /// + public string RequestParam { set; get; } + + /// + /// 任务描述 + /// + public string Description { set; get; } + + /// + /// 任务开始时间 + /// + public DateTime StartTime { set; get; } + + /// + /// Trigger类型,0:SimpleTrigger,1:CronTrigger + /// + public EnumTriggerType TriggerType { set; get; } + + /// + /// 重复执行次数,-1表示无限次,其他正整数表示具体重复的次数 + /// + public int RepeatCount { set; get; } + + /// + /// 重复执行间隔时间,单位:秒 + /// + public int RepeatInterval { set; get; } + + /// + /// Cron表达式 + /// + public string CronExpression { set; get; } + + /// + /// 任务状态 + /// + public EnumTaskStatusType Status { set; get; } + + /// + /// 超时时间(秒) + /// + public long Timeout { set; get; } + + /// + /// 保留日志天数,0代表不处理 + /// + public int KeepLogDays { set; get; } + + /// + /// 保留日志条数,0代表不处理 + /// + public int KeepLogCount { set; get; } + + /// + /// 成功标志 + /// + public string SuccessMark { set; get; } + +} + +public enum EnumTaskStatusType +{ + /// 已开启 + [Description("已开启")] Beginning, + /// 暂停 + [Description("暂停")] Suspend, +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/TaskInfoDTO.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/TaskInfoDTO.cs new file mode 100644 index 0000000..a3f04f7 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/TaskInfoDTO.cs @@ -0,0 +1,133 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo +{ + /// + /// 任务信息 + /// + public class TaskInfoDTO + { + /// + /// 主键 + /// + public long Id { set; get; } + + /// + /// 任务名称,必须唯一 + /// + public string Name { set; get; } + + /// + /// 任务标题 + /// + public string Title { set; get; } + + /// + /// 任务类型 + /// + public EnumTaskType TaskType { set; get; } + + /// + /// 请求地址类型 + /// + public EnumRequestURLType RequestURLType { set; get; } + + /// + /// 业务系统Api名称 + /// + public string BizSysApiName { set; get; } + + /// + /// 请求地址 + /// + public string RequestURL { set; get; } + + /// + /// 请求方法类型 + /// + public EnumRequestMethodType RequestMethod { set; get; } + + /// + /// 请求参数 + /// + public string RequestParam { set; get; } + + /// + /// 任务描述 + /// + public string Description { set; get; } + + /// + /// 任务开始时间 + /// + public DateTime StartTime { set; get; } + + /// + /// Trigger类型,0:SimpleTrigger,1:CronTrigger + /// + public EnumTriggerType TriggerType { set; get; } + + /// + /// 重复执行次数,-1表示无限次,其他正整数表示具体重复的次数 + /// + public int RepeatCount { set; get; } + + /// + /// 重复执行间隔时间,单位:秒 + /// + public int RepeatInterval { set; get; } + + /// + /// Cron表达式 + /// + public string CronExpression { set; get; } + + /// + /// 任务状态 + /// + public EnumTaskStatusType Status { set; get; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { set; get; } + + /// + /// 更新时间 + /// + public DateTime UpdateTime { set; get; } + + /// + /// 最近执行时间 + /// + public DateTime? LastFireTime { set; get; } + + /// + /// 下次执行时间 + /// + public DateTime? NextFireTime { set; get; } + + /// + /// 超时时间(秒) + /// + public long Timeout { set; get; } + + /// + /// 保留日志天数 + /// + public int KeepLogDays { set; get; } + + /// + /// 保留日志条数,0代表不处理 + /// + public int KeepLogCount { set; get; } + + /// + /// 是否删除,默认为false + /// + public bool IsDelete { set; get; } + + /// + /// 成功标志 + /// + public string SuccessMark { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/TryRegisterTaskReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/TryRegisterTaskReq.cs new file mode 100644 index 0000000..fa030f3 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfo/TryRegisterTaskReq.cs @@ -0,0 +1,19 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo +{ + + /// + /// 尝试注册服务 + /// + public class TryRegisterTaskReq + { + /// + /// 业务系统 api 名称,和系统字典里面的对应 + /// + public string ApiName { set; get; } + + /// + /// 任务标记 + /// + public List TaskInfoTags { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfoTag.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfoTag.cs new file mode 100644 index 0000000..fa891fc --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskInfoTag.cs @@ -0,0 +1,97 @@ +using Newtonsoft.Json; + +namespace BPA.SaaS.TaskSchedule.Api.DTO +{ + /// + /// 任务信息标记 + /// + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] + public class TaskInfoTag : Attribute + { + /// + /// TypeId + /// + [JsonIgnore] + public override object TypeId => base.TypeId; + + /// + /// 是否强制覆盖,当已经存在任务时是否强制注册,默认false + /// + public bool IsForceCover { set; get; } = false; + + /// + /// 任务名称,必须唯一, 这里会自动加 apiName, 如果标记到方法上面且没有设置值,会自动根据类名和方法名生成 + /// + public string Name { set; get; } + + /// + /// 任务标题 + /// + public string Title { set; get; } + + /// + /// 任务类型,默认 + /// + public EnumTaskType TaskType { set; get; } = EnumTaskType.SynRequest; + + /// + /// 请求地址类型,默认 + /// + public EnumRequestURLType RequestURLType { set; get; } = EnumRequestURLType.BizSysApi; + + /// + /// 请求地址,如果标记到方法上面且没有设置值,会自动根据类名和方法名生成 + /// + public string RequestURL { set; get; } + + /// + /// 请求方法类型,默认 + /// + public EnumRequestMethodType RequestMethod { set; get; } = EnumRequestMethodType.POST; + + /// + /// 任务描述 + /// + public string Description { set; get; } + + /// + /// Trigger类型,0:SimpleTrigger,1:CronTrigger,默认 + /// + public EnumTriggerType TriggerType { set; get; } = EnumTriggerType.CronTrigger; + + /// + /// 重复执行次数,-1表示无限次,其他正整数表示具体重复的次数 + /// + public int RepeatCount { set; get; } + + /// + /// 重复执行间隔时间,单位:秒 + /// + public int RepeatInterval { set; get; } + + /// + /// Cron表达式 + /// + public string CronExpression { set; get; } + + /// + /// 超时时间(秒),默认60秒 + /// + public long Timeout { set; get; } = 60; + + /// + /// 保留日志天数,默认10天 + /// + public int KeepLogDays { set; get; } = 10; + + /// + /// 保留日志条数,0代表不处理 + /// + public int KeepLogCount { set; get; } + + /// + /// 成功标志,默认 "isOK":true + /// + public string SuccessMark { set; get; } = "\"isOK\":true"; + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/AddAnyTimeLogReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/AddAnyTimeLogReq.cs new file mode 100644 index 0000000..1e2e910 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/AddAnyTimeLogReq.cs @@ -0,0 +1,23 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskLog +{ + /// + /// 添加任意时间任务日志 + /// + public class AddAnyTimeLogReq + { + /// + /// 任务名称 + /// + public string TaskName { set; get; } + + /// + /// 计划执行时间 + /// + public DateTime PlanStartTime { set; get; } + + /// + /// 执行任务的请求参数 + /// + public string RequestParam { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/AddAnyTimeLogsReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/AddAnyTimeLogsReq.cs new file mode 100644 index 0000000..1230e59 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/AddAnyTimeLogsReq.cs @@ -0,0 +1,34 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskLog +{ + /// + /// 添加任意时间任务日志 多个 + /// + public class AddAnyTimeLogsReq + { + /// + /// 任务名称 + /// + public string TaskName { set; get; } + + /// + /// 多条执行日志 + /// + public List Logs { set; get; } + } + + /// + /// 批量添加日志 + /// + public class AddAnyTimeLogDTO + { + /// + /// 计划执行时间 + /// + public DateTime PlanStartTime { set; get; } + + /// + /// 执行任务的请求参数 + /// + public string RequestParam { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/GetTaskLogPageReq.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/GetTaskLogPageReq.cs new file mode 100644 index 0000000..2d40f76 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/GetTaskLogPageReq.cs @@ -0,0 +1,35 @@ +using BPA.Component.DTOCommon.BaseDTOs; + +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskLog +{ + /// + /// 分页查询 + /// + public class GetTaskLogPageReq : BasePageInfo + { + /// + /// 任务id + /// + public long? TaskId { set; get; } + + /// + /// 任务类型 + /// + public EnumTaskType? TaskType { set; get; } + + /// + /// 业务系统Api名称 + /// + public string BizSysApiName { set; get; } + + /// + /// 任务计划开始时间 + /// + public DateTime? PlanStartTime { set; get; } + + /// + /// 执行结果 + /// + public EnumExecutedResultType? ExecutedResult { set; get; } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/TaskLogDTO.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/TaskLogDTO.cs new file mode 100644 index 0000000..49ff4c3 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskLog/TaskLogDTO.cs @@ -0,0 +1,104 @@ +namespace BPA.SaaS.TaskSchedule.Api.DTO.TaskLog +{ + /// + /// TaskLogDTO + /// + public class TaskLogDTO + { + /// + /// ID + /// + public long Id { set; get; } + + /// + /// 任务id + /// + public long TaskId { set; get; } + + /// + /// 任务名称,必须唯一 + /// + public string Name { set; get; } + + /// + /// 任务标题 + /// + public string Title { set; get; } + + /// + /// 任务类型 + /// + public EnumTaskType TaskType { set; get; } + + /// + /// 请求地址类型 + /// + public EnumRequestURLType RequestURLType { set; get; } + + /// + /// 业务系统Api名称 + /// + public string BizSysApiName { set; get; } + + /// + /// 请求地址 + /// + public string RequestURL { set; get; } + + + /// + /// 请求参数 + /// + public string RequestParam { set; get; } + + /// + /// 任务计划开始时间 + /// + public DateTime PlanStartTime { set; get; } + + /// + /// 开始执行时间 + /// + public DateTime StartTime { set; get; } + + /// + /// 执行结束时间 + /// + public DateTime? EndTime { set; get; } + + /// + /// 执行时长,单位ms + /// + public long ExecutionTime { set; get; } + + /// + /// 返回参数 + /// + public string ResponseParam { set; get; } + + /// + /// 执行结果 + /// + public EnumExecutedResultType ExecutedResult { set; get; } + + /// + /// 备注 + /// + public string Remark { set; get; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { set; get; } + + /// + /// 更新时间 + /// + public DateTime UpdateTime { set; get; } + + /// + /// 跟踪ID + /// + public string TrackId { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskScheduleLangPackge.cs b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskScheduleLangPackge.cs new file mode 100644 index 0000000..717b3a2 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.DTO/TaskScheduleLangPackge.cs @@ -0,0 +1,30 @@ +using BPA.Component.DTOCommon.Langs; + +namespace BPA.SaaS.TaskSchedule.Api.DTO +{ + /// + /// TaskScheduleLangPackge + /// + public class TaskScheduleLangPackge : BaseLangPackge + { + /// + /// 字典已存在 + /// + public Lang KeyExist = Lang.Build(nameof(KeyExist), "字典已存在", "key already exist"); + + /// + /// 字典不存在 + /// + public Lang KeyNotExist = Lang.Build(nameof(KeyNotExist), "字典不存在", "key not exist"); + + /// + /// 任务已存在 + /// + public Lang TaskExist = Lang.Build(nameof(TaskExist), "任务已存在", "task already exist"); + + /// + /// 任务不存在 + /// + public Lang TaskNotExist = Lang.Build(nameof(TaskNotExist), "任务不存在", "task not exist"); + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Entity/BPA.SaaS.TaskSchedule.Api.Entity.csproj b/src/BPA.SaaS.TaskSchedule.Api.Entity/BPA.SaaS.TaskSchedule.Api.Entity.csproj index 6ab864d..709821e 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.Entity/BPA.SaaS.TaskSchedule.Api.Entity.csproj +++ b/src/BPA.SaaS.TaskSchedule.Api.Entity/BPA.SaaS.TaskSchedule.Api.Entity.csproj @@ -1,16 +1,20 @@ - - net6.0 - enable - enable - - - 1701;1702;8618 - - - - - - + + net6.0 + enable + enable + + + 1701;1702;8618 + + + + + + + + + + \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmSystemDictionary.cs b/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmSystemDictionary.cs new file mode 100644 index 0000000..59a789c --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmSystemDictionary.cs @@ -0,0 +1,39 @@ +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; + +namespace BPA.SaaS.TaskSchedule.Api.Entity; + +/// +/// 系统字典 +/// +public class CrmSystemDictionary +{ + /// + /// 主键 + /// + public long Id { set; get; } + + /// + /// 类型 + /// + public EnumSystemDictionaryType Type { set; get; } + + /// + /// 键 + /// + public string Key { set; get; } + + /// + /// 值 + /// + public string Value { set; get; } + + /// + /// 值Ext + /// + public string ValueExt { set; get; } + + /// + /// 是否删除 + /// + public bool IsDelete { set; get; } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmTaskInfo.cs b/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmTaskInfo.cs new file mode 100644 index 0000000..df78bf1 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmTaskInfo.cs @@ -0,0 +1,126 @@ +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; + +namespace BPA.SaaS.TaskSchedule.Api.Entity +{ + /// + /// 任务信息 + /// + public class CrmTaskInfo + { + /// + /// 主键 + /// + public long Id { set; get; } + + /// + /// 任务名称,必须唯一 + /// + public string Name { set; get; } + + /// + /// 任务标题 + /// + public string Title { set; get; } + + /// + /// 任务类型 + /// + public EnumTaskType TaskType { set; get; } + + /// + /// 请求地址类型 + /// + public EnumRequestURLType RequestURLType { set; get; } + + /// + /// 业务系统Api名称 + /// + public string BizSysApiName { set; get; } + + /// + /// 请求地址 + /// + public string RequestURL { set; get; } + + /// + /// 请求方法类型 + /// + public EnumRequestMethodType RequestMethod { set; get; } + + /// + /// 请求参数 + /// + public string RequestParam { set; get; } + + /// + /// 任务描述 + /// + public string Description { set; get; } + + /// + /// 任务开始时间 + /// + public DateTime StartTime { set; get; } + + /// + /// Trigger类型,0:SimpleTrigger,1:CronTrigger + /// + public EnumTriggerType TriggerType { set; get; } + + /// + /// 重复执行次数,-1表示无限次,其他正整数表示具体重复的次数 + /// + public int RepeatCount { set; get; } + + /// + /// 重复执行间隔时间,单位:秒 + /// + public int RepeatInterval { set; get; } + + /// + /// Cron表达式 + /// + public string CronExpression { set; get; } + + /// + /// 任务状态: 0:开启,1:暂停 + /// + public EnumTaskStatusType Status { set; get; } + + /// + /// 是否删除,默认为false + /// + public bool IsDelete { set; get; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { set; get; } + + /// + /// 更新时间 + /// + public DateTime UpdateTime { set; get; } + + /// + /// 超时时间(秒) + /// + public long Timeout { set; get; } + + /// + /// 保留日志条数,默认60条 + /// + public int KeepLogCount { set; get; } + + /// + /// 保留日志天数,0代表不处理 + /// + public int KeepLogDays { set; get; } + + /// + /// 成功标志 + /// + public string SuccessMark { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmTaskLog.cs b/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmTaskLog.cs new file mode 100644 index 0000000..fe8f860 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Entity/CrmTaskLog.cs @@ -0,0 +1,106 @@ +using BPA.SaaS.TaskSchedule.Api.DTO; + +namespace BPA.SaaS.TaskSchedule.Api.Entity +{ + /// + /// 任务日志 + /// + public class CrmTaskLog + { + /// + /// ID + /// + public long Id { set; get; } + + /// + /// 任务id + /// + public long TaskId { set; get; } + + /// + /// 任务名称,必须唯一 + /// + public string Name { set; get; } + + /// + /// 任务标题 + /// + public string Title { set; get; } + + /// + /// 任务类型 + /// + public EnumTaskType TaskType { set; get; } + + /// + /// 请求地址类型 + /// + public EnumRequestURLType RequestURLType { set; get; } + + /// + /// 业务系统Api名称 + /// + public string BizSysApiName { set; get; } + + /// + /// 请求地址 + /// + public string RequestURL { set; get; } + + + /// + /// 请求参数 + /// + public string RequestParam { set; get; } + + /// + /// 任务计划开始时间 + /// + public DateTime PlanStartTime { set; get; } + + /// + /// 开始执行时间 + /// + public DateTime StartTime { set; get; } + + /// + /// 执行结束时间 + /// + public DateTime? EndTime { set; get; } + + /// + /// 执行时长,单位ms + /// + public long ExecutionTime { set; get; } + + /// + /// 返回参数 + /// + public string ResponseParam { set; get; } + + /// + /// 执行结果 + /// + public EnumExecutedResultType ExecutedResult { set; get; } + + /// + /// 备注 + /// + public string Remark { set; get; } + + /// + /// 创建时间 + /// + public DateTime CreateTime { set; get; } + + /// + /// 更新时间 + /// + public DateTime UpdateTime { set; get; } + + /// + /// 跟踪ID + /// + public string TrackId { set; get; } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IRepository/BPA.SaaS.TaskSchedule.Api.IRepository.csproj b/src/BPA.SaaS.TaskSchedule.Api.IRepository/BPA.SaaS.TaskSchedule.Api.IRepository.csproj index a72f0c7..68fff65 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.IRepository/BPA.SaaS.TaskSchedule.Api.IRepository.csproj +++ b/src/BPA.SaaS.TaskSchedule.Api.IRepository/BPA.SaaS.TaskSchedule.Api.IRepository.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -6,9 +6,10 @@ enable - - - - + + + + + \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.IRepository/ISystemDictionaryRepository.cs b/src/BPA.SaaS.TaskSchedule.Api.IRepository/ISystemDictionaryRepository.cs new file mode 100644 index 0000000..61e31c6 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IRepository/ISystemDictionaryRepository.cs @@ -0,0 +1,9 @@ +using BPA.Component.MongoClient.Repository; +using BPA.SaaS.TaskSchedule.Api.Entity; + +namespace BPA.SaaS.TaskSchedule.Api.IRepository +{ + public interface ISystemDictionaryRepository: IBaseMongoDbRepository + { + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IRepository/ITaskInfoRepository.cs b/src/BPA.SaaS.TaskSchedule.Api.IRepository/ITaskInfoRepository.cs new file mode 100644 index 0000000..0b749a0 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IRepository/ITaskInfoRepository.cs @@ -0,0 +1,9 @@ +using BPA.Component.MongoClient.Repository; +using BPA.SaaS.TaskSchedule.Api.Entity; + +namespace BPA.SaaS.TaskSchedule.Api.IRepository +{ + public interface ITaskInfoRepository : IBaseMongoDbRepository + { + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IRepository/ITaskLogRepository.cs b/src/BPA.SaaS.TaskSchedule.Api.IRepository/ITaskLogRepository.cs new file mode 100644 index 0000000..f558f09 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IRepository/ITaskLogRepository.cs @@ -0,0 +1,10 @@ +using BPA.Component.MongoClient.Repository; +using BPA.SaaS.TaskSchedule.Api.Entity; + +namespace BPA.SaaS.TaskSchedule.Api.IRepository +{ + public interface ITaskLogRepository : IBaseMongoDbRepository + { + + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/AnyTimeTaskScheduleMsgBody.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/AnyTimeTaskScheduleMsgBody.cs new file mode 100644 index 0000000..8a29c24 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/AnyTimeTaskScheduleMsgBody.cs @@ -0,0 +1,7 @@ +namespace BPA.SaaS.TaskSchedule.Api.IService; + +public class AnyTimeTaskScheduleMsgBody +{ + /// 任务日志ID + public long TaskLogId { set; get; } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/BPA.SaaS.TaskSchedule.Api.IService.csproj b/src/BPA.SaaS.TaskSchedule.Api.IService/BPA.SaaS.TaskSchedule.Api.IService.csproj index 4cecf33..f3fa98e 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.IService/BPA.SaaS.TaskSchedule.Api.IService.csproj +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/BPA.SaaS.TaskSchedule.Api.IService.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -7,5 +7,9 @@ + + + + \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/IAnyTimeTaskScheduleExecutorService.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/IAnyTimeTaskScheduleExecutorService.cs new file mode 100644 index 0000000..c23cf0c --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/IAnyTimeTaskScheduleExecutorService.cs @@ -0,0 +1,13 @@ +namespace BPA.SaaS.TaskSchedule.Api.IService; + +/// +/// 任意时间任务执行器 +/// +public interface IAnyTimeTaskScheduleExecutorService +{ + /// + /// 执行 + /// + /// + void Execute(AnyTimeTaskScheduleMsgBody anyTimeTaskScheduleMsg); +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/ISynData.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/ISynData.cs new file mode 100644 index 0000000..c180b75 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/ISynData.cs @@ -0,0 +1,10 @@ +namespace BPA.SaaS.TaskSchedule.Api.IService; + +public interface ISynData +{ + /// + /// 当数据发生改变 + /// + /// + void OnDataChange(SynDataTaskScheduleMsgBody msgBody); +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/ISynRequestSchedulerTriggerListenerService.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/ISynRequestSchedulerTriggerListenerService.cs new file mode 100644 index 0000000..0ac71d5 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/ISynRequestSchedulerTriggerListenerService.cs @@ -0,0 +1,8 @@ +using Quartz; + +namespace BPA.SaaS.TaskSchedule.Api.IService +{ + public interface ISynRequestSchedulerTriggerListenerService : ITriggerListener + { + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/ISystemDictionaryService.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/ISystemDictionaryService.cs new file mode 100644 index 0000000..83c9383 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/ISystemDictionaryService.cs @@ -0,0 +1,46 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.Entity; + +namespace BPA.SaaS.TaskSchedule.Api.IService +{ + /// + /// 系统字典 + /// + public interface ISystemDictionaryService : ISynData + { + /// + /// 保存 + /// + /// + /// + BaseResult Save(SaveSystemDictionaryReq req); + + /// + /// 删除 + /// + /// + /// + BaseResult Delete(DeleteSystemDictionaryReq req); + + /// + /// 获取所有的 + /// + /// + BaseResult> GetAll(); + + /// + /// 获取缓存的字典信息 + /// + /// + /// + /// + SystemDictionaryDTO GetCache(EnumSystemDictionaryType type, string key); + + /// + /// 启动执行一次 + /// + void Start(); + + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/ITaskInfoService.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/ITaskInfoService.cs new file mode 100644 index 0000000..cc80d4b --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/ITaskInfoService.cs @@ -0,0 +1,65 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; + +namespace BPA.SaaS.TaskSchedule.Api.IService +{ + /// + /// 任务信息服务 + /// + public interface ITaskInfoService: ISynData + { + /// + /// 保存 + /// + /// + /// + BaseResult Save(SaveTaskInfoReq req); + + /// + /// 删除 + /// + /// + /// + BaseResult Delete(DeleteTaskInfoReq req); + + /// + /// 获取所有的任务信息 + /// + /// + BaseResult> GetAll(); + + /// + /// DoOnce + /// + /// + BaseResult DoOnce(DoOnceReq req); + + /// + /// 获取缓存的任务信息 + /// + /// + /// + TaskInfoDTO GetCache(long taskInfoId); + + /// + /// 获取缓存的任务信息 + /// + /// + /// + TaskInfoDTO GetCache(string taskInfoName); + + + /// + /// 尝试注册任务 + /// + /// + /// + BaseResult TryRegisterTask(TryRegisterTaskReq req); + + /// + /// 启动 + /// + /// + void Start(); + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/ITaskLogService.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/ITaskLogService.cs new file mode 100644 index 0000000..795e206 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/ITaskLogService.cs @@ -0,0 +1,37 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskLog; + +namespace BPA.SaaS.TaskSchedule.Api.IService +{ + /// + /// 任务日志 + /// + public interface ITaskLogService + { + /// + /// 添加任意时间任务日志 + /// + /// + /// + BaseResult AddAnyTimeLog(AddAnyTimeLogReq req); + + /// + /// 添加任意时间任务日志 多个 + /// + /// + /// + BaseResult AddAnyTimeLogs(AddAnyTimeLogsReq req); + + /// + /// 分页查询 + /// + /// + /// + BaseResultPage GetPage(GetTaskLogPageReq req); + + /// + /// 清理日志 + /// + void Clear(); + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/IWarnAlarm.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/IWarnAlarm.cs new file mode 100644 index 0000000..2fd16d0 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/IWarnAlarm.cs @@ -0,0 +1,16 @@ +using BPA.SaaS.TaskSchedule.Api.Entity; + +namespace BPA.SaaS.TaskSchedule.Api.IService +{ + /// + /// 警报器 + /// + public interface IWarnAlarm + { + /// + /// 响铃 + /// + /// + Task Bell(CrmTaskLog taskLog); + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/IWarnManagerService.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/IWarnManagerService.cs new file mode 100644 index 0000000..6553b92 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/IWarnManagerService.cs @@ -0,0 +1,20 @@ +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.Entity; + +namespace BPA.SaaS.TaskSchedule.Api.IService +{ + + /// + /// 警告管理服务 + /// + public interface IWarnManagerService + { + + /// + /// 警告 + /// + /// + Task Warn(TaskInfoDTO taskInfo, CrmTaskLog taskLog); + + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.IService/SynDataTaskScheduleMsgBody.cs b/src/BPA.SaaS.TaskSchedule.Api.IService/SynDataTaskScheduleMsgBody.cs new file mode 100644 index 0000000..f34cdcf --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.IService/SynDataTaskScheduleMsgBody.cs @@ -0,0 +1,13 @@ +namespace BPA.SaaS.TaskSchedule.Api.IService; + +public class SynDataTaskScheduleMsgBody +{ + /// 数据ID + public long DataId { set; get; } + + /// 数据类型 1=字典, 2=任务 + public int DataType { set; get; } + + /// 命令 1=新增;2=修改,3=删除 + public int Cmd { set; get; } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Model/BPA.SaaS.TaskSchedule.Api.Model.csproj b/src/BPA.SaaS.TaskSchedule.Api.Model/BPA.SaaS.TaskSchedule.Api.Model.csproj index 5c42ef8..742a192 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.Model/BPA.SaaS.TaskSchedule.Api.Model.csproj +++ b/src/BPA.SaaS.TaskSchedule.Api.Model/BPA.SaaS.TaskSchedule.Api.Model.csproj @@ -17,11 +17,14 @@ - + + + + \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleApiConfig.cs b/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleApiConfig.cs index 2655b1a..66f4f58 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleApiConfig.cs +++ b/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleApiConfig.cs @@ -1,5 +1,9 @@ -using BPA.Component.ApolloClient; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; +using BPA.Component.ApolloClient; using BPA.Component.DbClient; +using BPA.Component.MongoClient; using BPA.Component.RabbitMQClient.Connection; using Com.Ctrip.Framework.Apollo; using Microsoft.Extensions.Configuration; @@ -13,34 +17,57 @@ namespace BPA.SaaS.TaskSchedule.Api.Model; public class TaskScheduleApiConfig : ApolloBPAConfig { /// - /// BasicMySqlDb + /// RedisConfig /// [AutoWrite] - public new DbConfig BasicMySqlDb { get; set; } + public new List RedisConfig { set; get; } /// - /// RedisConfig + /// RabbitMQ配置 /// [AutoWrite] - public new List RedisConfig { set; get; } + public new RabbitMqConnectionConfig RabbitMqConfig { get; set; } /// - /// 是否打印SQL + /// MongoClient /// [AutoWrite] - public bool IsLogSql { get; set; } = true; + public MongoConfig TaskScheduleMongoConfig { get; set; } /// - /// token到期时间 + /// 环境名称 测试 | 生产 /// [AutoWrite] - public int TokenExpireInterval { get; set; } + public string EvnName { private set; get; } /// - /// RabbitMQ配置 + /// 报警器 /// [AutoWrite] - public new RabbitMqConnectionConfig RabbitMqConfig { get; set; } + public List WarnAlarms { private set; get; } = new List(); + + /// + /// 跟踪ID head名称 + /// + public static string TraceIdHeadName = "X-TraceId"; + + /// + /// ip s + /// + public string IPS + { + get + { + var networks = NetworkInterface.GetAllNetworkInterfaces(); + var ips = networks.Select(network => network.GetIPProperties().UnicastAddresses + .FirstOrDefault(p => p.Address.AddressFamily == AddressFamily.InterNetwork && !IPAddress.IsLoopback(p.Address))? + .Address + .ToString()) + .Where(ipAddress => ipAddress != null) + .ToList(); + return string.Join(",", ips); + } + } public TaskScheduleApiConfig(ApolloConfigurationManager apolloConfigurationManager, IConfiguration configuration) : base(apolloConfigurationManager, configuration) diff --git a/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleDbSugarClient.cs b/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleDbSugarClient.cs deleted file mode 100644 index f1e4bca..0000000 --- a/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleDbSugarClient.cs +++ /dev/null @@ -1,18 +0,0 @@ -using BPA.Common.Infrastructure.BizLogs; -using BPA.Component.DbClient; -using Microsoft.Extensions.Logging; - -namespace BPA.SaaS.TaskSchedule.Api.Model; - -public class TaskScheduleDbSugarClient : BaseDbClient -{ - public TaskScheduleDbSugarClient(ILogger logger, - Lazy bizLogProducer, - TaskScheduleApiConfig config) - : base(BuildConnectionConfig(config.BasicMySqlDb), - bizLogProducer, - true, - logger) - { - } -} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleMongoDbClient.cs b/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleMongoDbClient.cs new file mode 100644 index 0000000..852eece --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleMongoDbClient.cs @@ -0,0 +1,15 @@ +using BPA.Component.MongoClient; +using Microsoft.Extensions.Logging; + +namespace BPA.SaaS.TaskSchedule.Api.Model; + +public class TaskScheduleMongoDbClient : BaseMongoDbClient +{ + private readonly ILogger _logger; + + public TaskScheduleMongoDbClient(TaskScheduleApiConfig config, ILogger logger) + : base(config.TaskScheduleMongoConfig, logger) + { + _logger = logger; + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleRedisKey.cs b/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleRedisKey.cs new file mode 100644 index 0000000..839afb8 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Model/TaskScheduleRedisKey.cs @@ -0,0 +1,51 @@ +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; + +namespace BPA.SaaS.TaskSchedule.Api.Model +{ + /// + /// rediskey + /// + public static class TaskScheduleRedisKey + { + /// + /// 前缀 + /// + private const string Prefix = "TaskSchedule"; + + /// + /// 数据同步起步token + /// + /// + public static string DictionaryKey(EnumSystemDictionaryType type, string key) => BuildRedisKey(nameof(DictionaryKey), type, key); + + /// + /// 任务信息 + /// + /// + public static string TaskInfoKey(long taskInfoId) => BuildRedisKey(nameof(TaskInfoKey), taskInfoId); + + /// + /// 任务信息 + /// + /// + public static string TaskInfoKey(string pattern) => BuildRedisKey(nameof(TaskInfoKey), pattern); + + /// + /// 锁Trigger + /// + /// + /// + public static string LockTrigger(string triggerKey) => BuildRedisKey(nameof(LockTrigger), triggerKey); + + /// + /// 创建rediskey + /// + /// + /// + private static string BuildRedisKey(params object[] keys) + { + if (keys == null || keys.Length == 0) throw new ArgumentNullException($"参数{keys},不能为空或者长度为0"); + return $"{Prefix}:{string.Join(":", keys.Where(a => a != null))}"; + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Repository/BPA.SaaS.TaskSchedule.Api.Repository.csproj b/src/BPA.SaaS.TaskSchedule.Api.Repository/BPA.SaaS.TaskSchedule.Api.Repository.csproj index 1cb25e9..4c90ed6 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.Repository/BPA.SaaS.TaskSchedule.Api.Repository.csproj +++ b/src/BPA.SaaS.TaskSchedule.Api.Repository/BPA.SaaS.TaskSchedule.Api.Repository.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -10,6 +10,7 @@ + diff --git a/src/BPA.SaaS.TaskSchedule.Api.Repository/SystemDictionaryRepository.cs b/src/BPA.SaaS.TaskSchedule.Api.Repository/SystemDictionaryRepository.cs new file mode 100644 index 0000000..b080881 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Repository/SystemDictionaryRepository.cs @@ -0,0 +1,15 @@ +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.Component.MongoClient.Repository; +using BPA.SaaS.TaskSchedule.Api.Model; + +namespace BPA.SaaS.TaskSchedule.Api.Repository +{ + public class SystemDictionaryRepository : BaseMongoDbRepository, + ISystemDictionaryRepository + { + public SystemDictionaryRepository(TaskScheduleMongoDbClient mongoDbClient) : base(mongoDbClient) + { + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Repository/TaskInfoRepository.cs b/src/BPA.SaaS.TaskSchedule.Api.Repository/TaskInfoRepository.cs new file mode 100644 index 0000000..d916ec4 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Repository/TaskInfoRepository.cs @@ -0,0 +1,14 @@ +using BPA.Component.MongoClient.Repository; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.Model; + +namespace BPA.SaaS.TaskSchedule.Api.Repository +{ + public class TaskInfoRepository : BaseMongoDbRepository, ITaskInfoRepository + { + public TaskInfoRepository(TaskScheduleMongoDbClient mongoDbClient) : base(mongoDbClient) + { + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Repository/TaskLogRepository.cs b/src/BPA.SaaS.TaskSchedule.Api.Repository/TaskLogRepository.cs new file mode 100644 index 0000000..98bb8e0 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Repository/TaskLogRepository.cs @@ -0,0 +1,14 @@ +using BPA.Component.MongoClient.Repository; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.Model; + +namespace BPA.SaaS.TaskSchedule.Api.Repository +{ + public class TaskLogRepository : BaseMongoDbRepository, ITaskLogRepository + { + public TaskLogRepository(TaskScheduleMongoDbClient mongoDbClient) : base(mongoDbClient) + { + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/AnyTimeTaskScheduleExecutorService.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/AnyTimeTaskScheduleExecutorService.cs new file mode 100644 index 0000000..df8a885 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/AnyTimeTaskScheduleExecutorService.cs @@ -0,0 +1,164 @@ +using System.Text; +using BPA.Component.Extensions; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using BPA.SaaS.TaskSchedule.Api.Service.QzScheduler; +using Microsoft.Extensions.Logging; +using Nest; + +namespace BPA.SaaS.TaskSchedule.Api.Service +{ + /// + /// any执行器 + /// + public class AnyTimeTaskScheduleExecutorService : BaseRequestHttpJobScheduler, IAnyTimeTaskScheduleExecutorService + { + private readonly ITaskLogRepository taskLogRepository; + private readonly ISystemDictionaryService systemDictionaryService; + private readonly ILogger logger; + private readonly ITaskInfoService taskInfoService; + private readonly IHttpClientFactory httpClientFactory; + private readonly IWarnManagerService warnManagerService; + + public AnyTimeTaskScheduleExecutorService( + ITaskLogRepository taskLogRepository, + ISystemDictionaryService systemDictionaryService, + ILogger logger, + ITaskInfoService taskInfoService, + IHttpClientFactory httpClientFactory, + IWarnManagerService warnManagerService) + { + this.taskLogRepository = taskLogRepository; + this.systemDictionaryService = systemDictionaryService; + this.logger = logger; + this.taskInfoService = taskInfoService; + this.httpClientFactory = httpClientFactory; + this.warnManagerService = warnManagerService; + } + + /// + /// 执行 + /// + /// + public void Execute(AnyTimeTaskScheduleMsgBody msg) + { + var taskLog = taskLogRepository.Queryable().FirstOrDefault(f => f.Id == msg.TaskLogId); + if (taskLog == null) + return; + if (taskLog.ExecutedResult != EnumExecutedResultType.Wait) + return; + var taskInfo = taskInfoService.GetCache(taskLog.TaskId); + if (taskInfo == null) + return; + taskLog.StartTime = DateTime.Now; + if (taskInfo.Status == EnumTaskStatusType.Suspend) + { + taskLog.ExecutedResult = EnumExecutedResultType.Suspend; + taskLog.UpdateTime = DateTime.Now; + taskLog.Remark = $"任务已暂停{taskLog.ExecutedResult.GetDescribe()}变为暂停,子任务不执行"; + taskLogRepository.UpdateOne(taskLog, x => x.Id == taskLog.Id); + return; + } + + if (taskInfo.RequestURLType == EnumRequestURLType.BizSysApi) + { + var dic = systemDictionaryService.GetCache(EnumSystemDictionaryType.BizSysApi, taskInfo.BizSysApiName); + taskLog.RequestURL = $"{dic.Value}{taskInfo.RequestURL}"; +#if DEBUG + taskLog.RequestURL = $"{dic.ValueExt}{taskInfo.RequestURL}"; +#endif + } + else + { + taskLog.RequestURL = taskInfo.RequestURL; + } + + taskLog.ExecutedResult = EnumExecutedResultType.Executing; + taskLog.UpdateTime = DateTime.Now; + taskLog.TrackId = $"{taskLog.TaskId:x}_{taskLog.Id:x}"; + taskLogRepository.UpdateOne(taskLog, x => x.Id == taskLog.Id); + var requestUrl = taskLog.RequestURL; + try + { + var client = httpClientFactory.CreateClient(typeof(AnyTimeTaskScheduleExecutorService).FullName); + client.Timeout = TimeSpan.FromSeconds(taskInfo.Timeout <= 10 ? 30 : taskInfo.Timeout); + client.DefaultRequestHeaders.Add(TaskScheduleApiConfig.TraceIdHeadName, taskLog.TrackId); + HttpResponseMessage responseTask = null; + switch (taskInfo.RequestMethod) + { + case EnumRequestMethodType.GET: + if (!taskLog.RequestURL.Contains("?")) + requestUrl += "?"; + if (taskLog.RequestParam.IsNotEmpty()) + requestUrl += taskLog.RequestParam; + requestUrl += $"&TaskId={taskLog.TaskId}&TaskLogId={taskLog.Id}"; + //Debug.WriteLine(requestUrl); + responseTask = client.GetAsync(requestUrl).GetAwaiter().GetResult(); + break; + case EnumRequestMethodType.POST: + if (!taskLog.RequestURL.Contains("?")) + requestUrl += "?"; + if (taskLog.RequestParam.IsNotEmpty()) + requestUrl += taskLog.RequestParam; + requestUrl += $"&TaskId={taskLog.TaskId}&TaskLogId={taskLog.Id}"; + //Debug.WriteLine(requestUrl); + var stringContent = new StringContent(taskLog.RequestParam, Encoding.UTF8, "application/json"); + responseTask = client.PostAsync(requestUrl, stringContent).GetAwaiter().GetResult(); + break; + default: break; + } + + if (responseTask == null) + { + taskLog.ExecutedResult = EnumExecutedResultType.CallFail; + taskLog.Remark = string.Format("请求类型错误,请求类型RequestType不应该为{0}", taskInfo.RequestURLType); + } + else + { + try + { + //请求失败 + if (responseTask.StatusCode == System.Net.HttpStatusCode.OK) + { + taskLog.ResponseParam = responseTask.Content.ReadAsStringAsync().GetAwaiter().GetResult(); + var checkSuccessMark = base.CheckSuccessMark(taskInfo, taskLog.ResponseParam); + taskLog.ExecutedResult = checkSuccessMark ? EnumExecutedResultType.Success : EnumExecutedResultType.Fail; + taskLog.Remark = checkSuccessMark ? "执行成功!" : $"执行失败,[{taskInfo.SuccessMark}]"; + } + else + { + taskLog.ExecutedResult = EnumExecutedResultType.Fail; + taskLog.Remark = $"StatusCode:[{(int) responseTask.StatusCode}]{responseTask.StatusCode}"; + } + + taskLog.ResponseParam = responseTask.Content.ReadAsStringAsync().GetAwaiter().GetResult(); + if (taskLog.ResponseParam.Length > 400) + taskLog.ResponseParam = taskLog.ResponseParam.Substring(0, 400); + } + catch (Exception ex0) + { + logger.LogError(ex0, "执行任务失败,{requestUrl},{taskLog}", requestUrl, taskInfo.ToJson()); + } + } + } + catch (Exception ex) + { + taskLog.ExecutedResult = EnumExecutedResultType.Fail; + taskLog.Remark = ex.Message; + logger.LogError(ex, "执行任务失败,{requestUrl},{taskLog}", requestUrl, taskInfo.ToJson()); + } + + taskInfo.LastFireTime = DateTime.Now; + taskLog.UpdateTime = DateTime.Now; + taskLog.EndTime = DateTime.Now; + taskLog.ExecutionTime = (int) (taskLog.EndTime.Value - taskLog.StartTime).TotalMilliseconds; + taskLogRepository.UpdateOne(taskLog, x => x.Id == taskLog.Id); + warnManagerService.Warn(taskInfo, taskLog).GetAwaiter().GetResult(); + return; + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/BPA.SaaS.TaskSchedule.Api.Service.csproj b/src/BPA.SaaS.TaskSchedule.Api.Service/BPA.SaaS.TaskSchedule.Api.Service.csproj index 4d11f0d..4f95526 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.Service/BPA.SaaS.TaskSchedule.Api.Service.csproj +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/BPA.SaaS.TaskSchedule.Api.Service.csproj @@ -9,6 +9,7 @@ + diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/AnyTimeTaskScheduleConsumer.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/AnyTimeTaskScheduleConsumer.cs new file mode 100644 index 0000000..370c235 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/AnyTimeTaskScheduleConsumer.cs @@ -0,0 +1,52 @@ +using BPA.Component.RabbitMQClient.Base; +using BPA.SaaS.TaskSchedule.Api.IService; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using RabbitMQ.Client.Events; + +namespace BPA.SaaS.TaskSchedule.Api.Service.Queue +{ + /// + /// 任意时间 任务 消费者 + /// + public class AnyTimeTaskScheduleConsumer : BaseConsumer + { + /// + /// serviceProvider + /// + private readonly IServiceProvider serviceProvider; + + /// + /// 构造方法 + /// + /// + /// + public AnyTimeTaskScheduleConsumer(IServiceProvider serviceProvider, ILogger logger) : base(logger) + { + this.serviceProvider = serviceProvider; + } + + /// + /// 消息出列 + /// + /// + /// + /// + public override bool Dequeue(AnyTimeTaskScheduleMsgBody msgBody, BasicDeliverEventArgs eventArgs) + { + try + { + //新建作用域 + var scope = serviceProvider.CreateScope(); + var service = scope.ServiceProvider.GetRequiredService(); + service.Execute(msgBody); + return true; + } + catch (Exception ex) + { + Logger.LogError(ex, $"执行任意消息失败:{msgBody}"); + return true; + } + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/AnyTimeTaskScheduleProducer.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/AnyTimeTaskScheduleProducer.cs new file mode 100644 index 0000000..6370157 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/AnyTimeTaskScheduleProducer.cs @@ -0,0 +1,29 @@ +using BPA.Component.RabbitMQClient.Base; +using BPA.SaaS.TaskSchedule.Api.IService; +using Microsoft.Extensions.Logging; + +namespace BPA.SaaS.TaskSchedule.Api.Service.Queue +{ + /// + /// 任意时间 任务生产者 + /// + public class AnyTimeTaskScheduleProducer : BaseProducer + { + public AnyTimeTaskScheduleProducer(ILogger logger) : base(logger) + { + } + + /// + /// 消息入列 + /// + /// + /// + public void Enqueue(long taskLogId, DateTime planDate) + { + long? expiration = null; + if (planDate > DateTime.Now) + expiration = ((long)(planDate - DateTime.Now).TotalSeconds) * 1000L; + base.Enqueue(new AnyTimeTaskScheduleMsgBody { TaskLogId = taskLogId }, null, expiration); + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/SynDataTaskScheduleConsumer.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/SynDataTaskScheduleConsumer.cs new file mode 100644 index 0000000..e6220ce --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/SynDataTaskScheduleConsumer.cs @@ -0,0 +1,50 @@ +using BPA.Component.RabbitMQClient.Base; +using BPA.SaaS.TaskSchedule.Api.IService; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using RabbitMQ.Client.Events; + +namespace BPA.SaaS.TaskSchedule.Api.Service.Queue +{ + public class SynDataTaskScheduleConsumer : BaseConsumer + { + private readonly IServiceProvider serviceProvider; + public SynDataTaskScheduleConsumer(IServiceProvider serviceProvider, ILogger logger) : base(logger) + { + this.serviceProvider = serviceProvider; + } + + /// + /// 消息出列 + /// + /// + /// + /// + public override bool Dequeue(SynDataTaskScheduleMsgBody msgBody, BasicDeliverEventArgs eventArgs) + { + try + { + //新建作用域 + var scope = serviceProvider.CreateScope(); + if (msgBody.DataType == 1) + { + //字典 + var service = scope.ServiceProvider.GetRequiredService(); + service.OnDataChange(msgBody); + } + else if (msgBody.DataType == 2) + { + //任务信息 + var service = scope.ServiceProvider.GetRequiredService(); + service.OnDataChange(msgBody); + } + return true; + } + catch (Exception ex) + { + Logger.LogError(ex, $"执行任意消息失败:{msgBody}"); + return true; + } + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/SynDataTaskScheduleProducer.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/SynDataTaskScheduleProducer.cs new file mode 100644 index 0000000..d58756b --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/Queue/SynDataTaskScheduleProducer.cs @@ -0,0 +1,22 @@ +using BPA.Component.RabbitMQClient.Base; +using BPA.SaaS.TaskSchedule.Api.IService; +using Microsoft.Extensions.Logging; + +namespace BPA.SaaS.TaskSchedule.Api.Service.Queue +{ + public class SynDataTaskScheduleProducer : BaseProducer + { + public SynDataTaskScheduleProducer(ILogger logger) : base(logger) + { + } + + /// + /// 消息入列 + /// + /// + public void Enqueue(SynDataTaskScheduleMsgBody msgBody) + { + base.Enqueue(msgBody, null, null); + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/AnyTimeHttpJobScheduler.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/AnyTimeHttpJobScheduler.cs new file mode 100644 index 0000000..af80d12 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/AnyTimeHttpJobScheduler.cs @@ -0,0 +1,187 @@ +using System.Diagnostics; +using System.Text; +using BPA.Component.Extensions; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using Microsoft.Extensions.Logging; +using Quartz; + +namespace BPA.SaaS.TaskSchedule.Api.Service.QzScheduler +{ + /// + /// AnyTimeHttpJobScheduler + /// + public class AnyTimeHttpJobScheduler : BaseRequestHttpJobScheduler, IJob, IDisposable + { + private readonly ITaskLogRepository taskLogRepository; + private readonly ISystemDictionaryService systemDictionaryService; + private readonly ILogger logger; + private readonly ITaskInfoService taskInfoService; + private readonly IWarnManagerService warnManagerService; + + public AnyTimeHttpJobScheduler( + ITaskLogRepository taskLogRepository, + ISystemDictionaryService systemDictionaryService, + ILogger logger, + ITaskInfoService taskInfoService, IWarnManagerService warnManagerService) + { + this.taskLogRepository = taskLogRepository; + this.systemDictionaryService = systemDictionaryService; + this.logger = logger; + this.taskInfoService = taskInfoService; + this.warnManagerService = warnManagerService; + } + + /// + /// Execute + /// + /// + /// + public async Task Execute(IJobExecutionContext context) + { + TaskInfoDTO taskInfo = null; + long taskLogId = 0; + try + { + var taskInfoId = (long) context.JobDetail.JobDataMap["taskInfoId"]; + taskLogId = (long) context.JobDetail.JobDataMap["taskLogId"]; + var planStartTime = (DateTime) context.JobDetail.JobDataMap["planStartTime"]; +#if DEBUG + var now = DateTime.Now; + var delay = (int) (now - planStartTime).TotalMilliseconds; + Debug.WriteLine($"tid:{Thread.CurrentThread.ManagedThreadId},new:{now},ptime:{planStartTime}, delay:{delay}"); +#endif + taskInfo = taskInfoService.GetCache(taskInfoId); + await ExecuteHttpSchedulerJob(taskInfo, taskLogId); + } + catch (Exception ex) + { + logger.LogError(ex, "执行任务失败,{taskInfo},{taskLogId}", taskInfo?.ToJson(), taskLogId); + } + finally + { + await context.Scheduler.DeleteJob(context.JobDetail.Key); + } + } + + /// + /// 执行httpJob + /// + /// + public async Task ExecuteHttpSchedulerJob(TaskInfoDTO taskInfo, long taskLogId) + { + if (taskInfo == null) return; + var taskLog = taskLogRepository.Queryable().FirstOrDefault(f => f.Id == taskLogId); + if (taskLog.ExecutedResult != EnumExecutedResultType.Wait) + return; + taskLog.StartTime = DateTime.Now; + if (taskInfo.Status == EnumTaskStatusType.Suspend) + { + taskLog.ExecutedResult = EnumExecutedResultType.Suspend; + taskLog.UpdateTime = DateTime.Now; + taskLog.Remark = $"{taskLog.ExecutedResult.GetDescribe()}变为暂停"; + taskLogRepository.UpdateOne(taskLog, x => x.Id == taskLogId); + return; + } + + if (taskInfo.RequestURLType == EnumRequestURLType.BizSysApi) + { + var dic = systemDictionaryService.GetCache(EnumSystemDictionaryType.BizSysApi, taskInfo.BizSysApiName); + taskLog.RequestURL = $"{dic.Value}{taskInfo.RequestURL}"; +#if DEBUG + taskLog.RequestURL = $"{dic.ValueExt}{taskInfo.RequestURL}"; +#endif + } + else + { + taskLog.RequestURL = taskInfo.RequestURL; + } + + taskLog.ExecutedResult = EnumExecutedResultType.Executing; + taskLog.UpdateTime = DateTime.Now; + taskLog.TrackId = $"{taskLog.TaskId:x}:{taskLog.Id:x}"; + taskLogRepository.UpdateOne(taskLog, x => x.Id == taskLogId); + var requestUrl = taskLog.RequestURL; + try + { + var client = new HttpClient + { + Timeout = TimeSpan.FromSeconds(taskInfo.Timeout <= 10 ? 30 : taskInfo.Timeout) + }; + client.DefaultRequestHeaders.Add(TaskScheduleApiConfig.TraceIdHeadName, taskLog.TrackId); + HttpResponseMessage responseTask = null; + switch (taskInfo.RequestMethod) + { + case EnumRequestMethodType.GET: + if (!taskLog.RequestURL.Contains("?")) + requestUrl += "?"; + if (taskLog.RequestParam.IsNotEmpty()) + requestUrl += taskLog.RequestParam; + //Debug.WriteLine(requestUrl); + responseTask = await client.GetAsync(requestUrl); + break; + case EnumRequestMethodType.POST: + //Debug.WriteLine(requestUrl); + var stringContent = new StringContent(taskLog.RequestParam, Encoding.UTF8, "application/json"); + responseTask = await client.PostAsync(requestUrl, stringContent); + break; + default: break; + } + + if (responseTask == null) + { + taskLog.ExecutedResult = EnumExecutedResultType.CallFail; + taskLog.Remark = string.Format("请求类型错误,请求类型RequestType不应该为{0}", taskInfo.RequestURLType); + } + else + { + try + { + if (responseTask.StatusCode == System.Net.HttpStatusCode.OK) + { + taskLog.ResponseParam = await responseTask.Content.ReadAsStringAsync(); + var checkSuccessMark = base.CheckSuccessMark(taskInfo, taskLog.ResponseParam); + taskLog.ExecutedResult = checkSuccessMark ? EnumExecutedResultType.Success : EnumExecutedResultType.Fail; + taskLog.Remark = checkSuccessMark ? "执行成功!" : $"执行失败,[{taskInfo.SuccessMark}]"; + } + else + { + //请求失败 + taskLog.ExecutedResult = EnumExecutedResultType.Fail; + taskLog.Remark = $"StatusCode:[{(int) responseTask.StatusCode}]{responseTask.StatusCode}"; + } + + if (taskLog.ResponseParam != null && taskLog.ResponseParam.Length > 400) + taskLog.ResponseParam = taskLog.ResponseParam.Substring(0, 400); + } + catch (Exception ex0) + { + logger.LogError(ex0, "执行任务失败,{requestUrl},{taskLog}", requestUrl, taskInfo.ToJson()); + } + } + } + catch (Exception ex) + { + taskLog.ExecutedResult = EnumExecutedResultType.Fail; + taskLog.Remark = ex.Message; + logger.LogError(ex, "执行任务失败,{requestUrl},{taskLog}", requestUrl, taskInfo.ToJson()); + } + + taskInfo.LastFireTime = DateTime.Now; + taskLog.UpdateTime = DateTime.Now; + taskLog.EndTime = DateTime.Now; + taskLog.ExecutionTime = (int) (taskLog.EndTime.Value - taskLog.StartTime).TotalMilliseconds; + taskLogRepository.UpdateOne(taskLog, x => x.Id == taskLog.Id); + await warnManagerService.Warn(taskInfo, taskLog); + } + + public void Dispose() + { + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/AnyTimeSchedulerManager.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/AnyTimeSchedulerManager.cs new file mode 100644 index 0000000..8a15165 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/AnyTimeSchedulerManager.cs @@ -0,0 +1,169 @@ +using System.Collections.Concurrent; +using System.Collections.Specialized; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using Microsoft.Extensions.Logging; +using Quartz; +using Quartz.Impl; + +namespace BPA.SaaS.TaskSchedule.Api.Service.QzScheduler +{ + /// + /// 任意时间 + /// + public class AnyTimeSchedulerManager + { + private const int schedulerCount = 10; + /// + /// 调度器 + /// + private readonly ConcurrentDictionary schedulers; + private readonly TaskScheduleLangPackge langPackge; + private readonly JobSchedulerFactory jobSchedulerFactory; + private readonly Lazy taskInfoService; + private readonly ILogger logger; + private readonly TaskScheduleApiConfig TaskScheduleApiConfig; + + public AnyTimeSchedulerManager( + TaskScheduleLangPackge langPackge, + JobSchedulerFactory jobSchedulerFactory, + Lazy taskInfoService, + ILogger logger, + TaskScheduleApiConfig TaskScheduleApiConfig) + { + schedulers = new ConcurrentDictionary(); + this.langPackge = langPackge; + this.jobSchedulerFactory = jobSchedulerFactory; + this.taskInfoService = taskInfoService; + this.logger = logger; + this.TaskScheduleApiConfig = TaskScheduleApiConfig; + for (var i = 0; i < schedulerCount; i++) + GetScheduler(i); + } + + /// + /// GetScheduler + /// + /// + /// + private IScheduler GetScheduler(long taskLogId) + { + var key = taskLogId % schedulerCount; + return schedulers.GetOrAdd(key, k => + { + var name = $"{nameof(AnyTimeSchedulerManager)}{k}"; + var properties = new NameValueCollection + { + [StdSchedulerFactory.PropertySchedulerInstanceName] = name, + [StdSchedulerFactory.PropertySchedulerInstanceId] = TaskScheduleApiConfig.IPS, + // [StdSchedulerFactory.PropertyJobStoreType] = typeof(MongoDbJobStore).AssemblyQualifiedName, + ["quartz.threadPool.type"] = "Quartz.Simpl.DefaultThreadPool", + ["quartz.threadPool.maxConcurrency"] = "20", + // ["quartz.serializer.type"] = "binary", + // I treat the database in the connection string as the one you want to connect to + //[$"{StdSchedulerFactory.PropertyJobStorePrefix}.{StdSchedulerFactory.PropertyDataSourceConnectionString}"] = TaskScheduleApiConfig.MongoDBTaskScheduleUrl, + // The prefix is optional + //[$"{StdSchedulerFactory.PropertyJobStorePrefix}.collectionPrefix"] = $"Qz{name}" + }; + var factory = new StdSchedulerFactory(properties); + var scheduler = factory.GetScheduler().GetAwaiter().GetResult(); + scheduler.JobFactory = jobSchedulerFactory; + scheduler.Start(); + logger.LogInformation($"启动 {scheduler.SchedulerName} 调度器"); + return scheduler; + }); + + } + + /// + /// 设置调度任务 + /// + /// + public void SetTaskScheduler(TaskInfoDTO taskInfo, long taskLogId, DateTime planStartTime) + { + if (taskInfo.TaskType != EnumTaskType.AnyTime) + return; + var jobKey = CreateJobKey(taskLogId, taskInfo.Id); + RemoveTaskScheduler(taskLogId, jobKey); + if (taskInfo.Status == EnumTaskStatusType.Suspend) + return; + //var now = DateTime.Now; + //var totalSeconds = (int)(planStartTime - now).TotalSeconds; + //var intervalInSeconds = totalSeconds < 1 ? 1 : totalSeconds; + var triggerKey = CreateTriggerKey(taskLogId, taskInfo.Id); + var triggerBuild = TriggerBuilder.Create().WithIdentity(triggerKey); + if (planStartTime < DateTime.Now) + planStartTime = DateTime.Now; + //秒 分 时 日 月 ? 年 中间用空格隔开 + var trigger = triggerBuild.WithCronSchedule($"{planStartTime.Second} {planStartTime.Minute} {planStartTime.Hour} {planStartTime.Day} {planStartTime.Month} ? {planStartTime.Year} ").Build(); + //var trigger = triggerBuild.StartAt(planStartTime).WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(1)).Build(); + var dataMap = new JobDataMap { { "taskInfoId", taskInfo.Id }, { "taskLogId", taskLogId }, { "planStartTime", planStartTime } }; + var job = JobBuilder.Create().SetJobData(dataMap).WithIdentity(jobKey).WithDescription(taskInfo.Description).Build(); + GetScheduler(taskLogId).ScheduleJob(job, trigger).GetAwaiter().GetResult(); + } + + /// + /// 移除任务 + /// + /// + public void RemoveTaskScheduler(long taskLogId, long taskInfoId) + { + var key = CreateJobKey(taskLogId, taskInfoId); + RemoveTaskScheduler(taskLogId, key); + } + + /// + /// 检查是否已经存在任务 + /// + /// + /// + /// + public bool CheckExists(long taskLogId, long taskInfoId) + { + var key = CreateJobKey(taskLogId, taskInfoId); + return GetScheduler(taskLogId).CheckExists(key).GetAwaiter().GetResult(); + } + + /// + /// 移除任务 + /// + /// + public void RemoveTaskScheduler(long taskLogId, JobKey jobKey) + { + if (GetScheduler(taskLogId).CheckExists(jobKey).GetAwaiter().GetResult()) + GetScheduler(taskLogId).DeleteJob(jobKey).GetAwaiter().GetResult(); + } + + /// + /// 获取下次执行时间 + /// + /// + /// + public DateTimeOffset? GetNextFireTime(long taskLogId, long taskInfoId) + { + var triggerKey = CreateTriggerKey(taskLogId, taskInfoId); + var trigger = GetScheduler(taskLogId).GetTrigger(triggerKey).GetAwaiter().GetResult(); + if (trigger == null) + return null; + return trigger.GetNextFireTimeUtc()?.ToLocalTime(); + } + + /// + /// CreateJobKey + /// + /// + /// + private JobKey CreateJobKey(long taskLogId, long taskInfoId) => JobKey.Create(taskLogId.ToString(), taskInfoId.ToString()); + + /// + /// CreateTriggerKey + /// + /// + /// + private TriggerKey CreateTriggerKey(long taskLogId, long taskInfoId) => new TriggerKey(taskLogId.ToString(), taskInfoId.ToString()); + + + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/BaseRequestHttpJobScheduler.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/BaseRequestHttpJobScheduler.cs new file mode 100644 index 0000000..8da6c64 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/BaseRequestHttpJobScheduler.cs @@ -0,0 +1,24 @@ +using BPA.Component.Extensions; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; + +namespace BPA.SaaS.TaskSchedule.Api.Service.QzScheduler +{ + public class BaseRequestHttpJobScheduler + { + + /// + /// 检查成功标志 + /// + /// + /// + /// + public bool CheckSuccessMark(TaskInfoDTO taskInfo,string rpsContent) + { + if (taskInfo.SuccessMark.IsEmpty()) + return true; + if (rpsContent.IsEmpty()) + return false; + return rpsContent.Contains(taskInfo.SuccessMark); + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/JobSchedulerFactory.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/JobSchedulerFactory.cs new file mode 100644 index 0000000..8ac9b8b --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/JobSchedulerFactory.cs @@ -0,0 +1,39 @@ +using Microsoft.Extensions.DependencyInjection; +using Quartz; +using Quartz.Spi; + +namespace BPA.SaaS.TaskSchedule.Api.Service.QzScheduler +{ + /// + /// Job工厂 + /// + public class JobSchedulerFactory : IJobFactory + { + private readonly IServiceProvider _serviceProvider; + public JobSchedulerFactory(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + /// + /// NewJob + /// + /// + /// + /// + public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler) + { + var sp = _serviceProvider.CreateScope().ServiceProvider; + //Job类型 + var jobType = bundle.JobDetail.JobType; + //返回jobType对应类型的实例 + return sp.GetService(jobType) as IJob; + } + + public void ReturnJob(IJob job) + { + var disposable = job as IDisposable; + disposable?.Dispose(); + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestHttpJobScheduler.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestHttpJobScheduler.cs new file mode 100644 index 0000000..c7f475f --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestHttpJobScheduler.cs @@ -0,0 +1,186 @@ +using System.Diagnostics; +using System.Text; +using BPA.Component.Extensions; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using Microsoft.Extensions.Logging; +using Quartz; + +namespace BPA.SaaS.TaskSchedule.Api.Service.QzScheduler +{ + /// + /// SynHttpJobScheduler + /// + public class SynRequestHttpJobScheduler : BaseRequestHttpJobScheduler, IJob, IDisposable + { + private readonly ITaskLogRepository taskLogRepository; + private readonly ISystemDictionaryService systemDictionaryService; + private readonly ILogger logger; + private readonly ITaskInfoService taskInfoService; + private readonly IHttpClientFactory httpClientFactory; + private readonly IWarnManagerService warnManagerService; + + public SynRequestHttpJobScheduler( + ITaskLogRepository taskLogRepository, + ISystemDictionaryService systemDictionaryService, + ILogger logger, + ITaskInfoService taskInfoService, + IHttpClientFactory httpClientFactory, IWarnManagerService warnManagerService) + { + this.taskLogRepository = taskLogRepository; + this.systemDictionaryService = systemDictionaryService; + this.logger = logger; + this.taskInfoService = taskInfoService; + this.httpClientFactory = httpClientFactory; + this.warnManagerService = warnManagerService; + } + + /// + /// Execute + /// + /// + /// + public async Task Execute(IJobExecutionContext context) + { + TaskInfoDTO taskInfo = null; + try + { + var taskInfoId = (long) context.JobDetail.JobDataMap["taskInfoId"]; +#if DEBUG + Console.WriteLine($"{DateTime.Now} - [SynRequestHttpJobScheduler] - {taskInfoId}"); +#endif + taskInfo = taskInfoService.GetCache(taskInfoId); + if (taskInfo == null) return; + await ExecuteHttpSchedulerJob(taskInfo); + } + catch (Exception ex) + { + logger.LogError(ex, "执行任务失败,{taskInfo}", taskInfo?.ToJson()); + } + } + + /// + /// 执行httpJob + /// + /// + public async Task ExecuteHttpSchedulerJob(TaskInfoDTO taskInfo) + { + if (taskInfo.Status == EnumTaskStatusType.Suspend) + return; + var taskLog = new CrmTaskLog + { + BizSysApiName = taskInfo.BizSysApiName, + CreateTime = DateTime.Now, + EndTime = null, + ExecutedResult = EnumExecutedResultType.Executing, + ExecutionTime = 0, + Id = BPAUniqueIdBulder.NextLong(), + Name = taskInfo.Name, + PlanStartTime = DateTime.Now, + Remark = string.Empty, + RequestParam = taskInfo.RequestParam, + RequestURL = taskInfo.RequestURL, + RequestURLType = taskInfo.RequestURLType, + ResponseParam = string.Empty, + StartTime = DateTime.Now, + TaskId = taskInfo.Id, + TaskType = taskInfo.TaskType, + Title = taskInfo.Title, + UpdateTime = DateTime.Now + }; + if (taskInfo.RequestURLType == EnumRequestURLType.BizSysApi) + { + var dic = systemDictionaryService.GetCache(EnumSystemDictionaryType.BizSysApi, taskInfo.BizSysApiName); + taskLog.RequestURL = $"{dic.Value}{taskInfo.RequestURL}"; +#if DEBUG + taskLog.RequestURL = $"{dic.ValueExt}{taskInfo.RequestURL}"; +#endif + } + + taskLog.TrackId = $"{taskLog.TaskId:x}_{taskLog.Id:x}"; + taskLogRepository.Add(taskLog); + var requestUrl = taskLog.RequestURL; + try + { + var client = httpClientFactory.CreateClient(typeof(AnyTimeTaskScheduleExecutorService).FullName); + client.Timeout = TimeSpan.FromSeconds(taskInfo.Timeout <= 10 ? 30 : taskInfo.Timeout); + client.DefaultRequestHeaders.Add(TaskScheduleApiConfig.TraceIdHeadName, taskLog.TrackId); + HttpResponseMessage responseTask = null; + switch (taskInfo.RequestMethod) + { + case EnumRequestMethodType.GET: + if (!taskLog.RequestURL.Contains("?")) + requestUrl += "?"; + if (taskLog.RequestParam.IsNotEmpty()) + requestUrl += taskLog.RequestParam; + Debug.WriteLine(requestUrl); + responseTask = await client.GetAsync(requestUrl); + break; + case EnumRequestMethodType.POST: + var stringContent = new StringContent(taskLog.RequestParam, Encoding.UTF8, "application/json"); + responseTask = await client.PostAsync(requestUrl, stringContent); + break; + default: break; + } + + taskLog.UpdateTime = DateTime.Now; + taskLog.EndTime = DateTime.Now; + taskLog.ExecutionTime = (int) (taskLog.EndTime.Value - taskLog.StartTime).TotalMilliseconds; + if (responseTask == null) + { + taskLog.ExecutedResult = EnumExecutedResultType.CallFail; + taskLog.Remark = string.Format("请求类型错误,请求类型RequestType不应该为{0}", taskInfo.RequestURLType); + } + else + { + try + { + if (responseTask.StatusCode == System.Net.HttpStatusCode.OK) + { + taskLog.ResponseParam = await responseTask.Content.ReadAsStringAsync(); + var checkSuccessMark = base.CheckSuccessMark(taskInfo, taskLog.ResponseParam); + taskLog.ExecutedResult = checkSuccessMark ? EnumExecutedResultType.Success : EnumExecutedResultType.Fail; + taskLog.Remark = checkSuccessMark ? "执行成功!" : $"执行失败,[{taskInfo.SuccessMark}]"; + } + else + { + //请求失败 + taskLog.ExecutedResult = EnumExecutedResultType.Fail; + taskLog.Remark = $"StatusCode:[{(int) responseTask.StatusCode}]{responseTask.StatusCode}"; + } + + if (taskLog.ResponseParam != null && taskLog.ResponseParam.Length > 400) + taskLog.ResponseParam = taskLog.ResponseParam.Substring(0, 400); + taskLog.UpdateTime = DateTime.Now; + } + catch (Exception ex0) + { + logger.LogError(ex0, "执行任务失败,{requestUrl},{taskLog}", requestUrl, taskInfo.ToJson()); + } + } + } + catch (Exception ex) + { + taskLog.UpdateTime = DateTime.Now; + taskLog.EndTime = DateTime.Now; + taskLog.ExecutionTime = (int) (taskLog.EndTime.Value - taskLog.StartTime).TotalMilliseconds; + taskLog.ExecutedResult = EnumExecutedResultType.Fail; + taskLog.Remark = ex.Message; + logger.LogError(ex, "执行任务失败,{requestUrl},{taskLog}", requestUrl, taskInfo.ToJson()); + } + + taskInfo.LastFireTime = DateTime.Now; + taskLogRepository.UpdateOne(taskLog, x => x.Id == taskLog.Id); + await warnManagerService.Warn(taskInfo, taskLog); + } + + public void Dispose() + { + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestSchedulerManager.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestSchedulerManager.cs new file mode 100644 index 0000000..5123c94 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestSchedulerManager.cs @@ -0,0 +1,170 @@ +using System.Collections.Specialized; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using Microsoft.Extensions.Logging; +using Quartz; +using Quartz.Impl; + +namespace BPA.SaaS.TaskSchedule.Api.Service.QzScheduler +{ + /// + /// 调度器 单例 + /// + public class SynRequestSchedulerManager + { + /// + /// 调度器 + /// + private readonly IScheduler scheduler; + private readonly ILogger logger; + private readonly TaskScheduleApiConfig TaskScheduleApiConfig; + + + /// + /// DefaultSchedulerManager + /// + /// + public SynRequestSchedulerManager( + JobSchedulerFactory jobSchedulerFactory, + ILogger logger, + TaskScheduleApiConfig TaskScheduleApiConfig, + ISynRequestSchedulerTriggerListenerService synRequestSchedulerTriggerListenerService) + { + this.logger = logger; + this.TaskScheduleApiConfig = TaskScheduleApiConfig; + var properties = new NameValueCollection + { + [StdSchedulerFactory.PropertySchedulerInstanceName] = nameof(SynRequestSchedulerManager), + [StdSchedulerFactory.PropertySchedulerInstanceId] = TaskScheduleApiConfig.IPS, + ["quartz.threadPool.type"] = "Quartz.Simpl.DefaultThreadPool", + ["quartz.threadPool.maxConcurrency"] = "20", + + #region MongoDbJobStore config + //[StdSchedulerFactory.PropertyJobStoreType] = typeof(MongoDbJobStore).AssemblyQualifiedName, + //["quartz.threadPool.maxConcurrency"] = "50", + //["quartz.serializer.type"] = "binary", + //// I treat the database in the connection string as the one you want to connect to + //[$"{StdSchedulerFactory.PropertyJobStorePrefix}.{StdSchedulerFactory.PropertyDataSourceConnectionString}"] = TaskScheduleApiConfig.MongoDBTaskScheduleUrl, + //// The prefix is optional + //[$"{StdSchedulerFactory.PropertyJobStorePrefix}.collectionPrefix"] = $"Qz{nameof(SynRequestSchedulerManager)}" + #endregion + }; + var factory = new StdSchedulerFactory(properties); + scheduler = factory.GetScheduler().GetAwaiter().GetResult(); + scheduler.JobFactory = jobSchedulerFactory; + scheduler.Start(); + scheduler.ListenerManager.AddTriggerListener(synRequestSchedulerTriggerListenerService); + logger.LogInformation($"启动 {scheduler.SchedulerName} 调度器"); + } + + /// + /// 设置调度任务 + /// + /// + public void SetTaskScheduler(TaskInfoDTO taskInfo) + { + var jobKey = CreateJobKey(taskInfo.Id); + RemoveTaskScheduler(jobKey); + if (taskInfo.IsDelete) + return; + if (taskInfo.TaskType != EnumTaskType.SynRequest) + return; + if (taskInfo.Status == EnumTaskStatusType.Suspend) + return; + ITrigger trigger = null; + var triggerKey = CreateTriggerKey(taskInfo.Id); + var triggerBuild = TriggerBuilder.Create().WithIdentity(triggerKey); + switch (taskInfo.TriggerType) + { + case EnumTriggerType.SimpleTrigger: + //ICronTrigger + trigger = triggerBuild.StartAt(new DateTimeOffset(taskInfo.StartTime)).WithSimpleSchedule(x => x.WithIntervalInSeconds(taskInfo.RepeatInterval).WithRepeatCount(taskInfo.RepeatCount)).Build(); + //WithIntervalInMinutes + break; + case EnumTriggerType.CronTrigger: + //ICronTrigger + trigger = triggerBuild.WithCronSchedule(taskInfo.CronExpression).Build(); + break; + default: + break; + } + if (trigger == null) + return; + var dataMap = new JobDataMap { { "taskInfoId", taskInfo.Id } }; + var job = JobBuilder.Create().SetJobData(dataMap).WithIdentity(jobKey).WithDescription(taskInfo.Description).Build(); + scheduler.ScheduleJob(job, trigger).GetAwaiter().GetResult(); + } + + /// + /// 移除任务 + /// + /// + public void RemoveTaskScheduler(long taskInfoId) + { + var key = CreateJobKey(taskInfoId); + RemoveTaskScheduler(key); + } + + /// + /// 移除任务 + /// + /// + public void RemoveTaskScheduler(JobKey jobKey) + { + if (scheduler.CheckExists(jobKey).GetAwaiter().GetResult()) + scheduler.DeleteJob(jobKey).GetAwaiter().GetResult(); + } + + /// + /// 获取下次执行时间 + /// + /// + /// + public (DateTime? nextFireTime, DateTime? previousFireTime) GetFireTime(long taskInfoId) + { + var triggerKey = CreateTriggerKey(taskInfoId); + var trigger = scheduler.GetTrigger(triggerKey).GetAwaiter().GetResult(); + if (trigger == null) + return (null, null); + var nextFireTime = trigger.GetNextFireTimeUtc()?.LocalDateTime; + var previousFireTime = trigger.GetPreviousFireTimeUtc()?.LocalDateTime; + return (nextFireTime, previousFireTime); + } + + /// + /// CreateJobKey + /// + /// + /// + private JobKey CreateJobKey(long taskInfoId) => JobKey.Create(taskInfoId.ToString(), taskInfoId.ToString()); + + /// + /// CreateTriggerKey + /// + /// + /// + private TriggerKey CreateTriggerKey(long taskInfoId) => new TriggerKey(taskInfoId.ToString(), taskInfoId.ToString()); + + /// + /// 校验Cron + /// + /// + /// + public (bool result, string msg) CheckCronExpression(string cronExpression) + { + try + { + var triggerKey = CreateTriggerKey(0); + var triggerBuild = TriggerBuilder.Create().WithIdentity(triggerKey); + triggerBuild.WithCronSchedule(cronExpression).Build(); + return (true, "ok"); + } + catch (Exception ex) + { + return (false, ex.Message); + } + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestSchedulerTriggerListenerService.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestSchedulerTriggerListenerService.cs new file mode 100644 index 0000000..b2128e4 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/SynRequestSchedulerTriggerListenerService.cs @@ -0,0 +1,76 @@ +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using CSRedis; +using Quartz; + +namespace BPA.SaaS.TaskSchedule.Api.Service.QzScheduler +{ + /// + /// 触发器监听者 + /// + public class SynRequestSchedulerTriggerListenerService : ISynRequestSchedulerTriggerListenerService + { + /// + /// redisClient + /// + private readonly CSRedisClient redisClient; + + /// + /// redisClient + /// + /// + public SynRequestSchedulerTriggerListenerService(CSRedisClient redisClient) + { + this.redisClient = redisClient; + } + + public string Name => nameof(SynRequestSchedulerTriggerListenerService); + + public Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default) + { +#if DEBUG + Console.WriteLine($"[TriggerComplete]: Trigger[{trigger.Key.Name}] 被触发并且完成了 Job 的执行,此方法被调用"); +#endif + return Task.CompletedTask; + } + + public Task TriggerFired(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default) + { +#if DEBUG + Console.WriteLine($"[TriggerFired]: Trigger[{trigger.Key.Name}] 被触发了,此时Job 上的 execute() 方法将要被执行"); +#endif + return Task.CompletedTask; + } + + public Task TriggerMisfired(ITrigger trigger, CancellationToken cancellationToken = default) + { +#if DEBUG + Console.WriteLine($"[TriggerMisfired]: 当前Trigger[{trigger.Key.Name}]触发错过了"); +#endif + return Task.CompletedTask; + } + + /// + /// 决策是否可以执行 + /// + /// + /// + /// + /// + public Task VetoJobExecution(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default) + { + var key = TaskScheduleRedisKey.LockTrigger(trigger.Key.Name); + //锁成功就了就可以触发执行了 + var timeout = 2;//防止服务器有时差 + if(trigger is ISimpleTrigger simpleTrigger) + { + timeout = (int)simpleTrigger.RepeatInterval.TotalSeconds; + if (timeout > 30) + timeout = 30; + } + var result = !redisClient.Set(key, null, timeout, RedisExistence.Nx); + Console.WriteLine($"{DateTime.Now} - [VetoJobExecution]:{key}-{result}"); + return Task.FromResult(result); + } + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/TaskLogServiceBak.txt b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/TaskLogServiceBak.txt new file mode 100644 index 0000000..9ad7cdb --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/QzScheduler/TaskLogServiceBak.txt @@ -0,0 +1,309 @@ +using Microsoft.Extensions.Logging; +using MongoDB.Driver; +using MongoDB.Driver.Linq; +using RWX.Component.DTOCommon; +using RWX.Component.MongodbClient; +using RWX.CRM.Common.EnumTaskSchedule.Enums; +using RWX.CRM.TaskSchedule.DTO; +using RWX.CRM.TaskSchedule.DTO.TaskLog; +using RWX.CRM.TaskSchedule.Entity; +using RWX.CRM.TaskSchedule.IRepository; +using RWX.CRM.TaskSchedule.IService; +using RWX.CRM.TaskSchedule.Model; +using RWX.CRM.TaskSchedule.Service.QzScheduler; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; + +namespace RWX.CRM.TaskSchedule.Service +{ + /// + /// 任务日志 + /// + public class TaskLogService : ITaskLogService + { + private readonly ILogger logger; + private readonly TaskScheduleLangPackge langPackge; + private readonly Lazy taskLogRepository; + private readonly Lazy taskInfoService; + private readonly Lazy systemDictionaryService; + private readonly TaskScheduleApiConfig TaskScheduleApiConfig; + private readonly AnyTimeSchedulerManager anyTimeSchedulerManager; + private static Thread runThread; + /// + /// 构造方法 + /// + /// + /// + public TaskLogService( + ILogger logger, + TaskScheduleLangPackge langPackge, + Lazy taskLogRepository, + Lazy taskInfoService, + Lazy systemDictionaryService, + TaskScheduleApiConfig TaskScheduleApiConfig, + AnyTimeSchedulerManager anyTimeSchedulerManager) + { + this.logger = logger; + this.langPackge = langPackge; + this.taskLogRepository = taskLogRepository; + this.taskInfoService = taskInfoService; + this.systemDictionaryService = systemDictionaryService; + this.TaskScheduleApiConfig = TaskScheduleApiConfig; + this.anyTimeSchedulerManager = anyTimeSchedulerManager; + } + + /// + /// 添加任意时间任务日志 + /// + /// + /// + public BaseResult AddAnyTimeLog(AddAnyTimeLogReq req) + { + if (req == null) + return BaseResult.Build(langPackge.ParamInvalid); + if (req.PlanStartTime < DateTime.Now) + req.PlanStartTime = DateTime.Now; + var taskInfo = taskInfoService.Value.GetCache(req.TaskName); + if (taskInfo.IsNull()) + return BaseResult.Build(langPackge.TaskNotExist); + if (taskInfo.TaskType != EnumTaskType.AnyTime) + return BaseResult.BuildFail($"[{taskInfo.Name}]{taskInfo.Title} 不是任意执行时间类型任务!"); + + var taskLog = new CrmTaskLog + { + BizSysApiName = taskInfo.BizSysApiName, + CreateTime = DateTime.Now, + EndTime = null, + ExecutedResult = EnumExecutedResultType.Wait, + ExecutionTime = 0, + Id = RwxUniqueIdBulder.NextLong(), + Name = taskInfo.Name, + PlanStartTime = req.PlanStartTime, + Remark = string.Empty, + RequestParam = req.RequestParam, + RequestURL = taskInfo.RequestURL, + RequestURLType = taskInfo.RequestURLType, + ResponseParam = string.Empty, + StartTime = DateTime.Now, + TaskId = taskInfo.Id, + TaskType = taskInfo.TaskType, + Title = taskInfo.Title, + UpdateTime = DateTime.Now + }; + if (taskInfo.RequestURLType == EnumRequestURLType.BizSysApi) + { + var dic = systemDictionaryService.Value.GetCache(EnumSystemDictionaryType.BizSysApi, taskInfo.BizSysApiName); + taskLog.RequestURL = $"{dic.Value}{taskInfo.RequestURL}"; + } + taskLogRepository.Value.InsertOne(taskLog); + var maxDate = DateTime.Now.AddMinutes(TaskScheduleApiConfig.AntTimeTaskCollectTime); + if (req.PlanStartTime < maxDate) + anyTimeSchedulerManager.SetTaskScheduler(taskInfo, taskLog.Id, req.PlanStartTime); + return BaseResult.BuildOK(); + } + + /// + /// 添加任意时间任务日志 多个 + /// + /// + /// + public BaseResult AddAnyTimeLogs(AddAnyTimeLogsReq req) + { + if (req == null || req.Logs == null || req.Logs.Count == 0) + return BaseResult.Build(langPackge.ParamInvalid); + var taskInfo = taskInfoService.Value.GetCache(req.TaskName); + if (taskInfo.IsNull()) + return BaseResult.Build(langPackge.TaskNotExist); + if (taskInfo.TaskType != EnumTaskType.AnyTime) + throw new BusinessException(langPackge.Fail, $"[{taskInfo.Name}]{taskInfo.Title} 不是任意执行时间类型任务!"); + var taskLogs = new List(); + req.Logs.Each(log => + { + if (log.PlanStartTime < DateTime.Now) + log.PlanStartTime = DateTime.Now; + var taskLog = new CrmTaskLog + { + BizSysApiName = taskInfo.BizSysApiName, + CreateTime = DateTime.Now, + EndTime = null, + ExecutedResult = EnumExecutedResultType.Wait, + ExecutionTime = 0, + Id = RwxUniqueIdBulder.NextLong(), + Name = taskInfo.Name, + PlanStartTime = log.PlanStartTime, + Remark = string.Empty, + RequestParam = log.RequestParam, + RequestURL = taskInfo.RequestURL, + RequestURLType = taskInfo.RequestURLType, + ResponseParam = string.Empty, + StartTime = DateTime.Now, + TaskId = taskInfo.Id, + TaskType = taskInfo.TaskType, + Title = taskInfo.Title, + UpdateTime = DateTime.Now + }; + if (taskInfo.RequestURLType == EnumRequestURLType.BizSysApi) + { + var dic = systemDictionaryService.Value.GetCache(EnumSystemDictionaryType.BizSysApi, taskInfo.BizSysApiName); + taskLog.RequestURL = $"{dic.Value}{taskInfo.RequestURL}"; + } + taskLogs.Add(taskLog); + + }); + if (taskLogs.Count > 0) + { + taskLogRepository.Value.InsertMany(taskLogs); + var maxDate = DateTime.Now.AddMinutes(TaskScheduleApiConfig.AntTimeTaskCollectTime); + taskLogs.Each(log => + { + if (log.PlanStartTime < maxDate) + anyTimeSchedulerManager.SetTaskScheduler(taskInfo, log.Id, log.PlanStartTime); + }); + } + return BaseResult.BuildOK(); + } + + /// + /// 启动 + /// + public void Start() + { + if (runThread != null) + return; + runThread = new Thread(() => + { + while (true) + { + try + { + ScanWaitAnyTimeLog(); + } + catch (Exception ex) + { + logger.LogError(ex, "加载anytime task log error"); + } + finally + { + var sleepTime = (TaskScheduleApiConfig.AntTimeTaskCollectTime / 2) * 60 * 1000; + Thread.Sleep(sleepTime); + } + } + }); + runThread.Start(); + + } + + /// + /// 扫描待执行的anytime log + /// + public void ScanWaitAnyTimeLog(long? taskInfoId = null) + { + var maxDate = DateTime.Now.AddMinutes(TaskScheduleApiConfig.AntTimeTaskCollectTime); + var taskLogs = taskLogRepository.Value.Queryable() + .WhereIF(taskInfoId.HasValue, x => x.TaskId == taskInfoId.Value) + .Where(x => x.TaskType == EnumTaskType.AnyTime + && x.ExecutedResult == EnumExecutedResultType.Wait + && x.PlanStartTime <= maxDate) + .Select(x => new { x.Id, x.TaskId, x.PlanStartTime }).ToList(); + if (taskLogs.Count == 0) + return; + var timeout = DateTime.Now.AddMinutes(-TaskScheduleApiConfig.AnyTimeTaskLogPlanTimeout); + foreach (var taskLog in taskLogs) + { + if (taskLog.PlanStartTime < timeout) + { + //任务超时 + taskLogRepository.Value.UpdateOne(x => new CrmTaskLog + { + ExecutedResult = EnumExecutedResultType.Timeout, + UpdateTime = DateTime.Now, + Remark = $"任务超过{TaskScheduleApiConfig.AnyTimeTaskLogPlanTimeout}分钟未执行,超时!" + }, x => x.Id == taskLog.Id); + continue; + } + //任务是否存在 + if (anyTimeSchedulerManager.CheckExists(taskLog.Id, taskLog.TaskId)) + continue; + var taskInfo = taskInfoService.Value.GetCache(taskLog.TaskId); + if (taskInfo == null) + anyTimeSchedulerManager.RemoveTaskScheduler(taskLog.Id, taskLog.TaskId); + else + { + //添加到任务列表 + anyTimeSchedulerManager.SetTaskScheduler(taskInfo, taskLog.Id, taskLog.PlanStartTime); + } + } + } + + /// + /// 清理日志 + /// + public void Clear() + { + var tasks = taskInfoService.Value.GetAll().Data; + foreach (var task in tasks) + { + if (task.KeepLogDays > 0) + { + var date = DateTime.Now.AddDays(-task.KeepLogDays).Date; + taskLogRepository.Value.DeleteMany(x => x.TaskId == task.Id && x.PlanStartTime <= date && x.ExecutedResult != EnumExecutedResultType.Wait); + } + if (task.KeepLogCount > 0) + { + var count = taskLogRepository.Value.Queryable().Count(x => x.TaskId == task.Id); + if (count > task.KeepLogCount) + { + var query = taskLogRepository.Value.Queryable().Where(x => x.TaskId == task.Id).OrderByDescending(x => x.Id).Skip(task.KeepLogCount - 1).Take(1).Select(x => new { x.Id }); + var entity = query.Single(); + taskLogRepository.Value.DeleteMany(x => x.TaskId == task.Id && x.Id < entity.Id && x.ExecutedResult != EnumExecutedResultType.Wait); + } + } + } + } + + /// + /// 分页查询日志 + /// + /// + /// + public BaseResultPage GetPage(GetTaskLogPageReq req) + { + req.BizSysApiName = req.BizSysApiName.ToTrim(); + var query = taskLogRepository.Value.Queryable() + .WhereIF(req.BizSysApiName.IsNotEmpty(), x => x.BizSysApiName == req.BizSysApiName) + .WhereIF(req.ExecutedResult.HasValue, x => x.ExecutedResult == req.ExecutedResult.Value) + .WhereIF(req.TaskId.HasValue, x => x.TaskId == req.TaskId.Value) + .WhereIF(req.TaskType.HasValue, x => x.TaskType == req.TaskType.Value) + .WhereIF(req.PlanStartTime.HasValue, x => x.PlanStartTime == req.PlanStartTime.Value) + .WhereIF(req.ExecutedResult.HasValue, x => x.ExecutedResult == req.ExecutedResult.Value) + .OrderByDescending(x => x.Id); + var rows = query.Pagination(x => new TaskLogDTO + { + BizSysApiName = x.BizSysApiName, + CreateTime = x.CreateTime, + EndTime = x.EndTime, + ExecutedResult = x.ExecutedResult, + ExecutionTime = x.ExecutionTime, + Id = x.Id, + Name = x.Name, + PlanStartTime = x.PlanStartTime, + Remark = x.Remark, + RequestParam = x.RequestParam, + RequestURL = x.RequestURL, + RequestURLType = x.RequestURLType, + ResponseParam = x.ResponseParam, + StartTime = x.StartTime, + TaskId = x.TaskId, + TaskType = x.TaskType, + Title = x.Title, + UpdateTime = x.UpdateTime, + TrackId=x.TrackId + }, req.PageIndex, req.PageSize, out int total); + return BaseResultPage.BuildOK(rows, total); + } + + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/SystemDictionaryService.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/SystemDictionaryService.cs new file mode 100644 index 0000000..bcb5dc9 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/SystemDictionaryService.cs @@ -0,0 +1,185 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.Component.Extensions; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using BPA.SaaS.TaskSchedule.Api.Service.Queue; +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Options; + +namespace BPA.SaaS.TaskSchedule.Api.Service +{ + public class SystemDictionaryService : ISystemDictionaryService + { + private readonly Lazy systemDictionaryRepository; + private readonly TaskScheduleLangPackge langPackge; + private readonly static MemoryCache memoryCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); + private readonly SynDataTaskScheduleProducer synDataTaskScheduleProducer; + + public SystemDictionaryService( + TaskScheduleLangPackge langPackge, + Lazy systemDictionaryRepository, + SynDataTaskScheduleProducer synDataTaskScheduleProducer) + { + this.langPackge = langPackge; + this.systemDictionaryRepository = systemDictionaryRepository; + this.synDataTaskScheduleProducer = synDataTaskScheduleProducer; + } + + /// + /// 保存 + /// + /// + /// + public BaseResult Save(SaveSystemDictionaryReq req) + { + if (req.IsNull()) + return BaseResult.Build(langPackge.ParamInvalid); + req.Key = req.Key.ToTrim(); + var cmd = 1; + if (req.Id == 0) + { + var has = systemDictionaryRepository.Value.Queryable() + .Any(x => x.Type == req.Type && x.Key == req.Key && x.IsDelete == false); + if (has) + return BaseResult.Build(langPackge.KeyExist); + var entity = new CrmSystemDictionary + { + Id = BPAUniqueIdBulder.NextLong(), + Key = req.Key, + Type = req.Type, + Value = req.Value.ToTrim(), + ValueExt = req.ValueExt.ToTrim(), + IsDelete = false + }; + req.Id = entity.Id; + systemDictionaryRepository.Value.Add(entity); + cmd = 1; + } + else + { + var entity = systemDictionaryRepository.Value.Queryable().FirstOrDefault(x => x.Id == req.Id && x.IsDelete == false); + if (entity == null) + return BaseResult.Build(langPackge.KeyNotExist); + var has = systemDictionaryRepository.Value.Queryable() + .Any(x => x.Id != req.Id && x.Type == req.Type && x.Key == req.Key && x.IsDelete == false); + if (has) + return BaseResult.Build(langPackge.KeyExist); + req.Value = req.Value.ToTrim(); + req.ValueExt = req.ValueExt.ToTrim(); + systemDictionaryRepository.Value.UpdateOne(x => new CrmSystemDictionary + { + Type = req.Type, + Value = req.Value, + ValueExt = req.ValueExt + }, x => x.Id == req.Id); + cmd = 2; + } + + //触发数据改变 + synDataTaskScheduleProducer.Enqueue(new SynDataTaskScheduleMsgBody {Cmd = cmd, DataId = req.Id, DataType = 1}); + Thread.Sleep(1000); + return BaseResult.BuildOK(); + } + + /// + /// 删除 + /// + /// + /// + public BaseResult Delete(DeleteSystemDictionaryReq req) + { + var entity = systemDictionaryRepository.Value.Queryable().First(s => s.Id == req.Id); + if (entity == null || entity.IsDelete) + return BaseResult.Build(langPackge.KeyNotExist); + //更改为删除 + systemDictionaryRepository.Value.UpdateOne(x => new CrmSystemDictionary {IsDelete = true}, x => x.Id == req.Id); + //触发数据改变 + synDataTaskScheduleProducer.Enqueue(new SynDataTaskScheduleMsgBody {Cmd = 3, DataId = req.Id, DataType = 1}); + Thread.Sleep(1000); + return BaseResult.BuildOK(); + } + + /// + /// 获取所有的 + /// + /// + public BaseResult> GetAll() + { + var rows = systemDictionaryRepository.Value.Queryable().Where(x => x.IsDelete == false).Select(x => new SystemDictionaryDTO + { + Id = x.Id, + Type = x.Type, + Key = x.Key, + Value = x.Value, + ValueExt = x.ValueExt + }).ToList(); + return BaseResult>.BuildOK(rows); + } + + /// + /// 获取缓存的字典信息 + /// + /// + /// + /// + public SystemDictionaryDTO GetCache(EnumSystemDictionaryType type, string key) + { + var rkey = TaskScheduleRedisKey.DictionaryKey(type, key); + return memoryCache.Get(rkey); + } + + /// + /// 当数据改变 + /// + /// + public void OnDataChange(SynDataTaskScheduleMsgBody msgBody) + { + var entity = systemDictionaryRepository.Value.Queryable().FirstOrDefault(f => f.Id == msgBody.DataId); + if (entity == null) return; + var rkey = TaskScheduleRedisKey.DictionaryKey(entity.Type, entity.Key); + if (entity.IsDelete) + memoryCache.Remove(rkey); + else + memoryCache.Set(rkey, new SystemDictionaryDTO + { + Id = entity.Id, + Key = entity.Key, + Type = entity.Type, + Value = entity.Value, + ValueExt = entity.ValueExt + }); + } + + /// + /// 启动执行一次 + /// + public void Start() + { + // systemDictionaryRepository.Value.UpdateMany(x => new CrmSystemDictionary { IsDelete = false }, x => x.Id > 0); + var rows = systemDictionaryRepository.Value.Queryable().Where(x => x.IsDelete == false).Select(x => new SystemDictionaryDTO + { + Id = x.Id, + Type = x.Type, + Key = x.Key, + Value = x.Value, + ValueExt = x.ValueExt + }).ToList(); + rows.Each(item => + { + var rkey = TaskScheduleRedisKey.DictionaryKey(item.Type, item.Key); + memoryCache.Set(rkey, new SystemDictionaryDTO + { + Id = item.Id, + Key = item.Key, + Type = item.Type, + Value = item.Value, + ValueExt = item.ValueExt + }); + }); + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/TaskInfoService.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/TaskInfoService.cs new file mode 100644 index 0000000..d9c4fbe --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/TaskInfoService.cs @@ -0,0 +1,502 @@ +using System.Linq.Expressions; +using System.Text; +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.Component.Extensions; +using BPA.Component.MongoClient; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskLog; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using BPA.SaaS.TaskSchedule.Api.Service.Queue; +using BPA.SaaS.TaskSchedule.Api.Service.QzScheduler; +using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using MongoDB.Driver; + +namespace BPA.SaaS.TaskSchedule.Api.Service +{ + /// + /// 任务信息 + /// + public class TaskInfoService : ITaskInfoService + { + private static readonly MemoryCache memoryCache = new(Options.Create(new MemoryCacheOptions())); + private readonly Lazy taskInfoRepository; + private readonly TaskScheduleLangPackge langPackge; + private readonly Lazy schedulerManager; + private readonly Lazy taskLogRepository; + private readonly Lazy taskLogService; + private readonly IServiceProvider serviceProvider; + private readonly SynDataTaskScheduleProducer synDataTaskScheduleProducer; + private readonly Lazy systemDictionaryService; + + /// + /// 构造方法 + /// + public TaskInfoService( + TaskScheduleLangPackge langPackge, + Lazy taskInfoRepository, + Lazy schedulerManager, + Lazy taskLogRepository, + Lazy taskLogService, + IServiceProvider serviceProvider, + SynDataTaskScheduleProducer synDataTaskScheduleProducer, + Lazy systemDictionaryService) + { + this.langPackge = langPackge; + this.taskInfoRepository = taskInfoRepository; + this.schedulerManager = schedulerManager; + this.taskLogRepository = taskLogRepository; + this.taskLogService = taskLogService; + this.serviceProvider = serviceProvider; + this.synDataTaskScheduleProducer = synDataTaskScheduleProducer; + this.systemDictionaryService = systemDictionaryService; + } + + /// + /// 保存 + /// + /// + /// + public BaseResult Save(SaveTaskInfoReq req) + { + if (req.IsNull()) + return BaseResult.Build(langPackge.ParamInvalid); + var isNew = req.Id <= 0; + req.Name = req.Name.ToTrim(); + req.BizSysApiName = req.BizSysApiName.ToTrim(); + req.RequestURL = req.RequestURL.ToTrim(); + if (req.RequestURL.IsNull()) + return BaseResult.Build(langPackge.ParamInvalid, "请求地址不能为空!"); + if (req.RequestURLType == EnumRequestURLType.BizSysApi && req.BizSysApiName.IsNull()) + return BaseResult.Build(langPackge.ParamInvalid, "业务系统Api名称不能为空!"); + if (req.RequestURLType == EnumRequestURLType.BizSysApi && !req.RequestURL.StartsWith("/")) + return BaseResult.Build(langPackge.ParamInvalid, "请求地址不能以 / 开头!"); + if (req.RequestURLType == EnumRequestURLType.Custom && !req.RequestURL.ToLower().StartsWith("http")) + return BaseResult.Build(langPackge.ParamInvalid, "请求地址必须以http开头!"); + if (req.TriggerType == EnumTriggerType.CronTrigger) + { + (var checkResult, var msg) = schedulerManager.Value.CheckCronExpression(req.CronExpression); + if (!checkResult) + return BaseResult.Build(langPackge.ParamInvalid, $"Cron表达式校验错误:{msg}!"); + } + + //校验任务名称是否存在 + var hasName = taskInfoRepository.Value.Queryable() + .WhereIF(!isNew, x => x.Id != req.Id) + .Any(x => x.Name == req.Name && x.IsDelete == false); + if (hasName) + return BaseResult.Build(langPackge.TaskExist); + if (req.TaskType == EnumTaskType.AnyTime) + req.TriggerType = EnumTriggerType.Nothing; + var statusIsChange = false; + CrmTaskInfo entity = null; + var cmd = 1; + if (isNew) + { + entity = new CrmTaskInfo + { + BizSysApiName = req.BizSysApiName, + CreateTime = DateTime.Now, + CronExpression = req.CronExpression.ToTrim(), + Description = req.Description.ToTrim(), + Id = BPAUniqueIdBulder.NextLong(), + IsDelete = false, + Name = req.Name, + RepeatCount = req.RepeatCount, + RepeatInterval = req.RepeatInterval, + RequestMethod = req.RequestMethod, + RequestParam = req.RequestParam.ToTrim(), + RequestURL = req.RequestURL, + RequestURLType = req.RequestURLType, + StartTime = req.StartTime, + Status = req.Status, + TaskType = req.TaskType, + Title = req.Title.ToTrim(), + TriggerType = req.TriggerType, + UpdateTime = DateTime.Now, + Timeout = req.Timeout, + KeepLogCount = req.KeepLogCount, + KeepLogDays = req.KeepLogDays, + SuccessMark = req.SuccessMark.ToTrim() + }; + taskInfoRepository.Value.Add(entity); + cmd = 1; + } + else + { + entity = taskInfoRepository.Value.Queryable().FirstOrDefault(x => x.Id == req.Id); + if (entity.IsNull()) + return BaseResult.Build(langPackge.TaskNotExist); + //检查状态是否改变 + statusIsChange = entity.Status != req.Status; + entity.BizSysApiName = req.BizSysApiName; + entity.CreateTime = DateTime.Now; + entity.CronExpression = req.CronExpression.ToTrim(); + entity.Description = req.Description.ToTrim(); + entity.Name = req.Name; + entity.RepeatCount = req.RepeatCount; + entity.RepeatInterval = req.RepeatInterval; + entity.RequestMethod = req.RequestMethod; + entity.RequestParam = req.RequestParam.ToTrim(); + entity.RequestURL = req.RequestURL; + entity.RequestURLType = req.RequestURLType; + entity.StartTime = req.StartTime; + entity.Status = req.Status; + entity.TaskType = req.TaskType; + entity.Title = req.Title.ToTrim(); + entity.TriggerType = req.TriggerType; + entity.UpdateTime = DateTime.Now; + entity.Timeout = req.Timeout; + entity.KeepLogCount = req.KeepLogCount; + entity.KeepLogDays = req.KeepLogDays; + entity.SuccessMark = req.SuccessMark.ToTrim(); + taskInfoRepository.Value.UpdateOne(entity, x => x.Id == entity.Id); + cmd = 2; + } + + var dto = ConverEntity2DTO(entity); + if (req.TaskType == EnumTaskType.AnyTime && statusIsChange) + { + UpdateResult updateResult = null; + if (entity.Status == EnumTaskStatusType.Beginning) + { + //改变之前暂停的为等待状态 + taskLogRepository.Value.UpdateMany(x => new CrmTaskLog + { + ExecutedResult = EnumExecutedResultType.Wait, + UpdateTime = DateTime.Now, + Remark = "暂停变为等待" + }, + x => x.TaskId == entity.Id && x.ExecutedResult == EnumExecutedResultType.Suspend); + } + else if (entity.Status == EnumTaskStatusType.Suspend) + { + //改变之前等待的为暂停状态 + updateResult = taskLogRepository.Value.UpdateMany(x => new CrmTaskLog + { + ExecutedResult = EnumExecutedResultType.Suspend, + UpdateTime = DateTime.Now, + Remark = "等待变为暂停" + }, + x => x.TaskId == entity.Id && x.ExecutedResult == EnumExecutedResultType.Wait); + } + } + + //触发数据改变 + synDataTaskScheduleProducer.Enqueue(new SynDataTaskScheduleMsgBody {Cmd = cmd, DataId = entity.Id, DataType = 2}); + return BaseResult.BuildOK(entity.Id); + } + + /// + /// 删除 + /// + /// + /// + public BaseResult Delete(DeleteTaskInfoReq req) + { + var dto = GetCache(req.Id); + if (dto.IsNull()) + return BaseResult.Build(langPackge.TaskNotExist); + //标记任务删除 + taskInfoRepository.Value.UpdateOne(x => new CrmTaskInfo {IsDelete = true}, x => x.Id == req.Id); + if (dto.TaskType == EnumTaskType.AnyTime) + { + //终止 anytime 的 tasklog + taskLogRepository.Value.UpdateMany(x => new CrmTaskLog + { + ExecutedResult = EnumExecutedResultType.Abort, + UpdateTime = DateTime.Now, + Remark = "主任务删除,子任务终止任务" + }, + x => x.TaskId == dto.Id && (x.ExecutedResult == EnumExecutedResultType.Suspend || + x.ExecutedResult == EnumExecutedResultType.Wait)); + } + + //触发数据改变 + synDataTaskScheduleProducer.Enqueue(new SynDataTaskScheduleMsgBody {Cmd = 3, DataId = req.Id, DataType = 2}); + return BaseResult.BuildOK(); + } + + /// + /// 获取所有的任务信息 + /// + /// + public BaseResult> GetAll() + { + var rows = taskInfoRepository.Value.Queryable().Where(x => x.IsDelete == false).Select(entityToDTOselector).ToList(); + rows.Each(row => + { + if (row.TaskType == EnumTaskType.SynRequest) + { + if (row.Status == EnumTaskStatusType.Beginning) + { + var (nextFireTime, previousFireTime) = schedulerManager.Value.GetFireTime(row.Id); + row.NextFireTime = nextFireTime; + row.LastFireTime = previousFireTime; + } + } + }); + //redisClient.Keys(TaskScheduleRedisKey.TaskInfoKey("*")) + // .Each(key => + // { + // var row = redisClient.Get(key); + // if (row.Status == EnumTaskStatusType.Beginning) + // row.NextFireTime = schedulerManager.Value.GetNextFireTime(row.Id); + // rows.Add(row); + // }); + return BaseResult>.BuildOK(rows); + } + + /// + /// 实体转dto + /// + /// + private TaskInfoDTO ConverEntity2DTO(CrmTaskInfo entity) + { + var func = entityToDTOselector.Compile(); + var taskInfo = func(entity); + return taskInfo; + } + + /// + /// 缓存 + /// + /// + private void Cache(TaskInfoDTO taskInfo) + { + var key = TaskScheduleRedisKey.TaskInfoKey(taskInfo.Id); + var cacheTaskInfo = GetCache(taskInfo.Id); + if (cacheTaskInfo != null) + { + var oldName = cacheTaskInfo.Name; + foreach (var p in taskInfo.GetType().GetProperties()) + { + p.SetValue(cacheTaskInfo, p.GetValue(taskInfo)); + } + + if (oldName != taskInfo.Name) + memoryCache.Remove(oldName); + taskInfo = cacheTaskInfo; + } + + memoryCache.Set(key, taskInfo); + memoryCache.Set(taskInfo.Name, taskInfo); + //redisClient.Set(key, taskInfo); + } + + /// + /// 重新缓存所有的数据 + /// + /// + public List ReloadCacheAll() + { + var rows = taskInfoRepository.Value.Queryable().Select(entityToDTOselector).ToList(); + rows.Each(row => + { + if (row.IsDelete) + RemoveCache(row.Id); + else + Cache(row); + }); + return rows; + } + + /// + /// 获取缓存的任务信息 + /// + /// + /// + public TaskInfoDTO GetCache(long taskInfoId) + { + var key = TaskScheduleRedisKey.TaskInfoKey(taskInfoId); + return memoryCache.Get(key); + //return redisClient.Get(key); + } + + /// + /// 获取缓存的任务信息 + /// + /// + /// + public TaskInfoDTO GetCache(string taskInfoName) + { + return memoryCache.Get(taskInfoName); + //return redisClient.Get(key); + } + + /// + /// 删除缓存 + /// + /// + public void RemoveCache(long taskInfoId) + { + var key = TaskScheduleRedisKey.TaskInfoKey(taskInfoId); + var cacheTaskInfo = GetCache(taskInfoId); + if (cacheTaskInfo == null) return; + memoryCache.Remove(key); + memoryCache.Remove(cacheTaskInfo.Name); + // redisClient.Del(key); + } + + /// + /// DoOnce + /// + /// + public BaseResult DoOnce(DoOnceReq req) + { + var taskInfo = GetCache(req.TaskId); + if (taskInfo == null) + return BaseResult.BuildFail("任务不存在!"); + + if (taskInfo.TaskType == EnumTaskType.SynRequest) + { + var scheduler = serviceProvider.GetService(); + scheduler.ExecuteHttpSchedulerJob(taskInfo).GetAwaiter().GetResult(); + } + else if (taskInfo.TaskType == EnumTaskType.AnyTime) + { + //if (req.PlanStartTime < DateTime.Now) + // return BaseResult.BuildFail("计划执行时间不能小于当前时间"); + if (req.Times <= 0) + req.Times = 1; + for (var i = 0; i < req.Times; i++) + { + var result = taskLogService.Value.AddAnyTimeLog(new AddAnyTimeLogReq + { + PlanStartTime = req.PlanStartTime, + RequestParam = req.RequestParam, + TaskName = taskInfo.Name + }); + if (!result.IsOK) + return result; + } + } + + return BaseResult.BuildOK(); + } + + /// + /// 启动 + /// + /// + public void Start() + { + var rows = ReloadCacheAll(); + rows.Each(row => { schedulerManager.Value.SetTaskScheduler(row); }); + } + + /// + /// 当数据发生改变 + /// + /// + public void OnDataChange(SynDataTaskScheduleMsgBody msgBody) + { + var row = taskInfoRepository.Value.Queryable(null, null).Where(x => x.Id == msgBody.DataId) + .Select(entityToDTOselector) + .FirstOrDefault(); + if (row == null) return; + if (row.IsDelete) + RemoveCache(row.Id); + else + Cache(row); + schedulerManager.Value.SetTaskScheduler(row); + } + + + /// + /// 尝试注册任务 + /// + /// + /// + public BaseResult TryRegisterTask(TryRegisterTaskReq req) + { + if (req.TaskInfoTags == null || req.TaskInfoTags.Count == 0) + return BaseResult.BuildFail($"{nameof(req.TaskInfoTags)}不能为空"); + var systemDictionaryDTO = systemDictionaryService.Value.GetCache(EnumSystemDictionaryType.BizSysApi, req.ApiName); + if (systemDictionaryDTO == null) + return BaseResult.BuildFail($"在系统字典中无法长得{req.ApiName}"); + //查询所有的任务 + var rows = taskInfoRepository.Value.Queryable().Select(entityToDTOselector).ToList(); + var saveDtos = new List(); + var rspMsg = new StringBuilder(); + req.TaskInfoTags.Each(tag => + { + if (tag.Name.IsEmpty()) + { + rspMsg.Append($"Name为空:{tag.ToJson()}"); + return; + } + + var old = rows.FirstOrDefault(x => x.Name == tag.Name); + if (old != null && !tag.IsForceCover) + { + rspMsg.Append($"{tag.Name}:不是强制覆盖更新"); + return; + } + + var saveDto = new SaveTaskInfoReq + { + BizSysApiName = req.ApiName, + Name = tag.Name, + CronExpression = tag.CronExpression, + Description = tag.Description, + Id = old == null ? 0 : old.Id, + KeepLogCount = tag.KeepLogCount, + KeepLogDays = tag.KeepLogDays, + RepeatCount = tag.RepeatCount, + RepeatInterval = tag.RepeatInterval, + RequestMethod = tag.RequestMethod, + RequestParam = old?.RequestParam ?? string.Empty, + RequestURL = tag.RequestURL, + RequestURLType = tag.RequestURLType, + StartTime = old?.StartTime ?? DateTime.Now, + Status = old?.Status ?? EnumTaskStatusType.Suspend, + SuccessMark = tag.SuccessMark, + TaskType = tag.TaskType, + Timeout = tag.Timeout > 10 ? tag.Timeout : 60, + Title = tag.Title, + TriggerType = tag.TriggerType, + }; + var rsp = Save(saveDto); + rspMsg.Append($"{tag.Name}:{(tag.IsForceCover ? "" : "不是")}强制覆盖更新,结果:{rsp.IsOK}:{rsp.Msg}"); + }); + return BaseResult.BuildOK(rspMsg.ToString()); + } + + /// + /// 实体转DTO的表达式 + /// + private static readonly Expression> entityToDTOselector = x => new TaskInfoDTO + { + BizSysApiName = x.BizSysApiName, + CreateTime = x.CreateTime, + CronExpression = x.CronExpression, + Description = x.Description, + Id = x.Id, + Name = x.Name, + Title = x.Title, + RepeatCount = x.RepeatCount, + RepeatInterval = x.RepeatInterval, + RequestMethod = x.RequestMethod, + RequestParam = x.RequestParam, + RequestURL = x.RequestURL, + RequestURLType = x.RequestURLType, + StartTime = x.StartTime, + Status = x.Status, + TaskType = x.TaskType, + TriggerType = x.TriggerType, + UpdateTime = x.UpdateTime, + Timeout = x.Timeout, + KeepLogCount = x.KeepLogCount, + KeepLogDays = x.KeepLogDays, + IsDelete = x.IsDelete, + SuccessMark = x.SuccessMark + }; + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/TaskLogService.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/TaskLogService.cs new file mode 100644 index 0000000..4909638 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/TaskLogService.cs @@ -0,0 +1,228 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.Component.Extensions; +using BPA.Component.MongoClient; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskLog; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IRepository; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using BPA.SaaS.TaskSchedule.Api.Service.Queue; +using Microsoft.Extensions.Logging; + +namespace BPA.SaaS.TaskSchedule.Api.Service +{ + /// + /// 任务日志 + /// + public class TaskLogService : ITaskLogService + { + private readonly ILogger logger; + private readonly TaskScheduleLangPackge langPackge; + private readonly Lazy taskLogRepository; + private readonly Lazy taskInfoService; + private readonly Lazy systemDictionaryService; + private readonly TaskScheduleApiConfig TaskScheduleApiConfig; + private readonly AnyTimeTaskScheduleProducer anyTimeTaskScheduleProducer; + + /// + /// 构造方法 + /// + public TaskLogService( + ILogger logger, + TaskScheduleLangPackge langPackge, + Lazy taskLogRepository, + Lazy taskInfoService, + Lazy systemDictionaryService, + TaskScheduleApiConfig TaskScheduleApiConfig, + AnyTimeTaskScheduleProducer anyTimeTaskScheduleProducer) + { + this.logger = logger; + this.langPackge = langPackge; + this.taskLogRepository = taskLogRepository; + this.taskInfoService = taskInfoService; + this.systemDictionaryService = systemDictionaryService; + this.TaskScheduleApiConfig = TaskScheduleApiConfig; + this.anyTimeTaskScheduleProducer = anyTimeTaskScheduleProducer; + } + + /// + /// 添加任意时间任务日志 + /// + /// + /// + public BaseResult AddAnyTimeLog(AddAnyTimeLogReq req) + { + if (req == null) + return BaseResult.Build(langPackge.ParamInvalid); + if (req.PlanStartTime < DateTime.Now) + req.PlanStartTime = DateTime.Now; + var taskInfo = taskInfoService.Value.GetCache(req.TaskName); + if (taskInfo.IsNull()) + return BaseResult.Build(langPackge.TaskNotExist); + if (taskInfo.TaskType != EnumTaskType.AnyTime) + return BaseResult.BuildFail($"[{taskInfo.Name}]{taskInfo.Title} 不是任意执行时间类型任务!"); + + var taskLog = new CrmTaskLog + { + BizSysApiName = taskInfo.BizSysApiName, + CreateTime = DateTime.Now, + EndTime = null, + ExecutedResult = EnumExecutedResultType.Wait, + ExecutionTime = 0, + Id = BPAUniqueIdBulder.NextLong(), + Name = taskInfo.Name, + PlanStartTime = req.PlanStartTime, + Remark = string.Empty, + RequestParam = req.RequestParam, + RequestURL = taskInfo.RequestURL, + RequestURLType = taskInfo.RequestURLType, + ResponseParam = string.Empty, + StartTime = DateTime.Now, + TaskId = taskInfo.Id, + TaskType = taskInfo.TaskType, + Title = taskInfo.Title, + UpdateTime = DateTime.Now + }; + if (taskInfo.RequestURLType == EnumRequestURLType.BizSysApi) + { + var dic = systemDictionaryService.Value.GetCache(EnumSystemDictionaryType.BizSysApi, taskInfo.BizSysApiName); + taskLog.RequestURL = $"{dic.Value}{taskInfo.RequestURL}"; + } + + taskLogRepository.Value.Add(taskLog); + anyTimeTaskScheduleProducer.Enqueue(taskLog.Id, req.PlanStartTime); + return BaseResult.BuildOK(); + } + + /// + /// 添加任意时间任务日志 多个 + /// + /// + /// + public BaseResult AddAnyTimeLogs(AddAnyTimeLogsReq req) + { + if (req == null || req.Logs == null || req.Logs.Count == 0) + return BaseResult.Build(langPackge.ParamInvalid); + var taskInfo = taskInfoService.Value.GetCache(req.TaskName); + if (taskInfo.IsNull()) + return BaseResult.Build(langPackge.TaskNotExist); + if (taskInfo.TaskType != EnumTaskType.AnyTime) + throw new BusinessException(langPackge.Fail, $"[{taskInfo.Name}]{taskInfo.Title} 不是任意执行时间类型任务!"); + var taskLogs = new List(); + req.Logs.Each(log => + { + if (log.PlanStartTime < DateTime.Now) + log.PlanStartTime = DateTime.Now; + var taskLog = new CrmTaskLog + { + BizSysApiName = taskInfo.BizSysApiName, + CreateTime = DateTime.Now, + EndTime = null, + ExecutedResult = EnumExecutedResultType.Wait, + ExecutionTime = 0, + Id = BPAUniqueIdBulder.NextLong(), + Name = taskInfo.Name, + PlanStartTime = log.PlanStartTime, + Remark = string.Empty, + RequestParam = log.RequestParam, + RequestURL = taskInfo.RequestURL, + RequestURLType = taskInfo.RequestURLType, + ResponseParam = string.Empty, + StartTime = DateTime.Now, + TaskId = taskInfo.Id, + TaskType = taskInfo.TaskType, + Title = taskInfo.Title, + UpdateTime = DateTime.Now + }; + if (taskInfo.RequestURLType == EnumRequestURLType.BizSysApi) + { + var dic = systemDictionaryService.Value.GetCache(EnumSystemDictionaryType.BizSysApi, taskInfo.BizSysApiName); + taskLog.RequestURL = $"{dic.Value}{taskInfo.RequestURL}"; + } + + taskLogs.Add(taskLog); + }); + if (taskLogs.Count > 0) + { + taskLogRepository.Value.AddList(taskLogs); + taskLogs.Each(log => { anyTimeTaskScheduleProducer.Enqueue(log.Id, log.PlanStartTime); }); + } + + return BaseResult.BuildOK(); + } + + /// + /// 清理日志 + /// + public void Clear() + { + var tasks = taskInfoService.Value.GetAll().Data; + foreach (var task in tasks) + { + var date = DateTime.Now.Date; + if (task.KeepLogDays > 0) + { + date = date.AddDays(-task.KeepLogDays).Date; + taskLogRepository.Value.DeleteMany(x => x.TaskId == task.Id && x.PlanStartTime <= date); + } + + if (task.KeepLogCount > 0) + { + var count = taskLogRepository.Value.Queryable().Count(x => x.TaskId == task.Id); + if (count > task.KeepLogCount) + { + var query = taskLogRepository.Value.Queryable().Where(x => x.TaskId == task.Id) + .OrderByDescending(x => x.Id) + .Skip(task.KeepLogCount - 1).Take(1).Select(x => new {x.Id}); + var entity = query.FirstOrDefault(); + if (entity != null) + taskLogRepository.Value.DeleteMany(x => x.TaskId == task.Id && x.Id < entity.Id && x.PlanStartTime <= date); + } + } + } + } + + /// + /// 分页查询日志 + /// + /// + /// + public BaseResultPage GetPage(GetTaskLogPageReq req) + { + req.BizSysApiName = req.BizSysApiName.ToTrim(); + var query = taskLogRepository.Value.Queryable() + .WhereIF(req.BizSysApiName.IsNotEmpty(), x => x.BizSysApiName == req.BizSysApiName) + .WhereIF(req.ExecutedResult.HasValue, x => x.ExecutedResult == req.ExecutedResult.Value) + .WhereIF(req.TaskId.HasValue, x => x.TaskId == req.TaskId.Value) + .WhereIF(req.TaskType.HasValue, x => x.TaskType == req.TaskType.Value) + .WhereIF(req.PlanStartTime.HasValue, x => x.PlanStartTime == req.PlanStartTime.Value) + .WhereIF(req.ExecutedResult.HasValue, x => x.ExecutedResult == req.ExecutedResult.Value) + .OrderByDescending(x => x.Id); + var rows = query.Pagination(x => new TaskLogDTO + { + BizSysApiName = x.BizSysApiName, + CreateTime = x.CreateTime, + EndTime = x.EndTime, + ExecutedResult = x.ExecutedResult, + ExecutionTime = x.ExecutionTime, + Id = x.Id, + Name = x.Name, + PlanStartTime = x.PlanStartTime, + Remark = x.Remark, + RequestParam = x.RequestParam, + RequestURL = x.RequestURL, + RequestURLType = x.RequestURLType, + ResponseParam = x.ResponseParam, + StartTime = x.StartTime, + TaskId = x.TaskId, + TaskType = x.TaskType, + Title = x.Title, + UpdateTime = x.UpdateTime, + TrackId = x.TrackId + }, req.PageIndex, req.PageSize, out int total); + return BaseResultPage.BuildOK(rows, total); + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/WarnAlarms/WechatWebhookWarnAlarm.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/WarnAlarms/WechatWebhookWarnAlarm.cs new file mode 100644 index 0000000..491b6d2 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/WarnAlarms/WechatWebhookWarnAlarm.cs @@ -0,0 +1,59 @@ +using System.Text; +using BPA.Component.Extensions; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using Microsoft.Extensions.Logging; + +namespace BPA.SaaS.TaskSchedule.Api.Service.WarnAlarms +{ + /// + /// 企业微信 webhook 报警器 + /// + public class WechatWebhookWarnAlarm : IWarnAlarm + { + private readonly TaskScheduleApiConfig config; + private readonly IHttpClientFactory clientFactory; + private readonly ILogger logger; + + public WechatWebhookWarnAlarm(TaskScheduleApiConfig config, IHttpClientFactory clientFactory, + ILogger logger) + { + this.config = config; + this.clientFactory = clientFactory; + this.logger = logger; + } + + /// + /// 发送预警消息 + /// + /// + public async Task Bell(CrmTaskLog taskLog) + { + // if (config.WechatWebhookUrl.IsEmpty()) + // return; + // var httpClient = clientFactory.CreateClient(typeof(WechatWebhookWarnAlarm).FullName); + // var jsonParam = new + // { + // msgtype = "markdown", + // markdown = new + // { + // content = + // $"**任务调度预警[{config.EvnName}]\n" + + // $"**任务调度预警[{taskLog.ExecutedResult}],请相关同事注意**\n" + + // $"> 任务名称:< font color =\"warning\">**{taskLog.Name}** \n" + + // $"> 任务标题:< font color =\"warning\">**{taskLog.Title}** \n" + + // $"> 请求地址:< font color =\"comment\">{taskLog.RequestURL} \n" + + // $"> 请求参数:< font color =\"comment\">{taskLog.RequestParam} \n" + + // $"> 执行结果:< font color =\"warning\">**{taskLog.ExecutedResult}** \n" + + // $"> 返回参数:< font color =\"comment\">{taskLog.ResponseParam}\n" + + // $"> 执行备注:< font color =\"comment\">{taskLog.Remark}" + // } + // }; + // var stringContent = new StringContent(jsonParam.ToJson(), Encoding.UTF8, "application/json"); + // var rsp = await httpClient.PostAsync(config.WechatWebhookUrl, stringContent); + // var result = await rsp.Content.ReadAsStringAsync(); + // logger.LogInformation($"企业微信发送预警消息结果:{result}"); + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.Service/WarnManagerService.cs b/src/BPA.SaaS.TaskSchedule.Api.Service/WarnManagerService.cs new file mode 100644 index 0000000..6d665ff --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.Service/WarnManagerService.cs @@ -0,0 +1,76 @@ +using BPA.Component.Extensions; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.Entity; +using BPA.SaaS.TaskSchedule.Api.IService; +using BPA.SaaS.TaskSchedule.Api.Model; +using BPA.SaaS.TaskSchedule.Api.Service.WarnAlarms; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; + +namespace BPA.SaaS.TaskSchedule.Api.Service +{ + /// + /// 警告管理服务 + /// + public class WarnManagerService : IWarnManagerService + { + private readonly ILogger _logger; + + private readonly TaskScheduleApiConfig _config; + + private readonly IServiceProvider _serviceProvider; + + public WarnManagerService(TaskScheduleApiConfig config, + IServiceProvider serviceProvider, + ILogger logger) + { + this._config = config; + this._serviceProvider = serviceProvider; + this._logger = logger; + } + + /// + /// 告警 + /// + /// + public async Task Warn(TaskInfoDTO taskInfo, CrmTaskLog taskLog) + { + if (taskLog == null || taskLog.ExecutedResult.IsIn(EnumExecutedResultType.Success, EnumExecutedResultType.Wait, + EnumExecutedResultType.Suspend)) + return; + var warnAlarms = GetWarnAlarms(); + foreach (var warnAlarm in warnAlarms) + { + try + { + await warnAlarm.Bell(taskLog); + } + catch (Exception ex) + { + _logger.LogError(ex, $"告警失败,{warnAlarm.GetType().Name},{taskLog.ToJson()}"); + } + } + } + + private List GetWarnAlarms() + { + var warnAlarms = new List(); + if (_config.WarnAlarms == null || _config.WarnAlarms.Count == 0) + return warnAlarms; + foreach (var item in _config.WarnAlarms) + { + switch (item) + { + case "WechatWebhookWarnAlarm": + warnAlarms.Add(_serviceProvider.GetService()); + break; + default: + break; + } + } + + return warnAlarms; + } + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/HomeController.cs b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/HomeController.cs new file mode 100644 index 0000000..1ef5be7 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/HomeController.cs @@ -0,0 +1,172 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.Component.DTOCommon.Langs; +using BPA.Component.WebApiExtensions.Filters; +using BPA.SaaS.TaskSchedule.Api.DTO.SystemDictionary; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskLog; +using BPA.SaaS.TaskSchedule.Api.IService; +using Microsoft.AspNetCore.Mvc; + +namespace BPA.SaaS.TaskSchedule.Api.WebApi.Controllers +{ + /// + /// HomeController + /// + [Anonymous] + public class HomeController : Controller + { + private readonly ILogger _logger; + + /// + /// taskInfoService + /// + private Lazy taskInfoService; + + /// + /// taskLogService + /// + private Lazy taskLogService; + + private Lazy systemDictionaryService; + + + /// + /// HomeController + /// + /// + /// + /// + /// + public HomeController( + ILogger logger, + Lazy taskInfoService, + Lazy taskLogService, + Lazy systemDictionaryService) + { + _logger = logger; + this.taskInfoService = taskInfoService; + this.taskLogService = taskLogService; + this.systemDictionaryService = systemDictionaryService; + } + + /// + /// json + /// + /// + /// + public override JsonResult Json(object data) + { + if (data is BaseResult result) + { + result.TrackId = Request.HttpContext.TraceIdentifier; + result.Render(LangType.Zn); + } + + return base.Json(data); + } + + /// + /// Index + /// + /// + public IActionResult Index() + { + return View(); + } + + /// + /// 保存 + /// + /// + /// + [HttpPost] + public IActionResult Save(SaveTaskInfoReq req) + { + return Json(taskInfoService.Value.Save(req)); + } + + /// + /// 删除 + /// + /// + /// + [HttpPost] + public IActionResult Delete(DeleteTaskInfoReq req) + { + return Json(taskInfoService.Value.Delete(req)); + } + + /// + /// 获取所有的任务信息 + /// + /// + [HttpPost] + public IActionResult GetAll() + { + return Json(taskInfoService.Value.GetAll()); + } + + /// + /// 执行一次 + /// + /// + /// + [HttpPost] + public IActionResult DoOnce(DoOnceReq req) + { + return Json(taskInfoService.Value.DoOnce(req)); + } + + /// + /// 添加任意时间任务日志 + /// + /// + /// + [HttpPost] + public IActionResult AddAnyTimeLog(AddAnyTimeLogReq req) + => Json(taskLogService.Value.AddAnyTimeLog(req)); + + /// + /// 清理日志 + /// + [HttpPost] + public IActionResult Clear() + { + taskLogService.Value.Clear(); + return Ok(); + } + + /// + /// 分页查询日志 + /// + /// + /// + [HttpPost] + public IActionResult GetPage(GetTaskLogPageReq req) + => Json(taskLogService.Value.GetPage(req)); + + + /// + /// 保存 + /// + /// + /// + [HttpPost] + public IActionResult SaveDic(SaveSystemDictionaryReq req) => Json(systemDictionaryService.Value.Save(req)); + + /// + /// 删除 + /// + /// + /// + [HttpPost] + public IActionResult DeleteDic(DeleteSystemDictionaryReq req) => Json(systemDictionaryService.Value.Delete(req)); + + /// + /// 获取所有的 + /// + /// + [HttpPost] + public IActionResult GetAllDic() => Json(systemDictionaryService.Value.GetAll()); + } +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/TaskInfoController.cs b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/TaskInfoController.cs new file mode 100644 index 0000000..402f237 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/TaskInfoController.cs @@ -0,0 +1,60 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskInfo; +using BPA.SaaS.TaskSchedule.Api.IService; +using Microsoft.AspNetCore.Mvc; + +namespace BPA.SaaS.TaskSchedule.Api.WebApi.Controllers +{ + /// + /// 任务信息服务 + /// + [Route("api/[controller]/[action]")] + [ApiController] + public class TaskInfoController : ControllerBase + { + /// + /// taskInfoService + /// + private Lazy taskInfoService; + + /// + /// TaskInfoController + /// + /// + public TaskInfoController(Lazy taskInfoService) => this.taskInfoService = taskInfoService; + + /// + /// 保存 + /// + /// + /// + [HttpPost] + public BaseResult Save(SaveTaskInfoReq req) + => taskInfoService.Value.Save(req); + + /// + /// 删除 + /// + /// + /// + [HttpPost] + public BaseResult Delete(DeleteTaskInfoReq req) + => taskInfoService.Value.Delete(req); + + /// + /// 获取所有的任务信息 + /// + /// + [HttpPost] + public BaseResult> GetAll() + => taskInfoService.Value.GetAll(); + + /// + /// 尝试注册任务 + /// + /// + /// + [HttpPost] + public BaseResult TryRegisterTask(TryRegisterTaskReq req) => taskInfoService.Value.TryRegisterTask(req); + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/TaskLogController.cs b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/TaskLogController.cs new file mode 100644 index 0000000..e669b70 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Controllers/TaskLogController.cs @@ -0,0 +1,65 @@ +using BPA.Component.DTOCommon.BaseDTOs; +using BPA.SaaS.TaskSchedule.Api.DTO; +using BPA.SaaS.TaskSchedule.Api.DTO.TaskLog; +using BPA.SaaS.TaskSchedule.Api.IService; +using Microsoft.AspNetCore.Mvc; + +namespace BPA.SaaS.TaskSchedule.Api.WebApi.Controllers +{ + /// + /// 任务信息服务 + /// + [Route("api/[controller]/[action]")] + [ApiController] + public class TaskLogController : ControllerBase + { + /// + /// taskLogService + /// + private Lazy taskLogService; + + /// + /// TaskInfoController + /// + /// + public TaskLogController(Lazy taskLogService) => this.taskLogService = taskLogService; + + /// + /// 添加任意时间任务日志 + /// + /// + /// + [HttpPost] + public BaseResult AddAnyTimeLog(AddAnyTimeLogReq req) + => taskLogService.Value.AddAnyTimeLog(req); + + /// + /// 添加任意时间任务日志 多个 + /// + /// + /// + [HttpPost] + public BaseResult AddAnyTimeLogs(AddAnyTimeLogsReq req) + => taskLogService.Value.AddAnyTimeLogs(req); + + /// + /// 清理日志 + /// + [HttpPost] + [TaskInfoTag(Title = "清理日志", Description = "每天早上七点执行一次", CronExpression = "0 0 7 * * ? ")] + public BaseResult Clear() + { + taskLogService.Value.Clear(); + return BaseResult.BuildOK(); + } + + /// + /// 分页查询日志 + /// + /// + /// + [HttpPost] + public BaseResultPage GetPage(GetTaskLogPageReq req) + => taskLogService.Value.GetPage(req); + } +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Program.cs b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Program.cs index b10a2bf..3799ddf 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Program.cs +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Program.cs @@ -1,7 +1,6 @@ using Autofac; using Autofac.Extensions.DependencyInjection; using BPA.Component.WebApiExtensions.Extensions; -using BPA.Component.WebApiExtensions.Middlewares; using BPA.SaaS.TaskSchedule.Api.Bootstrap; using Microsoft.AspNetCore.Mvc; @@ -27,12 +26,11 @@ if (app.Environment.IsDevelopment()) // Use module app.UseRouting(); -app.UseHttpsRedirection(); -app.UseAuthorization(); app.UseBpaHealthChecks(); app.MapControllers(); app.UseGlobalErrorHandler(); -app.UseMiddleware(); +app.UseStaticFiles(); +app.UseEndpoints(routeBuilder => routeBuilder.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}")); // PreRun ((IApplicationBuilder) app).ApplicationServices.PreHeatRun(); diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Properties/launchSettings.json b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Properties/launchSettings.json index be0f60e..34cb8e6 100644 --- a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Properties/launchSettings.json +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Properties/launchSettings.json @@ -5,8 +5,8 @@ "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "swagger", - "applicationUrl": "http://localhost:5047", + "launchUrl": "Home/Index", + "applicationUrl": "http://localhost:5077", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "APOLLO_META_SERVER_URL": "http://10.2.1.21:28080", diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Home/Index.cshtml b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Home/Index.cshtml new file mode 100644 index 0000000..f7001f4 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Home/Index.cshtml @@ -0,0 +1,997 @@ +@{ + ViewBag.Title = "调度中心"; +} + +
+
+
+
+ +
+ + + 查询 +
+
+
+
+
+
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @* + + + + + + + + + *@ + + + +
Id
任务名称
任务标题
任务类型 + +
请求地址类型 + +
业务系统Api名称 + +
请求地址
请求方法类型 + + + GET | POST请求 +
请求参数
成功标志为空时按照http状态进行判断
任务描述
任务开始时间
Trigger类型 + +
+ 重复执行次数 + + SimpleTrigger下重复次数,
+ -1表示无限次,其他正整数表示具体重复的次数 +
+ 间隔时间(s) + + SimpleTrigger重复执行间隔时间,单位:秒 +
+ Cron表达式 + + CronTrigger模式下,通过 Cron表达式控制job执行的周期和频率 +
+ 任务状态 + + +
+ 超时时间(秒) + + + + 默认60秒 +
+ 保留日志天数 + + + + 0代表不处理 +
+ 保留日志条数 + + + + 0代表不处理 +
+ 创建时间 + + +
+ 更新时间 + + +
+ 保存 +
+
+
+
+ + + + + + + + + + + +
id类型keyvaluevalueExt
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + +
计划开始时间
请求参数
+ 执行次数 + +
+ 保存 +
+
+
+ +@Html.PartialAsync("_Cron").GetAwaiter().GetResult(); +@section scripts{ + + +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Home/_Cron.cshtml b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Home/_Cron.cshtml new file mode 100644 index 0000000..adcf68b --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Home/_Cron.cshtml @@ -0,0 +1,544 @@ + +@{ + ViewBag.Title = "_Cron"; +} + + +
+
+
+
+
+
+ + 每秒 允许的通配符[, - * /] +
+
+ + 周期从 + + - + + 秒 +
+
+ + 从 + + 秒开始,每 + + 秒执行一次 +
+
+ + 指定 +
+
+ 00 + 01 + 02 + 03 + 04 + 05 + 06 + 07 + 08 + 09 +
+
+ 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 +
+
+ 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 +
+
+ 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 +
+
+ 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 +
+
+ 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 +
+
+
+
+ + 分钟 允许的通配符[, - * /] +
+
+ + 周期从 + + - + + 分钟 +
+
+ + 从 + + 分钟开始,每 + + 分钟执行一次 +
+
+ + 指定 +
+
+ 00 + 01 + 02 + 03 + 04 + 05 + 06 + 07 + 08 + 09 +
+
+ 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 +
+
+ 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 +
+
+ 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 +
+
+ 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 +
+
+ 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 +
+
+
+
+ + 小时 允许的通配符[, - * /] +
+
+ + 周期从 + + - + + 小时 +
+
+ + 从 + + 小时开始,每 + + 小时执行一次 +
+
+ + 指定 +
+
+ AM: + 00 + 01 + 02 + 03 + 04 + 05 + 06 + 07 + 08 + 09 + 10 + 11 +
+
+ PM: + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 +
+
+
+
+ + 日 允许的通配符[, - * / L W] +
+
+ + 不指定 +
+
+ + 周期从 + + - + + 日 +
+
+ + 从 + + 日开始,每 + + 天执行一次 +
+
+ + 每月 + + 号最近的那个工作日 +
+
+ + 本月最后一天 +
+
+ + 指定 +
+
+ 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 +
+
+ 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 +
+
+
+
+ + 月 允许的通配符[, - * /] +
+
+ + 不指定 +
+
+ + 周期从 + + - + + 月 +
+
+ + 从 + + 日开始,每 + + 月执行一次 +
+
+ + 指定 +
+
+ 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 +
+
+
+
+ + 周 允许的通配符[, - * / L #] +
+
+ + 不指定 +
+
+ + 周期 从星期 + - + +
+
+ + 第 + 周 的星期 +
+
+ + 本月最后一个星期 +
+
+ + 指定 +
+
+ 1 + 2 + 3 + 4 + 5 + 6 + 7 +
+
+
+
+ + 不指定 允许的通配符[, - * /] 非必填 +
+
+ + 每年 +
+
+ 周期 从 + + - + +
+
+
+
+
+
+ 表达式 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 秒 + + 分钟 + + 小时 + + 日 + + 月
+
+ 星期 + + 年 +
+ 表达式字段: + + + + + + + + + + + + + + +
Cron 表达式: + +
+
+
+
+
+
+ 确定 + 取消 +
+ +s \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Shared/Error.cshtml b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Shared/Error.cshtml new file mode 100644 index 0000000..2fd434f --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Shared/Error.cshtml @@ -0,0 +1,25 @@ +@* @model ErrorViewModel *@ +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (Model.ShowRequestId) +{ +

+ Request ID: @Model.RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Shared/_Layout.cshtml b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000..8e30468 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/Shared/_Layout.cshtml @@ -0,0 +1,22 @@ + + + + + + + @ViewBag.Title + + + + + + @RenderBody() + + + + + + + @RenderSection("scripts", required: false) + + diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/_ViewImports.cshtml b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/_ViewImports.cshtml new file mode 100644 index 0000000..c701a3e --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/_ViewImports.cshtml @@ -0,0 +1,2 @@ +@using BPA.SaaS.TaskSchedule.Api +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/_ViewStart.cshtml b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/_ViewStart.cshtml new file mode 100644 index 0000000..a5f1004 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/cron.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/cron.js new file mode 100644 index 0000000..1015223 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/cron.js @@ -0,0 +1,516 @@ +/** + * 每周期 + */ +function everyTime(dom) { + var item = $("input[name=v_" + dom.name + "]"); + item.val("*"); + item.change(); +} + +/** + * 不指定 + */ +function unAppoint(dom) { + var name = dom.name; + var val = "?"; + if (name == "year") + val = ""; + var item = $("input[name=v_" + name + "]"); + item.val(val); + item.change(); +} + +function appoint(dom) { + +} + +/** + * 周期 + */ +function cycle(dom) { + var name = dom.name; + var ns = $(dom).parent().find(".numberspinner"); + var start = ns.eq(0).numberspinner("getValue"); + var end = ns.eq(1).numberspinner("getValue"); + var item = $("input[name=v_" + name + "]"); + item.val(start + "-" + end); + item.change(); +} + +/** + * 从开始 + */ +function startOn(dom) { + var name = dom.name; + var ns = $(dom).parent().find(".numberspinner"); + var start = ns.eq(0).numberspinner("getValue"); + var end = ns.eq(1).numberspinner("getValue"); + var item = $("input[name=v_" + name + "]"); + item.val(start + "/" + end); + item.change(); +} + +function lastDay(dom) { + var item = $("input[name=v_" + dom.name + "]"); + item.val("L"); + item.change(); +} + +function weekOfDay(dom) { + var name = dom.name; + var ns = $(dom).parent().find(".numberspinner"); + var start = ns.eq(0).numberspinner("getValue"); + var end = ns.eq(1).numberspinner("getValue"); + var item = $("input[name=v_" + name + "]"); + item.val(start + "#" + end); + item.change(); +} + +function lastWeek(dom) { + var item = $("input[name=v_" + dom.name + "]"); + var ns = $(dom).parent().find(".numberspinner"); + var start = ns.eq(0).numberspinner("getValue"); + item.val(start + "L"); + item.change(); +} + +function workDay(dom) { + var name = dom.name; + var ns = $(dom).parent().find(".numberspinner"); + var start = ns.eq(0).numberspinner("getValue"); + var item = $("input[name=v_" + name + "]"); + item.val(start + "W"); + item.change(); +} + +$(function () { + $(".numberspinner").numberspinner({ + onChange: function () { + $(this).closest("div.line").children().eq(0).click(); + } + }); + + var vals = $("input[name^='v_']"); + var cron = $("#cron"); + vals.change(function () { + var item = []; + vals.each(function () { + item.push(this.value); + }); + //修复表达式错误BUG,如果后一项不为* 那么前一项肯定不为为*,要不然就成了每秒执行了 + //获取当前选中tab + var currentIndex = 0; + $(".tabs>li").each(function (i, item) { + if ($(item).hasClass("tabs-selected")) { + currentIndex = i; + return false; + } + + }); + //当前选中项之前的如果为*,则都设置成0 + for (var i = currentIndex; i >= 1; i--) { + if (item[i] != "*" && item[i - 1] == "*") { + if (i < 3) + item[i - 1] = "0"; + } + } + //当前选中项之后的如果不为*则都设置成* + if (item[currentIndex] == "*") { + for (var i = currentIndex + 1; i < item.length; i++) { + if (i == 5) { + item[i] = "?"; + } else { + item[i] = "*"; + } + } + } + cron.val(item.join(" ")).change(); + }); + + cron.change(function () { + btnFan(); + //设置最近五次运行时间 + return; + $.ajax({ + type: 'get', + url: "CalcRunTime.ashx", + dataType: "json", + data: { "CronExpression": $("#cron").val() }, + success: function (data) { + if (data && data.length == 5) { + var strHTML = "
    "; + for (var i = 0; i < data.length; i++) { + strHTML += "
  • " + data[i] + "
  • "; + } + strHTML += "
" + $("#runTime").html(strHTML); + } else { + $("#runTime").html(""); + } + } + }); + }); + + var secondList = $(".secondList").children(); + $("#sencond_appoint").click(function () { + if (this.checked) { + if ($(secondList).filter(":checked").length == 0) { + $(secondList.eq(0)).attr("checked", true); + } + secondList.eq(0).change(); + } + }); + + secondList.change(function () { + var sencond_appoint = $("#sencond_appoint").prop("checked"); + if (sencond_appoint) { + var vals = []; + secondList.each(function () { + if (this.checked) { + vals.push(this.value); + } + }); + var val = "?"; + if (vals.length > 0 && vals.length < 59) { + val = vals.join(","); + } else if (vals.length == 59) { + val = "*"; + } + var item = $("input[name=v_second]"); + item.val(val); + item.change(); + } + }); + + var minList = $(".minList").children(); + $("#min_appoint").click(function () { + if (this.checked) { + if ($(minList).filter(":checked").length == 0) { + $(minList.eq(0)).attr("checked", true); + } + minList.eq(0).change(); + } + }); + + minList.change(function () { + var min_appoint = $("#min_appoint").prop("checked"); + if (min_appoint) { + var vals = []; + minList.each(function () { + if (this.checked) { + vals.push(this.value); + } + }); + var val = "?"; + if (vals.length > 0 && vals.length < 59) { + val = vals.join(","); + } else if (vals.length == 59) { + val = "*"; + } + var item = $("input[name=v_min]"); + item.val(val); + item.change(); + } + }); + + var hourList = $(".hourList").children(); + $("#hour_appoint").click(function () { + if (this.checked) { + if ($(hourList).filter(":checked").length == 0) { + $(hourList.eq(0)).attr("checked", true); + } + hourList.eq(0).change(); + } + }); + + hourList.change(function () { + var hour_appoint = $("#hour_appoint").prop("checked"); + if (hour_appoint) { + var vals = []; + hourList.each(function () { + if (this.checked) { + vals.push(this.value); + } + }); + var val = "?"; + if (vals.length > 0 && vals.length < 24) { + val = vals.join(","); + } else if (vals.length == 24) { + val = "*"; + } + var item = $("input[name=v_hour]"); + item.val(val); + item.change(); + } + }); + + var dayList = $(".dayList").children(); + $("#day_appoint").click(function () { + if (this.checked) { + if ($(dayList).filter(":checked").length == 0) { + $(dayList.eq(0)).attr("checked", true); + } + dayList.eq(0).change(); + } + }); + + dayList.change(function () { + var day_appoint = $("#day_appoint").prop("checked"); + if (day_appoint) { + var vals = []; + dayList.each(function () { + if (this.checked) { + vals.push(this.value); + } + }); + var val = "?"; + if (vals.length > 0 && vals.length < 31) { + val = vals.join(","); + } else if (vals.length == 31) { + val = "*"; + } + var item = $("input[name=v_day]"); + item.val(val); + item.change(); + } + }); + + var mouthList = $(".mouthList").children(); + $("#mouth_appoint").click(function () { + if (this.checked) { + if ($(mouthList).filter(":checked").length == 0) { + $(mouthList.eq(0)).attr("checked", true); + } + mouthList.eq(0).change(); + } + }); + + mouthList.change(function () { + var mouth_appoint = $("#mouth_appoint").prop("checked"); + if (mouth_appoint) { + var vals = []; + mouthList.each(function () { + if (this.checked) { + vals.push(this.value); + } + }); + var val = "?"; + if (vals.length > 0 && vals.length < 12) { + val = vals.join(","); + } else if (vals.length == 12) { + val = "*"; + } + var item = $("input[name=v_mouth]"); + item.val(val); + item.change(); + } + }); + + var weekList = $(".weekList").children(); + $("#week_appoint").click(function () { + if (this.checked) { + if ($(weekList).filter(":checked").length == 0) { + $(weekList.eq(0)).attr("checked", true); + } + weekList.eq(0).change(); + } + }); + + weekList.change(function () { + var week_appoint = $("#week_appoint").prop("checked"); + if (week_appoint) { + var vals = []; + weekList.each(function () { + if (this.checked) { + vals.push(this.value); + } + }); + var val = "?"; + if (vals.length > 0 && vals.length < 7) { + val = vals.join(","); + } else if (vals.length == 7) { + val = "*"; + } + var item = $("input[name=v_week]"); + item.val(val); + item.change(); + } + }); +}); + + +/*killIe*/ +var cpro_id = "u1331261"; + +function btnFan() { + //获取参数中表达式的值 + var txt = $("#cron").val(); + if (txt) { + var regs = txt.split(' '); + $("input[name=v_second]").val(regs[0]); + $("input[name=v_min]").val(regs[1]); + $("input[name=v_hour]").val(regs[2]); + $("input[name=v_day]").val(regs[3]); + $("input[name=v_mouth]").val(regs[4]); + $("input[name=v_week]").val(regs[5]); + + initObj(regs[0], "second"); + initObj(regs[1], "min"); + initObj(regs[2], "hour"); + initDay(regs[3]); + initMonth(regs[4]); + initWeek(regs[5]); + + if (regs.length > 6) { + $("input[name=v_year]").val(regs[6]); + initYear(regs[6]); + } + } +} + + +function initObj(strVal, strid) { + var ary = null; + var objRadio = $("input[name='" + strid + "'"); + if (strVal == "*") { + objRadio.eq(0).attr("checked", "checked"); + } else if (strVal.split('-').length > 1) { + ary = strVal.split('-'); + objRadio.eq(1).attr("checked", "checked"); + $("#" + strid + "Start_0").numberspinner('setValue', ary[0]); + $("#" + strid + "End_0").numberspinner('setValue', ary[1]); + } else if (strVal.split('/').length > 1) { + ary = strVal.split('/'); + objRadio.eq(2).attr("checked", "checked"); + $("#" + strid + "Start_1").numberspinner('setValue', ary[0]); + $("#" + strid + "End_1").numberspinner('setValue', ary[1]); + } else { + objRadio.eq(3).attr("checked", "checked"); + if (strVal != "?") { + ary = strVal.split(","); + for (var i = 0; i < ary.length; i++) { + $("." + strid + "List input[value='" + ary[i] + "']").attr("checked", "checked"); + } + } + } +} + +function initDay(strVal) { + var ary = null; + var objRadio = $("input[name='day'"); + if (strVal == "*") { + objRadio.eq(0).attr("checked", "checked"); + } else if (strVal == "?") { + objRadio.eq(1).attr("checked", "checked"); + } else if (strVal.split('-').length > 1) { + ary = strVal.split('-'); + objRadio.eq(2).attr("checked", "checked"); + $("#dayStart_0").numberspinner('setValue', ary[0]); + $("#dayEnd_0").numberspinner('setValue', ary[1]); + } else if (strVal.split('/').length > 1) { + ary = strVal.split('/'); + objRadio.eq(3).attr("checked", "checked"); + $("#dayStart_1").numberspinner('setValue', ary[0]); + $("#dayEnd_1").numberspinner('setValue', ary[1]); + } else if (strVal.split('W').length > 1) { + ary = strVal.split('W'); + objRadio.eq(4).attr("checked", "checked"); + $("#dayStart_2").numberspinner('setValue', ary[0]); + } else if (strVal == "L") { + objRadio.eq(5).attr("checked", "checked"); + } else { + objRadio.eq(6).attr("checked", "checked"); + ary = strVal.split(","); + for (var i = 0; i < ary.length; i++) { + $(".dayList input[value='" + ary[i] + "']").attr("checked", "checked"); + } + } +} + +function initMonth(strVal) { + var ary = null; + var objRadio = $("input[name='mouth'"); + if (strVal == "*") { + objRadio.eq(0).attr("checked", "checked"); + } else if (strVal == "?") { + objRadio.eq(1).attr("checked", "checked"); + } else if (strVal.split('-').length > 1) { + ary = strVal.split('-'); + objRadio.eq(2).attr("checked", "checked"); + $("#mouthStart_0").numberspinner('setValue', ary[0]); + $("#mouthEnd_0").numberspinner('setValue', ary[1]); + } else if (strVal.split('/').length > 1) { + ary = strVal.split('/'); + objRadio.eq(3).attr("checked", "checked"); + $("#mouthStart_1").numberspinner('setValue', ary[0]); + $("#mouthEnd_1").numberspinner('setValue', ary[1]); + + } else { + objRadio.eq(4).attr("checked", "checked"); + + ary = strVal.split(","); + for (var i = 0; i < ary.length; i++) { + $(".mouthList input[value='" + ary[i] + "']").attr("checked", "checked"); + } + } +} + +function initWeek(strVal) { + var ary = null; + var objRadio = $("input[name='week'"); + if (strVal == "*") { + objRadio.eq(0).attr("checked", "checked"); + } else if (strVal == "?") { + objRadio.eq(1).attr("checked", "checked"); + } else if (strVal.split('/').length > 1) { + ary = strVal.split('/'); + objRadio.eq(2).attr("checked", "checked"); + $("#weekStart_0").numberspinner('setValue', ary[0]); + $("#weekEnd_0").numberspinner('setValue', ary[1]); + } else if (strVal.split('-').length > 1) { + ary = strVal.split('-'); + objRadio.eq(3).attr("checked", "checked"); + $("#weekStart_1").numberspinner('setValue', ary[0]); + $("#weekEnd_1").numberspinner('setValue', ary[1]); + } else if (strVal.split('L').length > 1) { + ary = strVal.split('L'); + objRadio.eq(4).attr("checked", "checked"); + $("#weekStart_2").numberspinner('setValue', ary[0]); + } else { + objRadio.eq(5).attr("checked", "checked"); + ary = strVal.split(","); + for (var i = 0; i < ary.length; i++) { + $(".weekList input[value='" + ary[i] + "']").attr("checked", "checked"); + } + } +} + +function initYear(strVal) { + var ary = null; + var objRadio = $("input[name='year'"); + if (strVal == "*") { + objRadio.eq(1).attr("checked", "checked"); + } else if (strVal.split('-').length > 1) { + ary = strVal.split('-'); + objRadio.eq(2).attr("checked", "checked"); + $("#yearStart_0").numberspinner('setValue', ary[0]); + $("#yearEnd_0").numberspinner('setValue', ary[1]); + } +} + +var cornCallBack; +var cronWindow = $("#CronWindow"); +$("#CronWindowFtCancel").click(function () { + cronWindow.window("close"); +}); +$("#CronWindowFtOk").click(function () { + cronWindow.window("close"); + cornCallBack($("#cron").val()); +}); +function openCorn(cron, callBack) { + cronWindow.window("open"); + cornCallBack = callBack; + $("#cron").val(cron); + btnFan(); +} + diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/favicon.ico b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/favicon.ico new file mode 100644 index 0000000..a3a7999 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/favicon.ico differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-1.8.2.min.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-1.8.2.min.js new file mode 100644 index 0000000..a41a9d4 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-1.8.2.min.js @@ -0,0 +1,19 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * JQUERY CORE 1.8.2; Copyright 2012 jQuery Foundation and other contributors; http://jquery.org/license + * Includes Sizzle CSS Selector Engine; Copyright 2012 jQuery Foundation and other contributors; http://opensource.org/licenses/MIT + * + * NUGET: END LICENSE TEXT */ +/*! jQuery v1.8.2 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/datagrid-detailview.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/datagrid-detailview.js new file mode 100644 index 0000000..b5c7da5 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/datagrid-detailview.js @@ -0,0 +1,480 @@ +var detailview = $.extend({}, $.fn.datagrid.defaults.view, { + render: function(target, container, frozen){ + var state = $.data(target, 'datagrid'); + var opts = state.options; + if (frozen){ + if (!(opts.rownumbers || (opts.frozenColumns && opts.frozenColumns.length))){ + return; + } + } + + var rows = state.data.rows; + var fields = $(target).datagrid('getColumnFields', frozen); + var table = []; + table.push('
'); + for(var i=0; i'); + table.push(this.renderRow.call(this, target, fields, frozen, i, rows[i])); + table.push(''); + + table.push(''); + if (frozen){ + table.push(''); + table.push(''); + + } + table.push('
'); + } else { + table.push(''); + } + + table.push('
'); + if (frozen){ + table.push(' '); + } else { + table.push(opts.detailFormatter.call(target, i, rows[i])); + } + table.push('
'); + + table.push('
'); + + $(container).html(table.join('')); + }, + + renderRow: function(target, fields, frozen, rowIndex, rowData){ + var opts = $.data(target, 'datagrid').options; + + var cc = []; + if (frozen && opts.rownumbers){ + var rownumber = rowIndex + 1; + if (opts.pagination){ + rownumber += (opts.pageNumber-1)*opts.pageSize; + } + cc.push('
'+rownumber+'
'); + } + for(var i=0; i'); + + if (col.checkbox){ + style = ''; + } else if (col.expander){ + style = "text-align:center;height:16px;"; + } else { + style = styleValue; + if (col.align){style += ';text-align:' + col.align + ';'} + if (!opts.nowrap){ + style += ';white-space:normal;height:auto;'; + } else if (opts.autoRowHeight){ + style += ';height:auto;'; + } + } + + cc.push('
'); + + if (col.checkbox){ + cc.push(''); + } else if (col.expander) { + //cc.push('
'); + cc.push(''); + //cc.push('
'); + } else if (col.formatter){ + cc.push(col.formatter(value, rowData, rowIndex)); + } else { + cc.push(value); + } + + cc.push('
'); + cc.push(''); + } + } + return cc.join(''); + }, + + insertRow: function(target, index, row){ + var opts = $.data(target, 'datagrid').options; + var dc = $.data(target, 'datagrid').dc; + var panel = $(target).datagrid('getPanel'); + var view1 = dc.view1; + var view2 = dc.view2; + + var isAppend = false; + var rowLength = $(target).datagrid('getRows').length; + if (rowLength == 0){ + $(target).datagrid('loadData',{total:1,rows:[row]}); + return; + } + + if (index == undefined || index == null || index >= rowLength) { + index = rowLength; + isAppend = true; + this.canUpdateDetail = false; + } + + $.fn.datagrid.defaults.view.insertRow.call(this, target, index, row); + + _insert(true); + _insert(false); + + this.canUpdateDetail = true; + + function _insert(frozen){ + var v = frozen ? view1 : view2; + var tr = v.find('tr[datagrid-row-index='+index+']'); + + if (isAppend){ + var newDetail = tr.next().clone(); + tr.insertAfter(tr.next()); + } else { + var newDetail = tr.next().next().clone(); + } + newDetail.insertAfter(tr); + newDetail.hide(); + if (!frozen){ + newDetail.find('div.datagrid-row-detail').html(opts.detailFormatter.call(target, index, row)); + } + } + }, + + deleteRow: function(target, index){ + var opts = $.data(target, 'datagrid').options; + var dc = $.data(target, 'datagrid').dc; + var tr = opts.finder.getTr(target, index); + tr.next().remove(); + $.fn.datagrid.defaults.view.deleteRow.call(this, target, index); + dc.body2.triggerHandler('scroll'); + }, + + updateRow: function(target, rowIndex, row){ + var dc = $.data(target, 'datagrid').dc; + var opts = $.data(target, 'datagrid').options; + var cls = $(target).datagrid('getExpander', rowIndex).attr('class'); + $.fn.datagrid.defaults.view.updateRow.call(this, target, rowIndex, row); + $(target).datagrid('getExpander', rowIndex).attr('class',cls); + + // update the detail content + if (this.canUpdateDetail){ + var row = $(target).datagrid('getRows')[rowIndex]; + var detail = $(target).datagrid('getRowDetail', rowIndex); + detail.html(opts.detailFormatter.call(target, rowIndex, row)); + } + }, + + bindEvents: function(target){ + var state = $.data(target, 'datagrid'); + + if (state.ss.bindDetailEvents){return;} + state.ss.bindDetailEvents = true; + + var dc = state.dc; + var opts = state.options; + var body = dc.body1.add(dc.body2); + var clickHandler = ($.data(body[0],'events')||$._data(body[0],'events')).click[0].handler; + body.unbind('click').bind('click', function(e){ + var tt = $(e.target); + var tr = tt.closest('tr.datagrid-row'); + if (!tr.length){return} + if (tt.hasClass('datagrid-row-expander')){ + var rowIndex = parseInt(tr.attr('datagrid-row-index')); + if (tt.hasClass('datagrid-row-expand')){ + $(target).datagrid('expandRow', rowIndex); + } else { + $(target).datagrid('collapseRow', rowIndex); + } + $(target).datagrid('fixRowHeight'); + + } else { + clickHandler(e); + } + e.stopPropagation(); + }); + }, + + onBeforeRender: function(target){ + var state = $.data(target, 'datagrid'); + var opts = state.options; + var dc = state.dc; + var t = $(target); + var hasExpander = false; + var fields = t.datagrid('getColumnFields',true).concat(t.datagrid('getColumnFields')); + for(var i=0; i
'); + if ($('tr',t).length == 0){ + td.wrap('').parent().appendTo($('tbody',t)); + } else if (opts.rownumbers){ + td.insertAfter(t.find('td:has(div.datagrid-header-rownumber)')); + } else { + td.prependTo(t.find('tr:first')); + } + } + + // if (!state.bindDetailEvents){ + // state.bindDetailEvents = true; + // var that = this; + // setTimeout(function(){ + // that.bindEvents(target); + // },0); + // } + }, + + onAfterRender: function(target){ + var that = this; + var state = $.data(target, 'datagrid'); + var dc = state.dc; + var opts = state.options; + var panel = $(target).datagrid('getPanel'); + + $.fn.datagrid.defaults.view.onAfterRender.call(this, target); + + if (!state.onResizeColumn){ + state.onResizeColumn = opts.onResizeColumn; + } + if (!state.onResize){ + state.onResize = opts.onResize; + } + function resizeDetails(){ + var ht = dc.header2.find('table'); + var fr = ht.find('tr.datagrid-filter-row').hide(); + var ww = ht.width()-1; + var details = dc.body2.find('>table.datagrid-btable>tbody>tr>td>div.datagrid-row-detail:visible')._outerWidth(ww); + // var details = dc.body2.find('div.datagrid-row-detail:visible')._outerWidth(ww); + details.find('.easyui-fluid').trigger('_resize'); + fr.show(); + } + + opts.onResizeColumn = function(field, width){ + if (!opts.fitColumns){ + resizeDetails(); + } + var rowCount = $(target).datagrid('getRows').length; + for(var i=0; itd>div.datagrid-row-detail'); + }, + expandRow: function(jq, index){ + return jq.each(function(){ + var opts = $(this).datagrid('options'); + var dc = $.data(this, 'datagrid').dc; + var expander = $(this).datagrid('getExpander', index); + if (expander.hasClass('datagrid-row-expand')){ + expander.removeClass('datagrid-row-expand').addClass('datagrid-row-collapse'); + var tr1 = opts.finder.getTr(this, index, 'body', 1).next(); + var tr2 = opts.finder.getTr(this, index, 'body', 2).next(); + tr1.show(); + tr2.show(); + $(this).datagrid('fixDetailRowHeight', index); + if (opts.onExpandRow){ + var row = $(this).datagrid('getRows')[index]; + opts.onExpandRow.call(this, index, row); + } + } + }); + }, + collapseRow: function(jq, index){ + return jq.each(function(){ + var opts = $(this).datagrid('options'); + var dc = $.data(this, 'datagrid').dc; + var expander = $(this).datagrid('getExpander', index); + if (expander.hasClass('datagrid-row-collapse')){ + expander.removeClass('datagrid-row-collapse').addClass('datagrid-row-expand'); + var tr1 = opts.finder.getTr(this, index, 'body', 1).next(); + var tr2 = opts.finder.getTr(this, index, 'body', 2).next(); + tr1.hide(); + tr2.hide(); + dc.body2.triggerHandler('scroll'); + if (opts.onCollapseRow){ + var row = $(this).datagrid('getRows')[index]; + opts.onCollapseRow.call(this, index, row); + } + } + }); + } +}); + +$.extend($.fn.datagrid.methods, { + subgrid: function(jq, conf){ + return jq.each(function(){ + createGrid(this, conf); + + function createGrid(target, conf, prow){ + var queryParams = $.extend({}, conf.options.queryParams||{}); + queryParams[conf.options.foreignField] = prow ? prow[conf.options.foreignField] : undefined; + + $(target).datagrid($.extend({}, conf.options, { + subgrid: conf.subgrid, + view: (conf.subgrid ? detailview : undefined), + queryParams: queryParams, + detailFormatter: function(index, row){ + return '
'; + }, + onExpandRow: function(index, row){ + var opts = $(this).datagrid('options'); + var rd = $(this).datagrid('getRowDetail', index); + var dg = getSubGrid(rd); + if (!dg.data('datagrid')){ + createGrid(dg[0], opts.subgrid, row); + } + rd.find('.easyui-fluid').trigger('_resize'); + setHeight(this, index); + if (conf.options.onExpandRow){ + conf.options.onExpandRow.call(this, index, row); + } + }, + onCollapseRow: function(index, row){ + setHeight(this, index); + if (conf.options.onCollapseRow){ + conf.options.onCollapseRow.call(this, index, row); + } + }, + onResize: function(){ + var dg = $(this).children('div.datagrid-view').children('table') + setParentHeight(this); + }, + onResizeColumn: function(field, width){ + setParentHeight(this); + if (conf.options.onResizeColumn){ + conf.options.onResizeColumn.call(this, field, width); + } + }, + onLoadSuccess: function(data){ + setParentHeight(this); + if (conf.options.onLoadSuccess){ + conf.options.onLoadSuccess.call(this, data); + } + } + })); + } + function getSubGrid(rowDetail){ + var div = $(rowDetail).children('div'); + if (div.children('div.datagrid').length){ + return div.find('>div.datagrid>div.panel-body>div.datagrid-view>table.datagrid-subgrid'); + } else { + return div.find('>table.datagrid-subgrid'); + } + } + function setParentHeight(target){ + var tr = $(target).closest('div.datagrid-row-detail').closest('tr').prev(); + if (tr.length){ + var index = parseInt(tr.attr('datagrid-row-index')); + var dg = tr.closest('div.datagrid-view').children('table'); + setHeight(dg[0], index); + } + } + function setHeight(target, index){ + $(target).datagrid('fixDetailRowHeight', index); + $(target).datagrid('fixRowHeight', index); + var tr = $(target).closest('div.datagrid-row-detail').closest('tr').prev(); + if (tr.length){ + var index = parseInt(tr.attr('datagrid-row-index')); + var dg = tr.closest('div.datagrid-view').children('table'); + setHeight(dg[0], index); + } + } + }); + } +}); diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/easyui-lang-zh_CN.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/easyui-lang-zh_CN.js new file mode 100644 index 0000000..7cf6044 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/easyui-lang-zh_CN.js @@ -0,0 +1,66 @@ +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 = '取消'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '该输入项为必输项'; + } +}); +if ($.fn.validatebox){ + $.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.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.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 + }); +} +if ($.fn.datetimespinner){ + $.fn.datetimespinner.defaults.selections = [[0,4],[5,7],[8,10],[11,13],[14,16],[17,19]] +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/jquery.easyui.min.extend.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/jquery.easyui.min.extend.js new file mode 100644 index 0000000..60bc147 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/jquery.easyui.min.extend.js @@ -0,0 +1,176 @@ +$.extend($.fn.validatebox.defaults.rules, { + fileExtension: { + validator: function (value, param) { + if (value == undefined || value == null || param == undefined || param == null || param.length == 0) return false; + return value.toLowerCase().lastIndexOf(param[0].toLowerCase()) > 0; + }, + message: '请选择{0}格式文件!' + } +}); + +//datagrid扩展方法,导出数据 +$.extend($.fn.datagrid.methods, { + export: function (jq, ops) { + if (jq.length == 0) return; + var defaults = { + sheetName: "sheet1" + }; + var options = $.extend(defaults, ops); + var cols = new Array(); + var frozenColumns = this.options(jq).frozenColumns; + if (frozenColumns.length != 0) { + var columns = frozenColumns[frozenColumns.length-1]; + for (var rIndex = 0; rIndex < columns.length; rIndex++) { + var column = columns[rIndex]; + var col = "{'" + column.field + "':'" + column.title + "'}"; + cols.push(eval('(' + col + ')')); + } + } + var ocolumns = this.options(jq).columns; + if (frozenColumns.length != 0) { + var columns = ocolumns[ocolumns.length - 1]; + for (var rIndex = 0; rIndex < columns.length; rIndex++) { + var column = columns[rIndex]; + var col = "{'" + column.field + "':'" + column.title + "'}"; + cols.push(eval('(' + col + ')')); + } + } + var rows = this.getData(jq).rows; + var tableHtml = $.json2Table({ columns: cols, rows: rows }); + var excelFile = ""; + excelFile += ""; + excelFile += ""; + excelFile += "" + excelFile += ""; + excelFile += ""; + excelFile += tableHtml; + excelFile += ""; + excelFile += ""; + var base64data = "base64," + $.base64.encode(excelFile); + window.open('data:application/vnd.ms-excel;filename=exportData.doc;' + base64data); + }, + //ops= { title: "明细", index:0, width: 450, height: 400, modal: false, row: null }; + showPropertyGrid: function (jq, ops) { + if (jq.length == 0 || ops == null) return; + var defaults = { title: "明细", index: 1, width: 450, height: 400, modal: false, row: null }; + var options = $.extend(defaults, ops); + var row = options.row == null ? $(jq).datagrid("getSelected") : options.row + if (row == null) return; + var cols = new Array(); + var frozenColumns = this.options(jq).frozenColumns; + if (frozenColumns.length != 0) { + var fcolumns = this.options(jq).frozenColumns[frozenColumns.length - 1]; + for (var rIndex = 0; rIndex < fcolumns.length; rIndex++) { + var column = fcolumns[rIndex]; + var col = { name: column.title, value: row[column.field] } + cols.push(col); + } + } + var columns = this.options(jq).columns; + if (columns.length != 0) { + var ccolumns = this.options(jq).columns[columns.length - 1]; + for (var rIndex = 0; rIndex < ccolumns.length; rIndex++) { + var column = ccolumns[rIndex]; + var col = { name: column.title, value: row[column.field] } + cols.push(col); + } + } + var id = "t_w_" + options.index; + if ($("#" + id).length == 0) + $("body").append("
"); + id = "#" + id; + $(id + "1").propertygrid({ + showGroup: false, + fit: true, + fitColumns: true, + scrollbarSize: 0, + columns: [ + [ + { field: 'name', title: '属性', width: 100, sortable: true }, + { field: 'value', title: '值', width: 100, resizable: false } + ]], + data: cols + }); + $(id).window({ + title: options.title, + modal: options.modal, + width: options.width, + height: options.height, + minimizable: false, + collapsible: false, + top: (options.index * 5), + left: document.body.clientWidth - options.width, + closable: true, + onClose: function () { + $(id).window("destroy"); + } + }); + + } +}); +//form的扩展方法获取json数据 +$.extend($.fn.form.methods, { + //获取json格式数据 + getData: function (jq) { + var temp = $(jq).serializeArray(); + var json = {}; + for (var i in temp) { + var row = temp[i]; + json[row.name] = row.value; + } + return json; + } +}); + +$.extend($.fn.textbox.methods, { + addClearBtn: function (jq, iconCls) { + return jq.each(function () { + var t = $(this); + var opts = t.textbox('options'); + opts.icons = opts.icons || []; + opts.icons.unshift({ + iconCls: iconCls, + handler: function (e) { + $(e.data.target).textbox('clear').textbox('textbox').focus(); + $(this).css('visibility', 'hidden'); + } + }); + t.textbox(); + if (!t.textbox('getText')) { + t.textbox('getIcon', 0).css('visibility', 'hidden'); + } + t.textbox('textbox').bind('keyup', function () { + var icon = t.textbox('getIcon', 0); + if ($(this).val()) { + icon.css('visibility', 'visible'); + } else { + icon.css('visibility', 'hidden'); + } + }); + }); + } +}); + + + +$.extend($.fn.datagrid.defaults, { + rowHeight: 25, + onBeforeFetch: function (page) { }, + onFetch: function (page, rows) { } +}); + diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/jquery.easyui.min.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/jquery.easyui.min.js new file mode 100644 index 0000000..5b63dd6 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/jquery.easyui.min.js @@ -0,0 +1,13911 @@ +/** + * jQuery EasyUI 1.4.2 + * + * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +$.parser={auto:true,onComplete:function(_1){ +},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","textbox","filebox","combo","combobox","combotree","combogrid","numberbox","validatebox","searchbox","spinner","numberspinner","timespinner","datetimespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","datalist","tabs","accordion","window","dialog","form"],parse:function(_2){ +var aa=[]; +for(var i=0;i<$.parser.plugins.length;i++){ +var _3=$.parser.plugins[i]; +var r=$(".easyui-"+_3,_2); +if(r.length){ +if(r[_3]){ +r[_3](); +}else{ +aa.push({name:_3,jq:r}); +} +} +} +if(aa.length&&window.easyloader){ +var _4=[]; +for(var i=0;i=0){ +v=Math.floor((_8.width()-_9)*v/100); +}else{ +v=Math.floor((_8.height()-_9)*v/100); +} +}else{ +v=parseInt(v)||undefined; +} +return v; +},parseOptions:function(_b,_c){ +var t=$(_b); +var _d={}; +var s=$.trim(t.attr("data-options")); +if(s){ +if(s.substring(0,1)!="{"){ +s="{"+s+"}"; +} +_d=(new Function("return "+s))(); +} +$.map(["width","height","left","top","minWidth","maxWidth","minHeight","maxHeight"],function(p){ +var pv=$.trim(_b.style[p]||""); +if(pv){ +if(pv.indexOf("%")==-1){ +pv=parseInt(pv)||undefined; +} +_d[p]=pv; +} +}); +if(_c){ +var _e={}; +for(var i=0;i<_c.length;i++){ +var pp=_c[i]; +if(typeof pp=="string"){ +_e[pp]=t.attr(pp); +}else{ +for(var _f in pp){ +var _10=pp[_f]; +if(_10=="boolean"){ +_e[_f]=t.attr(_f)?(t.attr(_f)=="true"):undefined; +}else{ +if(_10=="number"){ +_e[_f]=t.attr(_f)=="0"?0:parseFloat(t.attr(_f))||undefined; +} +} +} +} +} +$.extend(_d,_e); +} +return _d; +}}; +$(function(){ +var d=$("
").appendTo("body"); +$._boxModel=d.outerWidth()!=100; +d.remove(); +if(!window.easyloader&&$.parser.auto){ +$.parser.parse(); +} +}); +$.fn._outerWidth=function(_11){ +if(_11==undefined){ +if(this[0]==window){ +return this.width()||document.body.clientWidth; +} +return this.outerWidth()||0; +} +return this._size("width",_11); +}; +$.fn._outerHeight=function(_12){ +if(_12==undefined){ +if(this[0]==window){ +return this.height()||document.body.clientHeight; +} +return this.outerHeight()||0; +} +return this._size("height",_12); +}; +$.fn._scrollLeft=function(_13){ +if(_13==undefined){ +return this.scrollLeft(); +}else{ +return this.each(function(){ +$(this).scrollLeft(_13); +}); +} +}; +$.fn._propAttr=$.fn.prop||$.fn.attr; +$.fn._size=function(_14,_15){ +if(typeof _14=="string"){ +if(_14=="clear"){ +return this.each(function(){ +$(this).css({width:"",minWidth:"",maxWidth:"",height:"",minHeight:"",maxHeight:""}); +}); +}else{ +if(_14=="fit"){ +return this.each(function(){ +_16(this,this.tagName=="BODY"?$("body"):$(this).parent(),true); +}); +}else{ +if(_14=="unfit"){ +return this.each(function(){ +_16(this,$(this).parent(),false); +}); +}else{ +if(_15==undefined){ +return _17(this[0],_14); +}else{ +return this.each(function(){ +_17(this,_14,_15); +}); +} +} +} +} +}else{ +return this.each(function(){ +_15=_15||$(this).parent(); +$.extend(_14,_16(this,_15,_14.fit)||{}); +var r1=_18(this,"width",_15,_14); +var r2=_18(this,"height",_15,_14); +if(r1||r2){ +$(this).addClass("easyui-fluid"); +}else{ +$(this).removeClass("easyui-fluid"); +} +}); +} +function _16(_19,_1a,fit){ +if(!_1a.length){ +return false; +} +var t=$(_19)[0]; +var p=_1a[0]; +var _1b=p.fcount||0; +if(fit){ +if(!t.fitted){ +t.fitted=true; +p.fcount=_1b+1; +$(p).addClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").addClass("panel-fit"); +} +} +return {width:($(p).width()||1),height:($(p).height()||1)}; +}else{ +if(t.fitted){ +t.fitted=false; +p.fcount=_1b-1; +if(p.fcount==0){ +$(p).removeClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").removeClass("panel-fit"); +} +} +} +return false; +} +}; +function _18(_1c,_1d,_1e,_1f){ +var t=$(_1c); +var p=_1d; +var p1=p.substr(0,1).toUpperCase()+p.substr(1); +var min=$.parser.parseValue("min"+p1,_1f["min"+p1],_1e); +var max=$.parser.parseValue("max"+p1,_1f["max"+p1],_1e); +var val=$.parser.parseValue(p,_1f[p],_1e); +var _20=(String(_1f[p]||"").indexOf("%")>=0?true:false); +if(!isNaN(val)){ +var v=Math.min(Math.max(val,min||0),max||99999); +if(!_20){ +_1f[p]=v; +} +t._size("min"+p1,""); +t._size("max"+p1,""); +t._size(p,v); +}else{ +t._size(p,""); +t._size("min"+p1,min); +t._size("max"+p1,max); +} +return _20||_1f.fit; +}; +function _17(_21,_22,_23){ +var t=$(_21); +if(_23==undefined){ +_23=parseInt(_21.style[_22]); +if(isNaN(_23)){ +return undefined; +} +if($._boxModel){ +_23+=_24(); +} +return _23; +}else{ +if(_23===""){ +t.css(_22,""); +}else{ +if($._boxModel){ +_23-=_24(); +if(_23<0){ +_23=0; +} +} +t.css(_22,_23+"px"); +} +} +function _24(){ +if(_22.toLowerCase().indexOf("width")>=0){ +return t.outerWidth()-t.width(); +}else{ +return t.outerHeight()-t.height(); +} +}; +}; +}; +})(jQuery); +(function($){ +var _25=null; +var _26=null; +var _27=false; +function _28(e){ +if(e.touches.length!=1){ +return; +} +if(!_27){ +_27=true; +dblClickTimer=setTimeout(function(){ +_27=false; +},500); +}else{ +clearTimeout(dblClickTimer); +_27=false; +_29(e,"dblclick"); +} +_25=setTimeout(function(){ +_29(e,"contextmenu",3); +},1000); +_29(e,"mousedown"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2a(e){ +if(e.touches.length!=1){ +return; +} +if(_25){ +clearTimeout(_25); +} +_29(e,"mousemove"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2b(e){ +if(_25){ +clearTimeout(_25); +} +_29(e,"mouseup"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _29(e,_2c,_2d){ +var _2e=new $.Event(_2c); +_2e.pageX=e.changedTouches[0].pageX; +_2e.pageY=e.changedTouches[0].pageY; +_2e.which=_2d||1; +$(e.target).trigger(_2e); +}; +if(document.addEventListener){ +document.addEventListener("touchstart",_28,true); +document.addEventListener("touchmove",_2a,true); +document.addEventListener("touchend",_2b,true); +} +})(jQuery); +(function($){ +function _2f(e){ +var _30=$.data(e.data.target,"draggable"); +var _31=_30.options; +var _32=_30.proxy; +var _33=e.data; +var _34=_33.startLeft+e.pageX-_33.startX; +var top=_33.startTop+e.pageY-_33.startY; +if(_32){ +if(_32.parent()[0]==document.body){ +if(_31.deltaX!=null&&_31.deltaX!=undefined){ +_34=e.pageX+_31.deltaX; +}else{ +_34=e.pageX-e.data.offsetWidth; +} +if(_31.deltaY!=null&&_31.deltaY!=undefined){ +top=e.pageY+_31.deltaY; +}else{ +top=e.pageY-e.data.offsetHeight; +} +}else{ +if(_31.deltaX!=null&&_31.deltaX!=undefined){ +_34+=e.data.offsetWidth+_31.deltaX; +} +if(_31.deltaY!=null&&_31.deltaY!=undefined){ +top+=e.data.offsetHeight+_31.deltaY; +} +} +} +if(e.data.parent!=document.body){ +_34+=$(e.data.parent).scrollLeft(); +top+=$(e.data.parent).scrollTop(); +} +if(_31.axis=="h"){ +_33.left=_34; +}else{ +if(_31.axis=="v"){ +_33.top=top; +}else{ +_33.left=_34; +_33.top=top; +} +} +}; +function _35(e){ +var _36=$.data(e.data.target,"draggable"); +var _37=_36.options; +var _38=_36.proxy; +if(!_38){ +_38=$(e.data.target); +} +_38.css({left:e.data.left,top:e.data.top}); +$("body").css("cursor",_37.cursor); +}; +function _39(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _3a=$.data(e.data.target,"draggable"); +var _3b=_3a.options; +var _3c=$(".droppable").filter(function(){ +return e.data.target!=this; +}).filter(function(){ +var _3d=$.data(this,"droppable").options.accept; +if(_3d){ +return $(_3d).filter(function(){ +return this==e.data.target; +}).length>0; +}else{ +return true; +} +}); +_3a.droppables=_3c; +var _3e=_3a.proxy; +if(!_3e){ +if(_3b.proxy){ +if(_3b.proxy=="clone"){ +_3e=$(e.data.target).clone().insertAfter(e.data.target); +}else{ +_3e=_3b.proxy.call(e.data.target,e.data.target); +} +_3a.proxy=_3e; +}else{ +_3e=$(e.data.target); +} +} +_3e.css("position","absolute"); +_2f(e); +_35(e); +_3b.onStartDrag.call(e.data.target,e); +return false; +}; +function _3f(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _40=$.data(e.data.target,"draggable"); +_2f(e); +if(_40.options.onDrag.call(e.data.target,e)!=false){ +_35(e); +} +var _41=e.data.target; +_40.droppables.each(function(){ +var _42=$(this); +if(_42.droppable("options").disabled){ +return; +} +var p2=_42.offset(); +if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_58.options.edge; +}; +}); +}; +$.fn.draggable.methods={options:function(jq){ +return $.data(jq[0],"draggable").options; +},proxy:function(jq){ +return $.data(jq[0],"draggable").proxy; +},enable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:true}); +}); +}}; +$.fn.draggable.parseOptions=function(_5d){ +var t=$(_5d); +return $.extend({},$.parser.parseOptions(_5d,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number","delay":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,delay:100,onBeforeDrag:function(e){ +},onStartDrag:function(e){ +},onDrag:function(e){ +},onStopDrag:function(e){ +}}; +$.fn.draggable.isDragging=false; +})(jQuery); +(function($){ +function _5e(_5f){ +$(_5f).addClass("droppable"); +$(_5f).bind("_dragenter",function(e,_60){ +$.data(_5f,"droppable").options.onDragEnter.apply(_5f,[e,_60]); +}); +$(_5f).bind("_dragleave",function(e,_61){ +$.data(_5f,"droppable").options.onDragLeave.apply(_5f,[e,_61]); +}); +$(_5f).bind("_dragover",function(e,_62){ +$.data(_5f,"droppable").options.onDragOver.apply(_5f,[e,_62]); +}); +$(_5f).bind("_drop",function(e,_63){ +$.data(_5f,"droppable").options.onDrop.apply(_5f,[e,_63]); +}); +}; +$.fn.droppable=function(_64,_65){ +if(typeof _64=="string"){ +return $.fn.droppable.methods[_64](this,_65); +} +_64=_64||{}; +return this.each(function(){ +var _66=$.data(this,"droppable"); +if(_66){ +$.extend(_66.options,_64); +}else{ +_5e(this); +$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_64)}); +} +}); +}; +$.fn.droppable.methods={options:function(jq){ +return $.data(jq[0],"droppable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:true}); +}); +}}; +$.fn.droppable.parseOptions=function(_67){ +var t=$(_67); +return $.extend({},$.parser.parseOptions(_67,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_68){ +},onDragOver:function(e,_69){ +},onDragLeave:function(e,_6a){ +},onDrop:function(e,_6b){ +}}; +})(jQuery); +(function($){ +$.fn.resizable=function(_6c,_6d){ +if(typeof _6c=="string"){ +return $.fn.resizable.methods[_6c](this,_6d); +} +function _6e(e){ +var _6f=e.data; +var _70=$.data(_6f.target,"resizable").options; +if(_6f.dir.indexOf("e")!=-1){ +var _71=_6f.startWidth+e.pageX-_6f.startX; +_71=Math.min(Math.max(_71,_70.minWidth),_70.maxWidth); +_6f.width=_71; +} +if(_6f.dir.indexOf("s")!=-1){ +var _72=_6f.startHeight+e.pageY-_6f.startY; +_72=Math.min(Math.max(_72,_70.minHeight),_70.maxHeight); +_6f.height=_72; +} +if(_6f.dir.indexOf("w")!=-1){ +var _71=_6f.startWidth-e.pageX+_6f.startX; +_71=Math.min(Math.max(_71,_70.minWidth),_70.maxWidth); +_6f.width=_71; +_6f.left=_6f.startLeft+_6f.startWidth-_6f.width; +} +if(_6f.dir.indexOf("n")!=-1){ +var _72=_6f.startHeight-e.pageY+_6f.startY; +_72=Math.min(Math.max(_72,_70.minHeight),_70.maxHeight); +_6f.height=_72; +_6f.top=_6f.startTop+_6f.startHeight-_6f.height; +} +}; +function _73(e){ +var _74=e.data; +var t=$(_74.target); +t.css({left:_74.left,top:_74.top}); +if(t.outerWidth()!=_74.width){ +t._outerWidth(_74.width); +} +if(t.outerHeight()!=_74.height){ +t._outerHeight(_74.height); +} +}; +function _75(e){ +$.fn.resizable.isResizing=true; +$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); +return false; +}; +function _76(e){ +_6e(e); +if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ +_73(e); +} +return false; +}; +function _77(e){ +$.fn.resizable.isResizing=false; +_6e(e,true); +_73(e); +$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); +$(document).unbind(".resizable"); +$("body").css("cursor",""); +return false; +}; +return this.each(function(){ +var _78=null; +var _79=$.data(this,"resizable"); +if(_79){ +$(this).unbind(".resizable"); +_78=$.extend(_79.options,_6c||{}); +}else{ +_78=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_6c||{}); +$.data(this,"resizable",{options:_78}); +} +if(_78.disabled==true){ +return; +} +$(this).bind("mousemove.resizable",{target:this},function(e){ +if($.fn.resizable.isResizing){ +return; +} +var dir=_7a(e); +if(dir==""){ +$(e.data.target).css("cursor",""); +}else{ +$(e.data.target).css("cursor",dir+"-resize"); +} +}).bind("mouseleave.resizable",{target:this},function(e){ +$(e.data.target).css("cursor",""); +}).bind("mousedown.resizable",{target:this},function(e){ +var dir=_7a(e); +if(dir==""){ +return; +} +function _7b(css){ +var val=parseInt($(e.data.target).css(css)); +if(isNaN(val)){ +return 0; +}else{ +return val; +} +}; +var _7c={target:e.data.target,dir:dir,startLeft:_7b("left"),startTop:_7b("top"),left:_7b("left"),top:_7b("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; +$(document).bind("mousedown.resizable",_7c,_75); +$(document).bind("mousemove.resizable",_7c,_76); +$(document).bind("mouseup.resizable",_7c,_77); +$("body").css("cursor",dir+"-resize"); +}); +function _7a(e){ +var tt=$(e.data.target); +var dir=""; +var _7d=tt.offset(); +var _7e=tt.outerWidth(); +var _7f=tt.outerHeight(); +var _80=_78.edge; +if(e.pageY>_7d.top&&e.pageY<_7d.top+_80){ +dir+="n"; +}else{ +if(e.pageY<_7d.top+_7f&&e.pageY>_7d.top+_7f-_80){ +dir+="s"; +} +} +if(e.pageX>_7d.left&&e.pageX<_7d.left+_80){ +dir+="w"; +}else{ +if(e.pageX<_7d.left+_7e&&e.pageX>_7d.left+_7e-_80){ +dir+="e"; +} +} +var _81=_78.handles.split(","); +for(var i=0;i<_81.length;i++){ +var _82=_81[i].replace(/(^\s*)|(\s*$)/g,""); +if(_82=="all"||_82==dir){ +return dir; +} +} +return ""; +}; +}); +}; +$.fn.resizable.methods={options:function(jq){ +return $.data(jq[0],"resizable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:true}); +}); +}}; +$.fn.resizable.parseOptions=function(_83){ +var t=$(_83); +return $.extend({},$.parser.parseOptions(_83,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ +},onResize:function(e){ +},onStopResize:function(e){ +}}; +$.fn.resizable.isResizing=false; +})(jQuery); +(function($){ +function _84(_85,_86){ +var _87=$.data(_85,"linkbutton").options; +if(_86){ +$.extend(_87,_86); +} +if(_87.width||_87.height||_87.fit){ +var btn=$(_85); +var _88=btn.parent(); +var _89=btn.is(":visible"); +if(!_89){ +var _8a=$("
").insertBefore(_85); +var _8b={position:btn.css("position"),display:btn.css("display"),left:btn.css("left")}; +btn.appendTo("body"); +btn.css({position:"absolute",display:"inline-block",left:-20000}); +} +btn._size(_87,_88); +var _8c=btn.find(".l-btn-left"); +_8c.css("margin-top",0); +_8c.css("margin-top",parseInt((btn.height()-_8c.height())/2)+"px"); +if(!_89){ +btn.insertAfter(_8a); +btn.css(_8b); +_8a.remove(); +} +} +}; +function _8d(_8e){ +var _8f=$.data(_8e,"linkbutton").options; +var t=$(_8e).empty(); +t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected l-btn-outline"); +t.removeClass("l-btn-small l-btn-medium l-btn-large").addClass("l-btn-"+_8f.size); +if(_8f.plain){ +t.addClass("l-btn-plain"); +} +if(_8f.outline){ +t.addClass("l-btn-outline"); +} +if(_8f.selected){ +t.addClass(_8f.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +} +t.attr("group",_8f.group||""); +t.attr("id",_8f.id||""); +var _90=$("").appendTo(t); +if(_8f.text){ +$("").html(_8f.text).appendTo(_90); +}else{ +$(" ").appendTo(_90); +} +if(_8f.iconCls){ +$(" ").addClass(_8f.iconCls).appendTo(_90); +_90.addClass("l-btn-icon-"+_8f.iconAlign); +} +t.unbind(".linkbutton").bind("focus.linkbutton",function(){ +if(!_8f.disabled){ +$(this).addClass("l-btn-focus"); +} +}).bind("blur.linkbutton",function(){ +$(this).removeClass("l-btn-focus"); +}).bind("click.linkbutton",function(){ +if(!_8f.disabled){ +if(_8f.toggle){ +if(_8f.selected){ +$(this).linkbutton("unselect"); +}else{ +$(this).linkbutton("select"); +} +} +_8f.onClick.call(this); +} +}); +_91(_8e,_8f.selected); +_92(_8e,_8f.disabled); +}; +function _91(_93,_94){ +var _95=$.data(_93,"linkbutton").options; +if(_94){ +if(_95.group){ +$("a.l-btn[group=\""+_95.group+"\"]").each(function(){ +var o=$(this).linkbutton("options"); +if(o.toggle){ +$(this).removeClass("l-btn-selected l-btn-plain-selected"); +o.selected=false; +} +}); +} +$(_93).addClass(_95.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +_95.selected=true; +}else{ +if(!_95.group){ +$(_93).removeClass("l-btn-selected l-btn-plain-selected"); +_95.selected=false; +} +} +}; +function _92(_96,_97){ +var _98=$.data(_96,"linkbutton"); +var _99=_98.options; +$(_96).removeClass("l-btn-disabled l-btn-plain-disabled"); +if(_97){ +_99.disabled=true; +var _9a=$(_96).attr("href"); +if(_9a){ +_98.href=_9a; +$(_96).attr("href","javascript:void(0)"); +} +if(_96.onclick){ +_98.onclick=_96.onclick; +_96.onclick=null; +} +_99.plain?$(_96).addClass("l-btn-disabled l-btn-plain-disabled"):$(_96).addClass("l-btn-disabled"); +}else{ +_99.disabled=false; +if(_98.href){ +$(_96).attr("href",_98.href); +} +if(_98.onclick){ +_96.onclick=_98.onclick; +} +} +}; +$.fn.linkbutton=function(_9b,_9c){ +if(typeof _9b=="string"){ +return $.fn.linkbutton.methods[_9b](this,_9c); +} +_9b=_9b||{}; +return this.each(function(){ +var _9d=$.data(this,"linkbutton"); +if(_9d){ +$.extend(_9d.options,_9b); +}else{ +$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_9b)}); +$(this).removeAttr("disabled"); +$(this).bind("_resize",function(e,_9e){ +if($(this).hasClass("easyui-fluid")||_9e){ +_84(this); +} +return false; +}); +} +_8d(this); +_84(this); +}); +}; +$.fn.linkbutton.methods={options:function(jq){ +return $.data(jq[0],"linkbutton").options; +},resize:function(jq,_9f){ +return jq.each(function(){ +_84(this,_9f); +}); +},enable:function(jq){ +return jq.each(function(){ +_92(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_92(this,true); +}); +},select:function(jq){ +return jq.each(function(){ +_91(this,true); +}); +},unselect:function(jq){ +return jq.each(function(){ +_91(this,false); +}); +}}; +$.fn.linkbutton.parseOptions=function(_a0){ +var t=$(_a0); +return $.extend({},$.parser.parseOptions(_a0,["id","iconCls","iconAlign","group","size",{plain:"boolean",toggle:"boolean",selected:"boolean",outline:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); +}; +$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,outline:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left",size:"small",onClick:function(){ +}}; +})(jQuery); +(function($){ +function _a1(_a2){ +var _a3=$.data(_a2,"pagination"); +var _a4=_a3.options; +var bb=_a3.bb={}; +var _a5=$(_a2).addClass("pagination").html("
"); +var tr=_a5.find("tr"); +var aa=$.extend([],_a4.layout); +if(!_a4.showPageList){ +_a6(aa,"list"); +} +if(!_a4.showRefresh){ +_a6(aa,"refresh"); +} +if(aa[0]=="sep"){ +aa.shift(); +} +if(aa[aa.length-1]=="sep"){ +aa.pop(); +} +for(var _a7=0;_a7"); +ps.bind("change",function(){ +_a4.pageSize=parseInt($(this).val()); +_a4.onChangePageSize.call(_a2,_a4.pageSize); +_ae(_a2,_a4.pageNumber); +}); +for(var i=0;i<_a4.pageList.length;i++){ +$("").text(_a4.pageList[i]).appendTo(ps); +} +$("").append(ps).appendTo(tr); +}else{ +if(_a8=="sep"){ +$("
").appendTo(tr); +}else{ +if(_a8=="first"){ +bb.first=_a9("first"); +}else{ +if(_a8=="prev"){ +bb.prev=_a9("prev"); +}else{ +if(_a8=="next"){ +bb.next=_a9("next"); +}else{ +if(_a8=="last"){ +bb.last=_a9("last"); +}else{ +if(_a8=="manual"){ +$("").html(_a4.beforePageText).appendTo(tr).wrap(""); +bb.num=$("").appendTo(tr).wrap(""); +bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ +if(e.keyCode==13){ +var _aa=parseInt($(this).val())||1; +_ae(_a2,_aa); +return false; +} +}); +bb.after=$("").appendTo(tr).wrap(""); +}else{ +if(_a8=="refresh"){ +bb.refresh=_a9("refresh"); +}else{ +if(_a8=="links"){ +$("").appendTo(tr); +} +} +} +} +} +} +} +} +} +} +if(_a4.buttons){ +$("
").appendTo(tr); +if($.isArray(_a4.buttons)){ +for(var i=0;i<_a4.buttons.length;i++){ +var btn=_a4.buttons[i]; +if(btn=="-"){ +$("
").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var a=$("").appendTo(td); +a[0].onclick=eval(btn.handler||function(){ +}); +a.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +var td=$("").appendTo(tr); +$(_a4.buttons).appendTo(td).show(); +} +} +$("
").appendTo(_a5); +$("
").appendTo(_a5); +function _a9(_ab){ +var btn=_a4.nav[_ab]; +var a=$("").appendTo(tr); +a.wrap(""); +a.linkbutton({iconCls:btn.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ +btn.handler.call(_a2); +}); +return a; +}; +function _a6(aa,_ac){ +var _ad=$.inArray(_ac,aa); +if(_ad>=0){ +aa.splice(_ad,1); +} +return aa; +}; +}; +function _ae(_af,_b0){ +var _b1=$.data(_af,"pagination").options; +_b2(_af,{pageNumber:_b0}); +_b1.onSelectPage.call(_af,_b1.pageNumber,_b1.pageSize); +}; +function _b2(_b3,_b4){ +var _b5=$.data(_b3,"pagination"); +var _b6=_b5.options; +var bb=_b5.bb; +$.extend(_b6,_b4||{}); +var ps=$(_b3).find("select.pagination-page-list"); +if(ps.length){ +ps.val(_b6.pageSize+""); +_b6.pageSize=parseInt(ps.val()); +} +var _b7=Math.ceil(_b6.total/_b6.pageSize)||1; +if(_b6.pageNumber<1){ +_b6.pageNumber=1; +} +if(_b6.pageNumber>_b7){ +_b6.pageNumber=_b7; +} +if(_b6.total==0){ +_b6.pageNumber=0; +_b7=0; +} +if(bb.num){ +bb.num.val(_b6.pageNumber); +} +if(bb.after){ +bb.after.html(_b6.afterPageText.replace(/{pages}/,_b7)); +} +var td=$(_b3).find("td.pagination-links"); +if(td.length){ +td.empty(); +var _b8=_b6.pageNumber-Math.floor(_b6.links/2); +if(_b8<1){ +_b8=1; +} +var _b9=_b8+_b6.links-1; +if(_b9>_b7){ +_b9=_b7; +} +_b8=_b9-_b6.links+1; +if(_b8<1){ +_b8=1; +} +for(var i=_b8;i<=_b9;i++){ +var a=$("").appendTo(td); +a.linkbutton({plain:true,text:i}); +if(i==_b6.pageNumber){ +a.linkbutton("select"); +}else{ +a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){ +_ae(_b3,e.data.pageNumber); +}); +} +} +} +var _ba=_b6.displayMsg; +_ba=_ba.replace(/{from}/,_b6.total==0?0:_b6.pageSize*(_b6.pageNumber-1)+1); +_ba=_ba.replace(/{to}/,Math.min(_b6.pageSize*(_b6.pageNumber),_b6.total)); +_ba=_ba.replace(/{total}/,_b6.total); +$(_b3).find("div.pagination-info").html(_ba); +if(bb.first){ +bb.first.linkbutton({disabled:((!_b6.total)||_b6.pageNumber==1)}); +} +if(bb.prev){ +bb.prev.linkbutton({disabled:((!_b6.total)||_b6.pageNumber==1)}); +} +if(bb.next){ +bb.next.linkbutton({disabled:(_b6.pageNumber==_b7)}); +} +if(bb.last){ +bb.last.linkbutton({disabled:(_b6.pageNumber==_b7)}); +} +_bb(_b3,_b6.loading); +}; +function _bb(_bc,_bd){ +var _be=$.data(_bc,"pagination"); +var _bf=_be.options; +_bf.loading=_bd; +if(_bf.showRefresh&&_be.bb.refresh){ +_be.bb.refresh.linkbutton({iconCls:(_bf.loading?"pagination-loading":"pagination-load")}); +} +}; +$.fn.pagination=function(_c0,_c1){ +if(typeof _c0=="string"){ +return $.fn.pagination.methods[_c0](this,_c1); +} +_c0=_c0||{}; +return this.each(function(){ +var _c2; +var _c3=$.data(this,"pagination"); +if(_c3){ +_c2=$.extend(_c3.options,_c0); +}else{ +_c2=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_c0); +$.data(this,"pagination",{options:_c2}); +} +_a1(this); +_b2(this); +}); +}; +$.fn.pagination.methods={options:function(jq){ +return $.data(jq[0],"pagination").options; +},loading:function(jq){ +return jq.each(function(){ +_bb(this,true); +}); +},loaded:function(jq){ +return jq.each(function(){ +_bb(this,false); +}); +},refresh:function(jq,_c4){ +return jq.each(function(){ +_b2(this,_c4); +}); +},select:function(jq,_c5){ +return jq.each(function(){ +_ae(this,_c5); +}); +}}; +$.fn.pagination.parseOptions=function(_c6){ +var t=$(_c6); +return $.extend({},$.parser.parseOptions(_c6,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); +}; +$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh"],onSelectPage:function(_c7,_c8){ +},onBeforeRefresh:function(_c9,_ca){ +},onRefresh:function(_cb,_cc){ +},onChangePageSize:function(_cd){ +},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ +var _ce=$(this).pagination("options"); +if(_ce.pageNumber>1){ +$(this).pagination("select",1); +} +}},prev:{iconCls:"pagination-prev",handler:function(){ +var _cf=$(this).pagination("options"); +if(_cf.pageNumber>1){ +$(this).pagination("select",_cf.pageNumber-1); +} +}},next:{iconCls:"pagination-next",handler:function(){ +var _d0=$(this).pagination("options"); +var _d1=Math.ceil(_d0.total/_d0.pageSize); +if(_d0.pageNumber<_d1){ +$(this).pagination("select",_d0.pageNumber+1); +} +}},last:{iconCls:"pagination-last",handler:function(){ +var _d2=$(this).pagination("options"); +var _d3=Math.ceil(_d2.total/_d2.pageSize); +if(_d2.pageNumber<_d3){ +$(this).pagination("select",_d3); +} +}},refresh:{iconCls:"pagination-refresh",handler:function(){ +var _d4=$(this).pagination("options"); +if(_d4.onBeforeRefresh.call(this,_d4.pageNumber,_d4.pageSize)!=false){ +$(this).pagination("select",_d4.pageNumber); +_d4.onRefresh.call(this,_d4.pageNumber,_d4.pageSize); +} +}}}}; +})(jQuery); +(function($){ +function _d5(_d6){ +var _d7=$(_d6); +_d7.addClass("tree"); +return _d7; +}; +function _d8(_d9){ +var _da=$.data(_d9,"tree").options; +$(_d9).unbind().bind("mouseover",function(e){ +var tt=$(e.target); +var _db=tt.closest("div.tree-node"); +if(!_db.length){ +return; +} +_db.addClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.addClass("tree-expanded-hover"); +}else{ +tt.addClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +var tt=$(e.target); +var _dc=tt.closest("div.tree-node"); +if(!_dc.length){ +return; +} +_dc.removeClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.removeClass("tree-expanded-hover"); +}else{ +tt.removeClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("click",function(e){ +var tt=$(e.target); +var _dd=tt.closest("div.tree-node"); +if(!_dd.length){ +return; +} +if(tt.hasClass("tree-hit")){ +_144(_d9,_dd[0]); +return false; +}else{ +if(tt.hasClass("tree-checkbox")){ +_104(_d9,_dd[0]); +return false; +}else{ +_18a(_d9,_dd[0]); +_da.onClick.call(_d9,_e0(_d9,_dd[0])); +} +} +e.stopPropagation(); +}).bind("dblclick",function(e){ +var _de=$(e.target).closest("div.tree-node"); +if(!_de.length){ +return; +} +_18a(_d9,_de[0]); +_da.onDblClick.call(_d9,_e0(_d9,_de[0])); +e.stopPropagation(); +}).bind("contextmenu",function(e){ +var _df=$(e.target).closest("div.tree-node"); +if(!_df.length){ +return; +} +_da.onContextMenu.call(_d9,e,_e0(_d9,_df[0])); +e.stopPropagation(); +}); +}; +function _e1(_e2){ +var _e3=$.data(_e2,"tree").options; +_e3.dnd=false; +var _e4=$(_e2).find("div.tree-node"); +_e4.draggable("disable"); +_e4.css("cursor","pointer"); +}; +function _e5(_e6){ +var _e7=$.data(_e6,"tree"); +var _e8=_e7.options; +var _e9=_e7.tree; +_e7.disabledNodes=[]; +_e8.dnd=true; +_e9.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_ea){ +var p=$("
").appendTo("body"); +p.html(" "+$(_ea).find(".tree-title").html()); +p.hide(); +return p; +},deltaX:15,deltaY:15,onBeforeDrag:function(e){ +if(_e8.onBeforeDrag.call(_e6,_e0(_e6,this))==false){ +return false; +} +if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ +return false; +} +if(e.which!=1){ +return false; +} +$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); +var _eb=$(this).find("span.tree-indent"); +if(_eb.length){ +e.data.offsetWidth-=_eb.length*_eb.width(); +} +},onStartDrag:function(){ +$(this).draggable("proxy").css({left:-10000,top:-10000}); +_e8.onStartDrag.call(_e6,_e0(_e6,this)); +var _ec=_e0(_e6,this); +if(_ec.id==undefined){ +_ec.id="easyui_tree_node_id_temp"; +_127(_e6,_ec); +} +_e7.draggingNodeId=_ec.id; +},onDrag:function(e){ +var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; +var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); +if(d>3){ +$(this).draggable("proxy").show(); +} +this.pageY=e.pageY; +},onStopDrag:function(){ +$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); +for(var i=0;i<_e7.disabledNodes.length;i++){ +$(_e7.disabledNodes[i]).droppable("enable"); +} +_e7.disabledNodes=[]; +var _ed=_182(_e6,_e7.draggingNodeId); +if(_ed&&_ed.id=="easyui_tree_node_id_temp"){ +_ed.id=""; +_127(_e6,_ed); +} +_e8.onStopDrag.call(_e6,_ed); +}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_ee){ +if(_e8.onDragEnter.call(_e6,this,_ef(_ee))==false){ +_f0(_ee,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_e7.disabledNodes.push(this); +} +},onDragOver:function(e,_f1){ +if($(this).droppable("options").disabled){ +return; +} +var _f2=_f1.pageY; +var top=$(this).offset().top; +var _f3=top+$(this).outerHeight(); +_f0(_f1,true); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +if(_f2>top+(_f3-top)/2){ +if(_f3-_f2<5){ +$(this).addClass("tree-node-bottom"); +}else{ +$(this).addClass("tree-node-append"); +} +}else{ +if(_f2-top<5){ +$(this).addClass("tree-node-top"); +}else{ +$(this).addClass("tree-node-append"); +} +} +if(_e8.onDragOver.call(_e6,this,_ef(_f1))==false){ +_f0(_f1,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_e7.disabledNodes.push(this); +} +},onDragLeave:function(e,_f4){ +_f0(_f4,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +_e8.onDragLeave.call(_e6,this,_ef(_f4)); +},onDrop:function(e,_f5){ +var _f6=this; +var _f7,_f8; +if($(this).hasClass("tree-node-append")){ +_f7=_f9; +_f8="append"; +}else{ +_f7=_fa; +_f8=$(this).hasClass("tree-node-top")?"top":"bottom"; +} +if(_e8.onBeforeDrop.call(_e6,_f6,_ef(_f5),_f8)==false){ +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +return; +} +_f7(_f5,_f6,_f8); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +}}); +function _ef(_fb,pop){ +return $(_fb).closest("ul.tree").tree(pop?"pop":"getData",_fb); +}; +function _f0(_fc,_fd){ +var _fe=$(_fc).draggable("proxy").find("span.tree-dnd-icon"); +_fe.removeClass("tree-dnd-yes tree-dnd-no").addClass(_fd?"tree-dnd-yes":"tree-dnd-no"); +}; +function _f9(_ff,dest){ +if(_e0(_e6,dest).state=="closed"){ +_13c(_e6,dest,function(){ +_100(); +}); +}else{ +_100(); +} +function _100(){ +var node=_ef(_ff,true); +$(_e6).tree("append",{parent:dest,data:[node]}); +_e8.onDrop.call(_e6,dest,node,"append"); +}; +}; +function _fa(_101,dest,_102){ +var _103={}; +if(_102=="top"){ +_103.before=dest; +}else{ +_103.after=dest; +} +var node=_ef(_101,true); +_103.data=node; +$(_e6).tree("insert",_103); +_e8.onDrop.call(_e6,dest,node,_102); +}; +}; +function _104(_105,_106,_107){ +var _108=$.data(_105,"tree"); +var opts=_108.options; +if(!opts.checkbox){ +return; +} +var _109=_e0(_105,_106); +if(_107==undefined){ +var ck=$(_106).find(".tree-checkbox"); +if(ck.hasClass("tree-checkbox1")){ +_107=false; +}else{ +if(ck.hasClass("tree-checkbox0")){ +_107=true; +}else{ +if(_109._checked==undefined){ +_109._checked=$(_106).find(".tree-checkbox").hasClass("tree-checkbox1"); +} +_107=!_109._checked; +} +} +} +_109._checked=_107; +if(opts.onBeforeCheck.call(_105,_109,_107)==false){ +return; +} +if(opts.cascadeCheck){ +_10a(_109,_107); +_10b(_109,_107); +}else{ +_10c($(_109.target),_107?"1":"0"); +} +opts.onCheck.call(_105,_109,_107); +function _10c(node,flag){ +var ck=node.find(".tree-checkbox"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +ck.addClass("tree-checkbox"+flag); +}; +function _10a(_10d,_10e){ +if(opts.deepCheck){ +var node=$("#"+_10d.domId); +var flag=_10e?"1":"0"; +_10c(node,flag); +_10c(node.next(),flag); +}else{ +_10f(_10d,_10e); +_12a(_10d.children||[],function(n){ +_10f(n,_10e); +}); +} +}; +function _10f(_110,_111){ +if(_110.hidden){ +return; +} +var cls="tree-checkbox"+(_111?"1":"0"); +var node=$("#"+_110.domId); +_10c(node,_111?"1":"0"); +if(_110.children){ +for(var i=0;i<_110.children.length;i++){ +if(_110.children[i].hidden){ +if(!$("#"+_110.children[i].domId).find("."+cls).length){ +_10c(node,"2"); +var _112=_14f(_105,node[0]); +while(_112){ +_10c($(_112.target),"2"); +_112=_14f(_105,_112[0]); +} +return; +} +} +} +} +}; +function _10b(_113,_114){ +var node=$("#"+_113.domId); +var _115=_14f(_105,node[0]); +if(_115){ +var flag=""; +if(_116(node,true)){ +flag="1"; +}else{ +if(_116(node,false)){ +flag="0"; +}else{ +flag="2"; +} +} +_10c($(_115.target),flag); +_10b(_115,_114); +} +}; +function _116(node,_117){ +var cls="tree-checkbox"+(_117?"1":"0"); +var ck=node.find(".tree-checkbox"); +if(!ck.hasClass(cls)){ +return false; +} +var b=true; +node.parent().siblings().each(function(){ +var ck=$(this).children("div.tree-node").children(".tree-checkbox"); +if(ck.length&&!ck.hasClass(cls)){ +b=false; +return false; +} +}); +return b; +}; +}; +function _118(_119,_11a){ +var opts=$.data(_119,"tree").options; +if(!opts.checkbox){ +return; +} +var node=$(_11a); +if(_11b(_119,_11a)){ +var ck=node.find(".tree-checkbox"); +if(ck.length){ +if(ck.hasClass("tree-checkbox1")){ +_104(_119,_11a,true); +}else{ +_104(_119,_11a,false); +} +}else{ +if(opts.onlyLeafCheck){ +$("").insertBefore(node.find(".tree-title")); +} +} +}else{ +var ck=node.find(".tree-checkbox"); +if(opts.onlyLeafCheck){ +ck.remove(); +}else{ +if(ck.hasClass("tree-checkbox1")){ +_104(_119,_11a,true); +}else{ +if(ck.hasClass("tree-checkbox2")){ +var _11c=true; +var _11d=true; +var _11e=_11f(_119,_11a); +for(var i=0;i<_11e.length;i++){ +if(_11e[i].checked){ +_11d=false; +}else{ +_11c=false; +} +} +if(_11c){ +_104(_119,_11a,true); +} +if(_11d){ +_104(_119,_11a,false); +} +} +} +} +} +}; +function _120(_121,ul,data,_122){ +var _123=$.data(_121,"tree"); +var opts=_123.options; +var _124=$(ul).prevAll("div.tree-node:first"); +data=opts.loadFilter.call(_121,data,_124[0]); +var _125=_126(_121,"domId",_124.attr("id")); +if(!_122){ +_125?_125.children=data:_123.data=data; +$(ul).empty(); +}else{ +if(_125){ +_125.children?_125.children=_125.children.concat(data):_125.children=data; +}else{ +_123.data=_123.data.concat(data); +} +} +opts.view.render.call(opts.view,_121,ul,data); +if(opts.dnd){ +_e5(_121); +} +if(_125){ +_127(_121,_125); +} +var _128=[]; +var _129=[]; +for(var i=0;i1){ +$(_12f[0].target).addClass("tree-root-first"); +}else{ +if(_12f.length==1){ +$(_12f[0].target).addClass("tree-root-one"); +} +} +} +$(ul).children("li").each(function(){ +var node=$(this).children("div.tree-node"); +var ul=node.next("ul"); +if(ul.length){ +if($(this).next().length){ +_130(node); +} +_12c(_12d,ul,_12e); +}else{ +_131(node); +} +}); +var _132=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); +_132.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +function _131(node,_133){ +var icon=node.find("span.tree-icon"); +icon.prev("span.tree-indent").addClass("tree-join"); +}; +function _130(node){ +var _134=node.find("span.tree-indent, span.tree-hit").length; +node.next().find("div.tree-node").each(function(){ +$(this).children("span:eq("+(_134-1)+")").addClass("tree-line"); +}); +}; +}; +function _135(_136,ul,_137,_138){ +var opts=$.data(_136,"tree").options; +_137=$.extend({},opts.queryParams,_137||{}); +var _139=null; +if(_136!=ul){ +var node=$(ul).prev(); +_139=_e0(_136,node[0]); +} +if(opts.onBeforeLoad.call(_136,_139,_137)==false){ +return; +} +var _13a=$(ul).prev().children("span.tree-folder"); +_13a.addClass("tree-loading"); +var _13b=opts.loader.call(_136,_137,function(data){ +_13a.removeClass("tree-loading"); +_120(_136,ul,data); +if(_138){ +_138(); +} +},function(){ +_13a.removeClass("tree-loading"); +opts.onLoadError.apply(_136,arguments); +if(_138){ +_138(); +} +}); +if(_13b==false){ +_13a.removeClass("tree-loading"); +} +}; +function _13c(_13d,_13e,_13f){ +var opts=$.data(_13d,"tree").options; +var hit=$(_13e).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +var node=_e0(_13d,_13e); +if(opts.onBeforeExpand.call(_13d,node)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var ul=$(_13e).next(); +if(ul.length){ +if(opts.animate){ +ul.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +}); +}else{ +ul.css("display","block"); +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +} +}else{ +var _140=$("
    ").insertAfter(_13e); +_135(_13d,_140[0],{id:node.id},function(){ +if(_140.is(":empty")){ +_140.remove(); +} +if(opts.animate){ +_140.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +}); +}else{ +_140.css("display","block"); +node.state="open"; +opts.onExpand.call(_13d,node); +if(_13f){ +_13f(); +} +} +}); +} +}; +function _141(_142,_143){ +var opts=$.data(_142,"tree").options; +var hit=$(_143).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +var node=_e0(_142,_143); +if(opts.onBeforeCollapse.call(_142,node)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +var ul=$(_143).next(); +if(opts.animate){ +ul.slideUp("normal",function(){ +node.state="closed"; +opts.onCollapse.call(_142,node); +}); +}else{ +ul.css("display","none"); +node.state="closed"; +opts.onCollapse.call(_142,node); +} +}; +function _144(_145,_146){ +var hit=$(_146).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +_141(_145,_146); +}else{ +_13c(_145,_146); +} +}; +function _147(_148,_149){ +var _14a=_11f(_148,_149); +if(_149){ +_14a.unshift(_e0(_148,_149)); +} +for(var i=0;i<_14a.length;i++){ +_13c(_148,_14a[i].target); +} +}; +function _14b(_14c,_14d){ +var _14e=[]; +var p=_14f(_14c,_14d); +while(p){ +_14e.unshift(p); +p=_14f(_14c,p.target); +} +for(var i=0;i<_14e.length;i++){ +_13c(_14c,_14e[i].target); +} +}; +function _150(_151,_152){ +var c=$(_151).parent(); +while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ +c=c.parent(); +} +var n=$(_152); +var ntop=n.offset().top; +if(c[0].tagName!="BODY"){ +var ctop=c.offset().top; +if(ntopctop+c.outerHeight()-18){ +c.scrollTop(c.scrollTop()+ntop+n.outerHeight()-ctop-c.outerHeight()+18); +} +} +}else{ +c.scrollTop(ntop); +} +}; +function _153(_154,_155){ +var _156=_11f(_154,_155); +if(_155){ +_156.unshift(_e0(_154,_155)); +} +for(var i=0;i<_156.length;i++){ +_141(_154,_156[i].target); +} +}; +function _157(_158,_159){ +var node=$(_159.parent); +var data=_159.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +var ul; +if(node.length==0){ +ul=$(_158); +}else{ +if(_11b(_158,node[0])){ +var _15a=node.find("span.tree-icon"); +_15a.removeClass("tree-file").addClass("tree-folder tree-folder-open"); +var hit=$("").insertBefore(_15a); +if(hit.prev().length){ +hit.prev().remove(); +} +} +ul=node.next(); +if(!ul.length){ +ul=$("
      ").insertAfter(node); +} +} +_120(_158,ul[0],data,true); +_118(_158,ul.prev()); +}; +function _15b(_15c,_15d){ +var ref=_15d.before||_15d.after; +var _15e=_14f(_15c,ref); +var data=_15d.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +_157(_15c,{parent:(_15e?_15e.target:null),data:data}); +var _15f=_15e?_15e.children:$(_15c).tree("getRoots"); +for(var i=0;i<_15f.length;i++){ +if(_15f[i].domId==$(ref).attr("id")){ +for(var j=data.length-1;j>=0;j--){ +_15f.splice((_15d.before?i:(i+1)),0,data[j]); +} +_15f.splice(_15f.length-data.length,data.length); +break; +} +} +var li=$(); +for(var i=0;i").prependTo(node); +node.next().remove(); +} +_127(_161,_163); +_118(_161,_163.target); +} +_12c(_161,_161); +function del(_164){ +var id=$(_164).attr("id"); +var _165=_14f(_161,_164); +var cc=_165?_165.children:$.data(_161,"tree").data; +for(var i=0;i=0;i--){ +_189.unshift(node.children[i]); +} +} +} +}; +function _18a(_18b,_18c){ +var opts=$.data(_18b,"tree").options; +var node=_e0(_18b,_18c); +if(opts.onBeforeSelect.call(_18b,node)==false){ +return; +} +$(_18b).find("div.tree-node-selected").removeClass("tree-node-selected"); +$(_18c).addClass("tree-node-selected"); +opts.onSelect.call(_18b,node); +}; +function _11b(_18d,_18e){ +return $(_18e).children("span.tree-hit").length==0; +}; +function _18f(_190,_191){ +var opts=$.data(_190,"tree").options; +var node=_e0(_190,_191); +if(opts.onBeforeEdit.call(_190,node)==false){ +return; +} +$(_191).css("position","relative"); +var nt=$(_191).find(".tree-title"); +var _192=nt.outerWidth(); +nt.empty(); +var _193=$("").appendTo(nt); +_193.val(node.text).focus(); +_193.width(_192+20); +_193.height(document.compatMode=="CSS1Compat"?(18-(_193.outerHeight()-_193.height())):18); +_193.bind("click",function(e){ +return false; +}).bind("mousedown",function(e){ +e.stopPropagation(); +}).bind("mousemove",function(e){ +e.stopPropagation(); +}).bind("keydown",function(e){ +if(e.keyCode==13){ +_194(_190,_191); +return false; +}else{ +if(e.keyCode==27){ +_198(_190,_191); +return false; +} +} +}).bind("blur",function(e){ +e.stopPropagation(); +_194(_190,_191); +}); +}; +function _194(_195,_196){ +var opts=$.data(_195,"tree").options; +$(_196).css("position",""); +var _197=$(_196).find("input.tree-editor"); +var val=_197.val(); +_197.remove(); +var node=_e0(_195,_196); +node.text=val; +_127(_195,node); +opts.onAfterEdit.call(_195,node); +}; +function _198(_199,_19a){ +var opts=$.data(_199,"tree").options; +$(_19a).css("position",""); +$(_19a).find("input.tree-editor").remove(); +var node=_e0(_199,_19a); +_127(_199,node); +opts.onCancelEdit.call(_199,node); +}; +function _19b(_19c,q){ +var _19d=$.data(_19c,"tree"); +var opts=_19d.options; +var ids={}; +_12a(_19d.data,function(node){ +if(opts.filter.call(_19c,q,node)){ +$("#"+node.domId).removeClass("tree-node-hidden"); +ids[node.domId]=1; +node.hidden=false; +}else{ +$("#"+node.domId).addClass("tree-node-hidden"); +node.hidden=true; +} +}); +for(var id in ids){ +_19e(id); +} +function _19e(_19f){ +var p=$(_19c).tree("getParent",$("#"+_19f)[0]); +while(p){ +$(p.target).removeClass("tree-node-hidden"); +p.hidden=false; +p=$(_19c).tree("getParent",p.target); +} +}; +}; +$.fn.tree=function(_1a0,_1a1){ +if(typeof _1a0=="string"){ +return $.fn.tree.methods[_1a0](this,_1a1); +} +var _1a0=_1a0||{}; +return this.each(function(){ +var _1a2=$.data(this,"tree"); +var opts; +if(_1a2){ +opts=$.extend(_1a2.options,_1a0); +_1a2.options=opts; +}else{ +opts=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_1a0); +$.data(this,"tree",{options:opts,tree:_d5(this),data:[]}); +var data=$.fn.tree.parseData(this); +if(data.length){ +_120(this,this,data); +} +} +_d8(this); +if(opts.data){ +_120(this,this,$.extend(true,[],opts.data)); +} +_135(this,this); +}); +}; +$.fn.tree.methods={options:function(jq){ +return $.data(jq[0],"tree").options; +},loadData:function(jq,data){ +return jq.each(function(){ +_120(this,this,data); +}); +},getNode:function(jq,_1a3){ +return _e0(jq[0],_1a3); +},getData:function(jq,_1a4){ +return _17d(jq[0],_1a4); +},reload:function(jq,_1a5){ +return jq.each(function(){ +if(_1a5){ +var node=$(_1a5); +var hit=node.children("span.tree-hit"); +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +node.next().remove(); +_13c(this,_1a5); +}else{ +$(this).empty(); +_135(this,this); +} +}); +},getRoot:function(jq,_1a6){ +return _169(jq[0],_1a6); +},getRoots:function(jq){ +return _16d(jq[0]); +},getParent:function(jq,_1a7){ +return _14f(jq[0],_1a7); +},getChildren:function(jq,_1a8){ +return _11f(jq[0],_1a8); +},getChecked:function(jq,_1a9){ +return _176(jq[0],_1a9); +},getSelected:function(jq){ +return _17b(jq[0]); +},isLeaf:function(jq,_1aa){ +return _11b(jq[0],_1aa); +},find:function(jq,id){ +return _182(jq[0],id); +},select:function(jq,_1ab){ +return jq.each(function(){ +_18a(this,_1ab); +}); +},check:function(jq,_1ac){ +return jq.each(function(){ +_104(this,_1ac,true); +}); +},uncheck:function(jq,_1ad){ +return jq.each(function(){ +_104(this,_1ad,false); +}); +},collapse:function(jq,_1ae){ +return jq.each(function(){ +_141(this,_1ae); +}); +},expand:function(jq,_1af){ +return jq.each(function(){ +_13c(this,_1af); +}); +},collapseAll:function(jq,_1b0){ +return jq.each(function(){ +_153(this,_1b0); +}); +},expandAll:function(jq,_1b1){ +return jq.each(function(){ +_147(this,_1b1); +}); +},expandTo:function(jq,_1b2){ +return jq.each(function(){ +_14b(this,_1b2); +}); +},scrollTo:function(jq,_1b3){ +return jq.each(function(){ +_150(this,_1b3); +}); +},toggle:function(jq,_1b4){ +return jq.each(function(){ +_144(this,_1b4); +}); +},append:function(jq,_1b5){ +return jq.each(function(){ +_157(this,_1b5); +}); +},insert:function(jq,_1b6){ +return jq.each(function(){ +_15b(this,_1b6); +}); +},remove:function(jq,_1b7){ +return jq.each(function(){ +_160(this,_1b7); +}); +},pop:function(jq,_1b8){ +var node=jq.tree("getData",_1b8); +jq.tree("remove",_1b8); +return node; +},update:function(jq,_1b9){ +return jq.each(function(){ +_127(this,_1b9); +}); +},enableDnd:function(jq){ +return jq.each(function(){ +_e5(this); +}); +},disableDnd:function(jq){ +return jq.each(function(){ +_e1(this); +}); +},beginEdit:function(jq,_1ba){ +return jq.each(function(){ +_18f(this,_1ba); +}); +},endEdit:function(jq,_1bb){ +return jq.each(function(){ +_194(this,_1bb); +}); +},cancelEdit:function(jq,_1bc){ +return jq.each(function(){ +_198(this,_1bc); +}); +},doFilter:function(jq,q){ +return jq.each(function(){ +_19b(this,q); +}); +}}; +$.fn.tree.parseOptions=function(_1bd){ +var t=$(_1bd); +return $.extend({},$.parser.parseOptions(_1bd,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); +}; +$.fn.tree.parseData=function(_1be){ +var data=[]; +_1bf(data,$(_1be)); +return data; +function _1bf(aa,tree){ +tree.children("li").each(function(){ +var node=$(this); +var item=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(node.attr("checked")?true:undefined)}); +item.text=node.children("span").html(); +if(!item.text){ +item.text=node.html(); +} +var _1c0=node.children("ul"); +if(_1c0.length){ +item.children=[]; +_1bf(item.children,_1c0); +} +aa.push(item); +}); +}; +}; +var _1c1=1; +var _1c2={render:function(_1c3,ul,data){ +var opts=$.data(_1c3,"tree").options; +var _1c4=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; +var cc=_1c5(_1c4,data); +$(ul).append(cc.join("")); +function _1c5(_1c6,_1c7){ +var cc=[]; +for(var i=0;i<_1c7.length;i++){ +var item=_1c7[i]; +if(item.state!="open"&&item.state!="closed"){ +item.state="open"; +} +item.domId="_easyui_tree_"+_1c1++; +cc.push("
    • "); +cc.push("
      "); +for(var j=0;j<_1c6;j++){ +cc.push(""); +} +var _1c8=false; +if(item.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(item.children&&item.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +_1c8=true; +} +} +if(opts.checkbox){ +if((!opts.onlyLeafCheck)||_1c8){ +cc.push(""); +} +} +cc.push(""+opts.formatter.call(_1c3,item)+""); +cc.push("
      "); +if(item.children&&item.children.length){ +var tmp=_1c5(_1c6+1,item.children); +cc.push("
        "); +cc=cc.concat(tmp); +cc.push("
      "); +} +cc.push("
    • "); +} +return cc; +}; +}}; +$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,queryParams:{},formatter:function(node){ +return node.text; +},filter:function(q,node){ +return node.text.toLowerCase().indexOf(q.toLowerCase())>=0; +},loader:function(_1c9,_1ca,_1cb){ +var opts=$(this).tree("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_1c9,dataType:"json",success:function(data){ +_1ca(data); +},error:function(){ +_1cb.apply(this,arguments); +}}); +},loadFilter:function(data,_1cc){ +return data; +},view:_1c2,onBeforeLoad:function(node,_1cd){ +},onLoadSuccess:function(node,data){ +},onLoadError:function(){ +},onClick:function(node){ +},onDblClick:function(node){ +},onBeforeExpand:function(node){ +},onExpand:function(node){ +},onBeforeCollapse:function(node){ +},onCollapse:function(node){ +},onBeforeCheck:function(node,_1ce){ +},onCheck:function(node,_1cf){ +},onBeforeSelect:function(node){ +},onSelect:function(node){ +},onContextMenu:function(e,node){ +},onBeforeDrag:function(node){ +},onStartDrag:function(node){ +},onStopDrag:function(node){ +},onDragEnter:function(_1d0,_1d1){ +},onDragOver:function(_1d2,_1d3){ +},onDragLeave:function(_1d4,_1d5){ +},onBeforeDrop:function(_1d6,_1d7,_1d8){ +},onDrop:function(_1d9,_1da,_1db){ +},onBeforeEdit:function(node){ +},onAfterEdit:function(node){ +},onCancelEdit:function(node){ +}}; +})(jQuery); +(function($){ +function init(_1dc){ +$(_1dc).addClass("progressbar"); +$(_1dc).html("
      "); +$(_1dc).bind("_resize",function(e,_1dd){ +if($(this).hasClass("easyui-fluid")||_1dd){ +_1de(_1dc); +} +return false; +}); +return $(_1dc); +}; +function _1de(_1df,_1e0){ +var opts=$.data(_1df,"progressbar").options; +var bar=$.data(_1df,"progressbar").bar; +if(_1e0){ +opts.width=_1e0; +} +bar._size(opts); +bar.find("div.progressbar-text").css("width",bar.width()); +bar.find("div.progressbar-text,div.progressbar-value").css({height:bar.height()+"px",lineHeight:bar.height()+"px"}); +}; +$.fn.progressbar=function(_1e1,_1e2){ +if(typeof _1e1=="string"){ +var _1e3=$.fn.progressbar.methods[_1e1]; +if(_1e3){ +return _1e3(this,_1e2); +} +} +_1e1=_1e1||{}; +return this.each(function(){ +var _1e4=$.data(this,"progressbar"); +if(_1e4){ +$.extend(_1e4.options,_1e1); +}else{ +_1e4=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_1e1),bar:init(this)}); +} +$(this).progressbar("setValue",_1e4.options.value); +_1de(this); +}); +}; +$.fn.progressbar.methods={options:function(jq){ +return $.data(jq[0],"progressbar").options; +},resize:function(jq,_1e5){ +return jq.each(function(){ +_1de(this,_1e5); +}); +},getValue:function(jq){ +return $.data(jq[0],"progressbar").options.value; +},setValue:function(jq,_1e6){ +if(_1e6<0){ +_1e6=0; +} +if(_1e6>100){ +_1e6=100; +} +return jq.each(function(){ +var opts=$.data(this,"progressbar").options; +var text=opts.text.replace(/{value}/,_1e6); +var _1e7=opts.value; +opts.value=_1e6; +$(this).find("div.progressbar-value").width(_1e6+"%"); +$(this).find("div.progressbar-text").html(text); +if(_1e7!=_1e6){ +opts.onChange.call(this,_1e6,_1e7); +} +}); +}}; +$.fn.progressbar.parseOptions=function(_1e8){ +return $.extend({},$.parser.parseOptions(_1e8,["width","height","text",{value:"number"}])); +}; +$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_1e9,_1ea){ +}}; +})(jQuery); +(function($){ +function init(_1eb){ +$(_1eb).addClass("tooltip-f"); +}; +function _1ec(_1ed){ +var opts=$.data(_1ed,"tooltip").options; +$(_1ed).unbind(".tooltip").bind(opts.showEvent+".tooltip",function(e){ +$(_1ed).tooltip("show",e); +}).bind(opts.hideEvent+".tooltip",function(e){ +$(_1ed).tooltip("hide",e); +}).bind("mousemove.tooltip",function(e){ +if(opts.trackMouse){ +opts.trackMouseX=e.pageX; +opts.trackMouseY=e.pageY; +$(_1ed).tooltip("reposition"); +} +}); +}; +function _1ee(_1ef){ +var _1f0=$.data(_1ef,"tooltip"); +if(_1f0.showTimer){ +clearTimeout(_1f0.showTimer); +_1f0.showTimer=null; +} +if(_1f0.hideTimer){ +clearTimeout(_1f0.hideTimer); +_1f0.hideTimer=null; +} +}; +function _1f1(_1f2){ +var _1f3=$.data(_1f2,"tooltip"); +if(!_1f3||!_1f3.tip){ +return; +} +var opts=_1f3.options; +var tip=_1f3.tip; +var pos={left:-100000,top:-100000}; +if($(_1f2).is(":visible")){ +pos=_1f4(opts.position); +if(opts.position=="top"&&pos.top<0){ +pos=_1f4("bottom"); +}else{ +if((opts.position=="bottom")&&(pos.top+tip._outerHeight()>$(window)._outerHeight()+$(document).scrollTop())){ +pos=_1f4("top"); +} +} +if(pos.left<0){ +if(opts.position=="left"){ +pos=_1f4("right"); +}else{ +$(_1f2).tooltip("arrow").css("left",tip._outerWidth()/2+pos.left); +pos.left=0; +} +}else{ +if(pos.left+tip._outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +if(opts.position=="right"){ +pos=_1f4("left"); +}else{ +var left=pos.left; +pos.left=$(window)._outerWidth()+$(document)._scrollLeft()-tip._outerWidth(); +$(_1f2).tooltip("arrow").css("left",tip._outerWidth()/2-(pos.left-left)); +} +} +} +} +tip.css({left:pos.left,top:pos.top,zIndex:(opts.zIndex!=undefined?opts.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); +opts.onPosition.call(_1f2,pos.left,pos.top); +function _1f4(_1f5){ +opts.position=_1f5||"bottom"; +tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+opts.position); +var left,top; +if(opts.trackMouse){ +t=$(); +left=opts.trackMouseX+opts.deltaX; +top=opts.trackMouseY+opts.deltaY; +}else{ +var t=$(_1f2); +left=t.offset().left+opts.deltaX; +top=t.offset().top+opts.deltaY; +} +switch(opts.position){ +case "right": +left+=t._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "left": +left-=tip._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "top": +left-=(tip._outerWidth()-t._outerWidth())/2; +top-=tip._outerHeight()+12+(opts.trackMouse?12:0); +break; +case "bottom": +left-=(tip._outerWidth()-t._outerWidth())/2; +top+=t._outerHeight()+12+(opts.trackMouse?12:0); +break; +} +return {left:left,top:top}; +}; +}; +function _1f6(_1f7,e){ +var _1f8=$.data(_1f7,"tooltip"); +var opts=_1f8.options; +var tip=_1f8.tip; +if(!tip){ +tip=$("
      "+"
      "+"
      "+"
      "+"
      ").appendTo("body"); +_1f8.tip=tip; +_1f9(_1f7); +} +_1ee(_1f7); +_1f8.showTimer=setTimeout(function(){ +$(_1f7).tooltip("reposition"); +tip.show(); +opts.onShow.call(_1f7,e); +var _1fa=tip.children(".tooltip-arrow-outer"); +var _1fb=tip.children(".tooltip-arrow"); +var bc="border-"+opts.position+"-color"; +_1fa.add(_1fb).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); +_1fa.css(bc,tip.css(bc)); +_1fb.css(bc,tip.css("backgroundColor")); +},opts.showDelay); +}; +function _1fc(_1fd,e){ +var _1fe=$.data(_1fd,"tooltip"); +if(_1fe&&_1fe.tip){ +_1ee(_1fd); +_1fe.hideTimer=setTimeout(function(){ +_1fe.tip.hide(); +_1fe.options.onHide.call(_1fd,e); +},_1fe.options.hideDelay); +} +}; +function _1f9(_1ff,_200){ +var _201=$.data(_1ff,"tooltip"); +var opts=_201.options; +if(_200){ +opts.content=_200; +} +if(!_201.tip){ +return; +} +var cc=typeof opts.content=="function"?opts.content.call(_1ff):opts.content; +_201.tip.children(".tooltip-content").html(cc); +opts.onUpdate.call(_1ff,cc); +}; +function _202(_203){ +var _204=$.data(_203,"tooltip"); +if(_204){ +_1ee(_203); +var opts=_204.options; +if(_204.tip){ +_204.tip.remove(); +} +if(opts._title){ +$(_203).attr("title",opts._title); +} +$.removeData(_203,"tooltip"); +$(_203).unbind(".tooltip").removeClass("tooltip-f"); +opts.onDestroy.call(_203); +} +}; +$.fn.tooltip=function(_205,_206){ +if(typeof _205=="string"){ +return $.fn.tooltip.methods[_205](this,_206); +} +_205=_205||{}; +return this.each(function(){ +var _207=$.data(this,"tooltip"); +if(_207){ +$.extend(_207.options,_205); +}else{ +$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_205)}); +init(this); +} +_1ec(this); +_1f9(this); +}); +}; +$.fn.tooltip.methods={options:function(jq){ +return $.data(jq[0],"tooltip").options; +},tip:function(jq){ +return $.data(jq[0],"tooltip").tip; +},arrow:function(jq){ +return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); +},show:function(jq,e){ +return jq.each(function(){ +_1f6(this,e); +}); +},hide:function(jq,e){ +return jq.each(function(){ +_1fc(this,e); +}); +},update:function(jq,_208){ +return jq.each(function(){ +_1f9(this,_208); +}); +},reposition:function(jq){ +return jq.each(function(){ +_1f1(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_202(this); +}); +}}; +$.fn.tooltip.parseOptions=function(_209){ +var t=$(_209); +var opts=$.extend({},$.parser.parseOptions(_209,["position","showEvent","hideEvent","content",{trackMouse:"boolean",deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); +t.attr("title",""); +if(!opts.content){ +opts.content=opts._title; +} +return opts; +}; +$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ +},onHide:function(e){ +},onUpdate:function(_20a){ +},onPosition:function(left,top){ +},onDestroy:function(){ +}}; +})(jQuery); +(function($){ +$.fn._remove=function(){ +return this.each(function(){ +$(this).remove(); +try{ +this.outerHTML=""; +} +catch(err){ +} +}); +}; +function _20b(node){ +node._remove(); +}; +function _20c(_20d,_20e){ +var _20f=$.data(_20d,"panel"); +var opts=_20f.options; +var _210=_20f.panel; +var _211=_210.children(".panel-header"); +var _212=_210.children(".panel-body"); +var _213=_210.children(".panel-footer"); +if(_20e){ +$.extend(opts,{width:_20e.width,height:_20e.height,minWidth:_20e.minWidth,maxWidth:_20e.maxWidth,minHeight:_20e.minHeight,maxHeight:_20e.maxHeight,left:_20e.left,top:_20e.top}); +} +_210._size(opts); +_211.add(_212)._outerWidth(_210.width()); +if(!isNaN(parseInt(opts.height))){ +_212._outerHeight(_210.height()-_211._outerHeight()-_213._outerHeight()); +}else{ +_212.css("height",""); +var min=$.parser.parseValue("minHeight",opts.minHeight,_210.parent()); +var max=$.parser.parseValue("maxHeight",opts.maxHeight,_210.parent()); +var _214=_211._outerHeight()+_213._outerHeight()+_210._outerHeight()-_210.height(); +_212._size("minHeight",min?(min-_214):""); +_212._size("maxHeight",max?(max-_214):""); +} +_210.css({height:"",minHeight:"",maxHeight:"",left:opts.left,top:opts.top}); +opts.onResize.apply(_20d,[opts.width,opts.height]); +$(_20d).panel("doLayout"); +}; +function _215(_216,_217){ +var opts=$.data(_216,"panel").options; +var _218=$.data(_216,"panel").panel; +if(_217){ +if(_217.left!=null){ +opts.left=_217.left; +} +if(_217.top!=null){ +opts.top=_217.top; +} +} +_218.css({left:opts.left,top:opts.top}); +opts.onMove.apply(_216,[opts.left,opts.top]); +}; +function _219(_21a){ +$(_21a).addClass("panel-body")._size("clear"); +var _21b=$("
      ").insertBefore(_21a); +_21b[0].appendChild(_21a); +_21b.bind("_resize",function(e,_21c){ +if($(this).hasClass("easyui-fluid")||_21c){ +_20c(_21a); +} +return false; +}); +return _21b; +}; +function _21d(_21e){ +var _21f=$.data(_21e,"panel"); +var opts=_21f.options; +var _220=_21f.panel; +_220.css(opts.style); +_220.addClass(opts.cls); +_221(); +_222(); +var _223=$(_21e).panel("header"); +var body=$(_21e).panel("body"); +var _224=$(_21e).siblings(".panel-footer"); +if(opts.border){ +_223.removeClass("panel-header-noborder"); +body.removeClass("panel-body-noborder"); +_224.removeClass("panel-footer-noborder"); +}else{ +_223.addClass("panel-header-noborder"); +body.addClass("panel-body-noborder"); +_224.addClass("panel-footer-noborder"); +} +_223.addClass(opts.headerCls); +body.addClass(opts.bodyCls); +$(_21e).attr("id",opts.id||""); +if(opts.content){ +$(_21e).panel("clear"); +$(_21e).html(opts.content); +$.parser.parse($(_21e)); +} +function _221(){ +if(opts.noheader||(!opts.title&&!opts.header)){ +_20b(_220.children(".panel-header")); +_220.children(".panel-body").addClass("panel-body-noheader"); +}else{ +if(opts.header){ +$(opts.header).addClass("panel-header").prependTo(_220); +}else{ +var _225=_220.children(".panel-header"); +if(!_225.length){ +_225=$("
      ").prependTo(_220); +} +if(!$.isArray(opts.tools)){ +_225.find("div.panel-tool .panel-tool-a").appendTo(opts.tools); +} +_225.empty(); +var _226=$("
      ").html(opts.title).appendTo(_225); +if(opts.iconCls){ +_226.addClass("panel-with-icon"); +$("
      ").addClass(opts.iconCls).appendTo(_225); +} +var tool=$("
      ").appendTo(_225); +tool.bind("click",function(e){ +e.stopPropagation(); +}); +if(opts.tools){ +if($.isArray(opts.tools)){ +$.map(opts.tools,function(t){ +_227(tool,t.iconCls,eval(t.handler)); +}); +}else{ +$(opts.tools).children().each(function(){ +$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(tool); +}); +} +} +if(opts.collapsible){ +_227(tool,"panel-tool-collapse",function(){ +if(opts.collapsed==true){ +_245(_21e,true); +}else{ +_238(_21e,true); +} +}); +} +if(opts.minimizable){ +_227(tool,"panel-tool-min",function(){ +_24b(_21e); +}); +} +if(opts.maximizable){ +_227(tool,"panel-tool-max",function(){ +if(opts.maximized==true){ +_24e(_21e); +}else{ +_237(_21e); +} +}); +} +if(opts.closable){ +_227(tool,"panel-tool-close",function(){ +_239(_21e); +}); +} +} +_220.children("div.panel-body").removeClass("panel-body-noheader"); +} +}; +function _227(c,icon,_228){ +var a=$("").addClass(icon).appendTo(c); +a.bind("click",_228); +}; +function _222(){ +if(opts.footer){ +$(opts.footer).addClass("panel-footer").appendTo(_220); +$(_21e).addClass("panel-body-nobottom"); +}else{ +_220.children(".panel-footer").remove(); +$(_21e).removeClass("panel-body-nobottom"); +} +}; +}; +function _229(_22a,_22b){ +var _22c=$.data(_22a,"panel"); +var opts=_22c.options; +if(_22d){ +opts.queryParams=_22b; +} +if(!opts.href){ +return; +} +if(!_22c.isLoaded||!opts.cache){ +var _22d=$.extend({},opts.queryParams); +if(opts.onBeforeLoad.call(_22a,_22d)==false){ +return; +} +_22c.isLoaded=false; +$(_22a).panel("clear"); +if(opts.loadingMessage){ +$(_22a).html($("
      ").html(opts.loadingMessage)); +} +opts.loader.call(_22a,_22d,function(data){ +var _22e=opts.extractor.call(_22a,data); +$(_22a).html(_22e); +$.parser.parse($(_22a)); +opts.onLoad.apply(_22a,arguments); +_22c.isLoaded=true; +},function(){ +opts.onLoadError.apply(_22a,arguments); +}); +} +}; +function _22f(_230){ +var t=$(_230); +t.find(".combo-f").each(function(){ +$(this).combo("destroy"); +}); +t.find(".m-btn").each(function(){ +$(this).menubutton("destroy"); +}); +t.find(".s-btn").each(function(){ +$(this).splitbutton("destroy"); +}); +t.find(".tooltip-f").each(function(){ +$(this).tooltip("destroy"); +}); +t.children("div").each(function(){ +$(this)._size("unfit"); +}); +t.empty(); +}; +function _231(_232){ +$(_232).panel("doLayout",true); +}; +function _233(_234,_235){ +var opts=$.data(_234,"panel").options; +var _236=$.data(_234,"panel").panel; +if(_235!=true){ +if(opts.onBeforeOpen.call(_234)==false){ +return; +} +} +_236.stop(true,true); +if($.isFunction(opts.openAnimation)){ +opts.openAnimation.call(_234,cb); +}else{ +switch(opts.openAnimation){ +case "slide": +_236.slideDown(opts.openDuration,cb); +break; +case "fade": +_236.fadeIn(opts.openDuration,cb); +break; +case "show": +_236.show(opts.openDuration,cb); +break; +default: +_236.show(); +cb(); +} +} +function cb(){ +opts.closed=false; +opts.minimized=false; +var tool=_236.children(".panel-header").find("a.panel-tool-restore"); +if(tool.length){ +opts.maximized=true; +} +opts.onOpen.call(_234); +if(opts.maximized==true){ +opts.maximized=false; +_237(_234); +} +if(opts.collapsed==true){ +opts.collapsed=false; +_238(_234); +} +if(!opts.collapsed){ +_229(_234); +_231(_234); +} +}; +}; +function _239(_23a,_23b){ +var opts=$.data(_23a,"panel").options; +var _23c=$.data(_23a,"panel").panel; +if(_23b!=true){ +if(opts.onBeforeClose.call(_23a)==false){ +return; +} +} +_23c.stop(true,true); +_23c._size("unfit"); +if($.isFunction(opts.closeAnimation)){ +opts.closeAnimation.call(_23a,cb); +}else{ +switch(opts.closeAnimation){ +case "slide": +_23c.slideUp(opts.closeDuration,cb); +break; +case "fade": +_23c.fadeOut(opts.closeDuration,cb); +break; +case "hide": +_23c.hide(opts.closeDuration,cb); +break; +default: +_23c.hide(); +cb(); +} +} +function cb(){ +opts.closed=true; +opts.onClose.call(_23a); +}; +}; +function _23d(_23e,_23f){ +var _240=$.data(_23e,"panel"); +var opts=_240.options; +var _241=_240.panel; +if(_23f!=true){ +if(opts.onBeforeDestroy.call(_23e)==false){ +return; +} +} +$(_23e).panel("clear").panel("clear","footer"); +_20b(_241); +opts.onDestroy.call(_23e); +}; +function _238(_242,_243){ +var opts=$.data(_242,"panel").options; +var _244=$.data(_242,"panel").panel; +var body=_244.children(".panel-body"); +var tool=_244.children(".panel-header").find("a.panel-tool-collapse"); +if(opts.collapsed==true){ +return; +} +body.stop(true,true); +if(opts.onBeforeCollapse.call(_242)==false){ +return; +} +tool.addClass("panel-tool-expand"); +if(_243==true){ +body.slideUp("normal",function(){ +opts.collapsed=true; +opts.onCollapse.call(_242); +}); +}else{ +body.hide(); +opts.collapsed=true; +opts.onCollapse.call(_242); +} +}; +function _245(_246,_247){ +var opts=$.data(_246,"panel").options; +var _248=$.data(_246,"panel").panel; +var body=_248.children(".panel-body"); +var tool=_248.children(".panel-header").find("a.panel-tool-collapse"); +if(opts.collapsed==false){ +return; +} +body.stop(true,true); +if(opts.onBeforeExpand.call(_246)==false){ +return; +} +tool.removeClass("panel-tool-expand"); +if(_247==true){ +body.slideDown("normal",function(){ +opts.collapsed=false; +opts.onExpand.call(_246); +_229(_246); +_231(_246); +}); +}else{ +body.show(); +opts.collapsed=false; +opts.onExpand.call(_246); +_229(_246); +_231(_246); +} +}; +function _237(_249){ +var opts=$.data(_249,"panel").options; +var _24a=$.data(_249,"panel").panel; +var tool=_24a.children(".panel-header").find("a.panel-tool-max"); +if(opts.maximized==true){ +return; +} +tool.addClass("panel-tool-restore"); +if(!$.data(_249,"panel").original){ +$.data(_249,"panel").original={width:opts.width,height:opts.height,left:opts.left,top:opts.top,fit:opts.fit}; +} +opts.left=0; +opts.top=0; +opts.fit=true; +_20c(_249); +opts.minimized=false; +opts.maximized=true; +opts.onMaximize.call(_249); +}; +function _24b(_24c){ +var opts=$.data(_24c,"panel").options; +var _24d=$.data(_24c,"panel").panel; +_24d._size("unfit"); +_24d.hide(); +opts.minimized=true; +opts.maximized=false; +opts.onMinimize.call(_24c); +}; +function _24e(_24f){ +var opts=$.data(_24f,"panel").options; +var _250=$.data(_24f,"panel").panel; +var tool=_250.children(".panel-header").find("a.panel-tool-max"); +if(opts.maximized==false){ +return; +} +_250.show(); +tool.removeClass("panel-tool-restore"); +$.extend(opts,$.data(_24f,"panel").original); +_20c(_24f); +opts.minimized=false; +opts.maximized=false; +$.data(_24f,"panel").original=null; +opts.onRestore.call(_24f); +}; +function _251(_252,_253){ +$.data(_252,"panel").options.title=_253; +$(_252).panel("header").find("div.panel-title").html(_253); +}; +var _254=null; +$(window).unbind(".panel").bind("resize.panel",function(){ +if(_254){ +clearTimeout(_254); +} +_254=setTimeout(function(){ +var _255=$("body.layout"); +if(_255.length){ +_255.layout("resize"); +$("body").children(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +}else{ +$("body").panel("doLayout"); +} +_254=null; +},100); +}); +$.fn.panel=function(_256,_257){ +if(typeof _256=="string"){ +return $.fn.panel.methods[_256](this,_257); +} +_256=_256||{}; +return this.each(function(){ +var _258=$.data(this,"panel"); +var opts; +if(_258){ +opts=$.extend(_258.options,_256); +_258.isLoaded=false; +}else{ +opts=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_256); +$(this).attr("title",""); +_258=$.data(this,"panel",{options:opts,panel:_219(this),isLoaded:false}); +} +_21d(this); +if(opts.doSize==true){ +_258.panel.css("display","block"); +_20c(this); +} +if(opts.closed==true||opts.minimized==true){ +_258.panel.hide(); +}else{ +_233(this); +} +}); +}; +$.fn.panel.methods={options:function(jq){ +return $.data(jq[0],"panel").options; +},panel:function(jq){ +return $.data(jq[0],"panel").panel; +},header:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-header"); +},footer:function(jq){ +return jq.panel("panel").children(".panel-footer"); +},body:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-body"); +},setTitle:function(jq,_259){ +return jq.each(function(){ +_251(this,_259); +}); +},open:function(jq,_25a){ +return jq.each(function(){ +_233(this,_25a); +}); +},close:function(jq,_25b){ +return jq.each(function(){ +_239(this,_25b); +}); +},destroy:function(jq,_25c){ +return jq.each(function(){ +_23d(this,_25c); +}); +},clear:function(jq,type){ +return jq.each(function(){ +_22f(type=="footer"?$(this).panel("footer"):this); +}); +},refresh:function(jq,href){ +return jq.each(function(){ +var _25d=$.data(this,"panel"); +_25d.isLoaded=false; +if(href){ +if(typeof href=="string"){ +_25d.options.href=href; +}else{ +_25d.options.queryParams=href; +} +} +_229(this); +}); +},resize:function(jq,_25e){ +return jq.each(function(){ +_20c(this,_25e); +}); +},doLayout:function(jq,all){ +return jq.each(function(){ +_25f(this,"body"); +_25f($(this).siblings(".panel-footer")[0],"footer"); +function _25f(_260,type){ +if(!_260){ +return; +} +var _261=_260==$("body")[0]; +var s=$(_260).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible,.easyui-fluid:visible").filter(function(_262,el){ +var p=$(el).parents(".panel-"+type+":first"); +return _261?p.length==0:p[0]==_260; +}); +s.each(function(){ +$(this).triggerHandler("_resize",[all||false]); +}); +}; +}); +},move:function(jq,_263){ +return jq.each(function(){ +_215(this,_263); +}); +},maximize:function(jq){ +return jq.each(function(){ +_237(this); +}); +},minimize:function(jq){ +return jq.each(function(){ +_24b(this); +}); +},restore:function(jq){ +return jq.each(function(){ +_24e(this); +}); +},collapse:function(jq,_264){ +return jq.each(function(){ +_238(this,_264); +}); +},expand:function(jq,_265){ +return jq.each(function(){ +_245(this,_265); +}); +}}; +$.fn.panel.parseOptions=function(_266){ +var t=$(_266); +var hh=t.children(".panel-header,header"); +var ff=t.children(".panel-footer,footer"); +return $.extend({},$.parser.parseOptions(_266,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href","method","header","footer",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"},"openAnimation","closeAnimation",{openDuration:"number",closeDuration:"number"},]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined),header:(hh.length?hh.removeClass("panel-header"):undefined),footer:(ff.length?ff.removeClass("panel-footer"):undefined)}); +}; +$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,openAnimation:false,openDuration:400,closeAnimation:false,closeDuration:400,tools:null,footer:null,header:null,queryParams:{},method:"get",href:null,loadingMessage:"Loading...",loader:function(_267,_268,_269){ +var opts=$(this).panel("options"); +if(!opts.href){ +return false; +} +$.ajax({type:opts.method,url:opts.href,cache:false,data:_267,dataType:"html",success:function(data){ +_268(data); +},error:function(){ +_269.apply(this,arguments); +}}); +},extractor:function(data){ +var _26a=/]*>((.|[\n\r])*)<\/body>/im; +var _26b=_26a.exec(data); +if(_26b){ +return _26b[1]; +}else{ +return data; +} +},onBeforeLoad:function(_26c){ +},onLoad:function(){ +},onLoadError:function(){ +},onBeforeOpen:function(){ +},onOpen:function(){ +},onBeforeClose:function(){ +},onClose:function(){ +},onBeforeDestroy:function(){ +},onDestroy:function(){ +},onResize:function(_26d,_26e){ +},onMove:function(left,top){ +},onMaximize:function(){ +},onRestore:function(){ +},onMinimize:function(){ +},onBeforeCollapse:function(){ +},onBeforeExpand:function(){ +},onCollapse:function(){ +},onExpand:function(){ +}}; +})(jQuery); +(function($){ +function _26f(_270,_271){ +var _272=$.data(_270,"window"); +if(_271){ +if(_271.left!=null){ +_272.options.left=_271.left; +} +if(_271.top!=null){ +_272.options.top=_271.top; +} +} +$(_270).panel("move",_272.options); +if(_272.shadow){ +_272.shadow.css({left:_272.options.left,top:_272.options.top}); +} +}; +function _273(_274,_275){ +var opts=$.data(_274,"window").options; +var pp=$(_274).window("panel"); +var _276=pp._outerWidth(); +if(opts.inline){ +var _277=pp.parent(); +opts.left=Math.ceil((_277.width()-_276)/2+_277.scrollLeft()); +}else{ +opts.left=Math.ceil(($(window)._outerWidth()-_276)/2+$(document).scrollLeft()); +} +if(_275){ +_26f(_274); +} +}; +function _278(_279,_27a){ +var opts=$.data(_279,"window").options; +var pp=$(_279).window("panel"); +var _27b=pp._outerHeight(); +if(opts.inline){ +var _27c=pp.parent(); +opts.top=Math.ceil((_27c.height()-_27b)/2+_27c.scrollTop()); +}else{ +opts.top=Math.ceil(($(window)._outerHeight()-_27b)/2+$(document).scrollTop()); +} +if(_27a){ +_26f(_279); +} +}; +function _27d(_27e){ +var _27f=$.data(_27e,"window"); +var opts=_27f.options; +var win=$(_27e).panel($.extend({},_27f.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(opts.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ +if(opts.onBeforeDestroy.call(_27e)==false){ +return false; +} +if(_27f.shadow){ +_27f.shadow.remove(); +} +if(_27f.mask){ +_27f.mask.remove(); +} +},onClose:function(){ +if(_27f.shadow){ +_27f.shadow.hide(); +} +if(_27f.mask){ +_27f.mask.hide(); +} +opts.onClose.call(_27e); +},onOpen:function(){ +if(_27f.mask){ +_27f.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); +} +if(_27f.shadow){ +_27f.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:opts.left,top:opts.top,width:_27f.window._outerWidth(),height:_27f.window._outerHeight()}); +} +_27f.window.css("z-index",$.fn.window.defaults.zIndex++); +opts.onOpen.call(_27e); +},onResize:function(_280,_281){ +var _282=$(this).panel("options"); +$.extend(opts,{width:_282.width,height:_282.height,left:_282.left,top:_282.top}); +if(_27f.shadow){ +_27f.shadow.css({left:opts.left,top:opts.top,width:_27f.window._outerWidth(),height:_27f.window._outerHeight()}); +} +opts.onResize.call(_27e,_280,_281); +},onMinimize:function(){ +if(_27f.shadow){ +_27f.shadow.hide(); +} +if(_27f.mask){ +_27f.mask.hide(); +} +_27f.options.onMinimize.call(_27e); +},onBeforeCollapse:function(){ +if(opts.onBeforeCollapse.call(_27e)==false){ +return false; +} +if(_27f.shadow){ +_27f.shadow.hide(); +} +},onExpand:function(){ +if(_27f.shadow){ +_27f.shadow.show(); +} +opts.onExpand.call(_27e); +}})); +_27f.window=win.panel("panel"); +if(_27f.mask){ +_27f.mask.remove(); +} +if(opts.modal==true){ +_27f.mask=$("
      ").insertAfter(_27f.window); +_27f.mask.css({width:(opts.inline?_27f.mask.parent().width():_283().width),height:(opts.inline?_27f.mask.parent().height():_283().height),display:"none"}); +} +if(_27f.shadow){ +_27f.shadow.remove(); +} +if(opts.shadow==true){ +_27f.shadow=$("
      ").insertAfter(_27f.window); +_27f.shadow.css({display:"none"}); +} +if(opts.left==null){ +_273(_27e); +} +if(opts.top==null){ +_278(_27e); +} +_26f(_27e); +if(!opts.closed){ +win.window("open"); +} +}; +function _284(_285){ +var _286=$.data(_285,"window"); +_286.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_286.options.draggable==false,onStartDrag:function(e){ +if(_286.mask){ +_286.mask.css("z-index",$.fn.window.defaults.zIndex++); +} +if(_286.shadow){ +_286.shadow.css("z-index",$.fn.window.defaults.zIndex++); +} +_286.window.css("z-index",$.fn.window.defaults.zIndex++); +if(!_286.proxy){ +_286.proxy=$("
      ").insertAfter(_286.window); +} +_286.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_286.proxy._outerWidth(_286.window._outerWidth()); +_286.proxy._outerHeight(_286.window._outerHeight()); +setTimeout(function(){ +if(_286.proxy){ +_286.proxy.show(); +} +},500); +},onDrag:function(e){ +_286.proxy.css({display:"block",left:e.data.left,top:e.data.top}); +return false; +},onStopDrag:function(e){ +_286.options.left=e.data.left; +_286.options.top=e.data.top; +$(_285).window("move"); +_286.proxy.remove(); +_286.proxy=null; +}}); +_286.window.resizable({disabled:_286.options.resizable==false,onStartResize:function(e){ +if(_286.pmask){ +_286.pmask.remove(); +} +_286.pmask=$("
      ").insertAfter(_286.window); +_286.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_286.window._outerWidth(),height:_286.window._outerHeight()}); +if(_286.proxy){ +_286.proxy.remove(); +} +_286.proxy=$("
      ").insertAfter(_286.window); +_286.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_286.proxy._outerWidth(e.data.width)._outerHeight(e.data.height); +},onResize:function(e){ +_286.proxy.css({left:e.data.left,top:e.data.top}); +_286.proxy._outerWidth(e.data.width); +_286.proxy._outerHeight(e.data.height); +return false; +},onStopResize:function(e){ +$(_285).window("resize",e.data); +_286.pmask.remove(); +_286.pmask=null; +_286.proxy.remove(); +_286.proxy=null; +}}); +}; +function _283(){ +if(document.compatMode=="BackCompat"){ +return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; +}else{ +return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; +} +}; +$(window).resize(function(){ +$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); +setTimeout(function(){ +$("body>div.window-mask").css({width:_283().width,height:_283().height}); +},50); +}); +$.fn.window=function(_287,_288){ +if(typeof _287=="string"){ +var _289=$.fn.window.methods[_287]; +if(_289){ +return _289(this,_288); +}else{ +return this.panel(_287,_288); +} +} +_287=_287||{}; +return this.each(function(){ +var _28a=$.data(this,"window"); +if(_28a){ +$.extend(_28a.options,_287); +}else{ +_28a=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_287)}); +if(!_28a.options.inline){ +document.body.appendChild(this); +} +} +_27d(this); +_284(this); +}); +}; +$.fn.window.methods={options:function(jq){ +var _28b=jq.panel("options"); +var _28c=$.data(jq[0],"window").options; +return $.extend(_28c,{closed:_28b.closed,collapsed:_28b.collapsed,minimized:_28b.minimized,maximized:_28b.maximized}); +},window:function(jq){ +return $.data(jq[0],"window").window; +},move:function(jq,_28d){ +return jq.each(function(){ +_26f(this,_28d); +}); +},hcenter:function(jq){ +return jq.each(function(){ +_273(this,true); +}); +},vcenter:function(jq){ +return jq.each(function(){ +_278(this,true); +}); +},center:function(jq){ +return jq.each(function(){ +_273(this); +_278(this); +_26f(this); +}); +}}; +$.fn.window.parseOptions=function(_28e){ +return $.extend({},$.fn.panel.parseOptions(_28e),$.parser.parseOptions(_28e,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); +}; +$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); +})(jQuery); +(function($){ +function _28f(_290){ +var opts=$.data(_290,"dialog").options; +opts.inited=false; +$(_290).window($.extend({},opts,{onResize:function(w,h){ +if(opts.inited){ +_295(this); +opts.onResize.call(this,w,h); +} +}})); +var win=$(_290).window("window"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$(_290).siblings("div.dialog-toolbar").remove(); +var _291=$("
      ").appendTo(win); +var tr=_291.find("tr"); +for(var i=0;i
      ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("dialog-toolbar").appendTo(win); +$(opts.toolbar).show(); +} +}else{ +$(_290).siblings("div.dialog-toolbar").remove(); +} +if(opts.buttons){ +if($.isArray(opts.buttons)){ +$(_290).siblings("div.dialog-button").remove(); +var _292=$("
      ").appendTo(win); +for(var i=0;i").appendTo(_292); +if(p.handler){ +_293[0].onclick=p.handler; +} +_293.linkbutton(p); +} +}else{ +$(opts.buttons).addClass("dialog-button").appendTo(win); +$(opts.buttons).show(); +} +}else{ +$(_290).siblings("div.dialog-button").remove(); +} +opts.inited=true; +var _294=opts.closed; +win.show(); +$(_290).window("resize"); +if(_294){ +win.hide(); +} +}; +function _295(_296,_297){ +var t=$(_296); +var opts=t.dialog("options"); +var _298=opts.noheader; +var tb=t.siblings(".dialog-toolbar"); +var bb=t.siblings(".dialog-button"); +tb.insertBefore(_296).css({position:"relative",borderTopWidth:(_298?1:0),top:(_298?tb.length:0)}); +bb.insertAfter(_296).css({position:"relative",top:-1}); +tb.add(bb)._outerWidth(t._outerWidth()).find(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +if(!isNaN(parseInt(opts.height))){ +t._outerHeight(t._outerHeight()-tb._outerHeight()-bb._outerHeight()); +} +var _299=$.data(_296,"window").shadow; +if(_299){ +var cc=t.panel("panel"); +_299.css({width:cc._outerWidth(),height:cc._outerHeight()}); +} +}; +$.fn.dialog=function(_29a,_29b){ +if(typeof _29a=="string"){ +var _29c=$.fn.dialog.methods[_29a]; +if(_29c){ +return _29c(this,_29b); +}else{ +return this.window(_29a,_29b); +} +} +_29a=_29a||{}; +return this.each(function(){ +var _29d=$.data(this,"dialog"); +if(_29d){ +$.extend(_29d.options,_29a); +}else{ +$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_29a)}); +} +_28f(this); +}); +}; +$.fn.dialog.methods={options:function(jq){ +var _29e=$.data(jq[0],"dialog").options; +var _29f=jq.panel("options"); +$.extend(_29e,{width:_29f.width,height:_29f.height,left:_29f.left,top:_29f.top,closed:_29f.closed,collapsed:_29f.collapsed,minimized:_29f.minimized,maximized:_29f.maximized}); +return _29e; +},dialog:function(jq){ +return jq.window("window"); +}}; +$.fn.dialog.parseOptions=function(_2a0){ +var t=$(_2a0); +return $.extend({},$.fn.window.parseOptions(_2a0),$.parser.parseOptions(_2a0,["toolbar","buttons"]),{toolbar:(t.children(".dialog-toolbar").length?t.children(".dialog-toolbar").removeClass("dialog-toolbar"):undefined),buttons:(t.children(".dialog-button").length?t.children(".dialog-button").removeClass("dialog-button"):undefined)}); +}; +$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); +})(jQuery); +(function($){ +function _2a1(){ +$(document).unbind(".messager").bind("keydown.messager",function(e){ +if(e.keyCode==27){ +$("body").children("div.messager-window").children("div.messager-body").each(function(){ +$(this).window("close"); +}); +}else{ +if(e.keyCode==9){ +var win=$("body").children("div.messager-window").children("div.messager-body"); +if(!win.length){ +return; +} +var _2a2=win.find(".messager-input,.messager-button .l-btn"); +for(var i=0;i<_2a2.length;i++){ +if($(_2a2[i]).is(":focus")){ +$(_2a2[i>=_2a2.length-1?0:i+1]).focus(); +return false; +} +} +} +} +}); +}; +function _2a3(){ +$(document).unbind(".messager"); +}; +function _2a4(_2a5){ +var opts=$.extend({},$.messager.defaults,{modal:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_2a5); +var win=$("
      ").html(opts.msg).appendTo("body"); +win.window($.extend({},opts,{openAnimation:(opts.showType),closeAnimation:(opts.showType=="show"?"hide":opts.showType),openDuration:opts.showSpeed,closeDuration:opts.showSpeed,onOpen:function(){ +win.window("window").hover(function(){ +if(opts.timer){ +clearTimeout(opts.timer); +} +},function(){ +_2a6(); +}); +_2a6(); +function _2a6(){ +if(opts.timeout>0){ +opts.timer=setTimeout(function(){ +if(win.length&&win.data("window")){ +win.window("close"); +} +},opts.timeout); +} +}; +if(_2a5.onOpen){ +_2a5.onOpen.call(this); +}else{ +opts.onOpen.call(this); +} +},onClose:function(){ +if(opts.timer){ +clearTimeout(opts.timer); +} +if(_2a5.onClose){ +_2a5.onClose.call(this); +}else{ +opts.onClose.call(this); +} +win.window("destroy"); +}})); +win.window("window").css(opts.style); +win.window("open"); +return win; +}; +function _2a7(_2a8){ +_2a1(); +var win=$("
      ").appendTo("body"); +win.window($.extend({},_2a8,{doSize:false,noheader:(_2a8.title?false:true),onClose:function(){ +_2a3(); +if(_2a8.onClose){ +_2a8.onClose.call(this); +} +setTimeout(function(){ +win.window("destroy"); +},100); +}})); +if(_2a8.buttons&&_2a8.buttons.length){ +var tb=$("
      ").appendTo(win); +$.map(_2a8.buttons,function(btn){ +$("").appendTo(tb).linkbutton(btn); +}); +} +win.window("window").addClass("messager-window"); +win.window("resize"); +win.children("div.messager-button").children("a:first").focus(); +return win; +}; +$.messager={show:function(_2a9){ +return _2a4(_2a9); +},alert:function(_2aa,msg,icon,fn){ +var opts=typeof _2aa=="object"?_2aa:{title:_2aa,msg:msg,icon:icon,fn:fn}; +var cls=opts.icon?"messager-icon messager-"+opts.icon:""; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      ",buttons:[{text:$.messager.defaults.ok,onClick:function(){ +win.window("close"); +opts.fn(); +}}]},opts); +var win=_2a7(opts); +return win; +},confirm:function(_2ab,msg,fn){ +var opts=typeof _2ab=="object"?_2ab:{title:_2ab,msg:msg,fn:fn}; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      ",buttons:[{text:$.messager.defaults.ok,onClick:function(){ +win.window("close"); +opts.fn(true); +}},{text:$.messager.defaults.cancel,onClick:function(){ +win.window("close"); +opts.fn(false); +}}]},opts); +var win=_2a7(opts); +return win; +},prompt:function(_2ac,msg,fn){ +var opts=typeof _2ac=="object"?_2ac:{title:_2ac,msg:msg,fn:fn}; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      "+"
      "+"
      ",buttons:[{text:$.messager.defaults.ok,onClick:function(){ +win.window("close"); +opts.fn(win.find(".messager-input").val()); +}},{text:$.messager.defaults.cancel,onClick:function(){ +win.window("close"); +opts.fn(); +}}]},opts); +var win=_2a7(opts); +win.find("input.messager-input").focus(); +return win; +},progress:function(_2ad){ +var _2ae={bar:function(){ +return $("body>div.messager-window").find("div.messager-p-bar"); +},close:function(){ +var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); +if(win.length){ +win.window("close"); +} +}}; +if(typeof _2ad=="string"){ +var _2af=_2ae[_2ad]; +return _2af(); +} +var opts=$.extend({},{title:"",content:undefined,msg:"",text:undefined,interval:300},_2ad||{}); +var win=_2a7($.extend({},$.messager.defaults,{content:"
      "+opts.msg+"
      ",closable:false,doSize:false},opts,{onClose:function(){ +if(this.timer){ +clearInterval(this.timer); +} +if (_2ad&&_2ad.onClose) { +_2ad.onClose.call(this); +}else{ +$.messager.defaults.onClose.call(this); +} +}})); +var bar=win.find("div.messager-p-bar"); +bar.progressbar({text:opts.text}); +win.window("resize"); +if(opts.interval){ +win[0].timer=setInterval(function(){ +var v=bar.progressbar("getValue"); +v+=10; +if(v>100){ +v=0; +} +bar.progressbar("setValue",v); +},opts.interval); +} +return win; +}}; +$.messager.defaults=$.extend({},$.fn.window.defaults,{ok:"Ok",cancel:"Cancel",width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,fn:function(){ +}}); +})(jQuery); +(function($){ +function _2b0(_2b1,_2b2){ +var _2b3=$.data(_2b1,"accordion"); +var opts=_2b3.options; +var _2b4=_2b3.panels; +var cc=$(_2b1); +if(_2b2){ +$.extend(opts,{width:_2b2.width,height:_2b2.height}); +} +cc._size(opts); +var _2b5=0; +var _2b6="auto"; +var _2b7=cc.find(">.panel>.accordion-header"); +if(_2b7.length){ +_2b5=$(_2b7[0]).css("height","")._outerHeight(); +} +if(!isNaN(parseInt(opts.height))){ +_2b6=cc.height()-_2b5*_2b7.length; +} +_2b8(true,_2b6-_2b8(false)+1); +function _2b8(_2b9,_2ba){ +var _2bb=0; +for(var i=0;i<_2b4.length;i++){ +var p=_2b4[i]; +var h=p.panel("header")._outerHeight(_2b5); +if(p.panel("options").collapsible==_2b9){ +var _2bc=isNaN(_2ba)?undefined:(_2ba+_2b5*h.length); +p.panel("resize",{width:cc.width(),height:(_2b9?_2bc:undefined)}); +_2bb+=p.panel("panel").outerHeight()-_2b5*h.length; +} +} +return _2bb; +}; +}; +function _2bd(_2be,_2bf,_2c0,all){ +var _2c1=$.data(_2be,"accordion").panels; +var pp=[]; +for(var i=0;i<_2c1.length;i++){ +var p=_2c1[i]; +if(_2bf){ +if(p.panel("options")[_2bf]==_2c0){ +pp.push(p); +} +}else{ +if(p[0]==$(_2c0)[0]){ +return i; +} +} +} +if(_2bf){ +return all?pp:(pp.length?pp[0]:null); +}else{ +return -1; +} +}; +function _2c2(_2c3){ +return _2bd(_2c3,"collapsed",false,true); +}; +function _2c4(_2c5){ +var pp=_2c2(_2c5); +return pp.length?pp[0]:null; +}; +function _2c6(_2c7,_2c8){ +return _2bd(_2c7,null,_2c8); +}; +function _2c9(_2ca,_2cb){ +var _2cc=$.data(_2ca,"accordion").panels; +if(typeof _2cb=="number"){ +if(_2cb<0||_2cb>=_2cc.length){ +return null; +}else{ +return _2cc[_2cb]; +} +} +return _2bd(_2ca,"title",_2cb); +}; +function _2cd(_2ce){ +var opts=$.data(_2ce,"accordion").options; +var cc=$(_2ce); +if(opts.border){ +cc.removeClass("accordion-noborder"); +}else{ +cc.addClass("accordion-noborder"); +} +}; +function init(_2cf){ +var _2d0=$.data(_2cf,"accordion"); +var cc=$(_2cf); +cc.addClass("accordion"); +_2d0.panels=[]; +cc.children("div").each(function(){ +var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +_2d0.panels.push(pp); +_2d2(_2cf,pp,opts); +}); +cc.bind("_resize",function(e,_2d1){ +if($(this).hasClass("easyui-fluid")||_2d1){ +_2b0(_2cf); +} +return false; +}); +}; +function _2d2(_2d3,pp,_2d4){ +var opts=$.data(_2d3,"accordion").options; +pp.panel($.extend({},{collapsible:true,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body"},_2d4,{onBeforeExpand:function(){ +if(_2d4.onBeforeExpand){ +if(_2d4.onBeforeExpand.call(this)==false){ +return false; +} +} +if(!opts.multiple){ +var all=$.grep(_2c2(_2d3),function(p){ +return p.panel("options").collapsible; +}); +for(var i=0;i").addClass("accordion-collapse accordion-expand").appendTo(tool); +t.bind("click",function(){ +_2d8(pp); +return false; +}); +pp.panel("options").collapsible?t.show():t.hide(); +_2d7.click(function(){ +_2d8(pp); +return false; +}); +function _2d8(p){ +var _2d9=p.panel("options"); +if(_2d9.collapsible){ +var _2da=_2c6(_2d3,p); +if(_2d9.collapsed){ +_2db(_2d3,_2da); +}else{ +_2dc(_2d3,_2da); +} +} +}; +}; +function _2db(_2dd,_2de){ +var p=_2c9(_2dd,_2de); +if(!p){ +return; +} +_2df(_2dd); +var opts=$.data(_2dd,"accordion").options; +p.panel("expand",opts.animate); +}; +function _2dc(_2e0,_2e1){ +var p=_2c9(_2e0,_2e1); +if(!p){ +return; +} +_2df(_2e0); +var opts=$.data(_2e0,"accordion").options; +p.panel("collapse",opts.animate); +}; +function _2e2(_2e3){ +var opts=$.data(_2e3,"accordion").options; +var p=_2bd(_2e3,"selected",true); +if(p){ +_2e4(_2c6(_2e3,p)); +}else{ +_2e4(opts.selected); +} +function _2e4(_2e5){ +var _2e6=opts.animate; +opts.animate=false; +_2db(_2e3,_2e5); +opts.animate=_2e6; +}; +}; +function _2df(_2e7){ +var _2e8=$.data(_2e7,"accordion").panels; +for(var i=0;i<_2e8.length;i++){ +_2e8[i].stop(true,true); +} +}; +function add(_2e9,_2ea){ +var _2eb=$.data(_2e9,"accordion"); +var opts=_2eb.options; +var _2ec=_2eb.panels; +if(_2ea.selected==undefined){ +_2ea.selected=true; +} +_2df(_2e9); +var pp=$("
      ").appendTo(_2e9); +_2ec.push(pp); +_2d2(_2e9,pp,_2ea); +_2b0(_2e9); +opts.onAdd.call(_2e9,_2ea.title,_2ec.length-1); +if(_2ea.selected){ +_2db(_2e9,_2ec.length-1); +} +}; +function _2ed(_2ee,_2ef){ +var _2f0=$.data(_2ee,"accordion"); +var opts=_2f0.options; +var _2f1=_2f0.panels; +_2df(_2ee); +var _2f2=_2c9(_2ee,_2ef); +var _2f3=_2f2.panel("options").title; +var _2f4=_2c6(_2ee,_2f2); +if(!_2f2){ +return; +} +if(opts.onBeforeRemove.call(_2ee,_2f3,_2f4)==false){ +return; +} +_2f1.splice(_2f4,1); +_2f2.panel("destroy"); +if(_2f1.length){ +_2b0(_2ee); +var curr=_2c4(_2ee); +if(!curr){ +_2db(_2ee,0); +} +} +opts.onRemove.call(_2ee,_2f3,_2f4); +}; +$.fn.accordion=function(_2f5,_2f6){ +if(typeof _2f5=="string"){ +return $.fn.accordion.methods[_2f5](this,_2f6); +} +_2f5=_2f5||{}; +return this.each(function(){ +var _2f7=$.data(this,"accordion"); +if(_2f7){ +$.extend(_2f7.options,_2f5); +}else{ +$.data(this,"accordion",{options:$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_2f5),accordion:$(this).addClass("accordion"),panels:[]}); +init(this); +} +_2cd(this); +_2b0(this); +_2e2(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,_2f8){ +return jq.each(function(){ +_2b0(this,_2f8); +}); +},getSelections:function(jq){ +return _2c2(jq[0]); +},getSelected:function(jq){ +return _2c4(jq[0]); +},getPanel:function(jq,_2f9){ +return _2c9(jq[0],_2f9); +},getPanelIndex:function(jq,_2fa){ +return _2c6(jq[0],_2fa); +},select:function(jq,_2fb){ +return jq.each(function(){ +_2db(this,_2fb); +}); +},unselect:function(jq,_2fc){ +return jq.each(function(){ +_2dc(this,_2fc); +}); +},add:function(jq,_2fd){ +return jq.each(function(){ +add(this,_2fd); +}); +},remove:function(jq,_2fe){ +return jq.each(function(){ +_2ed(this,_2fe); +}); +}}; +$.fn.accordion.parseOptions=function(_2ff){ +var t=$(_2ff); +return $.extend({},$.parser.parseOptions(_2ff,["width","height",{fit:"boolean",border:"boolean",animate:"boolean",multiple:"boolean",selected:"number"}])); +}; +$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,multiple:false,selected:0,onSelect:function(_300,_301){ +},onUnselect:function(_302,_303){ +},onAdd:function(_304,_305){ +},onBeforeRemove:function(_306,_307){ +},onRemove:function(_308,_309){ +}}; +})(jQuery); +(function($){ +function _30a(c){ +var w=0; +$(c).children().each(function(){ +w+=$(this).outerWidth(true); +}); +return w; +}; +function _30b(_30c){ +var opts=$.data(_30c,"tabs").options; +if(opts.tabPosition=="left"||opts.tabPosition=="right"||!opts.showHeader){ +return; +} +var _30d=$(_30c).children("div.tabs-header"); +var tool=_30d.children("div.tabs-tool"); +var _30e=_30d.children("div.tabs-scroller-left"); +var _30f=_30d.children("div.tabs-scroller-right"); +var wrap=_30d.children("div.tabs-wrap"); +var _310=_30d.outerHeight(); +if(opts.plain){ +_310-=_310-_30d.height(); +} +tool._outerHeight(_310); +var _311=_30a(_30d.find("ul.tabs")); +var _312=_30d.width()-tool._outerWidth(); +if(_311>_312){ +_30e.add(_30f).show()._outerHeight(_310); +if(opts.toolPosition=="left"){ +tool.css({left:_30e.outerWidth(),right:""}); +wrap.css({marginLeft:_30e.outerWidth()+tool._outerWidth(),marginRight:_30f._outerWidth(),width:_312-_30e.outerWidth()-_30f.outerWidth()}); +}else{ +tool.css({left:"",right:_30f.outerWidth()}); +wrap.css({marginLeft:_30e.outerWidth(),marginRight:_30f.outerWidth()+tool._outerWidth(),width:_312-_30e.outerWidth()-_30f.outerWidth()}); +} +}else{ +_30e.add(_30f).hide(); +if(opts.toolPosition=="left"){ +tool.css({left:0,right:""}); +wrap.css({marginLeft:tool._outerWidth(),marginRight:0,width:_312}); +}else{ +tool.css({left:"",right:0}); +wrap.css({marginLeft:0,marginRight:tool._outerWidth(),width:_312}); +} +} +}; +function _313(_314){ +var opts=$.data(_314,"tabs").options; +var _315=$(_314).children("div.tabs-header"); +if(opts.tools){ +if(typeof opts.tools=="string"){ +$(opts.tools).addClass("tabs-tool").appendTo(_315); +$(opts.tools).show(); +}else{ +_315.children("div.tabs-tool").remove(); +var _316=$("
      ").appendTo(_315); +var tr=_316.find("tr"); +for(var i=0;i").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(opts.tools[i].handler||function(){ +}); +tool.linkbutton($.extend({},opts.tools[i],{plain:true})); +} +} +}else{ +_315.children("div.tabs-tool").remove(); +} +}; +function _317(_318,_319){ +var _31a=$.data(_318,"tabs"); +var opts=_31a.options; +var cc=$(_318); +if(!opts.doSize){ +return; +} +if(_319){ +$.extend(opts,{width:_319.width,height:_319.height}); +} +cc._size(opts); +var _31b=cc.children("div.tabs-header"); +var _31c=cc.children("div.tabs-panels"); +var wrap=_31b.find("div.tabs-wrap"); +var ul=wrap.find(".tabs"); +ul.children("li").removeClass("tabs-first tabs-last"); +ul.children("li:first").addClass("tabs-first"); +ul.children("li:last").addClass("tabs-last"); +if(opts.tabPosition=="left"||opts.tabPosition=="right"){ +_31b._outerWidth(opts.showHeader?opts.headerWidth:0); +_31c._outerWidth(cc.width()-_31b.outerWidth()); +_31b.add(_31c)._outerHeight(opts.height); +wrap._outerWidth(_31b.width()); +ul._outerWidth(wrap.width()).css("height",""); +}else{ +_31b.children("div.tabs-scroller-left,div.tabs-scroller-right,div.tabs-tool").css("display",opts.showHeader?"block":"none"); +_31b._outerWidth(cc.width()).css("height",""); +if(opts.showHeader){ +_31b.css("background-color",""); +wrap.css("height",""); +}else{ +_31b.css("background-color","transparent"); +_31b._outerHeight(0); +wrap._outerHeight(0); +} +ul._outerHeight(opts.tabHeight).css("width",""); +ul._outerHeight(ul.outerHeight()-ul.height()-1+opts.tabHeight).css("width",""); +_31c._size("height",isNaN(opts.height)?"":(opts.height-_31b.outerHeight())); +_31c._size("width",isNaN(opts.width)?"":opts.width); +} +if(_31a.tabs.length){ +var d1=ul.outerWidth(true)-ul.width(); +var li=ul.children("li:first"); +var d2=li.outerWidth(true)-li.width(); +var _31d=_31b.width()-_31b.children(".tabs-tool")._outerWidth(); +var _31e=Math.floor((_31d-d1-d2*_31a.tabs.length)/_31a.tabs.length); +$.map(_31a.tabs,function(p){ +_31f(p,(opts.justified&&$.inArray(opts.tabPosition,["top","bottom"])>=0)?_31e:undefined); +}); +if(opts.justified&&$.inArray(opts.tabPosition,["top","bottom"])>=0){ +var _320=_31d-d1-_30a(ul); +_31f(_31a.tabs[_31a.tabs.length-1],_31e+_320); +} +} +_30b(_318); +function _31f(p,_321){ +var _322=p.panel("options"); +var p_t=_322.tab.find("a.tabs-inner"); +var _321=_321?_321:(parseInt(_322.tabWidth||opts.tabWidth||undefined)); +if(_321){ +p_t._outerWidth(_321); +}else{ +p_t.css("width",""); +} +p_t._outerHeight(opts.tabHeight); +p_t.css("lineHeight",p_t.height()+"px"); +p_t.find(".easyui-fluid:visible").triggerHandler("_resize"); +}; +}; +function _323(_324){ +var opts=$.data(_324,"tabs").options; +var tab=_325(_324); +if(tab){ +var _326=$(_324).children("div.tabs-panels"); +var _327=opts.width=="auto"?"auto":_326.width(); +var _328=opts.height=="auto"?"auto":_326.height(); +tab.panel("resize",{width:_327,height:_328}); +} +}; +function _329(_32a){ +var tabs=$.data(_32a,"tabs").tabs; +var cc=$(_32a).addClass("tabs-container"); +var _32b=$("
      ").insertBefore(cc); +cc.children("div").each(function(){ +_32b[0].appendChild(this); +}); +cc[0].appendChild(_32b[0]); +$("
      "+"
      "+"
      "+"
      "+"
        "+"
        "+"
        ").prependTo(_32a); +cc.children("div.tabs-panels").children("div").each(function(i){ +var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +_338(_32a,opts,$(this)); +}); +cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ +$(this).addClass("tabs-scroller-over"); +},function(){ +$(this).removeClass("tabs-scroller-over"); +}); +cc.bind("_resize",function(e,_32c){ +if($(this).hasClass("easyui-fluid")||_32c){ +_317(_32a); +_323(_32a); +} +return false; +}); +}; +function _32d(_32e){ +var _32f=$.data(_32e,"tabs"); +var opts=_32f.options; +$(_32e).children("div.tabs-header").unbind().bind("click",function(e){ +if($(e.target).hasClass("tabs-scroller-left")){ +$(_32e).tabs("scrollBy",-opts.scrollIncrement); +}else{ +if($(e.target).hasClass("tabs-scroller-right")){ +$(_32e).tabs("scrollBy",opts.scrollIncrement); +}else{ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return false; +} +var a=$(e.target).closest("a.tabs-close"); +if(a.length){ +_351(_32e,_330(li)); +}else{ +if(li.length){ +var _331=_330(li); +var _332=_32f.tabs[_331].panel("options"); +if(_332.collapsible){ +_332.closed?_348(_32e,_331):_365(_32e,_331); +}else{ +_348(_32e,_331); +} +} +} +return false; +} +} +}).bind("contextmenu",function(e){ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +if(li.length){ +opts.onContextMenu.call(_32e,e,li.find("span.tabs-title").html(),_330(li)); +} +}); +function _330(li){ +var _333=0; +li.parent().children("li").each(function(i){ +if(li[0]==this){ +_333=i; +return false; +} +}); +return _333; +}; +}; +function _334(_335){ +var opts=$.data(_335,"tabs").options; +var _336=$(_335).children("div.tabs-header"); +var _337=$(_335).children("div.tabs-panels"); +_336.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); +_337.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); +if(opts.tabPosition=="top"){ +_336.insertBefore(_337); +}else{ +if(opts.tabPosition=="bottom"){ +_336.insertAfter(_337); +_336.addClass("tabs-header-bottom"); +_337.addClass("tabs-panels-top"); +}else{ +if(opts.tabPosition=="left"){ +_336.addClass("tabs-header-left"); +_337.addClass("tabs-panels-right"); +}else{ +if(opts.tabPosition=="right"){ +_336.addClass("tabs-header-right"); +_337.addClass("tabs-panels-left"); +} +} +} +} +if(opts.plain==true){ +_336.addClass("tabs-header-plain"); +}else{ +_336.removeClass("tabs-header-plain"); +} +_336.removeClass("tabs-header-narrow").addClass(opts.narrow?"tabs-header-narrow":""); +var tabs=_336.find(".tabs"); +tabs.removeClass("tabs-pill").addClass(opts.pill?"tabs-pill":""); +tabs.removeClass("tabs-narrow").addClass(opts.narrow?"tabs-narrow":""); +tabs.removeClass("tabs-justified").addClass(opts.justified?"tabs-justified":""); +if(opts.border==true){ +_336.removeClass("tabs-header-noborder"); +_337.removeClass("tabs-panels-noborder"); +}else{ +_336.addClass("tabs-header-noborder"); +_337.addClass("tabs-panels-noborder"); +} +opts.doSize=true; +}; +function _338(_339,_33a,pp){ +_33a=_33a||{}; +var _33b=$.data(_339,"tabs"); +var tabs=_33b.tabs; +if(_33a.index==undefined||_33a.index>tabs.length){ +_33a.index=tabs.length; +} +if(_33a.index<0){ +_33a.index=0; +} +var ul=$(_339).children("div.tabs-header").find("ul.tabs"); +var _33c=$(_339).children("div.tabs-panels"); +var tab=$("
      • "+""+""+""+""+"
      • "); +if(!pp){ +pp=$("
        "); +} +if(_33a.index>=tabs.length){ +tab.appendTo(ul); +pp.appendTo(_33c); +tabs.push(pp); +}else{ +tab.insertBefore(ul.children("li:eq("+_33a.index+")")); +pp.insertBefore(_33c.children("div.panel:eq("+_33a.index+")")); +tabs.splice(_33a.index,0,pp); +} +pp.panel($.extend({},_33a,{tab:tab,border:false,noheader:true,closed:true,doSize:false,iconCls:(_33a.icon?_33a.icon:undefined),onLoad:function(){ +if(_33a.onLoad){ +_33a.onLoad.call(this,arguments); +} +_33b.options.onLoad.call(_339,$(this)); +},onBeforeOpen:function(){ +if(_33a.onBeforeOpen){ +if(_33a.onBeforeOpen.call(this)==false){ +return false; +} +} +var p=$(_339).tabs("getSelected"); +if(p){ +if(p[0]!=this){ +$(_339).tabs("unselect",_343(_339,p)); +p=$(_339).tabs("getSelected"); +if(p){ +return false; +} +}else{ +_323(_339); +return false; +} +} +var _33d=$(this).panel("options"); +_33d.tab.addClass("tabs-selected"); +var wrap=$(_339).find(">div.tabs-header>div.tabs-wrap"); +var left=_33d.tab.position().left; +var _33e=left+_33d.tab.outerWidth(); +if(left<0||_33e>wrap.width()){ +var _33f=left-(wrap.width()-_33d.tab.width())/2; +$(_339).tabs("scrollBy",_33f); +}else{ +$(_339).tabs("scrollBy",0); +} +var _340=$(this).panel("panel"); +_340.css("display","block"); +_323(_339); +_340.css("display","none"); +},onOpen:function(){ +if(_33a.onOpen){ +_33a.onOpen.call(this); +} +var _341=$(this).panel("options"); +_33b.selectHis.push(_341.title); +_33b.options.onSelect.call(_339,_341.title,_343(_339,this)); +},onBeforeClose:function(){ +if(_33a.onBeforeClose){ +if(_33a.onBeforeClose.call(this)==false){ +return false; +} +} +$(this).panel("options").tab.removeClass("tabs-selected"); +},onClose:function(){ +if(_33a.onClose){ +_33a.onClose.call(this); +} +var _342=$(this).panel("options"); +_33b.options.onUnselect.call(_339,_342.title,_343(_339,this)); +}})); +$(_339).tabs("update",{tab:pp,options:pp.panel("options"),type:"header"}); +}; +function _344(_345,_346){ +var _347=$.data(_345,"tabs"); +var opts=_347.options; +if(_346.selected==undefined){ +_346.selected=true; +} +_338(_345,_346); +opts.onAdd.call(_345,_346.title,_346.index); +if(_346.selected){ +_348(_345,_346.index); +} +}; +function _349(_34a,_34b){ +_34b.type=_34b.type||"all"; +var _34c=$.data(_34a,"tabs").selectHis; +var pp=_34b.tab; +var _34d=pp.panel("options").title; +if(_34b.type=="all"||_34b=="body"){ +pp.panel($.extend({},_34b.options,{iconCls:(_34b.options.icon?_34b.options.icon:undefined)})); +} +if(_34b.type=="all"||_34b.type=="header"){ +var opts=pp.panel("options"); +var tab=opts.tab; +if(opts.header){ +tab.find(".tabs-inner").html($(opts.header)); +}else{ +var _34e=tab.find("span.tabs-title"); +var _34f=tab.find("span.tabs-icon"); +_34e.html(opts.title); +_34f.attr("class","tabs-icon"); +tab.find("a.tabs-close").remove(); +if(opts.closable){ +_34e.addClass("tabs-closable"); +$("").appendTo(tab); +}else{ +_34e.removeClass("tabs-closable"); +} +if(opts.iconCls){ +_34e.addClass("tabs-with-icon"); +_34f.addClass(opts.iconCls); +}else{ +_34e.removeClass("tabs-with-icon"); +} +if(opts.tools){ +var _350=tab.find("span.tabs-p-tool"); +if(!_350.length){ +var _350=$("").insertAfter(tab.find("a.tabs-inner")); +} +if($.isArray(opts.tools)){ +for(var i=0;i").appendTo(_350); +t.addClass(opts.tools[i].iconCls); +if(opts.tools[i].handler){ +t.bind("click",{handler:opts.tools[i].handler},function(e){ +if($(this).parents("li").hasClass("tabs-disabled")){ +return; +} +e.data.handler.call(this); +}); +} +} +}else{ +$(opts.tools).children().appendTo(_350); +} +var pr=_350.children().length*12; +if(opts.closable){ +pr+=8; +}else{ +pr-=3; +_350.css("right","5px"); +} +_34e.css("padding-right",pr+"px"); +}else{ +tab.find("span.tabs-p-tool").remove(); +_34e.css("padding-right",""); +} +} +if(_34d!=opts.title){ +for(var i=0;i<_34c.length;i++){ +if(_34c[i]==_34d){ +_34c[i]=opts.title; +} +} +} +} +_317(_34a); +$.data(_34a,"tabs").options.onUpdate.call(_34a,opts.title,_343(_34a,pp)); +}; +function _351(_352,_353){ +var opts=$.data(_352,"tabs").options; +var tabs=$.data(_352,"tabs").tabs; +var _354=$.data(_352,"tabs").selectHis; +if(!_355(_352,_353)){ +return; +} +var tab=_356(_352,_353); +var _357=tab.panel("options").title; +var _358=_343(_352,tab); +if(opts.onBeforeClose.call(_352,_357,_358)==false){ +return; +} +var tab=_356(_352,_353,true); +tab.panel("options").tab.remove(); +tab.panel("destroy"); +opts.onClose.call(_352,_357,_358); +_317(_352); +for(var i=0;i<_354.length;i++){ +if(_354[i]==_357){ +_354.splice(i,1); +i--; +} +} +var _359=_354.pop(); +if(_359){ +_348(_352,_359); +}else{ +if(tabs.length){ +_348(_352,0); +} +} +}; +function _356(_35a,_35b,_35c){ +var tabs=$.data(_35a,"tabs").tabs; +if(typeof _35b=="number"){ +if(_35b<0||_35b>=tabs.length){ +return null; +}else{ +var tab=tabs[_35b]; +if(_35c){ +tabs.splice(_35b,1); +} +return tab; +} +} +for(var i=0;idiv.tabs-header>div.tabs-wrap"); +var pos=Math.min(wrap._scrollLeft()+_37b,_37c()); +wrap.animate({scrollLeft:pos},opts.scrollDuration); +function _37c(){ +var w=0; +var ul=wrap.children("ul"); +ul.children("li").each(function(){ +w+=$(this).outerWidth(true); +}); +return w-wrap.width()+(ul.outerWidth()-ul.width()); +}; +}); +}}; +$.fn.tabs.parseOptions=function(_37d){ +return $.extend({},$.parser.parseOptions(_37d,["tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean"},{headerWidth:"number",tabWidth:"number",tabHeight:"number",selected:"number"},{showHeader:"boolean",justified:"boolean",narrow:"boolean",pill:"boolean"}])); +}; +$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,selected:0,showHeader:true,plain:false,fit:false,border:true,justified:false,narrow:false,pill:false,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_37e){ +},onSelect:function(_37f,_380){ +},onUnselect:function(_381,_382){ +},onBeforeClose:function(_383,_384){ +},onClose:function(_385,_386){ +},onAdd:function(_387,_388){ +},onUpdate:function(_389,_38a){ +},onContextMenu:function(e,_38b,_38c){ +}}; +})(jQuery); +(function($){ +var _38d=false; +function _38e(_38f,_390){ +var _391=$.data(_38f,"layout"); +var opts=_391.options; +var _392=_391.panels; +var cc=$(_38f); +if(_390){ +$.extend(opts,{width:_390.width,height:_390.height}); +} +if(_38f.tagName.toLowerCase()=="body"){ +cc._size("fit"); +}else{ +cc._size(opts); +} +var cpos={top:0,left:0,width:cc.width(),height:cc.height()}; +_393(_394(_392.expandNorth)?_392.expandNorth:_392.north,"n"); +_393(_394(_392.expandSouth)?_392.expandSouth:_392.south,"s"); +_395(_394(_392.expandEast)?_392.expandEast:_392.east,"e"); +_395(_394(_392.expandWest)?_392.expandWest:_392.west,"w"); +_392.center.panel("resize",cpos); +function _393(pp,type){ +if(!pp.length||!_394(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:cc.width(),height:opts.height}); +var _396=pp.panel("panel").outerHeight(); +pp.panel("move",{left:0,top:(type=="n"?0:cc.height()-_396)}); +cpos.height-=_396; +if(type=="n"){ +cpos.top+=_396; +if(!opts.split&&opts.border){ +cpos.top--; +} +} +if(!opts.split&&opts.border){ +cpos.height++; +} +}; +function _395(pp,type){ +if(!pp.length||!_394(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:opts.width,height:cpos.height}); +var _397=pp.panel("panel").outerWidth(); +pp.panel("move",{left:(type=="e"?cc.width()-_397:0),top:cpos.top}); +cpos.width-=_397; +if(type=="w"){ +cpos.left+=_397; +if(!opts.split&&opts.border){ +cpos.left--; +} +} +if(!opts.split&&opts.border){ +cpos.width++; +} +}; +}; +function init(_398){ +var cc=$(_398); +cc.addClass("layout"); +function _399(cc){ +cc.children("div").each(function(){ +var opts=$.fn.layout.parsePanelOptions(this); +if("north,south,east,west,center".indexOf(opts.region)>=0){ +_39b(_398,opts,this); +} +}); +}; +cc.children("form").length?_399(cc.children("form")):_399(cc); +cc.append("
        "); +cc.bind("_resize",function(e,_39a){ +if($(this).hasClass("easyui-fluid")||_39a){ +_38e(_398); +} +return false; +}); +}; +function _39b(_39c,_39d,el){ +_39d.region=_39d.region||"center"; +var _39e=$.data(_39c,"layout").panels; +var cc=$(_39c); +var dir=_39d.region; +if(_39e[dir].length){ +return; +} +var pp=$(el); +if(!pp.length){ +pp=$("
        ").appendTo(cc); +} +var _39f=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ +var tool=$(this).panel("header").children("div.panel-tool"); +tool.children("a.panel-tool-collapse").hide(); +var _3a0={north:"up",south:"down",east:"right",west:"left"}; +if(!_3a0[dir]){ +return; +} +var _3a1="layout-button-"+_3a0[dir]; +var t=tool.children("a."+_3a1); +if(!t.length){ +t=$("").addClass(_3a1).appendTo(tool); +t.bind("click",{dir:dir},function(e){ +_3ad(_39c,e.data.dir); +return false; +}); +} +$(this).panel("options").collapsible?t.show():t.hide(); +}},_39d); +pp.panel(_39f); +_39e[dir]=pp; +var _3a2={north:"s",south:"n",east:"w",west:"e"}; +var _3a3=pp.panel("panel"); +if(pp.panel("options").split){ +_3a3.addClass("layout-split-"+dir); +} +_3a3.resizable($.extend({},{handles:(_3a2[dir]||""),disabled:(!pp.panel("options").split),onStartResize:function(e){ +_38d=true; +if(dir=="north"||dir=="south"){ +var _3a4=$(">div.layout-split-proxy-v",_39c); +}else{ +var _3a4=$(">div.layout-split-proxy-h",_39c); +} +var top=0,left=0,_3a5=0,_3a6=0; +var pos={display:"block"}; +if(dir=="north"){ +pos.top=parseInt(_3a3.css("top"))+_3a3.outerHeight()-_3a4.height(); +pos.left=parseInt(_3a3.css("left")); +pos.width=_3a3.outerWidth(); +pos.height=_3a4.height(); +}else{ +if(dir=="south"){ +pos.top=parseInt(_3a3.css("top")); +pos.left=parseInt(_3a3.css("left")); +pos.width=_3a3.outerWidth(); +pos.height=_3a4.height(); +}else{ +if(dir=="east"){ +pos.top=parseInt(_3a3.css("top"))||0; +pos.left=parseInt(_3a3.css("left"))||0; +pos.width=_3a4.width(); +pos.height=_3a3.outerHeight(); +}else{ +if(dir=="west"){ +pos.top=parseInt(_3a3.css("top"))||0; +pos.left=_3a3.outerWidth()-_3a4.width(); +pos.width=_3a4.width(); +pos.height=_3a3.outerHeight(); +} +} +} +} +_3a4.css(pos); +$("
        ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); +},onResize:function(e){ +if(dir=="north"||dir=="south"){ +var _3a7=$(">div.layout-split-proxy-v",_39c); +_3a7.css("top",e.pageY-$(_39c).offset().top-_3a7.height()/2); +}else{ +var _3a7=$(">div.layout-split-proxy-h",_39c); +_3a7.css("left",e.pageX-$(_39c).offset().left-_3a7.width()/2); +} +return false; +},onStopResize:function(e){ +cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); +pp.panel("resize",e.data); +_38e(_39c); +_38d=false; +cc.find(">div.layout-mask").remove(); +}},_39d)); +}; +function _3a8(_3a9,_3aa){ +var _3ab=$.data(_3a9,"layout").panels; +if(_3ab[_3aa].length){ +_3ab[_3aa].panel("destroy"); +_3ab[_3aa]=$(); +var _3ac="expand"+_3aa.substring(0,1).toUpperCase()+_3aa.substring(1); +if(_3ab[_3ac]){ +_3ab[_3ac].panel("destroy"); +_3ab[_3ac]=undefined; +} +} +}; +function _3ad(_3ae,_3af,_3b0){ +if(_3b0==undefined){ +_3b0="normal"; +} +var _3b1=$.data(_3ae,"layout").panels; +var p=_3b1[_3af]; +var _3b2=p.panel("options"); +if(_3b2.onBeforeCollapse.call(p)==false){ +return; +} +var _3b3="expand"+_3af.substring(0,1).toUpperCase()+_3af.substring(1); +if(!_3b1[_3b3]){ +_3b1[_3b3]=_3b4(_3af); +_3b1[_3b3].panel("panel").bind("click",function(){ +p.panel("expand",false).panel("open"); +var _3b5=_3b6(); +p.panel("resize",_3b5.collapse); +p.panel("panel").animate(_3b5.expand,function(){ +$(this).unbind(".layout").bind("mouseleave.layout",{region:_3af},function(e){ +if(_38d==true){ +return; +} +if($("body>div.combo-p>div.combo-panel:visible").length){ +return; +} +_3ad(_3ae,e.data.region); +}); +}); +return false; +}); +} +var _3b7=_3b6(); +if(!_394(_3b1[_3b3])){ +_3b1.center.panel("resize",_3b7.resizeC); +} +p.panel("panel").animate(_3b7.collapse,_3b0,function(){ +p.panel("collapse",false).panel("close"); +_3b1[_3b3].panel("open").panel("resize",_3b7.expandP); +$(this).unbind(".layout"); +}); +function _3b4(dir){ +var icon; +if(dir=="east"){ +icon="layout-button-left"; +}else{ +if(dir=="west"){ +icon="layout-button-right"; +}else{ +if(dir=="north"){ +icon="layout-button-down"; +}else{ +if(dir=="south"){ +icon="layout-button-up"; +} +} +} +} +var p=$("
        ").appendTo(_3ae); +p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:" ",closed:true,minWidth:0,minHeight:0,doSize:false,tools:[{iconCls:icon,handler:function(){ +_3bd(_3ae,_3af); +return false; +}}]})); +p.panel("panel").hover(function(){ +$(this).addClass("layout-expand-over"); +},function(){ +$(this).removeClass("layout-expand-over"); +}); +return p; +}; +function _3b6(){ +var cc=$(_3ae); +var _3b8=_3b1.center.panel("options"); +var _3b9=_3b2.collapsedSize; +if(_3af=="east"){ +var _3ba=p.panel("panel")._outerWidth(); +var _3bb=_3b8.width+_3ba-_3b9; +if(_3b2.split||!_3b2.border){ +_3bb++; +} +return {resizeC:{width:_3bb},expand:{left:cc.width()-_3ba},expandP:{top:_3b8.top,left:cc.width()-_3b9,width:_3b9,height:_3b8.height},collapse:{left:cc.width(),top:_3b8.top,height:_3b8.height}}; +}else{ +if(_3af=="west"){ +var _3ba=p.panel("panel")._outerWidth(); +var _3bb=_3b8.width+_3ba-_3b9; +if(_3b2.split||!_3b2.border){ +_3bb++; +} +return {resizeC:{width:_3bb,left:_3b9-1},expand:{left:0},expandP:{left:0,top:_3b8.top,width:_3b9,height:_3b8.height},collapse:{left:-_3ba,top:_3b8.top,height:_3b8.height}}; +}else{ +if(_3af=="north"){ +var _3bc=p.panel("panel")._outerHeight(); +var hh=_3b8.height; +if(!_394(_3b1.expandNorth)){ +hh+=_3bc-_3b9+((_3b2.split||!_3b2.border)?1:0); +} +_3b1.east.add(_3b1.west).add(_3b1.expandEast).add(_3b1.expandWest).panel("resize",{top:_3b9-1,height:hh}); +return {resizeC:{top:_3b9-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:_3b9},collapse:{top:-_3bc,width:cc.width()}}; +}else{ +if(_3af=="south"){ +var _3bc=p.panel("panel")._outerHeight(); +var hh=_3b8.height; +if(!_394(_3b1.expandSouth)){ +hh+=_3bc-_3b9+((_3b2.split||!_3b2.border)?1:0); +} +_3b1.east.add(_3b1.west).add(_3b1.expandEast).add(_3b1.expandWest).panel("resize",{height:hh}); +return {resizeC:{height:hh},expand:{top:cc.height()-_3bc},expandP:{top:cc.height()-_3b9,left:0,width:cc.width(),height:_3b9},collapse:{top:cc.height(),width:cc.width()}}; +} +} +} +} +}; +}; +function _3bd(_3be,_3bf){ +var _3c0=$.data(_3be,"layout").panels; +var p=_3c0[_3bf]; +var _3c1=p.panel("options"); +if(_3c1.onBeforeExpand.call(p)==false){ +return; +} +var _3c2="expand"+_3bf.substring(0,1).toUpperCase()+_3bf.substring(1); +if(_3c0[_3c2]){ +_3c0[_3c2].panel("close"); +p.panel("panel").stop(true,true); +p.panel("expand",false).panel("open"); +var _3c3=_3c4(); +p.panel("resize",_3c3.collapse); +p.panel("panel").animate(_3c3.expand,function(){ +_38e(_3be); +}); +} +function _3c4(){ +var cc=$(_3be); +var _3c5=_3c0.center.panel("options"); +if(_3bf=="east"&&_3c0.expandEast){ +return {collapse:{left:cc.width(),top:_3c5.top,height:_3c5.height},expand:{left:cc.width()-p.panel("panel")._outerWidth()}}; +}else{ +if(_3bf=="west"&&_3c0.expandWest){ +return {collapse:{left:-p.panel("panel")._outerWidth(),top:_3c5.top,height:_3c5.height},expand:{left:0}}; +}else{ +if(_3bf=="north"&&_3c0.expandNorth){ +return {collapse:{top:-p.panel("panel")._outerHeight(),width:cc.width()},expand:{top:0}}; +}else{ +if(_3bf=="south"&&_3c0.expandSouth){ +return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-p.panel("panel")._outerHeight()}}; +} +} +} +} +}; +}; +function _394(pp){ +if(!pp){ +return false; +} +if(pp.length){ +return pp.panel("panel").is(":visible"); +}else{ +return false; +} +}; +function _3c6(_3c7){ +var _3c8=$.data(_3c7,"layout").panels; +_3c9("east"); +_3c9("west"); +_3c9("north"); +_3c9("south"); +function _3c9(_3ca){ +var p=_3c8[_3ca]; +if(p.length&&p.panel("options").collapsed){ +_3ad(_3c7,_3ca,0); +} +}; +}; +function _3cb(_3cc,_3cd,_3ce){ +var p=$(_3cc).layout("panel",_3cd); +p.panel("options").split=_3ce; +var cls="layout-split-"+_3cd; +var _3cf=p.panel("panel").removeClass(cls); +if(_3ce){ +_3cf.addClass(cls); +} +_3cf.resizable({disabled:(!_3ce)}); +_38e(_3cc); +}; +$.fn.layout=function(_3d0,_3d1){ +if(typeof _3d0=="string"){ +return $.fn.layout.methods[_3d0](this,_3d1); +} +_3d0=_3d0||{}; +return this.each(function(){ +var _3d2=$.data(this,"layout"); +if(_3d2){ +$.extend(_3d2.options,_3d0); +}else{ +var opts=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_3d0); +$.data(this,"layout",{options:opts,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); +init(this); +} +_38e(this); +_3c6(this); +}); +}; +$.fn.layout.methods={options:function(jq){ +return $.data(jq[0],"layout").options; +},resize:function(jq,_3d3){ +return jq.each(function(){ +_38e(this,_3d3); +}); +},panel:function(jq,_3d4){ +return $.data(jq[0],"layout").panels[_3d4]; +},collapse:function(jq,_3d5){ +return jq.each(function(){ +_3ad(this,_3d5); +}); +},expand:function(jq,_3d6){ +return jq.each(function(){ +_3bd(this,_3d6); +}); +},add:function(jq,_3d7){ +return jq.each(function(){ +_39b(this,_3d7); +_38e(this); +if($(this).layout("panel",_3d7.region).panel("options").collapsed){ +_3ad(this,_3d7.region,0); +} +}); +},remove:function(jq,_3d8){ +return jq.each(function(){ +_3a8(this,_3d8); +_38e(this); +}); +},split:function(jq,_3d9){ +return jq.each(function(){ +_3cb(this,_3d9,true); +}); +},unsplit:function(jq,_3da){ +return jq.each(function(){ +_3cb(this,_3da,false); +}); +}}; +$.fn.layout.parseOptions=function(_3db){ +return $.extend({},$.parser.parseOptions(_3db,[{fit:"boolean"}])); +}; +$.fn.layout.defaults={fit:false}; +$.fn.layout.parsePanelOptions=function(_3dc){ +var t=$(_3dc); +return $.extend({},$.fn.panel.parseOptions(_3dc),$.parser.parseOptions(_3dc,["region",{split:"boolean",collpasedSize:"number",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); +}; +$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,collapsedSize:28,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); +})(jQuery); +(function($){ +$(function(){ +$(document).unbind(".menu").bind("mousedown.menu",function(e){ +var m=$(e.target).closest("div.menu,div.combo-p"); +if(m.length){ +return; +} +$("body>div.menu-top:visible").not(".menu-inline").menu("hide"); +_3dd($("body>div.menu:visible").not(".menu-inline")); +}); +}); +function init(_3de){ +var opts=$.data(_3de,"menu").options; +$(_3de).addClass("menu-top"); +opts.inline?$(_3de).addClass("menu-inline"):$(_3de).appendTo("body"); +$(_3de).bind("_resize",function(e,_3df){ +if($(this).hasClass("easyui-fluid")||_3df){ +$(_3de).menu("resize",_3de); +} +return false; +}); +var _3e0=_3e1($(_3de)); +for(var i=0;i<_3e0.length;i++){ +_3e2(_3e0[i]); +} +function _3e1(menu){ +var _3e3=[]; +menu.addClass("menu"); +_3e3.push(menu); +if(!menu.hasClass("menu-content")){ +menu.children("div").each(function(){ +var _3e4=$(this).children("div"); +if(_3e4.length){ +_3e4.appendTo("body"); +this.submenu=_3e4; +var mm=_3e1(_3e4); +_3e3=_3e3.concat(mm); +} +}); +} +return _3e3; +}; +function _3e2(menu){ +var wh=$.parser.parseOptions(menu[0],["width","height"]); +menu[0].originalHeight=wh.height||0; +if(menu.hasClass("menu-content")){ +menu[0].originalWidth=wh.width||menu._outerWidth(); +}else{ +menu[0].originalWidth=wh.width||0; +menu.children("div").each(function(){ +var item=$(this); +var _3e5=$.extend({},$.parser.parseOptions(this,["name","iconCls","href",{separator:"boolean"}]),{disabled:(item.attr("disabled")?true:undefined)}); +if(_3e5.separator){ +item.addClass("menu-sep"); +} +if(!item.hasClass("menu-sep")){ +item[0].itemName=_3e5.name||""; +item[0].itemHref=_3e5.href||""; +var text=item.addClass("menu-item").html(); +item.empty().append($("
        ").html(text)); +if(_3e5.iconCls){ +$("
        ").addClass(_3e5.iconCls).appendTo(item); +} +if(_3e5.disabled){ +_3e6(_3de,item[0],true); +} +if(item[0].submenu){ +$("
        ").appendTo(item); +} +_3e7(_3de,item); +} +}); +$("
        ").prependTo(menu); +} +_3e8(_3de,menu); +if(!menu.hasClass("menu-inline")){ +menu.hide(); +} +_3e9(_3de,menu); +}; +}; +function _3e8(_3ea,menu){ +var opts=$.data(_3ea,"menu").options; +var _3eb=menu.attr("style")||""; +menu.css({display:"block",left:-10000,height:"auto",overflow:"hidden"}); +menu.find(".menu-item").each(function(){ +$(this)._outerHeight(opts.itemHeight); +$(this).find(".menu-text").css({height:(opts.itemHeight-2)+"px",lineHeight:(opts.itemHeight-2)+"px"}); +}); +menu.removeClass("menu-noline").addClass(opts.noline?"menu-noline":""); +var _3ec=menu[0].originalWidth||"auto"; +if(isNaN(parseInt(_3ec))){ +_3ec=0; +menu.find("div.menu-text").each(function(){ +if(_3ec<$(this)._outerWidth()){ +_3ec=$(this)._outerWidth(); +} +}); +_3ec+=40; +} +var _3ed=menu.outerHeight(); +var _3ee=menu[0].originalHeight||"auto"; +if(isNaN(parseInt(_3ee))){ +_3ee=_3ed; +if(menu.hasClass("menu-top")&&opts.alignTo){ +var at=$(opts.alignTo); +var h1=at.offset().top-$(document).scrollTop(); +var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight(); +_3ee=Math.min(_3ee,Math.max(h1,h2)); +}else{ +if(_3ee>$(window)._outerHeight()){ +_3ee=$(window).height(); +} +} +} +menu.attr("style",_3eb); +menu._size({fit:(menu[0]==_3ea?opts.fit:false),width:_3ec,minWidth:opts.minWidth,height:_3ee}); +menu.css("overflow",menu.outerHeight()<_3ed?"auto":"hidden"); +menu.children("div.menu-line")._outerHeight(_3ed-2); +}; +function _3e9(_3ef,menu){ +if(menu.hasClass("menu-inline")){ +return; +} +var _3f0=$.data(_3ef,"menu"); +menu.unbind(".menu").bind("mouseenter.menu",function(){ +if(_3f0.timer){ +clearTimeout(_3f0.timer); +_3f0.timer=null; +} +}).bind("mouseleave.menu",function(){ +if(_3f0.options.hideOnUnhover){ +_3f0.timer=setTimeout(function(){ +_3f1(_3ef,$(_3ef).hasClass("menu-inline")); +},_3f0.options.duration); +} +}); +}; +function _3e7(_3f2,item){ +if(!item.hasClass("menu-item")){ +return; +} +item.unbind(".menu"); +item.bind("click.menu",function(){ +if($(this).hasClass("menu-item-disabled")){ +return; +} +if(!this.submenu){ +_3f1(_3f2,$(_3f2).hasClass("menu-inline")); +var href=this.itemHref; +if(href){ +location.href=href; +} +} +$(this).trigger("mouseenter"); +var item=$(_3f2).menu("getItem",this); +$.data(_3f2,"menu").options.onClick.call(_3f2,item); +}).bind("mouseenter.menu",function(e){ +item.siblings().each(function(){ +if(this.submenu){ +_3dd(this.submenu); +} +$(this).removeClass("menu-active"); +}); +item.addClass("menu-active"); +if($(this).hasClass("menu-item-disabled")){ +item.addClass("menu-active-disabled"); +return; +} +var _3f3=item[0].submenu; +if(_3f3){ +$(_3f2).menu("show",{menu:_3f3,parent:item}); +} +}).bind("mouseleave.menu",function(e){ +item.removeClass("menu-active menu-active-disabled"); +var _3f4=item[0].submenu; +if(_3f4){ +if(e.pageX>=parseInt(_3f4.css("left"))){ +item.addClass("menu-active"); +}else{ +_3dd(_3f4); +} +}else{ +item.removeClass("menu-active"); +} +}); +}; +function _3f1(_3f5,_3f6){ +var _3f7=$.data(_3f5,"menu"); +if(_3f7){ +if($(_3f5).is(":visible")){ +_3dd($(_3f5)); +if(_3f6){ +$(_3f5).show(); +}else{ +_3f7.options.onHide.call(_3f5); +} +} +} +return false; +}; +function _3f8(_3f9,_3fa){ +var left,top; +_3fa=_3fa||{}; +var menu=$(_3fa.menu||_3f9); +$(_3f9).menu("resize",menu[0]); +if(menu.hasClass("menu-top")){ +var opts=$.data(_3f9,"menu").options; +$.extend(opts,_3fa); +left=opts.left; +top=opts.top; +if(opts.alignTo){ +var at=$(opts.alignTo); +left=at.offset().left; +top=at.offset().top+at._outerHeight(); +if(opts.align=="right"){ +left+=at.outerWidth()-menu.outerWidth(); +} +} +if(left+menu.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-menu.outerWidth()-5; +} +if(left<0){ +left=0; +} +top=_3fb(top,opts.alignTo); +}else{ +var _3fc=_3fa.parent; +left=_3fc.offset().left+_3fc.outerWidth()-2; +if(left+menu.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ +left=_3fc.offset().left-menu.outerWidth()+2; +} +top=_3fb(_3fc.offset().top-3); +} +function _3fb(top,_3fd){ +if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +if(_3fd){ +top=$(_3fd).offset().top-menu._outerHeight(); +}else{ +top=$(window)._outerHeight()+$(document).scrollTop()-menu.outerHeight(); +} +} +if(top<0){ +top=0; +} +return top; +}; +menu.css({left:left,top:top}); +menu.show(0,function(){ +if(!menu[0].shadow){ +menu[0].shadow=$("
        ").insertAfter(menu); +} +menu[0].shadow.css({display:(menu.hasClass("menu-inline")?"none":"block"),zIndex:$.fn.menu.defaults.zIndex++,left:menu.css("left"),top:menu.css("top"),width:menu.outerWidth(),height:menu.outerHeight()}); +menu.css("z-index",$.fn.menu.defaults.zIndex++); +if(menu.hasClass("menu-top")){ +$.data(menu[0],"menu").options.onShow.call(menu[0]); +} +}); +}; +function _3dd(menu){ +if(menu&&menu.length){ +_3fe(menu); +menu.find("div.menu-item").each(function(){ +if(this.submenu){ +_3dd(this.submenu); +} +$(this).removeClass("menu-active"); +}); +} +function _3fe(m){ +m.stop(true,true); +if(m[0].shadow){ +m[0].shadow.hide(); +} +m.hide(); +}; +}; +function _3ff(_400,text){ +var _401=null; +var tmp=$("
        "); +function find(menu){ +menu.children("div.menu-item").each(function(){ +var item=$(_400).menu("getItem",this); +var s=tmp.empty().html(item.text).text(); +if(text==$.trim(s)){ +_401=item; +}else{ +if(this.submenu&&!_401){ +find(this.submenu); +} +} +}); +}; +find($(_400)); +tmp.remove(); +return _401; +}; +function _3e6(_402,_403,_404){ +var t=$(_403); +if(!t.hasClass("menu-item")){ +return; +} +if(_404){ +t.addClass("menu-item-disabled"); +if(_403.onclick){ +_403.onclick1=_403.onclick; +_403.onclick=null; +} +}else{ +t.removeClass("menu-item-disabled"); +if(_403.onclick1){ +_403.onclick=_403.onclick1; +_403.onclick1=null; +} +} +}; +function _405(_406,_407){ +var opts=$.data(_406,"menu").options; +var menu=$(_406); +if(_407.parent){ +if(!_407.parent.submenu){ +var _408=$("
        ").appendTo("body"); +_408.hide(); +_407.parent.submenu=_408; +$("
        ").appendTo(_407.parent); +} +menu=_407.parent.submenu; +} +if(_407.separator){ +var item=$("
        ").appendTo(menu); +}else{ +var item=$("
        ").appendTo(menu); +$("
        ").html(_407.text).appendTo(item); +} +if(_407.iconCls){ +$("
        ").addClass(_407.iconCls).appendTo(item); +} +if(_407.id){ +item.attr("id",_407.id); +} +if(_407.name){ +item[0].itemName=_407.name; +} +if(_407.href){ +item[0].itemHref=_407.href; +} +if(_407.onclick){ +if(typeof _407.onclick=="string"){ +item.attr("onclick",_407.onclick); +}else{ +item[0].onclick=eval(_407.onclick); +} +} +if(_407.handler){ +item[0].onclick=eval(_407.handler); +} +if(_407.disabled){ +_3e6(_406,item[0],true); +} +_3e7(_406,item); +_3e9(_406,menu); +_3e8(_406,menu); +}; +function _409(_40a,_40b){ +function _40c(el){ +if(el.submenu){ +el.submenu.children("div.menu-item").each(function(){ +_40c(this); +}); +var _40d=el.submenu[0].shadow; +if(_40d){ +_40d.remove(); +} +el.submenu.remove(); +} +$(el).remove(); +}; +var menu=$(_40b).parent(); +_40c(_40b); +_3e8(_40a,menu); +}; +function _40e(_40f,_410,_411){ +var menu=$(_410).parent(); +if(_411){ +$(_410).show(); +}else{ +$(_410).hide(); +} +_3e8(_40f,menu); +}; +function _412(_413){ +$(_413).children("div.menu-item").each(function(){ +_409(_413,this); +}); +if(_413.shadow){ +_413.shadow.remove(); +} +$(_413).remove(); +}; +$.fn.menu=function(_414,_415){ +if(typeof _414=="string"){ +return $.fn.menu.methods[_414](this,_415); +} +_414=_414||{}; +return this.each(function(){ +var _416=$.data(this,"menu"); +if(_416){ +$.extend(_416.options,_414); +}else{ +_416=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_414)}); +init(this); +} +$(this).css({left:_416.options.left,top:_416.options.top}); +}); +}; +$.fn.menu.methods={options:function(jq){ +return $.data(jq[0],"menu").options; +},show:function(jq,pos){ +return jq.each(function(){ +_3f8(this,pos); +}); +},hide:function(jq){ +return jq.each(function(){ +_3f1(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_412(this); +}); +},setText:function(jq,_417){ +return jq.each(function(){ +$(_417.target).children("div.menu-text").html(_417.text); +}); +},setIcon:function(jq,_418){ +return jq.each(function(){ +$(_418.target).children("div.menu-icon").remove(); +if(_418.iconCls){ +$("
        ").addClass(_418.iconCls).appendTo(_418.target); +} +}); +},getItem:function(jq,_419){ +var t=$(_419); +var item={target:_419,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_419.itemName,href:_419.itemHref,onclick:_419.onclick}; +var icon=t.children("div.menu-icon"); +if(icon.length){ +var cc=[]; +var aa=icon.attr("class").split(" "); +for(var i=0;i").addClass(opts.cls.arrow).appendTo(_423); +$("").addClass("m-btn-line").appendTo(_423); +} +$(_422).menubutton("resize"); +if(opts.menu){ +$(opts.menu).menu({duration:opts.duration}); +var _424=$(opts.menu).menu("options"); +var _425=_424.onShow; +var _426=_424.onHide; +$.extend(_424,{onShow:function(){ +var _427=$(this).menu("options"); +var btn=$(_427.alignTo); +var opts=btn.menubutton("options"); +btn.addClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_425.call(this); +},onHide:function(){ +var _428=$(this).menu("options"); +var btn=$(_428.alignTo); +var opts=btn.menubutton("options"); +btn.removeClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_426.call(this); +}}); +} +}; +function _429(_42a){ +var opts=$.data(_42a,"menubutton").options; +var btn=$(_42a); +var t=btn.find("."+opts.cls.trigger); +if(!t.length){ +t=btn; +} +t.unbind(".menubutton"); +var _42b=null; +t.bind("click.menubutton",function(){ +if(!_42c()){ +_42d(_42a); +return false; +} +}).bind("mouseenter.menubutton",function(){ +if(!_42c()){ +_42b=setTimeout(function(){ +_42d(_42a); +},opts.duration); +return false; +} +}).bind("mouseleave.menubutton",function(){ +if(_42b){ +clearTimeout(_42b); +} +$(opts.menu).triggerHandler("mouseleave"); +}); +function _42c(){ +return $(_42a).linkbutton("options").disabled; +}; +}; +function _42d(_42e){ +var opts=$(_42e).menubutton("options"); +if(opts.disabled||!opts.menu){ +return; +} +$("body>div.menu-top").menu("hide"); +var btn=$(_42e); +var mm=$(opts.menu); +if(mm.length){ +mm.menu("options").alignTo=btn; +mm.menu("show",{alignTo:btn,align:opts.menuAlign}); +} +btn.blur(); +}; +$.fn.menubutton=function(_42f,_430){ +if(typeof _42f=="string"){ +var _431=$.fn.menubutton.methods[_42f]; +if(_431){ +return _431(this,_430); +}else{ +return this.linkbutton(_42f,_430); +} +} +_42f=_42f||{}; +return this.each(function(){ +var _432=$.data(this,"menubutton"); +if(_432){ +$.extend(_432.options,_42f); +}else{ +$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_42f)}); +$(this).removeAttr("disabled"); +} +init(this); +_429(this); +}); +}; +$.fn.menubutton.methods={options:function(jq){ +var _433=jq.linkbutton("options"); +return $.extend($.data(jq[0],"menubutton").options,{toggle:_433.toggle,selected:_433.selected,disabled:_433.disabled}); +},destroy:function(jq){ +return jq.each(function(){ +var opts=$(this).menubutton("options"); +if(opts.menu){ +$(opts.menu).menu("destroy"); +} +$(this).remove(); +}); +}}; +$.fn.menubutton.parseOptions=function(_434){ +var t=$(_434); +return $.extend({},$.fn.linkbutton.parseOptions(_434),$.parser.parseOptions(_434,["menu",{plain:"boolean",hasDownArrow:"boolean",duration:"number"}])); +}; +$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,hasDownArrow:true,menu:null,menuAlign:"left",duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); +})(jQuery); +(function($){ +function init(_435){ +var opts=$.data(_435,"splitbutton").options; +$(_435).menubutton(opts); +$(_435).addClass("s-btn"); +}; +$.fn.splitbutton=function(_436,_437){ +if(typeof _436=="string"){ +var _438=$.fn.splitbutton.methods[_436]; +if(_438){ +return _438(this,_437); +}else{ +return this.menubutton(_436,_437); +} +} +_436=_436||{}; +return this.each(function(){ +var _439=$.data(this,"splitbutton"); +if(_439){ +$.extend(_439.options,_436); +}else{ +$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_436)}); +$(this).removeAttr("disabled"); +} +init(this); +}); +}; +$.fn.splitbutton.methods={options:function(jq){ +var _43a=jq.menubutton("options"); +var _43b=$.data(jq[0],"splitbutton").options; +$.extend(_43b,{disabled:_43a.disabled,toggle:_43a.toggle,selected:_43a.selected}); +return _43b; +}}; +$.fn.splitbutton.parseOptions=function(_43c){ +var t=$(_43c); +return $.extend({},$.fn.linkbutton.parseOptions(_43c),$.parser.parseOptions(_43c,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active s-btn-active",btn2:"m-btn-plain-active s-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn-line"}}); +})(jQuery); +(function($){ +function init(_43d){ +$(_43d).addClass("validatebox-text"); +}; +function _43e(_43f){ +var _440=$.data(_43f,"validatebox"); +_440.validating=false; +if(_440.timer){ +clearTimeout(_440.timer); +} +$(_43f).tooltip("destroy"); +$(_43f).unbind(); +$(_43f).remove(); +}; +function _441(_442){ +var opts=$.data(_442,"validatebox").options; +var box=$(_442); +box.unbind(".validatebox"); +if(opts.novalidate||box.is(":disabled")){ +return; +} +for(var _443 in opts.events){ +$(_442).bind(_443+".validatebox",{target:_442},opts.events[_443]); +} +}; +function _444(e){ +var _445=e.data.target; +var _446=$.data(_445,"validatebox"); +var box=$(_445); +if($(_445).attr("readonly")){ +return; +} +_446.validating=true; +_446.value=undefined; +(function(){ +if(_446.validating){ +if(_446.value!=box.val()){ +_446.value=box.val(); +if(_446.timer){ +clearTimeout(_446.timer); +} +_446.timer=setTimeout(function(){ +$(_445).validatebox("validate"); +},_446.options.delay); +}else{ +_447(_445); +} +setTimeout(arguments.callee,200); +} +})(); +}; +function _448(e){ +var _449=e.data.target; +var _44a=$.data(_449,"validatebox"); +if(_44a.timer){ +clearTimeout(_44a.timer); +_44a.timer=undefined; +} +_44a.validating=false; +_44b(_449); +}; +function _44c(e){ +var _44d=e.data.target; +if($(_44d).hasClass("validatebox-invalid")){ +_44e(_44d); +} +}; +function _44f(e){ +var _450=e.data.target; +var _451=$.data(_450,"validatebox"); +if(!_451.validating){ +_44b(_450); +} +}; +function _44e(_452){ +var _453=$.data(_452,"validatebox"); +var opts=_453.options; +$(_452).tooltip($.extend({},opts.tipOptions,{content:_453.message,position:opts.tipPosition,deltaX:opts.deltaX})).tooltip("show"); +_453.tip=true; +}; +function _447(_454){ +var _455=$.data(_454,"validatebox"); +if(_455&&_455.tip){ +$(_454).tooltip("reposition"); +} +}; +function _44b(_456){ +var _457=$.data(_456,"validatebox"); +_457.tip=false; +$(_456).tooltip("hide"); +}; +function _458(_459){ +var _45a=$.data(_459,"validatebox"); +var opts=_45a.options; +var box=$(_459); +opts.onBeforeValidate.call(_459); +var _45b=_45c(); +opts.onValidate.call(_459,_45b); +return _45b; +function _45d(msg){ +_45a.message=msg; +}; +function _45e(_45f,_460){ +var _461=box.val(); +var _462=/([a-zA-Z_]+)(.*)/.exec(_45f); +var rule=opts.rules[_462[1]]; +if(rule&&_461){ +var _463=_460||opts.validParams||eval(_462[2]); +if(!rule["validator"].call(_459,_461,_463)){ +box.addClass("validatebox-invalid"); +var _464=rule["message"]; +if(_463){ +for(var i=0;i<_463.length;i++){ +_464=_464.replace(new RegExp("\\{"+i+"\\}","g"),_463[i]); +} +} +_45d(opts.invalidMessage||_464); +if(_45a.validating){ +_44e(_459); +} +return false; +} +} +return true; +}; +function _45c(){ +box.removeClass("validatebox-invalid"); +_44b(_459); +if(opts.novalidate||box.is(":disabled")){ +return true; +} +if(opts.required){ +if(box.val()==""){ +box.addClass("validatebox-invalid"); +_45d(opts.missingMessage); +if(_45a.validating){ +_44e(_459); +} +return false; +} +} +if(opts.validType){ +if($.isArray(opts.validType)){ +for(var i=0;i=_471[0]&&len<=_471[1]; +},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_472,_473){ +var data={}; +data[_473[1]]=_472; +var _474=$.ajax({url:_473[0],dataType:"json",data:data,async:false,cache:false,type:"post"}).responseText; +return _474=="true"; +},message:"Please fix this field."}},onBeforeValidate:function(){ +},onValidate:function(_475){ +}}; +})(jQuery); +(function($){ +function init(_476){ +$(_476).addClass("textbox-f").hide(); +var span=$(""+""+""+"").insertAfter(_476); +var name=$(_476).attr("name"); +if(name){ +span.find("input.textbox-value").attr("name",name); +$(_476).removeAttr("name").attr("textboxName",name); +} +return span; +}; +function _477(_478){ +var _479=$.data(_478,"textbox"); +var opts=_479.options; +var tb=_479.textbox; +tb.find(".textbox-text").remove(); +if(opts.multiline){ +$("").prependTo(tb); +}else{ +$("").prependTo(tb); +} +tb.find(".textbox-addon").remove(); +var bb=opts.icons?$.extend(true,[],opts.icons):[]; +if(opts.iconCls){ +bb.push({iconCls:opts.iconCls,disabled:true}); +} +if(bb.length){ +var bc=$("").prependTo(tb); +bc.addClass("textbox-addon-"+opts.iconAlign); +for(var i=0;i"); +} +} +tb.find(".textbox-button").remove(); +if(opts.buttonText||opts.buttonIcon){ +var btn=$("").prependTo(tb); +btn.addClass("textbox-button-"+opts.buttonAlign).linkbutton({text:opts.buttonText,iconCls:opts.buttonIcon}); +} +_47a(_478,opts.disabled); +_47b(_478,opts.readonly); +}; +function _47c(_47d){ +var tb=$.data(_47d,"textbox").textbox; +tb.find(".textbox-text").validatebox("destroy"); +tb.remove(); +$(_47d).remove(); +}; +function _47e(_47f,_480){ +var _481=$.data(_47f,"textbox"); +var opts=_481.options; +var tb=_481.textbox; +var _482=tb.parent(); +if(_480){ +opts.width=_480; +} +if(isNaN(parseInt(opts.width))){ +var c=$(_47f).clone(); +c.css("visibility","hidden"); +c.insertAfter(_47f); +opts.width=c.outerWidth(); +c.remove(); +} +var _483=tb.is(":visible"); +if(!_483){ +tb.appendTo("body"); +} +var _484=tb.find(".textbox-text"); +var btn=tb.find(".textbox-button"); +var _485=tb.find(".textbox-addon"); +var _486=_485.find(".textbox-icon"); +tb._size(opts,_482); +btn.linkbutton("resize",{height:tb.height()}); +btn.css({left:(opts.buttonAlign=="left"?0:""),right:(opts.buttonAlign=="right"?0:"")}); +_485.css({left:(opts.iconAlign=="left"?(opts.buttonAlign=="left"?btn._outerWidth():0):""),right:(opts.iconAlign=="right"?(opts.buttonAlign=="right"?btn._outerWidth():0):"")}); +_486.css({width:opts.iconWidth+"px",height:tb.height()+"px"}); +_484.css({paddingLeft:(_47f.style.paddingLeft||""),paddingRight:(_47f.style.paddingRight||""),marginLeft:_487("left"),marginRight:_487("right")}); +if(opts.multiline){ +_484.css({paddingTop:(_47f.style.paddingTop||""),paddingBottom:(_47f.style.paddingBottom||"")}); +_484._outerHeight(tb.height()); +}else{ +var _488=Math.floor((tb.height()-_484.height())/2); +_484.css({paddingTop:_488+"px",paddingBottom:_488+"px"}); +} +_484._outerWidth(tb.width()-_486.length*opts.iconWidth-btn._outerWidth()); +if(!_483){ +tb.insertAfter(_47f); +} +opts.onResize.call(_47f,opts.width,opts.height); +function _487(_489){ +return (opts.iconAlign==_489?_485._outerWidth():0)+(opts.buttonAlign==_489?btn._outerWidth():0); +}; +}; +function _48a(_48b){ +var opts=$(_48b).textbox("options"); +var _48c=$(_48b).textbox("textbox"); +_48c.validatebox($.extend({},opts,{deltaX:$(_48b).textbox("getTipX"),onBeforeValidate:function(){ +var box=$(this); +if(!box.is(":focus")){ +opts.oldInputValue=box.val(); +box.val(opts.value); +} +},onValidate:function(_48d){ +var box=$(this); +if(opts.oldInputValue!=undefined){ +box.val(opts.oldInputValue); +opts.oldInputValue=undefined; +} +var tb=box.parent(); +if(_48d){ +tb.removeClass("textbox-invalid"); +}else{ +tb.addClass("textbox-invalid"); +} +}})); +}; +function _48e(_48f){ +var _490=$.data(_48f,"textbox"); +var opts=_490.options; +var tb=_490.textbox; +var _491=tb.find(".textbox-text"); +_491.attr("placeholder",opts.prompt); +_491.unbind(".textbox"); +if(!opts.disabled&&!opts.readonly){ +_491.bind("blur.textbox",function(e){ +if(!tb.hasClass("textbox-focused")){ +return; +} +opts.value=$(this).val(); +if(opts.value==""){ +$(this).val(opts.prompt).addClass("textbox-prompt"); +}else{ +$(this).removeClass("textbox-prompt"); +} +tb.removeClass("textbox-focused"); +}).bind("focus.textbox",function(e){ +if(tb.hasClass("textbox-focused")){ +return; +} +if($(this).val()!=opts.value){ +$(this).val(opts.value); +} +$(this).removeClass("textbox-prompt"); +tb.addClass("textbox-focused"); +}); +for(var _492 in opts.inputEvents){ +_491.bind(_492+".textbox",{target:_48f},opts.inputEvents[_492]); +} +} +var _493=tb.find(".textbox-addon"); +_493.unbind().bind("click",{target:_48f},function(e){ +var icon=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)"); +if(icon.length){ +var _494=parseInt(icon.attr("icon-index")); +var conf=opts.icons[_494]; +if(conf&&conf.handler){ +conf.handler.call(icon[0],e); +opts.onClickIcon.call(_48f,_494); +} +} +}); +_493.find(".textbox-icon").each(function(_495){ +var conf=opts.icons[_495]; +var icon=$(this); +if(!conf||conf.disabled||opts.disabled||opts.readonly){ +icon.addClass("textbox-icon-disabled"); +}else{ +icon.removeClass("textbox-icon-disabled"); +} +}); +var btn=tb.find(".textbox-button"); +btn.unbind(".textbox").bind("click.textbox",function(){ +if(!btn.linkbutton("options").disabled){ +opts.onClickButton.call(_48f); +} +}); +btn.linkbutton((opts.disabled||opts.readonly)?"disable":"enable"); +tb.unbind(".textbox").bind("_resize.textbox",function(e,_496){ +if($(this).hasClass("easyui-fluid")||_496){ +_47e(_48f); +} +return false; +}); +}; +function _47a(_497,_498){ +var _499=$.data(_497,"textbox"); +var opts=_499.options; +var tb=_499.textbox; +if(_498){ +opts.disabled=true; +$(_497).attr("disabled","disabled"); +tb.addClass("textbox-disabled"); +tb.find(".textbox-text,.textbox-value").attr("disabled","disabled"); +}else{ +opts.disabled=false; +tb.removeClass("textbox-disabled"); +$(_497).removeAttr("disabled"); +tb.find(".textbox-text,.textbox-value").removeAttr("disabled"); +} +}; +function _47b(_49a,mode){ +var _49b=$.data(_49a,"textbox"); +var opts=_49b.options; +opts.readonly=mode==undefined?true:mode; +_49b.textbox.removeClass("textbox-readonly").addClass(opts.readonly?"textbox-readonly":""); +var _49c=_49b.textbox.find(".textbox-text"); +_49c.removeAttr("readonly"); +if(opts.readonly||!opts.editable){ +_49c.attr("readonly","readonly"); +} +}; +$.fn.textbox=function(_49d,_49e){ +if(typeof _49d=="string"){ +var _49f=$.fn.textbox.methods[_49d]; +if(_49f){ +return _49f(this,_49e); +}else{ +return this.each(function(){ +var _4a0=$(this).textbox("textbox"); +_4a0.validatebox(_49d,_49e); +}); +} +} +_49d=_49d||{}; +return this.each(function(){ +var _4a1=$.data(this,"textbox"); +if(_4a1){ +$.extend(_4a1.options,_49d); +if(_49d.value!=undefined){ +_4a1.options.originalValue=_49d.value; +} +}else{ +_4a1=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_49d),textbox:init(this)}); +_4a1.options.originalValue=_4a1.options.value; +} +_477(this); +_48e(this); +_47e(this); +_48a(this); +$(this).textbox("initValue",_4a1.options.value); +}); +}; +$.fn.textbox.methods={options:function(jq){ +return $.data(jq[0],"textbox").options; +},cloneFrom:function(jq,from){ +return jq.each(function(){ +var t=$(this); +if(t.data("textbox")){ +return; +} +if(!$(from).data("textbox")){ +$(from).textbox(); +} +var name=t.attr("name")||""; +t.addClass("textbox-f").hide(); +t.removeAttr("name").attr("textboxName",name); +var span=$(from).next().clone().insertAfter(t); +span.find("input.textbox-value").attr("name",name); +$.data(this,"textbox",{options:$.extend(true,{},$(from).textbox("options")),textbox:span}); +var _4a2=$(from).textbox("button"); +if(_4a2.length){ +t.textbox("button").linkbutton($.extend(true,{},_4a2.linkbutton("options"))); +} +_48e(this); +_48a(this); +}); +},textbox:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-text"); +},button:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-button"); +},destroy:function(jq){ +return jq.each(function(){ +_47c(this); +}); +},resize:function(jq,_4a3){ +return jq.each(function(){ +_47e(this,_4a3); +}); +},disable:function(jq){ +return jq.each(function(){ +_47a(this,true); +_48e(this); +}); +},enable:function(jq){ +return jq.each(function(){ +_47a(this,false); +_48e(this); +}); +},readonly:function(jq,mode){ +return jq.each(function(){ +_47b(this,mode); +_48e(this); +}); +},isValid:function(jq){ +return jq.textbox("textbox").validatebox("isValid"); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setValue",""); +}); +},setText:function(jq,_4a4){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +var _4a5=$(this).textbox("textbox"); +if($(this).textbox("getText")!=_4a4){ +opts.value=_4a4; +_4a5.val(_4a4); +} +if(!_4a5.is(":focus")){ +if(_4a4){ +_4a5.removeClass("textbox-prompt"); +}else{ +_4a5.val(opts.prompt).addClass("textbox-prompt"); +} +} +$(this).textbox("validate"); +}); +},initValue:function(jq,_4a6){ +return jq.each(function(){ +var _4a7=$.data(this,"textbox"); +_4a7.options.value=""; +$(this).textbox("setText",_4a6); +_4a7.textbox.find(".textbox-value").val(_4a6); +$(this).val(_4a6); +}); +},setValue:function(jq,_4a8){ +return jq.each(function(){ +var opts=$.data(this,"textbox").options; +var _4a9=$(this).textbox("getValue"); +$(this).textbox("initValue",_4a8); +if(_4a9!=_4a8){ +opts.onChange.call(this,_4a8,_4a9); +$(this).closest("form").trigger("_change",[this]); +} +}); +},getText:function(jq){ +var _4aa=jq.textbox("textbox"); +if(_4aa.is(":focus")){ +return _4aa.val(); +}else{ +return jq.textbox("options").value; +} +},getValue:function(jq){ +return jq.data("textbox").textbox.find(".textbox-value").val(); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +$(this).textbox("setValue",opts.originalValue); +}); +},getIcon:function(jq,_4ab){ +return jq.data("textbox").textbox.find(".textbox-icon:eq("+_4ab+")"); +},getTipX:function(jq){ +var _4ac=jq.data("textbox"); +var opts=_4ac.options; +var tb=_4ac.textbox; +var _4ad=tb.find(".textbox-text"); +var _4ae=tb.find(".textbox-addon")._outerWidth(); +var _4af=tb.find(".textbox-button")._outerWidth(); +if(opts.tipPosition=="right"){ +return (opts.iconAlign=="right"?_4ae:0)+(opts.buttonAlign=="right"?_4af:0)+1; +}else{ +if(opts.tipPosition=="left"){ +return (opts.iconAlign=="left"?-_4ae:0)+(opts.buttonAlign=="left"?-_4af:0)-1; +}else{ +return _4ae/2*(opts.iconAlign=="right"?1:-1); +} +} +}}; +$.fn.textbox.parseOptions=function(_4b0){ +var t=$(_4b0); +return $.extend({},$.fn.validatebox.parseOptions(_4b0),$.parser.parseOptions(_4b0,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign",{multiline:"boolean",editable:"boolean",iconWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined),disabled:(t.attr("disabled")?true:undefined),readonly:(t.attr("readonly")?true:undefined)}); +}; +$.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,prompt:"",value:"",type:"text",multiline:false,editable:true,disabled:false,readonly:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",inputEvents:{blur:function(e){ +var t=$(e.data.target); +var opts=t.textbox("options"); +t.textbox("setValue",opts.value); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.textbox("setValue",t.textbox("getText")); +} +}},onChange:function(_4b1,_4b2){ +},onResize:function(_4b3,_4b4){ +},onClickButton:function(){ +},onClickIcon:function(_4b5){ +}}); +})(jQuery); +(function($){ +var _4b6=0; +function _4b7(_4b8){ +var _4b9=$.data(_4b8,"filebox"); +var opts=_4b9.options; +var id="filebox_file_id_"+(++_4b6); +$(_4b8).addClass("filebox-f").textbox(opts); +$(_4b8).textbox("textbox").attr("readonly","readonly"); +_4b9.filebox=$(_4b8).next().addClass("filebox"); +_4b9.filebox.find(".textbox-value").remove(); +opts.oldValue=""; +var file=$("").appendTo(_4b9.filebox); +file.attr("id",id).attr("name",$(_4b8).attr("textboxName")||""); +file.change(function(){ +$(_4b8).filebox("setText",this.value); +opts.onChange.call(_4b8,this.value,opts.oldValue); +opts.oldValue=this.value; +}); +var btn=$(_4b8).filebox("button"); +if(btn.length){ +$("").appendTo(btn); +if(btn.linkbutton("options").disabled){ +file.attr("disabled","disabled"); +}else{ +file.removeAttr("disabled"); +} +} +}; +$.fn.filebox=function(_4ba,_4bb){ +if(typeof _4ba=="string"){ +var _4bc=$.fn.filebox.methods[_4ba]; +if(_4bc){ +return _4bc(this,_4bb); +}else{ +return this.textbox(_4ba,_4bb); +} +} +_4ba=_4ba||{}; +return this.each(function(){ +var _4bd=$.data(this,"filebox"); +if(_4bd){ +$.extend(_4bd.options,_4ba); +}else{ +$.data(this,"filebox",{options:$.extend({},$.fn.filebox.defaults,$.fn.filebox.parseOptions(this),_4ba)}); +} +_4b7(this); +}); +}; +$.fn.filebox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"filebox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.filebox.parseOptions=function(_4be){ +return $.extend({},$.fn.textbox.parseOptions(_4be),{}); +}; +$.fn.filebox.defaults=$.extend({},$.fn.textbox.defaults,{buttonIcon:null,buttonText:"Choose File",buttonAlign:"right",inputEvents:{}}); +})(jQuery); +(function($){ +function _4bf(_4c0){ +var _4c1=$.data(_4c0,"searchbox"); +var opts=_4c1.options; +var _4c2=$.extend(true,[],opts.icons); +_4c2.push({iconCls:"searchbox-button",handler:function(e){ +var t=$(e.data.target); +var opts=t.searchbox("options"); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +}}); +_4c3(); +var _4c4=_4c5(); +$(_4c0).addClass("searchbox-f").textbox($.extend({},opts,{icons:_4c2,buttonText:(_4c4?_4c4.text:"")})); +$(_4c0).attr("searchboxName",$(_4c0).attr("textboxName")); +_4c1.searchbox=$(_4c0).next(); +_4c1.searchbox.addClass("searchbox"); +_4c6(_4c4); +function _4c3(){ +if(opts.menu){ +_4c1.menu=$(opts.menu).menu(); +var _4c7=_4c1.menu.menu("options"); +var _4c8=_4c7.onClick; +_4c7.onClick=function(item){ +_4c6(item); +_4c8.call(this,item); +}; +}else{ +if(_4c1.menu){ +_4c1.menu.menu("destroy"); +} +_4c1.menu=null; +} +}; +function _4c5(){ +if(_4c1.menu){ +var item=_4c1.menu.children("div.menu-item:first"); +_4c1.menu.children("div.menu-item").each(function(){ +var _4c9=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +if(_4c9.selected){ +item=$(this); +return false; +} +}); +return _4c1.menu.menu("getItem",item[0]); +}else{ +return null; +} +}; +function _4c6(item){ +if(!item){ +return; +} +$(_4c0).textbox("button").menubutton({text:item.text,iconCls:(item.iconCls||null),menu:_4c1.menu,menuAlign:opts.buttonAlign,plain:false}); +_4c1.searchbox.find("input.textbox-value").attr("name",item.name||item.text); +$(_4c0).searchbox("resize"); +}; +}; +$.fn.searchbox=function(_4ca,_4cb){ +if(typeof _4ca=="string"){ +var _4cc=$.fn.searchbox.methods[_4ca]; +if(_4cc){ +return _4cc(this,_4cb); +}else{ +return this.textbox(_4ca,_4cb); +} +} +_4ca=_4ca||{}; +return this.each(function(){ +var _4cd=$.data(this,"searchbox"); +if(_4cd){ +$.extend(_4cd.options,_4ca); +}else{ +$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_4ca)}); +} +_4bf(this); +}); +}; +$.fn.searchbox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"searchbox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},menu:function(jq){ +return $.data(jq[0],"searchbox").menu; +},getName:function(jq){ +return $.data(jq[0],"searchbox").searchbox.find("input.textbox-value").attr("name"); +},selectName:function(jq,name){ +return jq.each(function(){ +var menu=$.data(this,"searchbox").menu; +if(menu){ +menu.children("div.menu-item").each(function(){ +var item=menu.menu("getItem",this); +if(item.name==name){ +$(this).triggerHandler("click"); +return false; +} +}); +} +}); +},destroy:function(jq){ +return jq.each(function(){ +var menu=$(this).searchbox("menu"); +if(menu){ +menu.menu("destroy"); +} +$(this).textbox("destroy"); +}); +}}; +$.fn.searchbox.parseOptions=function(_4ce){ +var t=$(_4ce); +return $.extend({},$.fn.textbox.parseOptions(_4ce),$.parser.parseOptions(_4ce,["menu"]),{searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); +}; +$.fn.searchbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:$.extend({},$.fn.textbox.defaults.inputEvents,{keydown:function(e){ +if(e.keyCode==13){ +e.preventDefault(); +var t=$(e.data.target); +var opts=t.searchbox("options"); +t.searchbox("setValue",$(this).val()); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +return false; +} +}}),buttonAlign:"left",menu:null,searcher:function(_4cf,name){ +}}); +})(jQuery); +(function($){ +function _4d0(_4d1,_4d2){ +var opts=$.data(_4d1,"form").options; +$.extend(opts,_4d2||{}); +var _4d3=$.extend({},opts.queryParams); +if(opts.onSubmit.call(_4d1,_4d3)==false){ +return; +} +$(_4d1).find(".textbox-text:focus").blur(); +var _4d4="easyui_frame_"+(new Date().getTime()); +var _4d5=$("").appendTo("body"); +_4d5.attr("src",window.ActiveXObject?"javascript:false":"about:blank"); +_4d5.css({position:"absolute",top:-1000,left:-1000}); +_4d5.bind("load",cb); +_4d6(_4d3); +function _4d6(_4d7){ +var form=$(_4d1); +if(opts.url){ +form.attr("action",opts.url); +} +var t=form.attr("target"),a=form.attr("action"); +form.attr("target",_4d4); +var _4d8=$(); +try{ +for(var n in _4d7){ +var _4d9=$("").val(_4d7[n]).appendTo(form); +_4d8=_4d8.add(_4d9); +} +_4da(); +form[0].submit(); +} +finally{ +form.attr("action",a); +t?form.attr("target",t):form.removeAttr("target"); +_4d8.remove(); +} +}; +function _4da(){ +var f=$("#"+_4d4); +if(!f.length){ +return; +} +try{ +var s=f.contents()[0].readyState; +if(s&&s.toLowerCase()=="uninitialized"){ +setTimeout(_4da,100); +} +} +catch(e){ +cb(); +} +}; +var _4db=10; +function cb(){ +var f=$("#"+_4d4); +if(!f.length){ +return; +} +f.unbind(); +var data=""; +try{ +var body=f.contents().find("body"); +data=body.html(); +if(data==""){ +if(--_4db){ +setTimeout(cb,100); +return; +} +} +var ta=body.find(">textarea"); +if(ta.length){ +data=ta.val(); +}else{ +var pre=body.find(">pre"); +if(pre.length){ +data=pre.html(); +} +} +} +catch(e){ +} +opts.success(data); +setTimeout(function(){ +f.unbind(); +f.remove(); +},100); +}; +}; +function load(_4dc,data){ +var opts=$.data(_4dc,"form").options; +if(typeof data=="string"){ +var _4dd={}; +if(opts.onBeforeLoad.call(_4dc,_4dd)==false){ +return; +} +$.ajax({url:data,data:_4dd,dataType:"json",success:function(data){ +_4de(data); +},error:function(){ +opts.onLoadError.apply(_4dc,arguments); +}}); +}else{ +_4de(data); +} +function _4de(data){ +var form=$(_4dc); +for(var name in data){ +var val=data[name]; +if(!_4df(name,val)){ +if(!_4e0(name,val)){ +form.find("input[name=\""+name+"\"]").val(val); +form.find("textarea[name=\""+name+"\"]").val(val); +form.find("select[name=\""+name+"\"]").val(val); +} +} +} +opts.onLoadSuccess.call(_4dc,data); +form.form("validate"); +}; +function _4df(name,val){ +var cc=$(_4dc).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]"); +if(cc.length){ +cc._propAttr("checked",false); +cc.each(function(){ +var f=$(this); +if(f.val()==String(val)||$.inArray(f.val(),$.isArray(val)?val:[val])>=0){ +f._propAttr("checked",true); +} +}); +return true; +} +return false; +}; +function _4e0(name,val){ +var _4e1=$(_4dc).find("[textboxName=\""+name+"\"],[sliderName=\""+name+"\"]"); +if(_4e1.length){ +for(var i=0;i=0;i--){ +var type=opts.fieldTypes[i]; +var _4e6=form.find("."+type+"-f"); +if(_4e6.length&&_4e6[type]){ +_4e6[type]("clear"); +} +} +form.form("validate"); +}; +function _4e7(_4e8){ +_4e8.reset(); +var form=$(_4e8); +var opts=$.data(_4e8,"form").options; +for(var i=opts.fieldTypes.length-1;i>=0;i--){ +var type=opts.fieldTypes[i]; +var _4e9=form.find("."+type+"-f"); +if(_4e9.length&&_4e9[type]){ +_4e9[type]("reset"); +} +} +form.form("validate"); +}; +function _4ea(_4eb){ +var _4ec=$.data(_4eb,"form").options; +$(_4eb).unbind(".form"); +if(_4ec.ajax){ +$(_4eb).bind("submit.form",function(){ +setTimeout(function(){ +_4d0(_4eb,_4ec); +},0); +return false; +}); +} +$(_4eb).bind("_change.form",function(e,t){ +_4ec.onChange.call(this,t); +}).bind("change.form",function(e){ +var t=e.target; +if(!$(t).hasClass("textbox-text")){ +_4ec.onChange.call(this,t); +} +}); +_4ed(_4eb,_4ec.novalidate); +}; +function _4ee(_4ef,_4f0){ +_4f0=_4f0||{}; +var _4f1=$.data(_4ef,"form"); +if(_4f1){ +$.extend(_4f1.options,_4f0); +}else{ +$.data(_4ef,"form",{options:$.extend({},$.fn.form.defaults,$.fn.form.parseOptions(_4ef),_4f0)}); +} +}; +function _4f2(_4f3){ +if($.fn.validatebox){ +var t=$(_4f3); +t.find(".validatebox-text:not(:disabled)").validatebox("validate"); +var _4f4=t.find(".validatebox-invalid"); +_4f4.filter(":not(:disabled):first").focus(); +return _4f4.length==0; +} +return true; +}; +function _4ed(_4f5,_4f6){ +var opts=$.data(_4f5,"form").options; +opts.novalidate=_4f6; +$(_4f5).find(".validatebox-text:not(:disabled)").validatebox(_4f6?"disableValidation":"enableValidation"); +}; +$.fn.form=function(_4f7,_4f8){ +if(typeof _4f7=="string"){ +this.each(function(){ +_4ee(this); +}); +return $.fn.form.methods[_4f7](this,_4f8); +} +return this.each(function(){ +_4ee(this,_4f7); +_4ea(this); +}); +}; +$.fn.form.methods={options:function(jq){ +return $.data(jq[0],"form").options; +},submit:function(jq,_4f9){ +return jq.each(function(){ +_4d0(this,_4f9); +}); +},load:function(jq,data){ +return jq.each(function(){ +load(this,data); +}); +},clear:function(jq){ +return jq.each(function(){ +_4e3(this); +}); +},reset:function(jq){ +return jq.each(function(){ +_4e7(this); +}); +},validate:function(jq){ +return _4f2(jq[0]); +},disableValidation:function(jq){ +return jq.each(function(){ +_4ed(this,true); +}); +},enableValidation:function(jq){ +return jq.each(function(){ +_4ed(this,false); +}); +}}; +$.fn.form.parseOptions=function(_4fa){ +var t=$(_4fa); +return $.extend({},$.parser.parseOptions(_4fa,[{ajax:"boolean"}]),{url:(t.attr("action")?t.attr("action"):undefined)}); +}; +$.fn.form.defaults={fieldTypes:["combobox","combotree","combogrid","datetimebox","datebox","combo","datetimespinner","timespinner","numberspinner","spinner","slider","searchbox","numberbox","textbox"],novalidate:false,ajax:true,url:null,queryParams:{},onSubmit:function(_4fb){ +return $(this).form("validate"); +},success:function(data){ +},onBeforeLoad:function(_4fc){ +},onLoadSuccess:function(data){ +},onLoadError:function(){ +},onChange:function(_4fd){ +}}; +})(jQuery); +(function($){ +function _4fe(_4ff){ +var _500=$.data(_4ff,"numberbox"); +var opts=_500.options; +$(_4ff).addClass("numberbox-f").textbox(opts); +$(_4ff).textbox("textbox").css({imeMode:"disabled"}); +$(_4ff).attr("numberboxName",$(_4ff).attr("textboxName")); +_500.numberbox=$(_4ff).next(); +_500.numberbox.addClass("numberbox"); +var _501=opts.parser.call(_4ff,opts.value); +var _502=opts.formatter.call(_4ff,_501); +$(_4ff).numberbox("initValue",_501).numberbox("setText",_502); +}; +function _503(_504,_505){ +var _506=$.data(_504,"numberbox"); +var opts=_506.options; +var _505=opts.parser.call(_504,_505); +var text=opts.formatter.call(_504,_505); +opts.value=_505; +$(_504).textbox("setText",text).textbox("setValue",_505); +text=opts.formatter.call(_504,$(_504).textbox("getValue")); +$(_504).textbox("setText",text); +}; +$.fn.numberbox=function(_507,_508){ +if(typeof _507=="string"){ +var _509=$.fn.numberbox.methods[_507]; +if(_509){ +return _509(this,_508); +}else{ +return this.textbox(_507,_508); +} +} +_507=_507||{}; +return this.each(function(){ +var _50a=$.data(this,"numberbox"); +if(_50a){ +$.extend(_50a.options,_507); +}else{ +_50a=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_507)}); +} +_4fe(this); +}); +}; +$.fn.numberbox.methods={options:function(jq){ +var opts=jq.data("textbox")?jq.textbox("options"):{}; +return $.extend($.data(jq[0],"numberbox").options,{width:opts.width,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},fix:function(jq){ +return jq.each(function(){ +$(this).numberbox("setValue",$(this).numberbox("getText")); +}); +},setValue:function(jq,_50b){ +return jq.each(function(){ +_503(this,_50b); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("clear"); +$(this).numberbox("options").value=""; +}); +},reset:function(jq){ +return jq.each(function(){ +$(this).textbox("reset"); +$(this).numberbox("setValue",$(this).numberbox("getValue")); +}); +}}; +$.fn.numberbox.parseOptions=function(_50c){ +var t=$(_50c); +return $.extend({},$.fn.textbox.parseOptions(_50c),$.parser.parseOptions(_50c,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined)}); +}; +$.fn.numberbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{keypress:function(e){ +var _50d=e.data.target; +var opts=$(_50d).numberbox("options"); +return opts.filter.call(_50d,e); +},blur:function(e){ +var _50e=e.data.target; +$(_50e).numberbox("setValue",$(_50e).numberbox("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var _50f=e.data.target; +$(_50f).numberbox("setValue",$(_50f).numberbox("getText")); +} +}},min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ +var opts=$(this).numberbox("options"); +var s=$(this).numberbox("getText"); +if(e.which==13){ +return true; +} +if(e.which==45){ +return (s.indexOf("-")==-1?true:false); +} +var c=String.fromCharCode(e.which); +if(c==opts.decimalSeparator){ +return (s.indexOf(c)==-1?true:false); +}else{ +if(c==opts.groupSeparator){ +return true; +}else{ +if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ +return true; +}else{ +if(e.ctrlKey==true&&(e.which==99||e.which==118)){ +return true; +}else{ +return false; +} +} +} +} +},formatter:function(_510){ +if(!_510){ +return _510; +} +_510=_510+""; +var opts=$(this).numberbox("options"); +var s1=_510,s2=""; +var dpos=_510.indexOf("."); +if(dpos>=0){ +s1=_510.substring(0,dpos); +s2=_510.substring(dpos+1,_510.length); +} +if(opts.groupSeparator){ +var p=/(\d+)(\d{3})/; +while(p.test(s1)){ +s1=s1.replace(p,"$1"+opts.groupSeparator+"$2"); +} +} +if(s2){ +return opts.prefix+s1+opts.decimalSeparator+s2+opts.suffix; +}else{ +return opts.prefix+s1+opts.suffix; +} +},parser:function(s){ +s=s+""; +var opts=$(this).numberbox("options"); +if(parseFloat(s)!=s){ +if(opts.prefix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.prefix),"g"),"")); +} +if(opts.suffix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.suffix),"g"),"")); +} +if(opts.groupSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.groupSeparator,"g"),"")); +} +if(opts.decimalSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.decimalSeparator,"g"),".")); +} +s=s.replace(/\s/g,""); +} +var val=parseFloat(s).toFixed(opts.precision); +if(isNaN(val)){ +val=""; +}else{ +if(typeof (opts.min)=="number"&&valopts.max){ +val=opts.max.toFixed(opts.precision); +} +} +} +return val; +}}); +})(jQuery); +(function($){ +function _511(_512,_513){ +var opts=$.data(_512,"calendar").options; +var t=$(_512); +if(_513){ +$.extend(opts,{width:_513.width,height:_513.height}); +} +t._size(opts,t.parent()); +t.find(".calendar-body")._outerHeight(t.height()-t.find(".calendar-header")._outerHeight()); +if(t.find(".calendar-menu").is(":visible")){ +_514(_512); +} +}; +function init(_515){ +$(_515).addClass("calendar").html("
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        "+"
        "+""+""+""+"
        "+"
        "+"
        "+"
        "+"
        "); +$(_515).bind("_resize",function(e,_516){ +if($(this).hasClass("easyui-fluid")||_516){ +_511(_515); +} +return false; +}); +}; +function _517(_518){ +var opts=$.data(_518,"calendar").options; +var menu=$(_518).find(".calendar-menu"); +menu.find(".calendar-menu-year").unbind(".calendar").bind("keypress.calendar",function(e){ +if(e.keyCode==13){ +_519(true); +} +}); +$(_518).unbind(".calendar").bind("mouseover.calendar",function(e){ +var t=_51a(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.addClass("calendar-nav-hover"); +} +}).bind("mouseout.calendar",function(e){ +var t=_51a(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.removeClass("calendar-nav-hover"); +} +}).bind("click.calendar",function(e){ +var t=_51a(e.target); +if(t.hasClass("calendar-menu-next")||t.hasClass("calendar-nextyear")){ +_51b(1); +}else{ +if(t.hasClass("calendar-menu-prev")||t.hasClass("calendar-prevyear")){ +_51b(-1); +}else{ +if(t.hasClass("calendar-menu-month")){ +menu.find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +_519(true); +}else{ +if(t.hasClass("calendar-prevmonth")){ +_51c(-1); +}else{ +if(t.hasClass("calendar-nextmonth")){ +_51c(1); +}else{ +if(t.hasClass("calendar-text")){ +if(menu.is(":visible")){ +menu.hide(); +}else{ +_514(_518); +} +}else{ +if(t.hasClass("calendar-day")){ +if(t.hasClass("calendar-disabled")){ +return; +} +var _51d=opts.current; +t.closest("div.calendar-body").find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +var _51e=t.attr("abbr").split(","); +var y=parseInt(_51e[0]); +var m=parseInt(_51e[1]); +var d=parseInt(_51e[2]); +opts.current=new Date(y,m-1,d); +opts.onSelect.call(_518,opts.current); +if(!_51d||_51d.getTime()!=opts.current.getTime()){ +opts.onChange.call(_518,opts.current,_51d); +} +if(opts.year!=y||opts.month!=m){ +opts.year=y; +opts.month=m; +show(_518); +} +} +} +} +} +} +} +} +}); +function _51a(t){ +var day=$(t).closest(".calendar-day"); +if(day.length){ +return day; +}else{ +return $(t); +} +}; +function _519(_51f){ +var menu=$(_518).find(".calendar-menu"); +var year=menu.find(".calendar-menu-year").val(); +var _520=menu.find(".calendar-selected").attr("abbr"); +if(!isNaN(year)){ +opts.year=parseInt(year); +opts.month=parseInt(_520); +show(_518); +} +if(_51f){ +menu.hide(); +} +}; +function _51b(_521){ +opts.year+=_521; +show(_518); +menu.find(".calendar-menu-year").val(opts.year); +}; +function _51c(_522){ +opts.month+=_522; +if(opts.month>12){ +opts.year++; +opts.month=1; +}else{ +if(opts.month<1){ +opts.year--; +opts.month=12; +} +} +show(_518); +menu.find("td.calendar-selected").removeClass("calendar-selected"); +menu.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +}; +}; +function _514(_523){ +var opts=$.data(_523,"calendar").options; +$(_523).find(".calendar-menu").show(); +if($(_523).find(".calendar-menu-month-inner").is(":empty")){ +$(_523).find(".calendar-menu-month-inner").empty(); +var t=$("
        ").appendTo($(_523).find(".calendar-menu-month-inner")); +var idx=0; +for(var i=0;i<3;i++){ +var tr=$("").appendTo(t); +for(var j=0;j<4;j++){ +$("").html(opts.months[idx++]).attr("abbr",idx).appendTo(tr); +} +} +} +var body=$(_523).find(".calendar-body"); +var sele=$(_523).find(".calendar-menu"); +var _524=sele.find(".calendar-menu-year-inner"); +var _525=sele.find(".calendar-menu-month-inner"); +_524.find("input").val(opts.year).focus(); +_525.find("td.calendar-selected").removeClass("calendar-selected"); +_525.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +sele._outerWidth(body._outerWidth()); +sele._outerHeight(body._outerHeight()); +_525._outerHeight(sele.height()-_524._outerHeight()); +}; +function _526(_527,year,_528){ +var opts=$.data(_527,"calendar").options; +var _529=[]; +var _52a=new Date(year,_528,0).getDate(); +for(var i=1;i<=_52a;i++){ +_529.push([year,_528,i]); +} +var _52b=[],week=[]; +var _52c=-1; +while(_529.length>0){ +var date=_529.shift(); +week.push(date); +var day=new Date(date[0],date[1]-1,date[2]).getDay(); +if(_52c==day){ +day=0; +}else{ +if(day==(opts.firstDay==0?7:opts.firstDay)-1){ +_52b.push(week); +week=[]; +} +} +_52c=day; +} +if(week.length){ +_52b.push(week); +} +var _52d=_52b[0]; +if(_52d.length<7){ +while(_52d.length<7){ +var _52e=_52d[0]; +var date=new Date(_52e[0],_52e[1]-1,_52e[2]-1); +_52d.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +}else{ +var _52e=_52d[0]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_52e[0],_52e[1]-1,_52e[2]-i); +week.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_52b.unshift(week); +} +var _52f=_52b[_52b.length-1]; +while(_52f.length<7){ +var _530=_52f[_52f.length-1]; +var date=new Date(_530[0],_530[1]-1,_530[2]+1); +_52f.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +if(_52b.length<6){ +var _530=_52f[_52f.length-1]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_530[0],_530[1]-1,_530[2]+i); +week.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_52b.push(week); +} +return _52b; +}; +function show(_531){ +var opts=$.data(_531,"calendar").options; +if(opts.current&&!opts.validator.call(_531,opts.current)){ +opts.current=null; +} +var now=new Date(); +var _532=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); +var _533=opts.current?(opts.current.getFullYear()+","+(opts.current.getMonth()+1)+","+opts.current.getDate()):""; +var _534=6-opts.firstDay; +var _535=_534+1; +if(_534>=7){ +_534-=7; +} +if(_535>=7){ +_535-=7; +} +$(_531).find(".calendar-title span").html(opts.months[opts.month-1]+" "+opts.year); +var body=$(_531).find("div.calendar-body"); +body.children("table").remove(); +var data=[""]; +data.push(""); +for(var i=opts.firstDay;i"+opts.weeks[i]+""); +} +for(var i=0;i"+opts.weeks[i]+""); +} +data.push(""); +data.push(""); +var _536=_526(_531,opts.year,opts.month); +for(var i=0;i<_536.length;i++){ +var week=_536[i]; +var cls=""; +if(i==0){ +cls="calendar-first"; +}else{ +if(i==_536.length-1){ +cls="calendar-last"; +} +} +data.push(""); +for(var j=0;j"+d+""); +} +data.push(""); +} +data.push(""); +data.push("
        "); +body.append(data.join("")); +body.children("table.calendar-dtable").prependTo(body); +opts.onNavigate.call(_531,opts.year,opts.month); +}; +$.fn.calendar=function(_53a,_53b){ +if(typeof _53a=="string"){ +return $.fn.calendar.methods[_53a](this,_53b); +} +_53a=_53a||{}; +return this.each(function(){ +var _53c=$.data(this,"calendar"); +if(_53c){ +$.extend(_53c.options,_53a); +}else{ +_53c=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_53a)}); +init(this); +} +if(_53c.options.border==false){ +$(this).addClass("calendar-noborder"); +} +_511(this); +_517(this); +show(this); +$(this).find("div.calendar-menu").hide(); +}); +}; +$.fn.calendar.methods={options:function(jq){ +return $.data(jq[0],"calendar").options; +},resize:function(jq,_53d){ +return jq.each(function(){ +_511(this,_53d); +}); +},moveTo:function(jq,date){ +return jq.each(function(){ +if(!date){ +var now=new Date(); +$(this).calendar({year:now.getFullYear(),month:now.getMonth()+1,current:date}); +return; +} +var opts=$(this).calendar("options"); +if(opts.validator.call(this,date)){ +var _53e=opts.current; +$(this).calendar({year:date.getFullYear(),month:date.getMonth()+1,current:date}); +if(!_53e||_53e.getTime()!=date.getTime()){ +opts.onChange.call(this,opts.current,_53e); +} +} +}); +}}; +$.fn.calendar.parseOptions=function(_53f){ +var t=$(_53f); +return $.extend({},$.parser.parseOptions(_53f,[{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:(function(){ +var d=new Date(); +return new Date(d.getFullYear(),d.getMonth(),d.getDate()); +})(),formatter:function(date){ +return date.getDate(); +},styler:function(date){ +return ""; +},validator:function(date){ +return true; +},onSelect:function(date){ +},onChange:function(_540,_541){ +},onNavigate:function(year,_542){ +}}; +})(jQuery); +(function($){ +function _543(_544){ +var _545=$.data(_544,"spinner"); +var opts=_545.options; +var _546=$.extend(true,[],opts.icons); +_546.push({iconCls:"spinner-arrow",handler:function(e){ +_547(e); +}}); +$(_544).addClass("spinner-f").textbox($.extend({},opts,{icons:_546})); +var _548=$(_544).textbox("getIcon",_546.length-1); +_548.append(""); +_548.append(""); +$(_544).attr("spinnerName",$(_544).attr("textboxName")); +_545.spinner=$(_544).next(); +_545.spinner.addClass("spinner"); +}; +function _547(e){ +var _549=e.data.target; +var opts=$(_549).spinner("options"); +var up=$(e.target).closest("a.spinner-arrow-up"); +if(up.length){ +opts.spin.call(_549,false); +opts.onSpinUp.call(_549); +$(_549).spinner("validate"); +} +var down=$(e.target).closest("a.spinner-arrow-down"); +if(down.length){ +opts.spin.call(_549,true); +opts.onSpinDown.call(_549); +$(_549).spinner("validate"); +} +}; +$.fn.spinner=function(_54a,_54b){ +if(typeof _54a=="string"){ +var _54c=$.fn.spinner.methods[_54a]; +if(_54c){ +return _54c(this,_54b); +}else{ +return this.textbox(_54a,_54b); +} +} +_54a=_54a||{}; +return this.each(function(){ +var _54d=$.data(this,"spinner"); +if(_54d){ +$.extend(_54d.options,_54a); +}else{ +_54d=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_54a)}); +} +_543(this); +}); +}; +$.fn.spinner.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"spinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.spinner.parseOptions=function(_54e){ +return $.extend({},$.fn.textbox.parseOptions(_54e),$.parser.parseOptions(_54e,["min","max",{increment:"number"}])); +}; +$.fn.spinner.defaults=$.extend({},$.fn.textbox.defaults,{min:null,max:null,increment:1,spin:function(down){ +},onSpinUp:function(){ +},onSpinDown:function(){ +}}); +})(jQuery); +(function($){ +function _54f(_550){ +$(_550).addClass("numberspinner-f"); +var opts=$.data(_550,"numberspinner").options; +$(_550).numberbox(opts).spinner(opts); +$(_550).numberbox("setValue",opts.value); +}; +function _551(_552,down){ +var opts=$.data(_552,"numberspinner").options; +var v=parseFloat($(_552).numberbox("getValue")||opts.value)||0; +if(down){ +v-=opts.increment; +}else{ +v+=opts.increment; +} +$(_552).numberbox("setValue",v); +}; +$.fn.numberspinner=function(_553,_554){ +if(typeof _553=="string"){ +var _555=$.fn.numberspinner.methods[_553]; +if(_555){ +return _555(this,_554); +}else{ +return this.numberbox(_553,_554); +} +} +_553=_553||{}; +return this.each(function(){ +var _556=$.data(this,"numberspinner"); +if(_556){ +$.extend(_556.options,_553); +}else{ +$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_553)}); +} +_54f(this); +}); +}; +$.fn.numberspinner.methods={options:function(jq){ +var opts=jq.numberbox("options"); +return $.extend($.data(jq[0],"numberspinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.numberspinner.parseOptions=function(_557){ +return $.extend({},$.fn.spinner.parseOptions(_557),$.fn.numberbox.parseOptions(_557),{}); +}; +$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(down){ +_551(this,down); +}}); +})(jQuery); +(function($){ +function _558(_559){ +var _55a=0; +if(_559.selectionStart){ +_55a=_559.selectionStart; +}else{ +if(_559.createTextRange){ +var _55b=_559.createTextRange(); +var s=document.selection.createRange(); +s.setEndPoint("StartToStart",_55b); +_55a=s.text.length; +} +} +return _55a; +}; +function _55c(_55d,_55e,end){ +if(_55d.selectionStart){ +_55d.setSelectionRange(_55e,end); +}else{ +if(_55d.createTextRange){ +var _55f=_55d.createTextRange(); +_55f.collapse(); +_55f.moveEnd("character",end); +_55f.moveStart("character",_55e); +_55f.select(); +} +} +}; +function _560(_561){ +var opts=$.data(_561,"timespinner").options; +$(_561).addClass("timespinner-f").spinner(opts); +var _562=opts.formatter.call(_561,opts.parser.call(_561,opts.value)); +$(_561).timespinner("initValue",_562); +}; +function _563(e){ +var _564=e.data.target; +var opts=$.data(_564,"timespinner").options; +var _565=_558(this); +for(var i=0;i=_566[0]&&_565<=_566[1]){ +_567(_564,i); +return; +} +} +}; +function _567(_568,_569){ +var opts=$.data(_568,"timespinner").options; +if(_569!=undefined){ +opts.highlight=_569; +} +var _56a=opts.selections[opts.highlight]; +if(_56a){ +var tb=$(_568).timespinner("textbox"); +_55c(tb[0],_56a[0],_56a[1]); +tb.focus(); +} +}; +function _56b(_56c,_56d){ +var opts=$.data(_56c,"timespinner").options; +var _56d=opts.parser.call(_56c,_56d); +var text=opts.formatter.call(_56c,_56d); +$(_56c).spinner("setValue",text); +}; +function _56e(_56f,down){ +var opts=$.data(_56f,"timespinner").options; +var s=$(_56f).timespinner("getValue"); +var _570=opts.selections[opts.highlight]; +var s1=s.substring(0,_570[0]); +var s2=s.substring(_570[0],_570[1]); +var s3=s.substring(_570[1]); +var v=s1+((parseInt(s2)||0)+opts.increment*(down?-1:1))+s3; +$(_56f).timespinner("setValue",v); +_567(_56f); +}; +$.fn.timespinner=function(_571,_572){ +if(typeof _571=="string"){ +var _573=$.fn.timespinner.methods[_571]; +if(_573){ +return _573(this,_572); +}else{ +return this.spinner(_571,_572); +} +} +_571=_571||{}; +return this.each(function(){ +var _574=$.data(this,"timespinner"); +if(_574){ +$.extend(_574.options,_571); +}else{ +$.data(this,"timespinner",{options:$.extend({},$.fn.timespinner.defaults,$.fn.timespinner.parseOptions(this),_571)}); +} +_560(this); +}); +}; +$.fn.timespinner.methods={options:function(jq){ +var opts=jq.data("spinner")?jq.spinner("options"):{}; +return $.extend($.data(jq[0],"timespinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},setValue:function(jq,_575){ +return jq.each(function(){ +_56b(this,_575); +}); +},getHours:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[0],10); +},getMinutes:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[1],10); +},getSeconds:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[2],10)||0; +}}; +$.fn.timespinner.parseOptions=function(_576){ +return $.extend({},$.fn.spinner.parseOptions(_576),$.parser.parseOptions(_576,["separator",{showSeconds:"boolean",highlight:"number"}])); +}; +$.fn.timespinner.defaults=$.extend({},$.fn.spinner.defaults,{inputEvents:$.extend({},$.fn.spinner.defaults.inputEvents,{click:function(e){ +_563.call(this,e); +},blur:function(e){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +} +}}),formatter:function(date){ +if(!date){ +return ""; +} +var opts=$(this).timespinner("options"); +var tt=[_577(date.getHours()),_577(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_577(date.getSeconds())); +} +return tt.join(opts.separator); +function _577(_578){ +return (_578<10?"0":"")+_578; +}; +},parser:function(s){ +var opts=$(this).timespinner("options"); +var date=_579(s); +if(date){ +var min=_579(opts.min); +var max=_579(opts.max); +if(min&&min>date){ +date=min; +} +if(max&&max"]; +for(var i=0;i<_58f.length;i++){ +_58e.cache[_58f[i][0]]={width:_58f[i][1]}; +} +var _590=0; +for(var s in _58e.cache){ +var item=_58e.cache[s]; +item.index=_590++; +ss.push(s+"{width:"+item.width+"}"); +} +ss.push(""); +$(ss.join("\n")).appendTo(cc); +cc.children("style[easyui]:not(:last)").remove(); +},getRule:function(_591){ +var _592=cc.children("style[easyui]:last")[0]; +var _593=_592.styleSheet?_592.styleSheet:(_592.sheet||document.styleSheets[document.styleSheets.length-1]); +var _594=_593.cssRules||_593.rules; +return _594[_591]; +},set:function(_595,_596){ +var item=_58e.cache[_595]; +if(item){ +item.width=_596; +var rule=this.getRule(item.index); +if(rule){ +rule.style["width"]=_596; +} +} +},remove:function(_597){ +var tmp=[]; +for(var s in _58e.cache){ +if(s.indexOf(_597)==-1){ +tmp.push([s,_58e.cache[s].width]); +} +} +_58e.cache={}; +this.add(tmp); +},dirty:function(_598){ +if(_598){ +_58e.dirty.push(_598); +} +},clean:function(){ +for(var i=0;i<_58e.dirty.length;i++){ +this.remove(_58e.dirty[i]); +} +_58e.dirty=[]; +}}; +}; +function _599(_59a,_59b){ +var _59c=$.data(_59a,"datagrid"); +var opts=_59c.options; +var _59d=_59c.panel; +if(_59b){ +$.extend(opts,_59b); +} +if(opts.fit==true){ +var p=_59d.panel("panel").parent(); +opts.width=p.width(); +opts.height=p.height(); +} +_59d.panel("resize",opts); +}; +function _59e(_59f){ +var _5a0=$.data(_59f,"datagrid"); +var opts=_5a0.options; +var dc=_5a0.dc; +var wrap=_5a0.panel; +var _5a1=wrap.width(); +var _5a2=wrap.height(); +var view=dc.view; +var _5a3=dc.view1; +var _5a4=dc.view2; +var _5a5=_5a3.children("div.datagrid-header"); +var _5a6=_5a4.children("div.datagrid-header"); +var _5a7=_5a5.find("table"); +var _5a8=_5a6.find("table"); +view.width(_5a1); +var _5a9=_5a5.children("div.datagrid-header-inner").show(); +_5a3.width(_5a9.find("table").width()); +if(!opts.showHeader){ +_5a9.hide(); +} +_5a4.width(_5a1-_5a3._outerWidth()); +_5a3.children()._outerWidth(_5a3.width()); +_5a4.children()._outerWidth(_5a4.width()); +var all=_5a5.add(_5a6).add(_5a7).add(_5a8); +all.css("height",""); +var hh=Math.max(_5a7.height(),_5a8.height()); +all._outerHeight(hh); +dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); +var _5aa=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); +var _5ab=_5aa+_5a6._outerHeight()+_5a4.children(".datagrid-footer")._outerHeight(); +wrap.children(":not(.datagrid-view)").each(function(){ +_5ab+=$(this)._outerHeight(); +}); +var _5ac=wrap.outerHeight()-wrap.height(); +var _5ad=wrap._size("minHeight")||""; +var _5ae=wrap._size("maxHeight")||""; +_5a3.add(_5a4).children("div.datagrid-body").css({marginTop:_5aa,height:(isNaN(parseInt(opts.height))?"":(_5a2-_5ab)),minHeight:(_5ad?_5ad-_5ac-_5ab:""),maxHeight:(_5ae?_5ae-_5ac-_5ab:"")}); +view.height(_5a4.height()); +}; +function _5af(_5b0,_5b1,_5b2){ +var rows=$.data(_5b0,"datagrid").data.rows; +var opts=$.data(_5b0,"datagrid").options; +var dc=$.data(_5b0,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!opts.nowrap||opts.autoRowHeight||_5b2)){ +if(_5b1!=undefined){ +var tr1=opts.finder.getTr(_5b0,_5b1,"body",1); +var tr2=opts.finder.getTr(_5b0,_5b1,"body",2); +_5b3(tr1,tr2); +}else{ +var tr1=opts.finder.getTr(_5b0,0,"allbody",1); +var tr2=opts.finder.getTr(_5b0,0,"allbody",2); +_5b3(tr1,tr2); +if(opts.showFooter){ +var tr1=opts.finder.getTr(_5b0,0,"allfooter",1); +var tr2=opts.finder.getTr(_5b0,0,"allfooter",2); +_5b3(tr1,tr2); +} +} +} +_59e(_5b0); +if(opts.height=="auto"){ +var _5b4=dc.body1.parent(); +var _5b5=dc.body2; +var _5b6=_5b7(_5b5); +var _5b8=_5b6.height; +if(_5b6.width>_5b5.width()){ +_5b8+=18; +} +_5b8-=parseInt(_5b5.css("marginTop"))||0; +_5b4.height(_5b8); +_5b5.height(_5b8); +dc.view.height(dc.view2.height()); +} +dc.body2.triggerHandler("scroll"); +function _5b3(trs1,trs2){ +for(var i=0;i"); +} +_5c0(true); +_5c0(false); +_59e(_5bd); +function _5c0(_5c1){ +var _5c2=_5c1?1:2; +var tr=opts.finder.getTr(_5bd,_5be,"body",_5c2); +(_5c1?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); +}; +}; +function _5c3(_5c4,_5c5){ +function _5c6(){ +var _5c7=[]; +var _5c8=[]; +$(_5c4).children("thead").each(function(){ +var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); +$(this).find("tr").each(function(){ +var cols=[]; +$(this).find("th").each(function(){ +var th=$(this); +var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order","width",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); +if(col.width&&String(col.width).indexOf("%")==-1){ +col.width=parseInt(col.width); +} +if(th.attr("editor")){ +var s=$.trim(th.attr("editor")); +if(s.substr(0,1)=="{"){ +col.editor=eval("("+s+")"); +}else{ +col.editor=s; +} +} +cols.push(col); +}); +opt.frozen?_5c7.push(cols):_5c8.push(cols); +}); +}); +return [_5c7,_5c8]; +}; +var _5c9=$("
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        ").insertAfter(_5c4); +_5c9.panel({doSize:false,cls:"datagrid"}); +$(_5c4).addClass("datagrid-f").hide().appendTo(_5c9.children("div.datagrid-view")); +var cc=_5c6(); +var view=_5c9.children("div.datagrid-view"); +var _5ca=view.children("div.datagrid-view1"); +var _5cb=view.children("div.datagrid-view2"); +return {panel:_5c9,frozenColumns:cc[0],columns:cc[1],dc:{view:view,view1:_5ca,view2:_5cb,header1:_5ca.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_5cb.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_5ca.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_5cb.children("div.datagrid-body"),footer1:_5ca.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_5cb.children("div.datagrid-footer").children("div.datagrid-footer-inner")}}; +}; +function _5cc(_5cd){ +var _5ce=$.data(_5cd,"datagrid"); +var opts=_5ce.options; +var dc=_5ce.dc; +var _5cf=_5ce.panel; +_5ce.ss=$(_5cd).datagrid("createStyleSheet"); +_5cf.panel($.extend({},opts,{id:null,doSize:false,onResize:function(_5d0,_5d1){ +if($.data(_5cd,"datagrid")){ +_59e(_5cd); +$(_5cd).datagrid("fitColumns"); +opts.onResize.call(_5cf,_5d0,_5d1); +} +},onExpand:function(){ +_5af(_5cd); +opts.onExpand.call(_5cf); +}})); +_5ce.rowIdPrefix="datagrid-row-r"+(++_583); +_5ce.cellClassPrefix="datagrid-cell-c"+_583; +_5d2(dc.header1,opts.frozenColumns,true); +_5d2(dc.header2,opts.columns,false); +_5d3(); +dc.header1.add(dc.header2).css("display",opts.showHeader?"block":"none"); +dc.footer1.add(dc.footer2).css("display",opts.showFooter?"block":"none"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$("div.datagrid-toolbar",_5cf).remove(); +var tb=$("
        ").prependTo(_5cf); +var tr=tb.find("tr"); +for(var i=0;i
        ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("datagrid-toolbar").prependTo(_5cf); +$(opts.toolbar).show(); +} +}else{ +$("div.datagrid-toolbar",_5cf).remove(); +} +$("div.datagrid-pager",_5cf).remove(); +if(opts.pagination){ +var _5d4=$("
        "); +if(opts.pagePosition=="bottom"){ +_5d4.appendTo(_5cf); +}else{ +if(opts.pagePosition=="top"){ +_5d4.addClass("datagrid-pager-top").prependTo(_5cf); +}else{ +var ptop=$("
        ").prependTo(_5cf); +_5d4.appendTo(_5cf); +_5d4=_5d4.add(ptop); +} +} +_5d4.pagination({total:(opts.pageNumber*opts.pageSize),pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function(_5d5,_5d6){ +opts.pageNumber=_5d5||1; +opts.pageSize=_5d6; +_5d4.pagination("refresh",{pageNumber:_5d5,pageSize:_5d6}); +_611(_5cd); +}}); +opts.pageSize=_5d4.pagination("options").pageSize; +} +function _5d2(_5d7,_5d8,_5d9){ +if(!_5d8){ +return; +} +$(_5d7).show(); +$(_5d7).empty(); +var _5da=[]; +var _5db=[]; +if(opts.sortName){ +_5da=opts.sortName.split(","); +_5db=opts.sortOrder.split(","); +} +var t=$("
        ").appendTo(_5d7); +for(var i=0;i<_5d8.length;i++){ +var tr=$("").appendTo($("tbody",t)); +var cols=_5d8[i]; +for(var j=0;j").appendTo(tr); +if(col.checkbox){ +td.attr("field",col.field); +$("
        ").html("").appendTo(td); +}else{ +if(col.field){ +td.attr("field",col.field); +td.append("
        "); +$("span",td).html(col.title); +$("span.datagrid-sort-icon",td).html(" "); +var cell=td.find("div.datagrid-cell"); +var pos=_584(_5da,col.field); +if(pos>=0){ +cell.addClass("datagrid-sort-"+_5db[pos]); +} +if(col.resizable==false){ +cell.attr("resizable","false"); +} +if(col.width){ +var _5dc=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize); +cell._outerWidth(_5dc-1); +col.boxWidth=parseInt(cell[0].style.width); +col.deltaWidth=_5dc-col.boxWidth; +}else{ +col.auto=true; +} +cell.css("text-align",(col.halign||col.align||"")); +col.cellClass=_5ce.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); +cell.addClass(col.cellClass).css("width",""); +}else{ +$("
        ").html(col.title).appendTo(td); +} +} +if(col.hidden){ +td.hide(); +} +} +} +if(_5d9&&opts.rownumbers){ +var td=$("
        "); +if($("tr",t).length==0){ +td.wrap("").parent().appendTo($("tbody",t)); +}else{ +td.prependTo($("tr:first",t)); +} +} +}; +function _5d3(){ +var _5dd=[]; +var _5de=_5df(_5cd,true).concat(_5df(_5cd)); +for(var i=0;i<_5de.length;i++){ +var col=_5e0(_5cd,_5de[i]); +if(col&&!col.checkbox){ +_5dd.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); +} +} +_5ce.ss.add(_5dd); +_5ce.ss.dirty(_5ce.cellSelectorPrefix); +_5ce.cellSelectorPrefix="."+_5ce.cellClassPrefix; +}; +}; +function _5e1(_5e2){ +var _5e3=$.data(_5e2,"datagrid"); +var _5e4=_5e3.panel; +var opts=_5e3.options; +var dc=_5e3.dc; +var _5e5=dc.header1.add(dc.header2); +_5e5.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ +if(opts.singleSelect&&opts.selectOnCheck){ +return false; +} +if($(this).is(":checked")){ +_67b(_5e2); +}else{ +_681(_5e2); +} +e.stopPropagation(); +}); +var _5e6=_5e5.find("div.datagrid-cell"); +_5e6.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ +if(_5e3.resizing){ +return; +} +$(this).addClass("datagrid-header-over"); +}).bind("mouseleave.datagrid",function(){ +$(this).removeClass("datagrid-header-over"); +}).bind("contextmenu.datagrid",function(e){ +var _5e7=$(this).attr("field"); +opts.onHeaderContextMenu.call(_5e2,e,_5e7); +}); +_5e6.unbind(".datagrid").bind("click.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +if(e.pageXp1){ +_606(_5e2,$(this).parent().attr("field")); +} +}).bind("dblclick.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +var cond=opts.resizeHandle=="right"?(e.pageX>p2):(opts.resizeHandle=="left"?(e.pageXp2)); +if(cond){ +var _5e8=$(this).parent().attr("field"); +var col=_5e0(_5e2,_5e8); +if(col.resizable==false){ +return; +} +$(_5e2).datagrid("autoSizeColumn",_5e8); +col.auto=false; +} +}); +var _5e9=opts.resizeHandle=="right"?"e":(opts.resizeHandle=="left"?"w":"e,w"); +_5e6.each(function(){ +$(this).resizable({handles:_5e9,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ +_5e3.resizing=true; +_5e5.css("cursor",$("body").css("cursor")); +if(!_5e3.proxy){ +_5e3.proxy=$("
        ").appendTo(dc.view); +} +_5e3.proxy.css({left:e.pageX-$(_5e4).offset().left-1,display:"none"}); +setTimeout(function(){ +if(_5e3.proxy){ +_5e3.proxy.show(); +} +},500); +},onResize:function(e){ +_5e3.proxy.css({left:e.pageX-$(_5e4).offset().left-1,display:"block"}); +return false; +},onStopResize:function(e){ +_5e5.css("cursor",""); +$(this).css("height",""); +var _5ea=$(this).parent().attr("field"); +var col=_5e0(_5e2,_5ea); +col.width=$(this)._outerWidth(); +col.boxWidth=col.width-col.deltaWidth; +col.auto=undefined; +$(this).css("width",""); +$(_5e2).datagrid("fixColumnSize",_5ea); +_5e3.proxy.remove(); +_5e3.proxy=null; +if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ +_59e(_5e2); +} +$(_5e2).datagrid("fitColumns"); +opts.onResizeColumn.call(_5e2,_5ea,col.width); +setTimeout(function(){ +_5e3.resizing=false; +},0); +}}); +}); +var bb=dc.body1.add(dc.body2); +bb.unbind(); +for(var _5eb in opts.rowEvents){ +bb.bind(_5eb,opts.rowEvents[_5eb]); +} +dc.body1.bind("mousewheel DOMMouseScroll",function(e){ +var e1=e.originalEvent||window.event; +var _5ec=e1.wheelDelta||e1.detail*(-1); +var dg=$(e.target).closest("div.datagrid-view").children(".datagrid-f"); +var dc=dg.data("datagrid").dc; +dc.body2.scrollTop(dc.body2.scrollTop()-_5ec); +}); +dc.body2.bind("scroll",function(){ +var b1=dc.view1.children("div.datagrid-body"); +b1.scrollTop($(this).scrollTop()); +var c1=dc.body1.children(":first"); +var c2=dc.body2.children(":first"); +if(c1.length&&c2.length){ +var top1=c1.offset().top; +var top2=c2.offset().top; +if(top1!=top2){ +b1.scrollTop(b1.scrollTop()+top1-top2); +} +} +dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); +dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); +}); +}; +function _5ed(_5ee){ +return function(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _5f0=_5f1(tr); +if($.data(_5f0,"datagrid").resizing){ +return; +} +var _5f2=_5f3(tr); +if(_5ee){ +_5f4(_5f0,_5f2); +}else{ +var opts=$.data(_5f0,"datagrid").options; +opts.finder.getTr(_5f0,_5f2).removeClass("datagrid-row-over"); +} +}; +}; +function _5f5(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _5f6=_5f1(tr); +var opts=$.data(_5f6,"datagrid").options; +var _5f7=_5f3(tr); +var tt=$(e.target); +if(tt.parent().hasClass("datagrid-cell-check")){ +if(opts.singleSelect&&opts.selectOnCheck){ +tt._propAttr("checked",!tt.is(":checked")); +_5f8(_5f6,_5f7); +}else{ +if(tt.is(":checked")){ +tt._propAttr("checked",false); +_5f8(_5f6,_5f7); +}else{ +tt._propAttr("checked",true); +_5f9(_5f6,_5f7); +} +} +}else{ +var row=opts.finder.getRow(_5f6,_5f7); +var td=tt.closest("td[field]",tr); +if(td.length){ +var _5fa=td.attr("field"); +opts.onClickCell.call(_5f6,_5f7,_5fa,row[_5fa]); +} +if(opts.singleSelect==true){ +_5fb(_5f6,_5f7); +}else{ +if(opts.ctrlSelect){ +if(e.ctrlKey){ +if(tr.hasClass("datagrid-row-selected")){ +_5fc(_5f6,_5f7); +}else{ +_5fb(_5f6,_5f7); +} +}else{ +if(e.shiftKey){ +$(_5f6).datagrid("clearSelections"); +var _5fd=Math.min(opts.lastSelectedIndex||0,_5f7); +var _5fe=Math.max(opts.lastSelectedIndex||0,_5f7); +for(var i=_5fd;i<=_5fe;i++){ +_5fb(_5f6,i); +} +}else{ +$(_5f6).datagrid("clearSelections"); +_5fb(_5f6,_5f7); +opts.lastSelectedIndex=_5f7; +} +} +}else{ +if(tr.hasClass("datagrid-row-selected")){ +_5fc(_5f6,_5f7); +}else{ +_5fb(_5f6,_5f7); +} +} +} +opts.onClickRow.apply(_5f6,_588(_5f6,[_5f7,row])); +} +}; +function _5ff(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _600=_5f1(tr); +var opts=$.data(_600,"datagrid").options; +var _601=_5f3(tr); +var row=opts.finder.getRow(_600,_601); +var td=$(e.target).closest("td[field]",tr); +if(td.length){ +var _602=td.attr("field"); +opts.onDblClickCell.call(_600,_601,_602,row[_602]); +} +opts.onDblClickRow.apply(_600,_588(_600,[_601,row])); +}; +function _603(e){ +var tr=_5ef(e.target); +if(!tr){ +return; +} +var _604=_5f1(tr); +var opts=$.data(_604,"datagrid").options; +var _605=_5f3(tr); +var row=opts.finder.getRow(_604,_605); +opts.onRowContextMenu.call(_604,e,_605,row); +}; +function _5f1(t){ +return $(t).closest("div.datagrid-view").children(".datagrid-f")[0]; +}; +function _5ef(t){ +var tr=$(t).closest("tr.datagrid-row"); +if(tr.length&&tr.parent().length){ +return tr; +}else{ +return undefined; +} +}; +function _5f3(tr){ +if(tr.attr("datagrid-row-index")){ +return parseInt(tr.attr("datagrid-row-index")); +}else{ +return tr.attr("node-id"); +} +}; +function _606(_607,_608){ +var _609=$.data(_607,"datagrid"); +var opts=_609.options; +_608=_608||{}; +var _60a={sortName:opts.sortName,sortOrder:opts.sortOrder}; +if(typeof _608=="object"){ +$.extend(_60a,_608); +} +var _60b=[]; +var _60c=[]; +if(_60a.sortName){ +_60b=_60a.sortName.split(","); +_60c=_60a.sortOrder.split(","); +} +if(typeof _608=="string"){ +var _60d=_608; +var col=_5e0(_607,_60d); +if(!col.sortable||_609.resizing){ +return; +} +var _60e=col.order||"asc"; +var pos=_584(_60b,_60d); +if(pos>=0){ +var _60f=_60c[pos]=="asc"?"desc":"asc"; +if(opts.multiSort&&_60f==_60e){ +_60b.splice(pos,1); +_60c.splice(pos,1); +}else{ +_60c[pos]=_60f; +} +}else{ +if(opts.multiSort){ +_60b.push(_60d); +_60c.push(_60e); +}else{ +_60b=[_60d]; +_60c=[_60e]; +} +} +_60a.sortName=_60b.join(","); +_60a.sortOrder=_60c.join(","); +} +if(opts.onBeforeSortColumn.call(_607,_60a.sortName,_60a.sortOrder)==false){ +return; +} +$.extend(opts,_60a); +var dc=_609.dc; +var _610=dc.header1.add(dc.header2); +_610.find("div.datagrid-cell").removeClass("datagrid-sort-asc datagrid-sort-desc"); +for(var i=0;i<_60b.length;i++){ +var col=_5e0(_607,_60b[i]); +_610.find("div."+col.cellClass).addClass("datagrid-sort-"+_60c[i]); +} +if(opts.remoteSort){ +_611(_607); +}else{ +_612(_607,$(_607).datagrid("getData")); +} +opts.onSortColumn.call(_607,opts.sortName,opts.sortOrder); +}; +function _613(_614){ +var _615=$.data(_614,"datagrid"); +var opts=_615.options; +var dc=_615.dc; +var _616=dc.view2.children("div.datagrid-header"); +dc.body2.css("overflow-x",""); +_617(); +_618(); +_619(); +_617(true); +if(_616.width()>=_616.find("table").width()){ +dc.body2.css("overflow-x","hidden"); +} +function _619(){ +if(!opts.fitColumns){ +return; +} +if(!_615.leftWidth){ +_615.leftWidth=0; +} +var _61a=0; +var cc=[]; +var _61b=_5df(_614,false); +for(var i=0;i<_61b.length;i++){ +var col=_5e0(_614,_61b[i]); +if(_61c(col)){ +_61a+=col.width; +cc.push({field:col.field,col:col,addingWidth:0}); +} +} +if(!_61a){ +return; +} +cc[cc.length-1].addingWidth-=_615.leftWidth; +var _61d=_616.children("div.datagrid-header-inner").show(); +var _61e=_616.width()-_616.find("table").width()-opts.scrollbarSize+_615.leftWidth; +var rate=_61e/_61a; +if(!opts.showHeader){ +_61d.hide(); +} +for(var i=0;i0){ +c.col.boxWidth+=c.addingWidth; +c.col.width+=c.addingWidth; +} +} +_615.leftWidth=_61e; +$(_614).datagrid("fixColumnSize"); +}; +function _618(){ +var _620=false; +var _621=_5df(_614,true).concat(_5df(_614,false)); +$.map(_621,function(_622){ +var col=_5e0(_614,_622); +if(String(col.width||"").indexOf("%")>=0){ +var _623=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize)-col.deltaWidth; +if(_623>0){ +col.boxWidth=_623; +_620=true; +} +} +}); +if(_620){ +$(_614).datagrid("fixColumnSize"); +} +}; +function _617(fit){ +var _624=dc.header1.add(dc.header2).find(".datagrid-cell-group"); +if(_624.length){ +_624.each(function(){ +$(this)._outerWidth(fit?$(this).parent().width():10); +}); +if(fit){ +_59e(_614); +} +} +}; +function _61c(col){ +if(String(col.width||"").indexOf("%")>=0){ +return false; +} +if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ +return true; +} +}; +}; +function _625(_626,_627){ +var _628=$.data(_626,"datagrid"); +var opts=_628.options; +var dc=_628.dc; +var tmp=$("
        ").appendTo("body"); +if(_627){ +_599(_627); +if(opts.fitColumns){ +_59e(_626); +$(_626).datagrid("fitColumns"); +} +}else{ +var _629=false; +var _62a=_5df(_626,true).concat(_5df(_626,false)); +for(var i=0;i<_62a.length;i++){ +var _627=_62a[i]; +var col=_5e0(_626,_627); +if(col.auto){ +_599(_627); +_629=true; +} +} +if(_629&&opts.fitColumns){ +_59e(_626); +$(_626).datagrid("fitColumns"); +} +} +tmp.remove(); +function _599(_62b){ +var _62c=dc.view.find("div.datagrid-header td[field=\""+_62b+"\"] div.datagrid-cell"); +_62c.css("width",""); +var col=$(_626).datagrid("getColumnOption",_62b); +col.width=undefined; +col.boxWidth=undefined; +col.auto=true; +$(_626).datagrid("fixColumnSize",_62b); +var _62d=Math.max(_62e("header"),_62e("allbody"),_62e("allfooter"))+1; +_62c._outerWidth(_62d-1); +col.width=_62d; +col.boxWidth=parseInt(_62c[0].style.width); +col.deltaWidth=_62d-col.boxWidth; +_62c.css("width",""); +$(_626).datagrid("fixColumnSize",_62b); +opts.onResizeColumn.call(_626,_62b,col.width); +function _62e(type){ +var _62f=0; +if(type=="header"){ +_62f=_630(_62c); +}else{ +opts.finder.getTr(_626,0,type).find("td[field=\""+_62b+"\"] div.datagrid-cell").each(function(){ +var w=_630($(this)); +if(_62f=0){ +var _649=col.field||""; +for(var c=0;c<(col.colspan||1);c++){ +for(var r=0;r<(col.rowspan||1);r++){ +aa[_646+r][_647]=_649; +} +_647++; +} +} +}); +} +return aa[aa.length-1]; +function _645(){ +var _64a=0; +$.map(_643[0],function(col){ +_64a+=col.colspan||1; +}); +return _64a; +}; +function _648(a){ +for(var i=0;ib?1:-1); +}; +r=_64f(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_64b,data.rows); +} +opts.view.render.call(opts.view,_64b,dc.body2,false); +opts.view.render.call(opts.view,_64b,dc.body1,true); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_64b,dc.footer2,false); +opts.view.renderFooter.call(opts.view,_64b,dc.footer1,true); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_64b); +} +_64c.ss.clean(); +var _650=$(_64b).datagrid("getPager"); +if(_650.length){ +var _651=_650.pagination("options"); +if(_651.total!=data.total){ +_650.pagination("refresh",{total:data.total}); +if(opts.pageNumber!=_651.pageNumber&&_651.pageNumber>0){ +opts.pageNumber=_651.pageNumber; +_611(_64b); +} +} +} +_5af(_64b); +dc.body2.triggerHandler("scroll"); +$(_64b).datagrid("setSelectionState"); +$(_64b).datagrid("autoSizeColumn"); +opts.onLoadSuccess.call(_64b,data); +}; +function _652(_653){ +var _654=$.data(_653,"datagrid"); +var opts=_654.options; +var dc=_654.dc; +dc.header1.add(dc.header2).find("input[type=checkbox]")._propAttr("checked",false); +if(opts.idField){ +var _655=$.data(_653,"treegrid")?true:false; +var _656=opts.onSelect; +var _657=opts.onCheck; +opts.onSelect=opts.onCheck=function(){ +}; +var rows=opts.finder.getRows(_653); +for(var i=0;i_668.height()-18){ +_668.scrollTop(_668.scrollTop()+top+tr._outerHeight()-_668.height()+18); +} +} +} +}; +function _5f4(_66a,_66b){ +var _66c=$.data(_66a,"datagrid"); +var opts=_66c.options; +opts.finder.getTr(_66a,_66c.highlightIndex).removeClass("datagrid-row-over"); +opts.finder.getTr(_66a,_66b).addClass("datagrid-row-over"); +_66c.highlightIndex=_66b; +}; +function _5fb(_66d,_66e,_66f){ +var _670=$.data(_66d,"datagrid"); +var opts=_670.options; +var row=opts.finder.getRow(_66d,_66e); +if(opts.onBeforeSelect.apply(_66d,_588(_66d,[_66e,row]))==false){ +return; +} +if(opts.singleSelect){ +_671(_66d,true); +_670.selectedRows=[]; +} +if(!_66f&&opts.checkOnSelect){ +_5f8(_66d,_66e,true); +} +if(opts.idField){ +_587(_670.selectedRows,opts.idField,row); +} +opts.finder.getTr(_66d,_66e).addClass("datagrid-row-selected"); +opts.onSelect.apply(_66d,_588(_66d,[_66e,row])); +_663(_66d,_66e); +}; +function _5fc(_672,_673,_674){ +var _675=$.data(_672,"datagrid"); +var dc=_675.dc; +var opts=_675.options; +var row=opts.finder.getRow(_672,_673); +if(opts.onBeforeUnselect.apply(_672,_588(_672,[_673,row]))==false){ +return; +} +if(!_674&&opts.checkOnSelect){ +_5f9(_672,_673,true); +} +opts.finder.getTr(_672,_673).removeClass("datagrid-row-selected"); +if(opts.idField){ +_585(_675.selectedRows,opts.idField,row[opts.idField]); +} +opts.onUnselect.apply(_672,_588(_672,[_673,row])); +}; +function _676(_677,_678){ +var _679=$.data(_677,"datagrid"); +var opts=_679.options; +var rows=opts.finder.getRows(_677); +var _67a=$.data(_677,"datagrid").selectedRows; +if(!_678&&opts.checkOnSelect){ +_67b(_677,true); +} +opts.finder.getTr(_677,"","allbody").addClass("datagrid-row-selected"); +if(opts.idField){ +for(var _67c=0;_67c"); +cell.children("table").bind("click dblclick contextmenu",function(e){ +e.stopPropagation(); +}); +$.data(cell[0],"datagrid.editor",{actions:_6b2,target:_6b2.init(cell.find("td"),_6b1),field:_6af,type:_6b0,oldHtml:_6b3}); +} +} +}); +_5af(_6ad,_6ae,true); +}; +function _6a4(_6b5,_6b6){ +var opts=$.data(_6b5,"datagrid").options; +var tr=opts.finder.getTr(_6b5,_6b6); +tr.children("td").each(function(){ +var cell=$(this).find("div.datagrid-editable"); +if(cell.length){ +var ed=$.data(cell[0],"datagrid.editor"); +if(ed.actions.destroy){ +ed.actions.destroy(ed.target); +} +cell.html(ed.oldHtml); +$.removeData(cell[0],"datagrid.editor"); +cell.removeClass("datagrid-editable"); +cell.css("width",""); +} +}); +}; +function _697(_6b7,_6b8){ +var tr=$.data(_6b7,"datagrid").options.finder.getTr(_6b7,_6b8); +if(!tr.hasClass("datagrid-row-editing")){ +return true; +} +var vbox=tr.find(".validatebox-text"); +vbox.validatebox("validate"); +vbox.trigger("mouseleave"); +var _6b9=tr.find(".validatebox-invalid"); +return _6b9.length==0; +}; +function _6ba(_6bb,_6bc){ +var _6bd=$.data(_6bb,"datagrid").insertedRows; +var _6be=$.data(_6bb,"datagrid").deletedRows; +var _6bf=$.data(_6bb,"datagrid").updatedRows; +if(!_6bc){ +var rows=[]; +rows=rows.concat(_6bd); +rows=rows.concat(_6be); +rows=rows.concat(_6bf); +return rows; +}else{ +if(_6bc=="inserted"){ +return _6bd; +}else{ +if(_6bc=="deleted"){ +return _6be; +}else{ +if(_6bc=="updated"){ +return _6bf; +} +} +} +} +return []; +}; +function _6c0(_6c1,_6c2){ +var _6c3=$.data(_6c1,"datagrid"); +var opts=_6c3.options; +var data=_6c3.data; +var _6c4=_6c3.insertedRows; +var _6c5=_6c3.deletedRows; +$(_6c1).datagrid("cancelEdit",_6c2); +var row=opts.finder.getRow(_6c1,_6c2); +if(_584(_6c4,row)>=0){ +_585(_6c4,row); +}else{ +_6c5.push(row); +} +_585(_6c3.selectedRows,opts.idField,row[opts.idField]); +_585(_6c3.checkedRows,opts.idField,row[opts.idField]); +opts.view.deleteRow.call(opts.view,_6c1,_6c2); +if(opts.height=="auto"){ +_5af(_6c1); +} +$(_6c1).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6c6(_6c7,_6c8){ +var data=$.data(_6c7,"datagrid").data; +var view=$.data(_6c7,"datagrid").options.view; +var _6c9=$.data(_6c7,"datagrid").insertedRows; +view.insertRow.call(view,_6c7,_6c8.index,_6c8.row); +_6c9.push(_6c8.row); +$(_6c7).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6ca(_6cb,row){ +var data=$.data(_6cb,"datagrid").data; +var view=$.data(_6cb,"datagrid").options.view; +var _6cc=$.data(_6cb,"datagrid").insertedRows; +view.insertRow.call(view,_6cb,null,row); +_6cc.push(row); +$(_6cb).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6cd(_6ce){ +var _6cf=$.data(_6ce,"datagrid"); +var data=_6cf.data; +var rows=data.rows; +var _6d0=[]; +for(var i=0;i=0){ +(_6dd=="s"?_5fb:_5f8)(_6d4,_6de,true); +} +} +}; +for(var i=0;i0){ +_612(this,data); +_6cd(this); +}else{ +opts.view.renderEmptyRow(this); +} +} +_611(this); +}); +}; +function _6ee(_6ef){ +var _6f0={}; +$.map(_6ef,function(name){ +_6f0[name]=_6f1(name); +}); +return _6f0; +function _6f1(name){ +function isA(_6f2){ +return $.data($(_6f2)[0],name)!=undefined; +}; +return {init:function(_6f3,_6f4){ +var _6f5=$("").appendTo(_6f3); +if(_6f5[name]&&name!="text"){ +return _6f5[name](_6f4); +}else{ +return _6f5; +} +},destroy:function(_6f6){ +if(isA(_6f6,name)){ +$(_6f6)[name]("destroy"); +} +},getValue:function(_6f7){ +if(isA(_6f7,name)){ +var opts=$(_6f7)[name]("options"); +if(opts.multiple){ +return $(_6f7)[name]("getValues").join(opts.separator); +}else{ +return $(_6f7)[name]("getValue"); +} +}else{ +return $(_6f7).val(); +} +},setValue:function(_6f8,_6f9){ +if(isA(_6f8,name)){ +var opts=$(_6f8)[name]("options"); +if(opts.multiple){ +if(_6f9){ +$(_6f8)[name]("setValues",_6f9.split(opts.separator)); +}else{ +$(_6f8)[name]("clear"); +} +}else{ +$(_6f8)[name]("setValue",_6f9); +} +}else{ +$(_6f8).val(_6f9); +} +},resize:function(_6fa,_6fb){ +if(isA(_6fa,name)){ +$(_6fa)[name]("resize",_6fb); +}else{ +$(_6fa)._outerWidth(_6fb)._outerHeight(22); +} +}}; +}; +}; +var _6fc=$.extend({},_6ee(["text","textbox","numberbox","numberspinner","combobox","combotree","combogrid","datebox","datetimebox","timespinner","datetimespinner"]),{textarea:{init:function(_6fd,_6fe){ +var _6ff=$("").appendTo(_6fd); +return _6ff; +},getValue:function(_700){ +return $(_700).val(); +},setValue:function(_701,_702){ +$(_701).val(_702); +},resize:function(_703,_704){ +$(_703)._outerWidth(_704); +}},checkbox:{init:function(_705,_706){ +var _707=$("").appendTo(_705); +_707.val(_706.on); +_707.attr("offval",_706.off); +return _707; +},getValue:function(_708){ +if($(_708).is(":checked")){ +return $(_708).val(); +}else{ +return $(_708).attr("offval"); +} +},setValue:function(_709,_70a){ +var _70b=false; +if($(_709).val()==_70a){ +_70b=true; +} +$(_709)._propAttr("checked",_70b); +}},validatebox:{init:function(_70c,_70d){ +var _70e=$("").appendTo(_70c); +_70e.validatebox(_70d); +return _70e; +},destroy:function(_70f){ +$(_70f).validatebox("destroy"); +},getValue:function(_710){ +return $(_710).val(); +},setValue:function(_711,_712){ +$(_711).val(_712); +},resize:function(_713,_714){ +$(_713)._outerWidth(_714)._outerHeight(22); +}}}); +$.fn.datagrid.methods={options:function(jq){ +var _715=$.data(jq[0],"datagrid").options; +var _716=$.data(jq[0],"datagrid").panel.panel("options"); +var opts=$.extend(_715,{width:_716.width,height:_716.height,closed:_716.closed,collapsed:_716.collapsed,minimized:_716.minimized,maximized:_716.maximized}); +return opts; +},setSelectionState:function(jq){ +return jq.each(function(){ +_652(this); +}); +},createStyleSheet:function(jq){ +return _58a(jq[0]); +},getPanel:function(jq){ +return $.data(jq[0],"datagrid").panel; +},getPager:function(jq){ +return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); +},getColumnFields:function(jq,_717){ +return _5df(jq[0],_717); +},getColumnOption:function(jq,_718){ +return _5e0(jq[0],_718); +},resize:function(jq,_719){ +return jq.each(function(){ +_599(this,_719); +}); +},load:function(jq,_71a){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _71a=="string"){ +opts.url=_71a; +_71a=null; +} +opts.pageNumber=1; +var _71b=$(this).datagrid("getPager"); +_71b.pagination("refresh",{pageNumber:1}); +_611(this,_71a); +}); +},reload:function(jq,_71c){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _71c=="string"){ +opts.url=_71c; +_71c=null; +} +_611(this,_71c); +}); +},reloadFooter:function(jq,_71d){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +var dc=$.data(this,"datagrid").dc; +if(_71d){ +$.data(this,"datagrid").footer=_71d; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).datagrid("fixRowHeight"); +} +}); +},loading:function(jq){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +$(this).datagrid("getPager").pagination("loading"); +if(opts.loadMsg){ +var _71e=$(this).datagrid("getPanel"); +if(!_71e.children("div.datagrid-mask").length){ +$("
        ").appendTo(_71e); +var msg=$("
        ").html(opts.loadMsg).appendTo(_71e); +msg._outerHeight(40); +msg.css({marginLeft:(-msg.outerWidth()/2),lineHeight:(msg.height()+"px")}); +} +} +}); +},loaded:function(jq){ +return jq.each(function(){ +$(this).datagrid("getPager").pagination("loaded"); +var _71f=$(this).datagrid("getPanel"); +_71f.children("div.datagrid-mask-msg").remove(); +_71f.children("div.datagrid-mask").remove(); +}); +},fitColumns:function(jq){ +return jq.each(function(){ +_613(this); +}); +},fixColumnSize:function(jq,_720){ +return jq.each(function(){ +_631(this,_720); +}); +},fixRowHeight:function(jq,_721){ +return jq.each(function(){ +_5af(this,_721); +}); +},freezeRow:function(jq,_722){ +return jq.each(function(){ +_5bc(this,_722); +}); +},autoSizeColumn:function(jq,_723){ +return jq.each(function(){ +_625(this,_723); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_612(this,data); +_6cd(this); +}); +},getData:function(jq){ +return $.data(jq[0],"datagrid").data; +},getRows:function(jq){ +return $.data(jq[0],"datagrid").data.rows; +},getFooterRows:function(jq){ +return $.data(jq[0],"datagrid").footer; +},getRowIndex:function(jq,id){ +return _65a(jq[0],id); +},getChecked:function(jq){ +return _660(jq[0]); +},getSelected:function(jq){ +var rows=_65d(jq[0]); +return rows.length>0?rows[0]:null; +},getSelections:function(jq){ +return _65d(jq[0]); +},clearSelections:function(jq){ +return jq.each(function(){ +var _724=$.data(this,"datagrid"); +var _725=_724.selectedRows; +var _726=_724.checkedRows; +_725.splice(0,_725.length); +_671(this); +if(_724.options.checkOnSelect){ +_726.splice(0,_726.length); +} +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _727=$.data(this,"datagrid"); +var _728=_727.selectedRows; +var _729=_727.checkedRows; +_729.splice(0,_729.length); +_681(this); +if(_727.options.selectOnCheck){ +_728.splice(0,_728.length); +} +}); +},scrollTo:function(jq,_72a){ +return jq.each(function(){ +_663(this,_72a); +}); +},highlightRow:function(jq,_72b){ +return jq.each(function(){ +_5f4(this,_72b); +_663(this,_72b); +}); +},selectAll:function(jq){ +return jq.each(function(){ +_676(this); +}); +},unselectAll:function(jq){ +return jq.each(function(){ +_671(this); +}); +},selectRow:function(jq,_72c){ +return jq.each(function(){ +_5fb(this,_72c); +}); +},selectRecord:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +if(opts.idField){ +var _72d=_65a(this,id); +if(_72d>=0){ +$(this).datagrid("selectRow",_72d); +} +} +}); +},unselectRow:function(jq,_72e){ +return jq.each(function(){ +_5fc(this,_72e); +}); +},checkRow:function(jq,_72f){ +return jq.each(function(){ +_5f8(this,_72f); +}); +},uncheckRow:function(jq,_730){ +return jq.each(function(){ +_5f9(this,_730); +}); +},checkAll:function(jq){ +return jq.each(function(){ +_67b(this); +}); +},uncheckAll:function(jq){ +return jq.each(function(){ +_681(this); +}); +},beginEdit:function(jq,_731){ +return jq.each(function(){ +_692(this,_731); +}); +},endEdit:function(jq,_732){ +return jq.each(function(){ +_698(this,_732,false); +}); +},cancelEdit:function(jq,_733){ +return jq.each(function(){ +_698(this,_733,true); +}); +},getEditors:function(jq,_734){ +return _6a5(jq[0],_734); +},getEditor:function(jq,_735){ +return _6a9(jq[0],_735); +},refreshRow:function(jq,_736){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.refreshRow.call(opts.view,this,_736); +}); +},validateRow:function(jq,_737){ +return _697(jq[0],_737); +},updateRow:function(jq,_738){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.updateRow.call(opts.view,this,_738.index,_738.row); +}); +},appendRow:function(jq,row){ +return jq.each(function(){ +_6ca(this,row); +}); +},insertRow:function(jq,_739){ +return jq.each(function(){ +_6c6(this,_739); +}); +},deleteRow:function(jq,_73a){ +return jq.each(function(){ +_6c0(this,_73a); +}); +},getChanges:function(jq,_73b){ +return _6ba(jq[0],_73b); +},acceptChanges:function(jq){ +return jq.each(function(){ +_6d1(this); +}); +},rejectChanges:function(jq){ +return jq.each(function(){ +_6d3(this); +}); +},mergeCells:function(jq,_73c){ +return jq.each(function(){ +_6e5(this,_73c); +}); +},showColumn:function(jq,_73d){ +return jq.each(function(){ +var _73e=$(this).datagrid("getPanel"); +_73e.find("td[field=\""+_73d+"\"]").show(); +$(this).datagrid("getColumnOption",_73d).hidden=false; +$(this).datagrid("fitColumns"); +}); +},hideColumn:function(jq,_73f){ +return jq.each(function(){ +var _740=$(this).datagrid("getPanel"); +_740.find("td[field=\""+_73f+"\"]").hide(); +$(this).datagrid("getColumnOption",_73f).hidden=true; +$(this).datagrid("fitColumns"); +}); +},sort:function(jq,_741){ +return jq.each(function(){ +_606(this,_741); +}); +}}; +$.fn.datagrid.parseOptions=function(_742){ +var t=$(_742); +return $.extend({},$.fn.panel.parseOptions(_742),$.parser.parseOptions(_742,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{sharedStyleSheet:"boolean",fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",ctrlSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); +}; +$.fn.datagrid.parseData=function(_743){ +var t=$(_743); +var data={total:0,rows:[]}; +var _744=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); +t.find("tbody tr").each(function(){ +data.total++; +var row={}; +$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); +for(var i=0;i<_744.length;i++){ +row[_744[i]]=$(this).find("td:eq("+i+")").html(); +} +data.rows.push(row); +}); +return data; +}; +var _745={render:function(_746,_747,_748){ +var rows=$(_746).datagrid("getRows"); +$(_747).html(this.renderTable(_746,0,rows,_748)); +},renderFooter:function(_749,_74a,_74b){ +var opts=$.data(_749,"datagrid").options; +var rows=$.data(_749,"datagrid").footer||[]; +var _74c=$(_749).datagrid("getColumnFields",_74b); +var _74d=[""]; +for(var i=0;i"); +_74d.push(this.renderRow.call(this,_749,_74c,_74b,i,rows[i])); +_74d.push(""); +} +_74d.push("
        "); +$(_74a).html(_74d.join("")); +},renderTable:function(_74e,_74f,rows,_750){ +var _751=$.data(_74e,"datagrid"); +var opts=_751.options; +if(_750){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return ""; +} +} +var _752=$(_74e).datagrid("getColumnFields",_750); +var _753=[""]; +for(var i=0;i"); +_753.push(this.renderRow.call(this,_74e,_752,_750,_74f,row)); +_753.push(""); +_74f++; +} +_753.push("
        "); +return _753.join(""); +},renderRow:function(_758,_759,_75a,_75b,_75c){ +var opts=$.data(_758,"datagrid").options; +var cc=[]; +if(_75a&&opts.rownumbers){ +var _75d=_75b+1; +if(opts.pagination){ +_75d+=(opts.pageNumber-1)*opts.pageSize; +} +cc.push("
        "+_75d+"
        "); +} +for(var i=0;i<_759.length;i++){ +var _75e=_759[i]; +var col=$(_758).datagrid("getColumnOption",_75e); +if(col){ +var _75f=_75c[_75e]; +var css=col.styler?(col.styler(_75f,_75c,_75b)||""):""; +var _760=""; +var _761=""; +if(typeof css=="string"){ +_761=css; +}else{ +if(css){ +_760=css["class"]||""; +_761=css["style"]||""; +} +} +var cls=_760?"class=\""+_760+"\"":""; +var _762=col.hidden?"style=\"display:none;"+_761+"\"":(_761?"style=\""+_761+"\"":""); +cc.push(""); +var _762=""; +if(!col.checkbox){ +if(col.align){ +_762+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_762+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_762+="height:auto;"; +} +} +} +cc.push("
        "); +if(col.checkbox){ +cc.push(""); +}else{ +if(col.formatter){ +cc.push(col.formatter(_75f,_75c,_75b)); +}else{ +cc.push(_75f); +} +} +cc.push("
        "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_763,_764){ +this.updateRow.call(this,_763,_764,{}); +},updateRow:function(_765,_766,row){ +var opts=$.data(_765,"datagrid").options; +var rows=$(_765).datagrid("getRows"); +var _767=_768(_766); +$.extend(rows[_766],row); +var _769=_768(_766); +var _76a=_767.c; +var _76b=_769.s; +var _76c="datagrid-row "+(_766%2&&opts.striped?"datagrid-row-alt ":" ")+_769.c; +function _768(_76d){ +var css=opts.rowStyler?opts.rowStyler.call(_765,_76d,rows[_76d]):""; +var _76e=""; +var _76f=""; +if(typeof css=="string"){ +_76f=css; +}else{ +if(css){ +_76e=css["class"]||""; +_76f=css["style"]||""; +} +} +return {c:_76e,s:_76f}; +}; +function _770(_771){ +var _772=$(_765).datagrid("getColumnFields",_771); +var tr=opts.finder.getTr(_765,_766,"body",(_771?1:2)); +var _773=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow.call(this,_765,_772,_771,_766,rows[_766])); +tr.attr("style",_76b).removeClass(_76a).addClass(_76c); +if(_773){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +}; +_770.call(this,true); +_770.call(this,false); +$(_765).datagrid("fixRowHeight",_766); +},insertRow:function(_774,_775,row){ +var _776=$.data(_774,"datagrid"); +var opts=_776.options; +var dc=_776.dc; +var data=_776.data; +if(_775==undefined||_775==null){ +_775=data.rows.length; +} +if(_775>data.rows.length){ +_775=data.rows.length; +} +function _777(_778){ +var _779=_778?1:2; +for(var i=data.rows.length-1;i>=_775;i--){ +var tr=opts.finder.getTr(_774,i,"body",_779); +tr.attr("datagrid-row-index",i+1); +tr.attr("id",_776.rowIdPrefix+"-"+_779+"-"+(i+1)); +if(_778&&opts.rownumbers){ +var _77a=i+2; +if(opts.pagination){ +_77a+=(opts.pageNumber-1)*opts.pageSize; +} +tr.find("div.datagrid-cell-rownumber").html(_77a); +} +if(opts.striped){ +tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); +} +} +}; +function _77b(_77c){ +var _77d=_77c?1:2; +var _77e=$(_774).datagrid("getColumnFields",_77c); +var _77f=_776.rowIdPrefix+"-"+_77d+"-"+_775; +var tr=""; +if(_775>=data.rows.length){ +if(data.rows.length){ +opts.finder.getTr(_774,"","last",_77d).after(tr); +}else{ +var cc=_77c?dc.body1:dc.body2; +cc.html(""+tr+"
        "); +} +}else{ +opts.finder.getTr(_774,_775+1,"body",_77d).before(tr); +} +}; +_777.call(this,true); +_777.call(this,false); +_77b.call(this,true); +_77b.call(this,false); +data.total+=1; +data.rows.splice(_775,0,row); +this.refreshRow.call(this,_774,_775); +},deleteRow:function(_780,_781){ +var _782=$.data(_780,"datagrid"); +var opts=_782.options; +var data=_782.data; +function _783(_784){ +var _785=_784?1:2; +for(var i=_781+1;itable>tbody>tr[datagrid-row-index="+_792+"]"); +} +return tr; +}else{ +if(type=="footer"){ +return (_793==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_792+"]"); +}else{ +if(type=="selected"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); +}else{ +if(type=="highlight"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); +}else{ +if(type=="checked"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-checked"); +}else{ +if(type=="editing"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-editing"); +}else{ +if(type=="last"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); +}else{ +if(type=="allbody"){ +return (_793==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); +}else{ +if(type=="allfooter"){ +return (_793==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); +} +} +} +} +} +} +} +} +} +} +},getRow:function(_795,p){ +var _796=(typeof p=="object")?p.attr("datagrid-row-index"):p; +return $.data(_795,"datagrid").data.rows[parseInt(_796)]; +},getRows:function(_797){ +return $(_797).datagrid("getRows"); +}},view:_745,onBeforeLoad:function(_798){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onClickRow:function(_799,_79a){ +},onDblClickRow:function(_79b,_79c){ +},onClickCell:function(_79d,_79e,_79f){ +},onDblClickCell:function(_7a0,_7a1,_7a2){ +},onBeforeSortColumn:function(sort,_7a3){ +},onSortColumn:function(sort,_7a4){ +},onResizeColumn:function(_7a5,_7a6){ +},onBeforeSelect:function(_7a7,_7a8){ +},onSelect:function(_7a9,_7aa){ +},onBeforeUnselect:function(_7ab,_7ac){ +},onUnselect:function(_7ad,_7ae){ +},onSelectAll:function(rows){ +},onUnselectAll:function(rows){ +},onBeforeCheck:function(_7af,_7b0){ +},onCheck:function(_7b1,_7b2){ +},onBeforeUncheck:function(_7b3,_7b4){ +},onUncheck:function(_7b5,_7b6){ +},onCheckAll:function(rows){ +},onUncheckAll:function(rows){ +},onBeforeEdit:function(_7b7,_7b8){ +},onBeginEdit:function(_7b9,_7ba){ +},onEndEdit:function(_7bb,_7bc,_7bd){ +},onAfterEdit:function(_7be,_7bf,_7c0){ +},onCancelEdit:function(_7c1,_7c2){ +},onHeaderContextMenu:function(e,_7c3){ +},onRowContextMenu:function(e,_7c4,_7c5){ +}}); +})(jQuery); +(function($){ +var _7c6; +$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ +var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); +if(p.length){ +return; +} +_7c7(_7c6); +_7c6=undefined; +}); +function _7c8(_7c9){ +var _7ca=$.data(_7c9,"propertygrid"); +var opts=$.data(_7c9,"propertygrid").options; +$(_7c9).datagrid($.extend({},opts,{cls:"propertygrid",view:(opts.showGroup?opts.groupView:opts.view),onBeforeEdit:function(_7cb,row){ +if(opts.onBeforeEdit.call(_7c9,_7cb,row)==false){ +return false; +} +var dg=$(this); +var row=dg.datagrid("getRows")[_7cb]; +var col=dg.datagrid("getColumnOption","value"); +col.editor=row.editor; +},onClickCell:function(_7cc,_7cd,_7ce){ +if(_7c6!=this){ +_7c7(_7c6); +_7c6=this; +} +if(opts.editIndex!=_7cc){ +_7c7(_7c6); +$(this).datagrid("beginEdit",_7cc); +var ed=$(this).datagrid("getEditor",{index:_7cc,field:_7cd}); +if(!ed){ +ed=$(this).datagrid("getEditor",{index:_7cc,field:"value"}); +} +if(ed){ +var t=$(ed.target); +var _7cf=t.data("textbox")?t.textbox("textbox"):t; +_7cf.focus(); +opts.editIndex=_7cc; +} +} +opts.onClickCell.call(_7c9,_7cc,_7cd,_7ce); +},loadFilter:function(data){ +_7c7(this); +return opts.loadFilter.call(this,data); +}})); +}; +function _7c7(_7d0){ +var t=$(_7d0); +if(!t.length){ +return; +} +var opts=$.data(_7d0,"propertygrid").options; +opts.finder.getTr(_7d0,null,"editing").each(function(){ +var _7d1=parseInt($(this).attr("datagrid-row-index")); +if(t.datagrid("validateRow",_7d1)){ +t.datagrid("endEdit",_7d1); +}else{ +t.datagrid("cancelEdit",_7d1); +} +}); +opts.editIndex=undefined; +}; +$.fn.propertygrid=function(_7d2,_7d3){ +if(typeof _7d2=="string"){ +var _7d4=$.fn.propertygrid.methods[_7d2]; +if(_7d4){ +return _7d4(this,_7d3); +}else{ +return this.datagrid(_7d2,_7d3); +} +} +_7d2=_7d2||{}; +return this.each(function(){ +var _7d5=$.data(this,"propertygrid"); +if(_7d5){ +$.extend(_7d5.options,_7d2); +}else{ +var opts=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_7d2); +opts.frozenColumns=$.extend(true,[],opts.frozenColumns); +opts.columns=$.extend(true,[],opts.columns); +$.data(this,"propertygrid",{options:opts}); +} +_7c8(this); +}); +}; +$.fn.propertygrid.methods={options:function(jq){ +return $.data(jq[0],"propertygrid").options; +}}; +$.fn.propertygrid.parseOptions=function(_7d6){ +return $.extend({},$.fn.datagrid.parseOptions(_7d6),$.parser.parseOptions(_7d6,[{showGroup:"boolean"}])); +}; +var _7d7=$.extend({},$.fn.datagrid.defaults.view,{render:function(_7d8,_7d9,_7da){ +var _7db=[]; +var _7dc=this.groups; +for(var i=0;i<_7dc.length;i++){ +_7db.push(this.renderGroup.call(this,_7d8,i,_7dc[i],_7da)); +} +$(_7d9).html(_7db.join("")); +},renderGroup:function(_7dd,_7de,_7df,_7e0){ +var _7e1=$.data(_7dd,"datagrid"); +var opts=_7e1.options; +var _7e2=$(_7dd).datagrid("getColumnFields",_7e0); +var _7e3=[]; +_7e3.push("
        "); +_7e3.push(""); +_7e3.push(""); +if((_7e0&&(opts.rownumbers||opts.frozenColumns.length))||(!_7e0&&!(opts.rownumbers||opts.frozenColumns.length))){ +_7e3.push(""); +} +_7e3.push(""); +_7e3.push(""); +_7e3.push("
         "); +if(!_7e0){ +_7e3.push(""); +_7e3.push(opts.groupFormatter.call(_7dd,_7df.value,_7df.rows)); +_7e3.push(""); +} +_7e3.push("
        "); +_7e3.push("
        "); +_7e3.push(""); +var _7e4=_7df.startIndex; +for(var j=0;j<_7df.rows.length;j++){ +var css=opts.rowStyler?opts.rowStyler.call(_7dd,_7e4,_7df.rows[j]):""; +var _7e5=""; +var _7e6=""; +if(typeof css=="string"){ +_7e6=css; +}else{ +if(css){ +_7e5=css["class"]||""; +_7e6=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_7e4%2&&opts.striped?"datagrid-row-alt ":" ")+_7e5+"\""; +var _7e7=_7e6?"style=\""+_7e6+"\"":""; +var _7e8=_7e1.rowIdPrefix+"-"+(_7e0?1:2)+"-"+_7e4; +_7e3.push(""); +_7e3.push(this.renderRow.call(this,_7dd,_7e2,_7e0,_7e4,_7df.rows[j])); +_7e3.push(""); +_7e4++; +} +_7e3.push("
        "); +return _7e3.join(""); +},bindEvents:function(_7e9){ +var _7ea=$.data(_7e9,"datagrid"); +var dc=_7ea.dc; +var body=dc.body1.add(dc.body2); +var _7eb=($.data(body[0],"events")||$._data(body[0],"events")).click[0].handler; +body.unbind("click").bind("click",function(e){ +var tt=$(e.target); +var _7ec=tt.closest("span.datagrid-row-expander"); +if(_7ec.length){ +var _7ed=_7ec.closest("div.datagrid-group").attr("group-index"); +if(_7ec.hasClass("datagrid-row-collapse")){ +$(_7e9).datagrid("collapseGroup",_7ed); +}else{ +$(_7e9).datagrid("expandGroup",_7ed); +} +}else{ +_7eb(e); +} +e.stopPropagation(); +}); +},onBeforeRender:function(_7ee,rows){ +var _7ef=$.data(_7ee,"datagrid"); +var opts=_7ef.options; +_7f0(); +var _7f1=[]; +for(var i=0;i"+".datagrid-group{height:25px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;}"+""); +} +}; +}}); +$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_7f8){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _7f9=view.find(_7f8!=undefined?"div.datagrid-group[group-index=\""+_7f8+"\"]":"div.datagrid-group"); +var _7fa=_7f9.find("span.datagrid-row-expander"); +if(_7fa.hasClass("datagrid-row-expand")){ +_7fa.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); +_7f9.next("table").show(); +} +$(this).datagrid("fixRowHeight"); +}); +},collapseGroup:function(jq,_7fb){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _7fc=view.find(_7fb!=undefined?"div.datagrid-group[group-index=\""+_7fb+"\"]":"div.datagrid-group"); +var _7fd=_7fc.find("span.datagrid-row-expander"); +if(_7fd.hasClass("datagrid-row-collapse")){ +_7fd.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); +_7fc.next("table").hide(); +} +$(this).datagrid("fixRowHeight"); +}); +}}); +$.extend(_7d7,{refreshGroupTitle:function(_7fe,_7ff){ +var _800=$.data(_7fe,"datagrid"); +var opts=_800.options; +var dc=_800.dc; +var _801=this.groups[_7ff]; +var span=dc.body2.children("div.datagrid-group[group-index="+_7ff+"]").find("span.datagrid-group-title"); +span.html(opts.groupFormatter.call(_7fe,_801.value,_801.rows)); +},insertRow:function(_802,_803,row){ +var _804=$.data(_802,"datagrid"); +var opts=_804.options; +var dc=_804.dc; +var _805=null; +var _806; +for(var i=0;i_805.startIndex+_805.rows.length){ +_803=_805.startIndex+_805.rows.length; +} +} +$.fn.datagrid.defaults.view.insertRow.call(this,_802,_803,row); +if(_803>=_805.startIndex+_805.rows.length){ +_807(_803,true); +_807(_803,false); +} +_805.rows.splice(_803-_805.startIndex,0,row); +}else{ +_805={value:row[opts.groupField],rows:[row],startIndex:_804.data.rows.length}; +_806=this.groups.length; +dc.body1.append(this.renderGroup.call(this,_802,_806,_805,true)); +dc.body2.append(this.renderGroup.call(this,_802,_806,_805,false)); +this.groups.push(_805); +_804.data.rows.push(row); +} +this.refreshGroupTitle(_802,_806); +function _807(_808,_809){ +var _80a=_809?1:2; +var _80b=opts.finder.getTr(_802,_808-1,"body",_80a); +var tr=opts.finder.getTr(_802,_808,"body",_80a); +tr.insertAfter(_80b); +}; +},updateRow:function(_80c,_80d,row){ +var opts=$.data(_80c,"datagrid").options; +$.fn.datagrid.defaults.view.updateRow.call(this,_80c,_80d,row); +var tb=opts.finder.getTr(_80c,_80d,"body",2).closest("table.datagrid-btable"); +var _80e=parseInt(tb.prev().attr("group-index")); +this.refreshGroupTitle(_80c,_80e); +},deleteRow:function(_80f,_810){ +var _811=$.data(_80f,"datagrid"); +var opts=_811.options; +var dc=_811.dc; +var body=dc.body1.add(dc.body2); +var tb=opts.finder.getTr(_80f,_810,"body",2).closest("table.datagrid-btable"); +var _812=parseInt(tb.prev().attr("group-index")); +$.fn.datagrid.defaults.view.deleteRow.call(this,_80f,_810); +var _813=this.groups[_812]; +if(_813.rows.length>1){ +_813.rows.splice(_810-_813.startIndex,1); +this.refreshGroupTitle(_80f,_812); +}else{ +body.children("div.datagrid-group[group-index="+_812+"]").remove(); +for(var i=_812+1;i"+""+"
        "+""+"").insertAfter(tr); +}; +}; +function _83c(_83d,_83e,data,_83f){ +var _840=$.data(_83d,"treegrid"); +var opts=_840.options; +var dc=_840.dc; +data=opts.loadFilter.call(_83d,data,_83e); +var node=find(_83d,_83e); +if(node){ +var _841=opts.finder.getTr(_83d,_83e,"body",1); +var _842=opts.finder.getTr(_83d,_83e,"body",2); +var cc1=_841.next("tr.treegrid-tr-tree").children("td").children("div"); +var cc2=_842.next("tr.treegrid-tr-tree").children("td").children("div"); +if(!_83f){ +node.children=[]; +} +}else{ +var cc1=dc.body1; +var cc2=dc.body2; +if(!_83f){ +_840.data=[]; +} +} +if(!_83f){ +cc1.empty(); +cc2.empty(); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_83d,_83e,data); +} +opts.view.render.call(opts.view,_83d,cc1,true); +opts.view.render.call(opts.view,_83d,cc2,false); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_83d,dc.footer1,true); +opts.view.renderFooter.call(opts.view,_83d,dc.footer2,false); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_83d); +} +if(!_83e&&opts.pagination){ +var _843=$.data(_83d,"treegrid").total; +var _844=$(_83d).datagrid("getPager"); +if(_844.pagination("options").total!=_843){ +_844.pagination({total:_843}); +} +} +_826(_83d); +_82e(_83d); +$(_83d).treegrid("showLines"); +$(_83d).treegrid("setSelectionState"); +$(_83d).treegrid("autoSizeColumn"); +opts.onLoadSuccess.call(_83d,node,data); +}; +function _825(_845,_846,_847,_848,_849){ +var opts=$.data(_845,"treegrid").options; +var body=$(_845).datagrid("getPanel").find("div.datagrid-body"); +if(_847){ +opts.queryParams=_847; +} +var _84a=$.extend({},opts.queryParams); +if(opts.pagination){ +$.extend(_84a,{page:opts.pageNumber,rows:opts.pageSize}); +} +if(opts.sortName){ +$.extend(_84a,{sort:opts.sortName,order:opts.sortOrder}); +} +var row=find(_845,_846); +if(opts.onBeforeLoad.call(_845,row,_84a)==false){ +return; +} +var _84b=body.find("tr[node-id=\""+_846+"\"] span.tree-folder"); +_84b.addClass("tree-loading"); +$(_845).treegrid("loading"); +var _84c=opts.loader.call(_845,_84a,function(data){ +_84b.removeClass("tree-loading"); +$(_845).treegrid("loaded"); +_83c(_845,_846,data,_848); +if(_849){ +_849(); +} +},function(){ +_84b.removeClass("tree-loading"); +$(_845).treegrid("loaded"); +opts.onLoadError.apply(_845,arguments); +if(_849){ +_849(); +} +}); +if(_84c==false){ +_84b.removeClass("tree-loading"); +$(_845).treegrid("loaded"); +} +}; +function _84d(_84e){ +var rows=_84f(_84e); +if(rows.length){ +return rows[0]; +}else{ +return null; +} +}; +function _84f(_850){ +return $.data(_850,"treegrid").data; +}; +function _851(_852,_853){ +var row=find(_852,_853); +if(row._parentId){ +return find(_852,row._parentId); +}else{ +return null; +} +}; +function _82a(_854,_855){ +var opts=$.data(_854,"treegrid").options; +var body=$(_854).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); +var _856=[]; +if(_855){ +_857(_855); +}else{ +var _858=_84f(_854); +for(var i=0;i<_858.length;i++){ +_856.push(_858[i]); +_857(_858[i][opts.idField]); +} +} +function _857(_859){ +var _85a=find(_854,_859); +if(_85a&&_85a.children){ +for(var i=0,len=_85a.children.length;i").insertBefore(_87a); +if(hit.prev().length){ +hit.prev().remove(); +} +} +} +_83c(_878,_879.parent,_879.data,true); +}; +function _87b(_87c,_87d){ +var ref=_87d.before||_87d.after; +var opts=$.data(_87c,"treegrid").options; +var _87e=_851(_87c,ref); +_877(_87c,{parent:(_87e?_87e[opts.idField]:null),data:[_87d.data]}); +var _87f=_87e?_87e.children:$(_87c).treegrid("getRoots"); +for(var i=0;i<_87f.length;i++){ +if(_87f[i][opts.idField]==ref){ +var _880=_87f[_87f.length-1]; +_87f.splice(_87d.before?i:(i+1),0,_880); +_87f.splice(_87f.length-1,1); +break; +} +} +_881(true); +_881(false); +_82e(_87c); +$(_87c).treegrid("showLines"); +function _881(_882){ +var _883=_882?1:2; +var tr=opts.finder.getTr(_87c,_87d.data[opts.idField],"body",_883); +var _884=tr.closest("table.datagrid-btable"); +tr=tr.parent().children(); +var dest=opts.finder.getTr(_87c,ref,"body",_883); +if(_87d.before){ +tr.insertBefore(dest); +}else{ +var sub=dest.next("tr.treegrid-tr-tree"); +tr.insertAfter(sub.length?sub:dest); +} +_884.remove(); +}; +}; +function _885(_886,_887){ +var _888=$.data(_886,"treegrid"); +$(_886).datagrid("deleteRow",_887); +_82e(_886); +_888.total-=1; +$(_886).datagrid("getPager").pagination("refresh",{total:_888.total}); +$(_886).treegrid("showLines"); +}; +function _889(_88a){ +var t=$(_88a); +var opts=t.treegrid("options"); +if(opts.lines){ +t.treegrid("getPanel").addClass("tree-lines"); +}else{ +t.treegrid("getPanel").removeClass("tree-lines"); +return; +} +t.treegrid("getPanel").find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +t.treegrid("getPanel").find("div.datagrid-cell").removeClass("tree-node-last tree-root-first tree-root-one"); +var _88b=t.treegrid("getRoots"); +if(_88b.length>1){ +_88c(_88b[0]).addClass("tree-root-first"); +}else{ +if(_88b.length==1){ +_88c(_88b[0]).addClass("tree-root-one"); +} +} +_88d(_88b); +_88e(_88b); +function _88d(_88f){ +$.map(_88f,function(node){ +if(node.children&&node.children.length){ +_88d(node.children); +}else{ +var cell=_88c(node); +cell.find(".tree-icon").prev().addClass("tree-join"); +} +}); +if(_88f.length){ +var cell=_88c(_88f[_88f.length-1]); +cell.addClass("tree-node-last"); +cell.find(".tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +} +}; +function _88e(_890){ +$.map(_890,function(node){ +if(node.children&&node.children.length){ +_88e(node.children); +} +}); +for(var i=0;i<_890.length-1;i++){ +var node=_890[i]; +var _891=t.treegrid("getLevel",node[opts.idField]); +var tr=opts.finder.getTr(_88a,node[opts.idField]); +var cc=tr.next().find("tr.datagrid-row td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +cc.find("span:eq("+(_891-1)+")").addClass("tree-line"); +} +}; +function _88c(node){ +var tr=opts.finder.getTr(_88a,node[opts.idField]); +var cell=tr.find("td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +return cell; +}; +}; +$.fn.treegrid=function(_892,_893){ +if(typeof _892=="string"){ +var _894=$.fn.treegrid.methods[_892]; +if(_894){ +return _894(this,_893); +}else{ +return this.datagrid(_892,_893); +} +} +_892=_892||{}; +return this.each(function(){ +var _895=$.data(this,"treegrid"); +if(_895){ +$.extend(_895.options,_892); +}else{ +_895=$.data(this,"treegrid",{options:$.extend({},$.fn.treegrid.defaults,$.fn.treegrid.parseOptions(this),_892),data:[]}); +} +_815(this); +if(_895.options.data){ +$(this).treegrid("loadData",_895.options.data); +} +_825(this); +}); +}; +$.fn.treegrid.methods={options:function(jq){ +return $.data(jq[0],"treegrid").options; +},resize:function(jq,_896){ +return jq.each(function(){ +$(this).datagrid("resize",_896); +}); +},fixRowHeight:function(jq,_897){ +return jq.each(function(){ +_826(this,_897); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_83c(this,data.parent,data); +}); +},load:function(jq,_898){ +return jq.each(function(){ +$(this).treegrid("options").pageNumber=1; +$(this).treegrid("getPager").pagination({pageNumber:1}); +$(this).treegrid("reload",_898); +}); +},reload:function(jq,id){ +return jq.each(function(){ +var opts=$(this).treegrid("options"); +var _899={}; +if(typeof id=="object"){ +_899=id; +}else{ +_899=$.extend({},opts.queryParams); +_899.id=id; +} +if(_899.id){ +var node=$(this).treegrid("find",_899.id); +if(node.children){ +node.children.splice(0,node.children.length); +} +opts.queryParams=_899; +var tr=opts.finder.getTr(this,_899.id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.find("span.tree-hit").removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +_864(this,_899.id); +}else{ +_825(this,null,_899); +} +}); +},reloadFooter:function(jq,_89a){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +var dc=$.data(this,"datagrid").dc; +if(_89a){ +$.data(this,"treegrid").footer=_89a; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).treegrid("fixRowHeight"); +} +}); +},getData:function(jq){ +return $.data(jq[0],"treegrid").data; +},getFooterRows:function(jq){ +return $.data(jq[0],"treegrid").footer; +},getRoot:function(jq){ +return _84d(jq[0]); +},getRoots:function(jq){ +return _84f(jq[0]); +},getParent:function(jq,id){ +return _851(jq[0],id); +},getChildren:function(jq,id){ +return _82a(jq[0],id); +},getLevel:function(jq,id){ +return _85c(jq[0],id); +},find:function(jq,id){ +return find(jq[0],id); +},isLeaf:function(jq,id){ +var opts=$.data(jq[0],"treegrid").options; +var tr=opts.finder.getTr(jq[0],id); +var hit=tr.find("span.tree-hit"); +return hit.length==0; +},select:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("selectRow",id); +}); +},unselect:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("unselectRow",id); +}); +},collapse:function(jq,id){ +return jq.each(function(){ +_861(this,id); +}); +},expand:function(jq,id){ +return jq.each(function(){ +_864(this,id); +}); +},toggle:function(jq,id){ +return jq.each(function(){ +_834(this,id); +}); +},collapseAll:function(jq,id){ +return jq.each(function(){ +_86c(this,id); +}); +},expandAll:function(jq,id){ +return jq.each(function(){ +_870(this,id); +}); +},expandTo:function(jq,id){ +return jq.each(function(){ +_874(this,id); +}); +},append:function(jq,_89b){ +return jq.each(function(){ +_877(this,_89b); +}); +},insert:function(jq,_89c){ +return jq.each(function(){ +_87b(this,_89c); +}); +},remove:function(jq,id){ +return jq.each(function(){ +_885(this,id); +}); +},pop:function(jq,id){ +var row=jq.treegrid("find",id); +jq.treegrid("remove",id); +return row; +},refresh:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +opts.view.refreshRow.call(opts.view,this,id); +}); +},update:function(jq,_89d){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +opts.view.updateRow.call(opts.view,this,_89d.id,_89d.row); +}); +},beginEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("beginEdit",id); +$(this).treegrid("fixRowHeight",id); +}); +},endEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("endEdit",id); +}); +},cancelEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("cancelEdit",id); +}); +},showLines:function(jq){ +return jq.each(function(){ +_889(this); +}); +}}; +$.fn.treegrid.parseOptions=function(_89e){ +return $.extend({},$.fn.datagrid.parseOptions(_89e),$.parser.parseOptions(_89e,["treeField",{animate:"boolean"}])); +}; +var _89f=$.extend({},$.fn.datagrid.defaults.view,{render:function(_8a0,_8a1,_8a2){ +var opts=$.data(_8a0,"treegrid").options; +var _8a3=$(_8a0).datagrid("getColumnFields",_8a2); +var _8a4=$.data(_8a0,"datagrid").rowIdPrefix; +if(_8a2){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return; +} +} +var view=this; +if(this.treeNodes&&this.treeNodes.length){ +var _8a5=_8a6(_8a2,this.treeLevel,this.treeNodes); +$(_8a1).append(_8a5.join("")); +} +function _8a6(_8a7,_8a8,_8a9){ +var _8aa=$(_8a0).treegrid("getParent",_8a9[0][opts.idField]); +var _8ab=(_8aa?_8aa.children.length:$(_8a0).treegrid("getRoots").length)-_8a9.length; +var _8ac=[""]; +for(var i=0;i<_8a9.length;i++){ +var row=_8a9[i]; +if(row.state!="open"&&row.state!="closed"){ +row.state="open"; +} +var css=opts.rowStyler?opts.rowStyler.call(_8a0,row):""; +var _8ad=""; +var _8ae=""; +if(typeof css=="string"){ +_8ae=css; +}else{ +if(css){ +_8ad=css["class"]||""; +_8ae=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_8ab++%2&&opts.striped?"datagrid-row-alt ":" ")+_8ad+"\""; +var _8af=_8ae?"style=\""+_8ae+"\"":""; +var _8b0=_8a4+"-"+(_8a7?1:2)+"-"+row[opts.idField]; +_8ac.push(""); +_8ac=_8ac.concat(view.renderRow.call(view,_8a0,_8a3,_8a7,_8a8,row)); +_8ac.push(""); +if(row.children&&row.children.length){ +var tt=_8a6(_8a7,_8a8+1,row.children); +var v=row.state=="closed"?"none":"block"; +_8ac.push(""); +} +} +_8ac.push("
        "); +_8ac=_8ac.concat(tt); +_8ac.push("
        "); +return _8ac; +}; +},renderFooter:function(_8b1,_8b2,_8b3){ +var opts=$.data(_8b1,"treegrid").options; +var rows=$.data(_8b1,"treegrid").footer||[]; +var _8b4=$(_8b1).datagrid("getColumnFields",_8b3); +var _8b5=[""]; +for(var i=0;i"); +_8b5.push(this.renderRow.call(this,_8b1,_8b4,_8b3,0,row)); +_8b5.push(""); +} +_8b5.push("
        "); +$(_8b2).html(_8b5.join("")); +},renderRow:function(_8b6,_8b7,_8b8,_8b9,row){ +var opts=$.data(_8b6,"treegrid").options; +var cc=[]; +if(_8b8&&opts.rownumbers){ +cc.push("
        0
        "); +} +for(var i=0;i<_8b7.length;i++){ +var _8ba=_8b7[i]; +var col=$(_8b6).datagrid("getColumnOption",_8ba); +if(col){ +var css=col.styler?(col.styler(row[_8ba],row)||""):""; +var _8bb=""; +var _8bc=""; +if(typeof css=="string"){ +_8bc=css; +}else{ +if(cc){ +_8bb=css["class"]||""; +_8bc=css["style"]||""; +} +} +var cls=_8bb?"class=\""+_8bb+"\"":""; +var _8bd=col.hidden?"style=\"display:none;"+_8bc+"\"":(_8bc?"style=\""+_8bc+"\"":""); +cc.push(""); +var _8bd=""; +if(!col.checkbox){ +if(col.align){ +_8bd+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_8bd+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_8bd+="height:auto;"; +} +} +} +cc.push("
        "); +if(col.checkbox){ +if(row.checked){ +cc.push(""); +}else{ +var val=null; +if(col.formatter){ +val=col.formatter(row[_8ba],row); +}else{ +val=row[_8ba]; +} +if(_8ba==opts.treeField){ +for(var j=0;j<_8b9;j++){ +cc.push(""); +} +if(row.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(row.children&&row.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +cc.push(""+val+""); +}else{ +cc.push(val); +} +} +cc.push("
        "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_8be,id){ +this.updateRow.call(this,_8be,id,{}); +},updateRow:function(_8bf,id,row){ +var opts=$.data(_8bf,"treegrid").options; +var _8c0=$(_8bf).treegrid("find",id); +$.extend(_8c0,row); +var _8c1=$(_8bf).treegrid("getLevel",id)-1; +var _8c2=opts.rowStyler?opts.rowStyler.call(_8bf,_8c0):""; +var _8c3=$.data(_8bf,"datagrid").rowIdPrefix; +var _8c4=_8c0[opts.idField]; +function _8c5(_8c6){ +var _8c7=$(_8bf).treegrid("getColumnFields",_8c6); +var tr=opts.finder.getTr(_8bf,id,"body",(_8c6?1:2)); +var _8c8=tr.find("div.datagrid-cell-rownumber").html(); +var _8c9=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow(_8bf,_8c7,_8c6,_8c1,_8c0)); +tr.attr("style",_8c2||""); +tr.find("div.datagrid-cell-rownumber").html(_8c8); +if(_8c9){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +if(_8c4!=id){ +tr.attr("id",_8c3+"-"+(_8c6?1:2)+"-"+_8c4); +tr.attr("node-id",_8c4); +} +}; +_8c5.call(this,true); +_8c5.call(this,false); +$(_8bf).treegrid("fixRowHeight",id); +},deleteRow:function(_8ca,id){ +var opts=$.data(_8ca,"treegrid").options; +var tr=opts.finder.getTr(_8ca,id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.remove(); +var _8cb=del(id); +if(_8cb){ +if(_8cb.children.length==0){ +tr=opts.finder.getTr(_8ca,_8cb[opts.idField]); +tr.next("tr.treegrid-tr-tree").remove(); +var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); +cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +cell.find(".tree-hit").remove(); +$("").prependTo(cell); +} +} +function del(id){ +var cc; +var _8cc=$(_8ca).treegrid("getParent",id); +if(_8cc){ +cc=_8cc.children; +}else{ +cc=$(_8ca).treegrid("getData"); +} +for(var i=0;ib?1:-1); +}; +r=_8d7(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +for(var i=0;i"); +if(!_8f5){ +_8f8.push(""); +_8f8.push(opts.groupFormatter.call(_8f2,_8f4.value,_8f4.rows)); +_8f8.push(""); +} +_8f8.push("
        "); +_8f8.push(this.renderTable(_8f2,_8f4.startIndex,_8f4.rows,_8f5)); +return _8f8.join(""); +},groupRows:function(_8f9,rows){ +var _8fa=$.data(_8f9,"datagrid"); +var opts=_8fa.options; +var _8fb=[]; +for(var i=0;idiv.combo-p>div.combo-panel:visible").panel("close"); +}); +}); +function _90b(_90c){ +var _90d=$.data(_90c,"combo"); +var opts=_90d.options; +if(!_90d.panel){ +_90d.panel=$("
        ").appendTo("body"); +_90d.panel.panel({minWidth:opts.panelMinWidth,maxWidth:opts.panelMaxWidth,minHeight:opts.panelMinHeight,maxHeight:opts.panelMaxHeight,doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ +var _90e=$(this).panel("options").comboTarget; +var _90f=$.data(_90e,"combo"); +if(_90f){ +_90f.options.onShowPanel.call(_90e); +} +},onBeforeClose:function(){ +_90a(this); +},onClose:function(){ +var _910=$(this).panel("options").comboTarget; +var _911=$(_910).data("combo"); +if(_911){ +_911.options.onHidePanel.call(_910); +} +}}); +} +var _912=$.extend(true,[],opts.icons); +if(opts.hasDownArrow){ +_912.push({iconCls:"combo-arrow",handler:function(e){ +_916(e.data.target); +}}); +} +$(_90c).addClass("combo-f").textbox($.extend({},opts,{icons:_912,onChange:function(){ +}})); +$(_90c).attr("comboName",$(_90c).attr("textboxName")); +_90d.combo=$(_90c).next(); +_90d.combo.addClass("combo"); +}; +function _913(_914){ +var _915=$.data(_914,"combo"); +var opts=_915.options; +var p=_915.panel; +if(p.is(":visible")){ +p.panel("close"); +} +if(!opts.cloned){ +p.panel("destroy"); +} +$(_914).textbox("destroy"); +}; +function _916(_917){ +var _918=$.data(_917,"combo").panel; +if(_918.is(":visible")){ +_919(_917); +}else{ +var p=$(_917).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_918).not(p).panel("close"); +$(_917).combo("showPanel"); +} +$(_917).combo("textbox").focus(); +}; +function _90a(_91a){ +$(_91a).find(".combo-f").each(function(){ +var p=$(this).combo("panel"); +if(p.is(":visible")){ +p.panel("close"); +} +}); +}; +function _91b(e){ +var _91c=e.data.target; +var _91d=$.data(_91c,"combo"); +var opts=_91d.options; +var _91e=_91d.panel; +if(!opts.editable){ +_916(_91c); +}else{ +var p=$(_91c).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_91e).not(p).panel("close"); +} +}; +function _91f(e){ +var _920=e.data.target; +var t=$(_920); +var _921=t.data("combo"); +var opts=t.combo("options"); +switch(e.keyCode){ +case 38: +opts.keyHandler.up.call(_920,e); +break; +case 40: +opts.keyHandler.down.call(_920,e); +break; +case 37: +opts.keyHandler.left.call(_920,e); +break; +case 39: +opts.keyHandler.right.call(_920,e); +break; +case 13: +e.preventDefault(); +opts.keyHandler.enter.call(_920,e); +return false; +case 9: +case 27: +_919(_920); +break; +default: +if(opts.editable){ +if(_921.timer){ +clearTimeout(_921.timer); +} +_921.timer=setTimeout(function(){ +var q=t.combo("getText"); +if(_921.previousText!=q){ +_921.previousText=q; +t.combo("showPanel"); +opts.keyHandler.query.call(_920,q,e); +t.combo("validate"); +} +},opts.delay); +} +} +}; +function _922(_923){ +var _924=$.data(_923,"combo"); +var _925=_924.combo; +var _926=_924.panel; +var opts=$(_923).combo("options"); +var _927=_926.panel("options"); +_927.comboTarget=_923; +if(_927.closed){ +_926.panel("panel").show().css({zIndex:($.fn.menu?$.fn.menu.defaults.zIndex++:$.fn.window.defaults.zIndex++),left:-999999}); +_926.panel("resize",{width:(opts.panelWidth?opts.panelWidth:_925._outerWidth()),height:opts.panelHeight}); +_926.panel("panel").hide(); +_926.panel("open"); +} +(function(){ +if(_926.is(":visible")){ +_926.panel("move",{left:_928(),top:_929()}); +setTimeout(arguments.callee,200); +} +})(); +function _928(){ +var left=_925.offset().left; +if(opts.panelAlign=="right"){ +left+=_925._outerWidth()-_926._outerWidth(); +} +if(left+_926._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-_926._outerWidth(); +} +if(left<0){ +left=0; +} +return left; +}; +function _929(){ +var top=_925.offset().top+_925._outerHeight(); +if(top+_926._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +top=_925.offset().top-_926._outerHeight(); +} +if(top<$(document).scrollTop()){ +top=_925.offset().top+_925._outerHeight(); +} +return top; +}; +}; +function _919(_92a){ +var _92b=$.data(_92a,"combo").panel; +_92b.panel("close"); +}; +function _92c(_92d,text){ +var _92e=$.data(_92d,"combo"); +var _92f=$(_92d).textbox("getText"); +if(_92f!=text){ +$(_92d).textbox("setText",text); +_92e.previousText=text; +} +}; +function _930(_931){ +var _932=[]; +var _933=$.data(_931,"combo").combo; +_933.find(".textbox-value").each(function(){ +_932.push($(this).val()); +}); +return _932; +}; +function _934(_935,_936){ +var _937=$.data(_935,"combo"); +var opts=_937.options; +var _938=_937.combo; +if(!$.isArray(_936)){ +_936=_936.split(opts.separator); +} +var _939=_930(_935); +_938.find(".textbox-value").remove(); +var name=$(_935).attr("textboxName")||""; +for(var i=0;i<_936.length;i++){ +var _93a=$("").appendTo(_938); +_93a.attr("name",name); +if(opts.disabled){ +_93a.attr("disabled","disabled"); +} +_93a.val(_936[i]); +} +var _93b=(function(){ +if(_939.length!=_936.length){ +return true; +} +var a1=$.extend(true,[],_939); +var a2=$.extend(true,[],_936); +a1.sort(); +a2.sort(); +for(var i=0;i_956.height()){ +var h=_956.scrollTop()+item.position().top+item.outerHeight()-_956.height(); +_956.scrollTop(h); +} +} +} +}; +function nav(_957,dir){ +var opts=$.data(_957,"combobox").options; +var _958=$(_957).combobox("panel"); +var item=_958.children("div.combobox-item-hover"); +if(!item.length){ +item=_958.children("div.combobox-item-selected"); +} +item.removeClass("combobox-item-hover"); +var _959="div.combobox-item:visible:not(.combobox-item-disabled):first"; +var _95a="div.combobox-item:visible:not(.combobox-item-disabled):last"; +if(!item.length){ +item=_958.children(dir=="next"?_959:_95a); +}else{ +if(dir=="next"){ +item=item.nextAll(_959); +if(!item.length){ +item=_958.children(_959); +} +}else{ +item=item.prevAll(_959); +if(!item.length){ +item=_958.children(_95a); +} +} +} +if(item.length){ +item.addClass("combobox-item-hover"); +var row=opts.finder.getRow(_957,item); +if(row){ +_953(_957,row[opts.valueField]); +if(opts.selectOnNavigation){ +_95b(_957,row[opts.valueField]); +} +} +} +}; +function _95b(_95c,_95d){ +var opts=$.data(_95c,"combobox").options; +var _95e=$(_95c).combo("getValues"); +if($.inArray(_95d+"",_95e)==-1){ +if(opts.multiple){ +_95e.push(_95d); +}else{ +_95e=[_95d]; +} +_95f(_95c,_95e); +opts.onSelect.call(_95c,opts.finder.getRow(_95c,_95d)); +} +}; +function _960(_961,_962){ +var opts=$.data(_961,"combobox").options; +var _963=$(_961).combo("getValues"); +var _964=$.inArray(_962+"",_963); +if(_964>=0){ +_963.splice(_964,1); +_95f(_961,_963); +opts.onUnselect.call(_961,opts.finder.getRow(_961,_962)); +} +}; +function _95f(_965,_966,_967){ +var opts=$.data(_965,"combobox").options; +var _968=$(_965).combo("panel"); +if(!$.isArray(_966)){ +_966=_966.split(opts.separator); +} +_968.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +var vv=[],ss=[]; +for(var i=0;i<_966.length;i++){ +var v=_966[i]; +var s=v; +opts.finder.getEl(_965,v).addClass("combobox-item-selected"); +var row=opts.finder.getRow(_965,v); +if(row){ +s=row[opts.textField]; +} +vv.push(v); +ss.push(s); +} +if(!_967){ +$(_965).combo("setText",ss.join(opts.separator)); +} +$(_965).combo("setValues",vv); +}; +function _969(_96a,data,_96b){ +var _96c=$.data(_96a,"combobox"); +var opts=_96c.options; +_96c.data=opts.loadFilter.call(_96a,data); +_96c.groups=[]; +data=_96c.data; +var _96d=$(_96a).combobox("getValues"); +var dd=[]; +var _96e=undefined; +for(var i=0;i"); +dd.push(opts.groupFormatter?opts.groupFormatter.call(_96a,g):g); +dd.push("
        "); +} +}else{ +_96e=undefined; +} +var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); +dd.push("
        "); +dd.push(opts.formatter?opts.formatter.call(_96a,row):s); +dd.push("
        "); +if(row["selected"]&&$.inArray(v,_96d)==-1){ +_96d.push(v); +} +} +$(_96a).combo("panel").html(dd.join("")); +if(opts.multiple){ +_95f(_96a,_96d,_96b); +}else{ +_95f(_96a,_96d.length?[_96d[_96d.length-1]]:[],_96b); +} +opts.onLoadSuccess.call(_96a,data); +}; +function _96f(_970,url,_971,_972){ +var opts=$.data(_970,"combobox").options; +if(url){ +opts.url=url; +} +_971=$.extend({},opts.queryParams,_971||{}); +if(opts.onBeforeLoad.call(_970,_971)==false){ +return; +} +opts.loader.call(_970,_971,function(data){ +_969(_970,data,_972); +},function(){ +opts.onLoadError.apply(this,arguments); +}); +}; +function _973(_974,q){ +var _975=$.data(_974,"combobox"); +var opts=_975.options; +var qq=opts.multiple?q.split(opts.separator):[q]; +if(opts.mode=="remote"){ +_976(qq); +_96f(_974,null,{q:q},true); +}else{ +var _977=$(_974).combo("panel"); +_977.find("div.combobox-item-selected,div.combobox-item-hover").removeClass("combobox-item-selected combobox-item-hover"); +_977.find("div.combobox-item,div.combobox-group").hide(); +var data=_975.data; +var vv=[]; +$.map(qq,function(q){ +q=$.trim(q); +var _978=q; +var _979=undefined; +for(var i=0;i=0){ +vv.push(v); +} +}); +t.combobox("setValues",vv); +if(!opts.multiple){ +t.combobox("hidePanel"); +} +}; +function _97e(_97f){ +var _980=$.data(_97f,"combobox"); +var opts=_980.options; +_94e++; +_980.itemIdPrefix="_easyui_combobox_i"+_94e; +_980.groupIdPrefix="_easyui_combobox_g"+_94e; +$(_97f).addClass("combobox-f"); +$(_97f).combo($.extend({},opts,{onShowPanel:function(){ +$(_97f).combo("panel").find("div.combobox-item,div.combobox-group").show(); +_953(_97f,$(_97f).combobox("getValue")); +opts.onShowPanel.call(_97f); +}})); +$(_97f).combo("panel").unbind().bind("mouseover",function(e){ +$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); +var item=$(e.target).closest("div.combobox-item"); +if(!item.hasClass("combobox-item-disabled")){ +item.addClass("combobox-item-hover"); +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); +e.stopPropagation(); +}).bind("click",function(e){ +var item=$(e.target).closest("div.combobox-item"); +if(!item.length||item.hasClass("combobox-item-disabled")){ +return; +} +var row=opts.finder.getRow(_97f,item); +if(!row){ +return; +} +var _981=row[opts.valueField]; +if(opts.multiple){ +if(item.hasClass("combobox-item-selected")){ +_960(_97f,_981); +}else{ +_95b(_97f,_981); +} +}else{ +_95b(_97f,_981); +$(_97f).combo("hidePanel"); +} +e.stopPropagation(); +}); +}; +$.fn.combobox=function(_982,_983){ +if(typeof _982=="string"){ +var _984=$.fn.combobox.methods[_982]; +if(_984){ +return _984(this,_983); +}else{ +return this.combo(_982,_983); +} +} +_982=_982||{}; +return this.each(function(){ +var _985=$.data(this,"combobox"); +if(_985){ +$.extend(_985.options,_982); +_97e(this); +}else{ +_985=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_982),data:[]}); +_97e(this); +var data=$.fn.combobox.parseData(this); +if(data.length){ +_969(this,data); +} +} +if(_985.options.data){ +_969(this,_985.options.data); +} +_96f(this); +}); +}; +$.fn.combobox.methods={options:function(jq){ +var _986=jq.combo("options"); +return $.extend($.data(jq[0],"combobox").options,{width:_986.width,height:_986.height,originalValue:_986.originalValue,disabled:_986.disabled,readonly:_986.readonly}); +},getData:function(jq){ +return $.data(jq[0],"combobox").data; +},setValues:function(jq,_987){ +return jq.each(function(){ +_95f(this,_987); +}); +},setValue:function(jq,_988){ +return jq.each(function(){ +_95f(this,[_988]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combo("clear"); +var _989=$(this).combo("panel"); +_989.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combobox("options"); +if(opts.multiple){ +$(this).combobox("setValues",opts.originalValue); +}else{ +$(this).combobox("setValue",opts.originalValue); +} +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_969(this,data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +if(typeof url=="string"){ +_96f(this,url); +}else{ +if(url){ +var opts=$(this).combobox("options"); +opts.queryParams=url; +} +_96f(this); +} +}); +},select:function(jq,_98a){ +return jq.each(function(){ +_95b(this,_98a); +}); +},unselect:function(jq,_98b){ +return jq.each(function(){ +_960(this,_98b); +}); +}}; +$.fn.combobox.parseOptions=function(_98c){ +var t=$(_98c); +return $.extend({},$.fn.combo.parseOptions(_98c),$.parser.parseOptions(_98c,["valueField","textField","groupField","mode","method","url"])); +}; +$.fn.combobox.parseData=function(_98d){ +var data=[]; +var opts=$(_98d).combobox("options"); +$(_98d).children().each(function(){ +if(this.tagName.toLowerCase()=="optgroup"){ +var _98e=$(this).attr("label"); +$(this).children().each(function(){ +_98f(this,_98e); +}); +}else{ +_98f(this); +} +}); +return data; +function _98f(el,_990){ +var t=$(el); +var row={}; +row[opts.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); +row[opts.textField]=t.text(); +row["selected"]=t.is(":selected"); +row["disabled"]=t.is(":disabled"); +if(_990){ +opts.groupField=opts.groupField||"group"; +row[opts.groupField]=_990; +} +data.push(row); +}; +}; +$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupField:null,groupFormatter:function(_991){ +return _991; +},mode:"local",method:"post",url:null,data:null,queryParams:{},keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_97a(this); +},query:function(q,e){ +_973(this,q); +}},filter:function(q,row){ +var opts=$(this).combobox("options"); +return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())==0; +},formatter:function(row){ +var opts=$(this).combobox("options"); +return row[opts.textField]; +},loader:function(_992,_993,_994){ +var opts=$(this).combobox("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_992,dataType:"json",success:function(data){ +_993(data); +},error:function(){ +_994.apply(this,arguments); +}}); +},loadFilter:function(data){ +return data; +},finder:{getEl:function(_995,_996){ +var _997=_94f(_995,_996); +var id=$.data(_995,"combobox").itemIdPrefix+"_"+_997; +return $("#"+id); +},getRow:function(_998,p){ +var _999=$.data(_998,"combobox"); +var _99a=(p instanceof jQuery)?p.attr("id").substr(_999.itemIdPrefix.length+1):_94f(_998,p); +return _999.data[parseInt(_99a)]; +}},onBeforeLoad:function(_99b){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onSelect:function(_99c){ +},onUnselect:function(_99d){ +}}); +})(jQuery); +(function($){ +function _99e(_99f){ +var _9a0=$.data(_99f,"combotree"); +var opts=_9a0.options; +var tree=_9a0.tree; +$(_99f).addClass("combotree-f"); +$(_99f).combo(opts); +var _9a1=$(_99f).combo("panel"); +if(!tree){ +tree=$("
          ").appendTo(_9a1); +$.data(_99f,"combotree").tree=tree; +} +tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ +var _9a2=$(_99f).combotree("getValues"); +if(opts.multiple){ +var _9a3=tree.tree("getChecked"); +for(var i=0;i<_9a3.length;i++){ +var id=_9a3[i].id; +(function(){ +for(var i=0;i<_9a2.length;i++){ +if(id==_9a2[i]){ +return; +} +} +_9a2.push(id); +})(); +} +} +$(_99f).combotree("setValues",_9a2); +opts.onLoadSuccess.call(this,node,data); +},onClick:function(node){ +if(opts.multiple){ +$(this).tree(node.checked?"uncheck":"check",node.target); +}else{ +$(_99f).combo("hidePanel"); +} +_9a5(_99f); +opts.onClick.call(this,node); +},onCheck:function(node,_9a4){ +_9a5(_99f); +opts.onCheck.call(this,node,_9a4); +}})); +}; +function _9a5(_9a6){ +var _9a7=$.data(_9a6,"combotree"); +var opts=_9a7.options; +var tree=_9a7.tree; +var vv=[],ss=[]; +if(opts.multiple){ +var _9a8=tree.tree("getChecked"); +for(var i=0;i<_9a8.length;i++){ +vv.push(_9a8[i].id); +ss.push(_9a8[i].text); +} +}else{ +var node=tree.tree("getSelected"); +if(node){ +vv.push(node.id); +ss.push(node.text); +} +} +$(_9a6).combo("setText",ss.join(opts.separator)).combo("setValues",opts.multiple?vv:(vv.length?vv:[""])); +}; +function _9a9(_9aa,_9ab){ +var _9ac=$.data(_9aa,"combotree"); +var opts=_9ac.options; +var tree=_9ac.tree; +var _9ad=tree.tree("options"); +var _9ae=_9ad.onCheck; +var _9af=_9ad.onSelect; +_9ad.onCheck=_9ad.onSelect=function(){ +}; +tree.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); +if(!$.isArray(_9ab)){ +_9ab=_9ab.split(opts.separator); +} +var vv=$.map(_9ab,function(_9b0){ +return String(_9b0); +}); +var ss=[]; +$.map(vv,function(v){ +var node=tree.tree("find",v); +if(node){ +tree.tree("check",node.target).tree("select",node.target); +ss.push(node.text); +}else{ +ss.push(v); +} +}); +if(opts.multiple){ +var _9b1=tree.tree("getChecked"); +$.map(_9b1,function(node){ +var id=String(node.id); +if($.inArray(id,vv)==-1){ +vv.push(id); +ss.push(node.text); +} +}); +} +_9ad.onCheck=_9ae; +_9ad.onSelect=_9af; +$(_9aa).combo("setText",ss.join(opts.separator)).combo("setValues",opts.multiple?vv:(vv.length?vv:[""])); +}; +$.fn.combotree=function(_9b2,_9b3){ +if(typeof _9b2=="string"){ +var _9b4=$.fn.combotree.methods[_9b2]; +if(_9b4){ +return _9b4(this,_9b3); +}else{ +return this.combo(_9b2,_9b3); +} +} +_9b2=_9b2||{}; +return this.each(function(){ +var _9b5=$.data(this,"combotree"); +if(_9b5){ +$.extend(_9b5.options,_9b2); +}else{ +$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_9b2)}); +} +_99e(this); +}); +}; +$.fn.combotree.methods={options:function(jq){ +var _9b6=jq.combo("options"); +return $.extend($.data(jq[0],"combotree").options,{width:_9b6.width,height:_9b6.height,originalValue:_9b6.originalValue,disabled:_9b6.disabled,readonly:_9b6.readonly}); +},clone:function(jq,_9b7){ +var t=jq.combo("clone",_9b7); +t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")}); +return t; +},tree:function(jq){ +return $.data(jq[0],"combotree").tree; +},loadData:function(jq,data){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +opts.data=data; +var tree=$.data(this,"combotree").tree; +tree.tree("loadData",data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +var tree=$.data(this,"combotree").tree; +if(url){ +opts.url=url; +} +tree.tree({url:opts.url}); +}); +},setValues:function(jq,_9b8){ +return jq.each(function(){ +_9a9(this,_9b8); +}); +},setValue:function(jq,_9b9){ +return jq.each(function(){ +_9a9(this,[_9b9]); +}); +},clear:function(jq){ +return jq.each(function(){ +var tree=$.data(this,"combotree").tree; +tree.find("div.tree-node-selected").removeClass("tree-node-selected"); +var cc=tree.tree("getChecked"); +for(var i=0;i").appendTo(_9c1); +_9bd.grid=grid; +} +grid.datagrid($.extend({},opts,{border:false,singleSelect:(!opts.multiple),onLoadSuccess:function(data){ +var _9c2=$(_9bc).combo("getValues"); +var _9c3=opts.onSelect; +opts.onSelect=function(){ +}; +_9cd(_9bc,_9c2,_9bd.remainText); +opts.onSelect=_9c3; +opts.onLoadSuccess.apply(_9bc,arguments); +},onClickRow:_9c4,onSelect:function(_9c5,row){ +_9c6(); +opts.onSelect.call(this,_9c5,row); +},onUnselect:function(_9c7,row){ +_9c6(); +opts.onUnselect.call(this,_9c7,row); +},onSelectAll:function(rows){ +_9c6(); +opts.onSelectAll.call(this,rows); +},onUnselectAll:function(rows){ +if(opts.multiple){ +_9c6(); +} +opts.onUnselectAll.call(this,rows); +}})); +function _9c4(_9c8,row){ +_9bd.remainText=false; +_9c6(); +if(!opts.multiple){ +$(_9bc).combo("hidePanel"); +} +opts.onClickRow.call(this,_9c8,row); +}; +function _9c6(){ +var rows=grid.datagrid("getSelections"); +var vv=[],ss=[]; +for(var i=0;i=_9cb){ +_9cc=0; +} +} +grid.datagrid("highlightRow",_9cc); +if(opts.selectOnNavigation){ +_9ca.remainText=false; +grid.datagrid("selectRow",_9cc); +} +}; +function _9cd(_9ce,_9cf,_9d0){ +var _9d1=$.data(_9ce,"combogrid"); +var opts=_9d1.options; +var grid=_9d1.grid; +var rows=grid.datagrid("getRows"); +var ss=[]; +var _9d2=$(_9ce).combo("getValues"); +var _9d3=$(_9ce).combo("options"); +var _9d4=_9d3.onChange; +_9d3.onChange=function(){ +}; +grid.datagrid("clearSelections"); +if(!$.isArray(_9cf)){ +_9cf=_9cf.split(opts.separator); +} +for(var i=0;i<_9cf.length;i++){ +var _9d5=grid.datagrid("getRowIndex",_9cf[i]); +if(_9d5>=0){ +grid.datagrid("selectRow",_9d5); +ss.push(rows[_9d5][opts.textField]); +}else{ +ss.push(_9cf[i]); +} +} +$(_9ce).combo("setValues",_9d2); +_9d3.onChange=_9d4; +if(!_9d0){ +var s=ss.join(opts.separator); +if($(_9ce).combo("getText")!=s){ +$(_9ce).combo("setText",s); +} +} +$(_9ce).combo("setValues",_9cf); +}; +function _9d6(_9d7,q){ +var _9d8=$.data(_9d7,"combogrid"); +var opts=_9d8.options; +var grid=_9d8.grid; +_9d8.remainText=true; +if(opts.multiple&&!q){ +_9cd(_9d7,[],true); +}else{ +_9cd(_9d7,[q],true); +} +if(opts.mode=="remote"){ +grid.datagrid("clearSelections"); +grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); +}else{ +if(!q){ +return; +} +grid.datagrid("clearSelections").datagrid("highlightRow",-1); +var rows=grid.datagrid("getRows"); +var qq=opts.multiple?q.split(opts.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +if(q){ +$.map(rows,function(row,i){ +if(q==row[opts.textField]){ +grid.datagrid("selectRow",i); +}else{ +if(opts.filter.call(_9d7,q,row)){ +grid.datagrid("highlightRow",i); +} +} +}); +} +}); +} +}; +function _9d9(_9da){ +var _9db=$.data(_9da,"combogrid"); +var opts=_9db.options; +var grid=_9db.grid; +var tr=opts.finder.getTr(grid[0],null,"highlight"); +_9db.remainText=false; +if(tr.length){ +var _9dc=parseInt(tr.attr("datagrid-row-index")); +if(opts.multiple){ +if(tr.hasClass("datagrid-row-selected")){ +grid.datagrid("unselectRow",_9dc); +}else{ +grid.datagrid("selectRow",_9dc); +} +}else{ +grid.datagrid("selectRow",_9dc); +} +} +var vv=[]; +$.map(grid.datagrid("getSelections"),function(row){ +vv.push(row[opts.idField]); +}); +$(_9da).combogrid("setValues",vv); +if(!opts.multiple){ +$(_9da).combogrid("hidePanel"); +} +}; +$.fn.combogrid=function(_9dd,_9de){ +if(typeof _9dd=="string"){ +var _9df=$.fn.combogrid.methods[_9dd]; +if(_9df){ +return _9df(this,_9de); +}else{ +return this.combo(_9dd,_9de); +} +} +_9dd=_9dd||{}; +return this.each(function(){ +var _9e0=$.data(this,"combogrid"); +if(_9e0){ +$.extend(_9e0.options,_9dd); +}else{ +_9e0=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_9dd)}); +} +_9bb(this); +}); +}; +$.fn.combogrid.methods={options:function(jq){ +var _9e1=jq.combo("options"); +return $.extend($.data(jq[0],"combogrid").options,{width:_9e1.width,height:_9e1.height,originalValue:_9e1.originalValue,disabled:_9e1.disabled,readonly:_9e1.readonly}); +},grid:function(jq){ +return $.data(jq[0],"combogrid").grid; +},setValues:function(jq,_9e2){ +return jq.each(function(){ +_9cd(this,_9e2); +}); +},setValue:function(jq,_9e3){ +return jq.each(function(){ +_9cd(this,[_9e3]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combogrid("grid").datagrid("clearSelections"); +$(this).combo("clear"); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combogrid("options"); +if(opts.multiple){ +$(this).combogrid("setValues",opts.originalValue); +}else{ +$(this).combogrid("setValue",opts.originalValue); +} +}); +}}; +$.fn.combogrid.parseOptions=function(_9e4){ +var t=$(_9e4); +return $.extend({},$.fn.combo.parseOptions(_9e4),$.fn.datagrid.parseOptions(_9e4),$.parser.parseOptions(_9e4,["idField","textField","mode"])); +}; +$.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{height:22,loadMsg:null,idField:null,textField:null,mode:"local",keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_9d9(this); +},query:function(q,e){ +_9d6(this,q); +}},filter:function(q,row){ +var opts=$(this).combogrid("options"); +return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())==0; +}}); +})(jQuery); +(function($){ +function _9e5(_9e6){ +var _9e7=$.data(_9e6,"datebox"); +var opts=_9e7.options; +$(_9e6).addClass("datebox-f").combo($.extend({},opts,{onShowPanel:function(){ +_9e8(this); +_9e9(this); +_9ea(this); +_9f8(this,$(this).datebox("getText"),true); +opts.onShowPanel.call(this); +}})); +if(!_9e7.calendar){ +var _9eb=$(_9e6).combo("panel").css("overflow","hidden"); +_9eb.panel("options").onBeforeDestroy=function(){ +var c=$(this).find(".calendar-shared"); +if(c.length){ +c.insertBefore(c[0].pholder); +} +}; +var cc=$("
          ").prependTo(_9eb); +if(opts.sharedCalendar){ +var c=$(opts.sharedCalendar); +if(!c[0].pholder){ +c[0].pholder=$("
          ").insertAfter(c); +} +c.addClass("calendar-shared").appendTo(cc); +if(!c.hasClass("calendar")){ +c.calendar(); +} +_9e7.calendar=c; +}else{ +_9e7.calendar=$("
          ").appendTo(cc).calendar(); +} +$.extend(_9e7.calendar.calendar("options"),{fit:true,border:false,onSelect:function(date){ +var _9ec=this.target; +var opts=$(_9ec).datebox("options"); +_9f8(_9ec,opts.formatter.call(_9ec,date)); +$(_9ec).combo("hidePanel"); +opts.onSelect.call(_9ec,date); +}}); +} +$(_9e6).combo("textbox").parent().addClass("datebox"); +$(_9e6).datebox("initValue",opts.value); +function _9e8(_9ed){ +var opts=$(_9ed).datebox("options"); +var _9ee=$(_9ed).combo("panel"); +_9ee.unbind(".datebox").bind("click.datebox",function(e){ +if($(e.target).hasClass("datebox-button-a")){ +var _9ef=parseInt($(e.target).attr("datebox-button-index")); +opts.buttons[_9ef].handler.call(e.target,_9ed); +} +}); +}; +function _9e9(_9f0){ +var _9f1=$(_9f0).combo("panel"); +if(_9f1.children("div.datebox-button").length){ +return; +} +var _9f2=$("
          ").appendTo(_9f1); +var tr=_9f2.find("tr"); +for(var i=0;i").appendTo(tr); +var btn=opts.buttons[i]; +var t=$("").html($.isFunction(btn.text)?btn.text(_9f0):btn.text).appendTo(td); +t.attr("datebox-button-index",i); +} +tr.find("td").css("width",(100/opts.buttons.length)+"%"); +}; +function _9ea(_9f3){ +var _9f4=$(_9f3).combo("panel"); +var cc=_9f4.children("div.datebox-calendar-inner"); +_9f4.children()._outerWidth(_9f4.width()); +_9e7.calendar.appendTo(cc); +_9e7.calendar[0].target=_9f3; +if(opts.panelHeight!="auto"){ +var _9f5=_9f4.height(); +_9f4.children().not(cc).each(function(){ +_9f5-=$(this).outerHeight(); +}); +cc._outerHeight(_9f5); +} +_9e7.calendar.calendar("resize"); +}; +}; +function _9f6(_9f7,q){ +_9f8(_9f7,q,true); +}; +function _9f9(_9fa){ +var _9fb=$.data(_9fa,"datebox"); +var opts=_9fb.options; +var _9fc=_9fb.calendar.calendar("options").current; +if(_9fc){ +_9f8(_9fa,opts.formatter.call(_9fa,_9fc)); +$(_9fa).combo("hidePanel"); +} +}; +function _9f8(_9fd,_9fe,_9ff){ +var _a00=$.data(_9fd,"datebox"); +var opts=_a00.options; +var _a01=_a00.calendar; +_a01.calendar("moveTo",opts.parser.call(_9fd,_9fe)); +if(_9ff){ +$(_9fd).combo("setValue",_9fe); +}else{ +if(_9fe){ +_9fe=opts.formatter.call(_9fd,_a01.calendar("options").current); +} +$(_9fd).combo("setText",_9fe).combo("setValue",_9fe); +} +}; +$.fn.datebox=function(_a02,_a03){ +if(typeof _a02=="string"){ +var _a04=$.fn.datebox.methods[_a02]; +if(_a04){ +return _a04(this,_a03); +}else{ +return this.combo(_a02,_a03); +} +} +_a02=_a02||{}; +return this.each(function(){ +var _a05=$.data(this,"datebox"); +if(_a05){ +$.extend(_a05.options,_a02); +}else{ +$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_a02)}); +} +_9e5(this); +}); +}; +$.fn.datebox.methods={options:function(jq){ +var _a06=jq.combo("options"); +return $.extend($.data(jq[0],"datebox").options,{width:_a06.width,height:_a06.height,originalValue:_a06.originalValue,disabled:_a06.disabled,readonly:_a06.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).combo("cloneFrom",from); +$.data(this,"datebox",{options:$.extend(true,{},$(from).datebox("options")),calendar:$(from).datebox("calendar")}); +$(this).addClass("datebox-f"); +}); +},calendar:function(jq){ +return $.data(jq[0],"datebox").calendar; +},initValue:function(jq,_a07){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +var _a08=opts.value; +if(_a08){ +_a08=opts.formatter.call(this,opts.parser.call(this,_a08)); +} +$(this).combo("initValue",_a08).combo("setText",_a08); +}); +},setValue:function(jq,_a09){ +return jq.each(function(){ +_9f8(this,_a09); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +$(this).datebox("setValue",opts.originalValue); +}); +}}; +$.fn.datebox.parseOptions=function(_a0a){ +return $.extend({},$.fn.combo.parseOptions(_a0a),$.parser.parseOptions(_a0a,["sharedCalendar"])); +}; +$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_9f9(this); +},query:function(q,e){ +_9f6(this,q); +}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_a0b){ +return $(_a0b).datebox("options").currentText; +},handler:function(_a0c){ +var now=new Date(); +$(_a0c).datebox("calendar").calendar({year:now.getFullYear(),month:now.getMonth()+1,current:new Date(now.getFullYear(),now.getMonth(),now.getDate())}); +_9f9(_a0c); +}},{text:function(_a0d){ +return $(_a0d).datebox("options").closeText; +},handler:function(_a0e){ +$(this).closest("div.combo-panel").panel("close"); +}}],formatter:function(date){ +var y=date.getFullYear(); +var m=date.getMonth()+1; +var d=date.getDate(); +return (m<10?("0"+m):m)+"/"+(d<10?("0"+d):d)+"/"+y; +},parser:function(s){ +if(!s){ +return new Date(); +} +var ss=s.split("/"); +var m=parseInt(ss[0],10); +var d=parseInt(ss[1],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(); +} +},onSelect:function(date){ +}}); +})(jQuery); +(function($){ +function _a0f(_a10){ +var _a11=$.data(_a10,"datetimebox"); +var opts=_a11.options; +$(_a10).datebox($.extend({},opts,{onShowPanel:function(){ +var _a12=$(this).datetimebox("getValue"); +_a18(this,_a12,true); +opts.onShowPanel.call(this); +},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); +$(_a10).removeClass("datebox-f").addClass("datetimebox-f"); +$(_a10).datebox("calendar").calendar({onSelect:function(date){ +opts.onSelect.call(this.target,date); +}}); +if(!_a11.spinner){ +var _a13=$(_a10).datebox("panel"); +var p=$("
          ").insertAfter(_a13.children("div.datebox-calendar-inner")); +_a11.spinner=p.children("input"); +} +_a11.spinner.timespinner({width:opts.spinnerWidth,showSeconds:opts.showSeconds,separator:opts.timeSeparator}); +$(_a10).datetimebox("initValue",opts.value); +}; +function _a14(_a15){ +var c=$(_a15).datetimebox("calendar"); +var t=$(_a15).datetimebox("spinner"); +var date=c.calendar("options").current; +return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); +}; +function _a16(_a17,q){ +_a18(_a17,q,true); +}; +function _a19(_a1a){ +var opts=$.data(_a1a,"datetimebox").options; +var date=_a14(_a1a); +_a18(_a1a,opts.formatter.call(_a1a,date)); +$(_a1a).combo("hidePanel"); +}; +function _a18(_a1b,_a1c,_a1d){ +var opts=$.data(_a1b,"datetimebox").options; +$(_a1b).combo("setValue",_a1c); +if(!_a1d){ +if(_a1c){ +var date=opts.parser.call(_a1b,_a1c); +$(_a1b).combo("setText",opts.formatter.call(_a1b,date)); +$(_a1b).combo("setValue",opts.formatter.call(_a1b,date)); +}else{ +$(_a1b).combo("setText",_a1c); +} +} +var date=opts.parser.call(_a1b,_a1c); +$(_a1b).datetimebox("calendar").calendar("moveTo",date); +$(_a1b).datetimebox("spinner").timespinner("setValue",_a1e(date)); +function _a1e(date){ +function _a1f(_a20){ +return (_a20<10?"0":"")+_a20; +}; +var tt=[_a1f(date.getHours()),_a1f(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_a1f(date.getSeconds())); +} +return tt.join($(_a1b).datetimebox("spinner").timespinner("options").separator); +}; +}; +$.fn.datetimebox=function(_a21,_a22){ +if(typeof _a21=="string"){ +var _a23=$.fn.datetimebox.methods[_a21]; +if(_a23){ +return _a23(this,_a22); +}else{ +return this.datebox(_a21,_a22); +} +} +_a21=_a21||{}; +return this.each(function(){ +var _a24=$.data(this,"datetimebox"); +if(_a24){ +$.extend(_a24.options,_a21); +}else{ +$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_a21)}); +} +_a0f(this); +}); +}; +$.fn.datetimebox.methods={options:function(jq){ +var _a25=jq.datebox("options"); +return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_a25.originalValue,disabled:_a25.disabled,readonly:_a25.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).datebox("cloneFrom",from); +$.data(this,"datetimebox",{options:$.extend(true,{},$(from).datetimebox("options")),spinner:$(from).datetimebox("spinner")}); +$(this).removeClass("datebox-f").addClass("datetimebox-f"); +}); +},spinner:function(jq){ +return $.data(jq[0],"datetimebox").spinner; +},initValue:function(jq,_a26){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +var _a27=opts.value; +if(_a27){ +_a27=opts.formatter.call(this,opts.parser.call(this,_a27)); +} +$(this).combo("initValue",_a27).combo("setText",_a27); +}); +},setValue:function(jq,_a28){ +return jq.each(function(){ +_a18(this,_a28); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +$(this).datetimebox("setValue",opts.originalValue); +}); +}}; +$.fn.datetimebox.parseOptions=function(_a29){ +var t=$(_a29); +return $.extend({},$.fn.datebox.parseOptions(_a29),$.parser.parseOptions(_a29,["timeSeparator","spinnerWidth",{showSeconds:"boolean"}])); +}; +$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{spinnerWidth:"100%",showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_a19(this); +},query:function(q,e){ +_a16(this,q); +}},buttons:[{text:function(_a2a){ +return $(_a2a).datetimebox("options").currentText; +},handler:function(_a2b){ +var opts=$(_a2b).datetimebox("options"); +_a18(_a2b,opts.formatter.call(_a2b,new Date())); +$(_a2b).datetimebox("hidePanel"); +}},{text:function(_a2c){ +return $(_a2c).datetimebox("options").okText; +},handler:function(_a2d){ +_a19(_a2d); +}},{text:function(_a2e){ +return $(_a2e).datetimebox("options").closeText; +},handler:function(_a2f){ +$(_a2f).datetimebox("hidePanel"); +}}],formatter:function(date){ +var h=date.getHours(); +var M=date.getMinutes(); +var s=date.getSeconds(); +function _a30(_a31){ +return (_a31<10?"0":"")+_a31; +}; +var _a32=$(this).datetimebox("spinner").timespinner("options").separator; +var r=$.fn.datebox.defaults.formatter(date)+" "+_a30(h)+_a32+_a30(M); +if($(this).datetimebox("options").showSeconds){ +r+=_a32+_a30(s); +} +return r; +},parser:function(s){ +if($.trim(s)==""){ +return new Date(); +} +var dt=s.split(" "); +var d=$.fn.datebox.defaults.parser(dt[0]); +if(dt.length<2){ +return d; +} +var _a33=$(this).datetimebox("spinner").timespinner("options").separator; +var tt=dt[1].split(_a33); +var hour=parseInt(tt[0],10)||0; +var _a34=parseInt(tt[1],10)||0; +var _a35=parseInt(tt[2],10)||0; +return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_a34,_a35); +}}); +})(jQuery); +(function($){ +function init(_a36){ +var _a37=$("
          "+"
          "+""+""+"
          "+"
          "+"
          "+"
          "+""+"
          ").insertAfter(_a36); +var t=$(_a36); +t.addClass("slider-f").hide(); +var name=t.attr("name"); +if(name){ +_a37.find("input.slider-value").attr("name",name); +t.removeAttr("name").attr("sliderName",name); +} +_a37.bind("_resize",function(e,_a38){ +if($(this).hasClass("easyui-fluid")||_a38){ +_a39(_a36); +} +return false; +}); +return _a37; +}; +function _a39(_a3a,_a3b){ +var _a3c=$.data(_a3a,"slider"); +var opts=_a3c.options; +var _a3d=_a3c.slider; +if(_a3b){ +if(_a3b.width){ +opts.width=_a3b.width; +} +if(_a3b.height){ +opts.height=_a3b.height; +} +} +_a3d._size(opts); +if(opts.mode=="h"){ +_a3d.css("height",""); +_a3d.children("div").css("height",""); +}else{ +_a3d.css("width",""); +_a3d.children("div").css("width",""); +_a3d.children("div.slider-rule,div.slider-rulelabel,div.slider-inner")._outerHeight(_a3d._outerHeight()); +} +_a3e(_a3a); +}; +function _a3f(_a40){ +var _a41=$.data(_a40,"slider"); +var opts=_a41.options; +var _a42=_a41.slider; +var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); +if(opts.reversed){ +aa=aa.slice(0).reverse(); +} +_a43(aa); +function _a43(aa){ +var rule=_a42.find("div.slider-rule"); +var _a44=_a42.find("div.slider-rulelabel"); +rule.empty(); +_a44.empty(); +for(var i=0;i").appendTo(rule); +span.css((opts.mode=="h"?"left":"top"),_a45); +if(aa[i]!="|"){ +span=$("").appendTo(_a44); +span.html(aa[i]); +if(opts.mode=="h"){ +span.css({left:_a45,marginLeft:-Math.round(span.outerWidth()/2)}); +}else{ +span.css({top:_a45,marginTop:-Math.round(span.outerHeight()/2)}); +} +} +} +}; +}; +function _a46(_a47){ +var _a48=$.data(_a47,"slider"); +var opts=_a48.options; +var _a49=_a48.slider; +_a49.removeClass("slider-h slider-v slider-disabled"); +_a49.addClass(opts.mode=="h"?"slider-h":"slider-v"); +_a49.addClass(opts.disabled?"slider-disabled":""); +var _a4a=_a49.find(".slider-inner"); +_a4a.html(""+""); +if(opts.range){ +_a4a.append(""+""); +} +_a49.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ +var left=e.data.left; +var _a4b=_a49.width(); +if(opts.mode!="h"){ +left=e.data.top; +_a4b=_a49.height(); +} +if(left<0||left>_a4b){ +return false; +}else{ +_a4c(left); +return false; +} +},onBeforeDrag:function(){ +_a48.isDragging=true; +},onStartDrag:function(){ +opts.onSlideStart.call(_a47,opts.value); +},onStopDrag:function(e){ +_a4c(opts.mode=="h"?e.data.left:e.data.top); +opts.onSlideEnd.call(_a47,opts.value); +opts.onComplete.call(_a47,opts.value); +_a48.isDragging=false; +}}); +_a49.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ +if(_a48.isDragging||opts.disabled){ +return; +} +var pos=$(this).offset(); +_a4c(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top)); +opts.onComplete.call(_a47,opts.value); +}); +function _a4c(pos){ +var _a4d=_a4e(_a47,pos); +var s=Math.abs(_a4d%opts.step); +if(sv2){ +v2=_a4d; +}else{ +_a4dopts.max){ +_a56=opts.max; +} +var _a57=$("").appendTo(_a53); +_a57.attr("name",name); +_a57.val(_a56); +_a55.push(_a56); +var _a58=_a53.find(".slider-handle:eq("+i+")"); +var tip=_a58.next(); +var pos=_a59(_a50,_a56); +if(opts.showTip){ +tip.show(); +tip.html(opts.tipFormatter.call(_a50,_a56)); +}else{ +tip.hide(); +} +if(opts.mode=="h"){ +var _a5a="left:"+pos+"px;"; +_a58.attr("style",_a5a); +tip.attr("style",_a5a+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); +}else{ +var _a5a="top:"+pos+"px;"; +_a58.attr("style",_a5a); +tip.attr("style",_a5a+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); +} +} +opts.value=opts.range?_a55:_a55[0]; +$(_a50).val(opts.range?_a55.join(opts.separator):_a55[0]); +if(_a54.join(",")!=_a55.join(",")){ +opts.onChange.call(_a50,opts.value,(opts.range?_a54:_a54[0])); +} +}; +function _a3e(_a5b){ +var opts=$.data(_a5b,"slider").options; +var fn=opts.onChange; +opts.onChange=function(){ +}; +_a4f(_a5b,opts.value); +opts.onChange=fn; +}; +function _a59(_a5c,_a5d){ +var _a5e=$.data(_a5c,"slider"); +var opts=_a5e.options; +var _a5f=_a5e.slider; +var size=opts.mode=="h"?_a5f.width():_a5f.height(); +var pos=opts.converter.toPosition.call(_a5c,_a5d,size); +if(opts.mode=="v"){ +pos=_a5f.height()-pos; +} +if(opts.reversed){ +pos=size-pos; +} +return pos.toFixed(0); +}; +function _a4e(_a60,pos){ +var _a61=$.data(_a60,"slider"); +var opts=_a61.options; +var _a62=_a61.slider; +var size=opts.mode=="h"?_a62.width():_a62.height(); +var _a63=opts.converter.toValue.call(_a60,opts.mode=="h"?(opts.reversed?(size-pos):pos):(size-pos),size); +return _a63.toFixed(0); +}; +$.fn.slider=function(_a64,_a65){ +if(typeof _a64=="string"){ +return $.fn.slider.methods[_a64](this,_a65); +} +_a64=_a64||{}; +return this.each(function(){ +var _a66=$.data(this,"slider"); +if(_a66){ +$.extend(_a66.options,_a64); +}else{ +_a66=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_a64),slider:init(this)}); +$(this).removeAttr("disabled"); +} +var opts=_a66.options; +opts.min=parseFloat(opts.min); +opts.max=parseFloat(opts.max); +if(opts.range){ +if(!$.isArray(opts.value)){ +opts.value=$.map(String(opts.value).split(opts.separator),function(v){ +return parseFloat(v); +}); +} +if(opts.value.length<2){ +opts.value.push(opts.max); +} +}else{ +opts.value=parseFloat(opts.value); +} +opts.step=parseFloat(opts.step); +opts.originalValue=opts.value; +_a46(this); +_a3f(this); +_a39(this); +}); +}; +$.fn.slider.methods={options:function(jq){ +return $.data(jq[0],"slider").options; +},destroy:function(jq){ +return jq.each(function(){ +$.data(this,"slider").slider.remove(); +$(this).remove(); +}); +},resize:function(jq,_a67){ +return jq.each(function(){ +_a39(this,_a67); +}); +},getValue:function(jq){ +return jq.slider("options").value; +},getValues:function(jq){ +return jq.slider("options").value; +},setValue:function(jq,_a68){ +return jq.each(function(){ +_a4f(this,[_a68]); +}); +},setValues:function(jq,_a69){ +return jq.each(function(){ +_a4f(this,_a69); +}); +},clear:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +_a4f(this,opts.range?[opts.min,opts.max]:[opts.min]); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +$(this).slider(opts.range?"setValues":"setValue",opts.originalValue); +}); +},enable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=false; +_a46(this); +}); +},disable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=true; +_a46(this); +}); +}}; +$.fn.slider.parseOptions=function(_a6a){ +var t=$(_a6a); +return $.extend({},$.parser.parseOptions(_a6a,["width","height","mode",{reversed:"boolean",showTip:"boolean",range:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); +}; +$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,range:false,value:0,separator:",",min:0,max:100,step:1,rule:[],tipFormatter:function(_a6b){ +return _a6b; +},converter:{toPosition:function(_a6c,size){ +var opts=$(this).slider("options"); +return (_a6c-opts.min)/(opts.max-opts.min)*size; +},toValue:function(pos,size){ +var opts=$(this).slider("options"); +return opts.min+(opts.max-opts.min)*(pos/size); +}},onChange:function(_a6d,_a6e){ +},onSlideStart:function(_a6f){ +},onSlideEnd:function(_a70){ +},onComplete:function(_a71){ +}}; +})(jQuery); + diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/easyui.css b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/easyui.css new file mode 100644 index 0000000..347e024 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/easyui.css @@ -0,0 +1,2734 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #777; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #000; +} +.panel-header { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.panel-body { + background-color: #666; + color: #fff; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #fff; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #000; + overflow: hidden; + background: #555; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #666; + border-color: #000; +} +.accordion .accordion-header { + background: #3d3d3d; + filter: none; +} +.accordion .accordion-header-selected { + background: #0052A3; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #000; +} +.window { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 20%); + background: -moz-linear-gradient(top,#454545 0,#383838 20%); + background: -o-linear-gradient(top,#454545 0,#383838 20%); + background: linear-gradient(to bottom,#454545 0,#383838 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.window-proxy { + border: 1px dashed #000; +} +.window-proxy-mask, +.window-mask { + background: #000; +} +.window .panel-footer { + border: 1px solid #000; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #555; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #000 #000 #222 #000; +} +.dialog-button { + border-color: #222 #000 #000 #000; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #fff; + background: #777; + background-repeat: repeat-x; + border: 1px solid #555; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #555; + padding: 0; +} +.l-btn-plain:hover { + background: #777; + color: #fff; + border: 1px solid #555; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #777; + color: #fff; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #000; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #000; +} +.textbox { + position: relative; + border: 1px solid #000; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #000; + -webkit-box-shadow: 0 0 3px 0 #000; + box-shadow: 0 0 3px 0 #000; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #666; +} +.combo { + border-color: #000; + background-color: #fff; +} +.combo-arrow { + background-color: #3d3d3d; +} +.combo-arrow-hover { + background-color: #777; +} +.combo-arrow:hover { + background-color: #777; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #777; + color: #fff; +} +.combobox-item-selected { + background-color: #0052A3; + color: #fff; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #cccccc; +} +.layout-split-north { + border-bottom: 5px solid #444; +} +.layout-split-south { + border-top: 5px solid #444; +} +.layout-split-east { + border-left: 5px solid #444; +} +.layout-split-west { + border-right: 5px solid #444; +} +.layout-expand { + background-color: #3d3d3d; +} +.layout-expand-over { + background-color: #3d3d3d; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #777; + color: #fff; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #666; + color: #fff; + background: -webkit-linear-gradient(top,#454545 0,#666 100%); + background: -moz-linear-gradient(top,#454545 0,#666 100%); + background: -o-linear-gradient(top,#454545 0,#666 100%); + background: linear-gradient(to bottom,#454545 0,#666 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#666 0,#454545 100%); + background: -moz-linear-gradient(top,#666 0,#454545 100%); + background: -o-linear-gradient(top,#666 0,#454545 100%); + background: linear-gradient(to bottom,#666 0,#454545 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#454545 0,#666 100%); + background: -moz-linear-gradient(left,#454545 0,#666 100%); + background: -o-linear-gradient(left,#454545 0,#666 100%); + background: linear-gradient(to right,#454545 0,#666 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#666 0,#454545 100%); + background: -moz-linear-gradient(left,#666 0,#454545 100%); + background: -o-linear-gradient(left,#666 0,#454545 100%); + background: linear-gradient(to right,#666 0,#454545 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); +} +.tabs li a.tabs-inner { + color: #fff; + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #3d3d3d; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #000; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #777; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #666; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #666; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #666; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #666; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0052A3; + color: #fff; + filter: none; + border-color: #000; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #000; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #666 url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #444; + background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); +} +.datagrid-cell-rownumber { + color: #fff; +} +.datagrid-resize-proxy { + background: #cccccc; +} +.datagrid-mask { + background: #000; +} +.datagrid-mask-msg { + border-color: #000; +} +.datagrid-toolbar, +.datagrid-pager { + background: #555; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #222; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #222; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #fff; + border-collapse: separate; +} +.datagrid-row-alt { + background: #555; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #777; + color: #fff; + cursor: default; +} +.datagrid-row-selected { + background: #0052A3; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #222; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #3d3d3d; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #222; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #3d3d3d; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #444; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #222; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #fff; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #222; +} +.m-list li>a:hover { + background: #777; + color: #fff; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #000; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #ffffff; +} +.calendar-day { + color: #fff; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #000; +} +.calendar { + border-color: #000; +} +.calendar-header { + background: #3d3d3d; +} +.calendar-body, +.calendar-menu { + background: #666; +} +.calendar-body th { + background: #555; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #777; + color: #fff; +} +.calendar-hover { + border: 1px solid #555; + padding: 0; +} +.calendar-selected { + background-color: #0052A3; + color: #fff; + border: 1px solid #00458a; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #555; +} +.datebox-button a { + color: #fff; +} +.numberbox { + border: 1px solid #000; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #3d3d3d; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #fff; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #777; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #777; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #3d3d3d; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #000; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #000; +} +.progressbar-text { + color: #fff; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0052A3; + color: #fff; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #000; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #3d3d3d; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #000; + background: #3d3d3d; +} +.slider-rule span { + border-color: #000; +} +.slider-rulelabel span { + color: #fff; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #444; + border-right: 1px solid #777; +} +.menu-sep { + border-top: 1px solid #444; + border-bottom: 1px solid #777; +} +.menu { + background-color: #666; + border-color: #444; + color: #fff; +} +.menu-content { + background: #666; +} +.menu-item { + border-color: transparent; + _border-color: #666; +} +.menu-active { + border-color: #555; + color: #fff; + background: #777; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #fff; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #555; + background-color: #777; + color: #fff; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #000; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #666; + color: #fff; + border-color: #000; +} +.tree-node-hover { + background: #777; + color: #fff; +} +.tree-node-selected { + background: #0052A3; + color: #fff; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #666; + border-color: #000; + color: #fff; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #000; +} +.tooltip-right .tooltip-arrow { + border-right-color: #666; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #000; +} +.tooltip-left .tooltip-arrow { + border-left-color: #666; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #000; +} +.tooltip-top .tooltip-arrow { + border-top-color: #666; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #000; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #666; +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/accordion_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/accordion_arrows.png new file mode 100644 index 0000000..45fd44a Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/accordion_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/blank.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/blank.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/calendar_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/calendar_arrows.png new file mode 100644 index 0000000..430c4ad Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/calendar_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/combo_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/combo_arrow.png new file mode 100644 index 0000000..ac58921 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/combo_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/datagrid_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/datagrid_icons.png new file mode 100644 index 0000000..bdf87e3 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/datagrid_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/datebox_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/datebox_arrow.png new file mode 100644 index 0000000..783c833 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/datebox_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/layout_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/layout_arrows.png new file mode 100644 index 0000000..19c611f Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/layout_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/linkbutton_bg.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/linkbutton_bg.png new file mode 100644 index 0000000..fc66bd2 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/linkbutton_bg.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/loading.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/loading.gif new file mode 100644 index 0000000..68f01d0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/loading.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/menu_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/menu_arrows.png new file mode 100644 index 0000000..2a98494 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/menu_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/messager_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/messager_icons.png new file mode 100644 index 0000000..62c18c1 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/messager_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/pagination_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/pagination_icons.png new file mode 100644 index 0000000..b3315fa Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/pagination_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/panel_tools.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/panel_tools.png new file mode 100644 index 0000000..f97761e Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/panel_tools.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/searchbox_button.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/searchbox_button.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/searchbox_button.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/slider_handle.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/slider_handle.png new file mode 100644 index 0000000..b9802ba Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/slider_handle.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/spinner_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/spinner_arrows.png new file mode 100644 index 0000000..25ee848 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/spinner_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/tabs_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/tabs_icons.png new file mode 100644 index 0000000..732b123 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/tabs_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/tree_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/tree_icons.png new file mode 100644 index 0000000..2b4fd20 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/tree_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/validatebox_warning.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/validatebox_warning.png new file mode 100644 index 0000000..2b3d4f0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/black/images/validatebox_warning.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/easyui.css b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/easyui.css new file mode 100644 index 0000000..a5f7815 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/easyui.css @@ -0,0 +1,2753 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e6e6e6; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D4D4D4; +} +.panel-header { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #333; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D4D4D4; + overflow: hidden; + background: #F5F5F5; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D4D4D4; +} +.accordion .accordion-header { + background: #F2F2F2; + filter: none; +} +.accordion .accordion-header-selected { + background: #0081c2; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D4D4D4; +} +.window { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.window-proxy { + border: 1px dashed #D4D4D4; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D4D4D4; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F5F5F5; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D4D4D4 #D4D4D4 #e6e6e6 #D4D4D4; +} +.dialog-button { + border-color: #e6e6e6 #D4D4D4 #D4D4D4 #D4D4D4; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #f5f5f5; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ddd; + padding: 0; +} +.l-btn-plain:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #f5f5f5; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #D4D4D4; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #D4D4D4; + -webkit-box-shadow: 0 0 3px 0 #D4D4D4; + box-shadow: 0 0 3px 0 #D4D4D4; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #D4D4D4; + background-color: #fff; +} +.combo-arrow { + background-color: #F2F2F2; +} +.combo-arrow-hover { + background-color: #e6e6e6; +} +.combo-arrow:hover { + background-color: #e6e6e6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #e6e6e6; + color: #00438a; +} +.combobox-item-selected { + background-color: #0081c2; + color: #fff; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bbb; +} +.layout-split-north { + border-bottom: 5px solid #eee; +} +.layout-split-south { + border-top: 5px solid #eee; +} +.layout-split-east { + border-left: 5px solid #eee; +} +.layout-split-west { + border-right: 5px solid #eee; +} +.layout-expand { + background-color: #F2F2F2; +} +.layout-expand-over { + background-color: #F2F2F2; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e6e6e6; + color: #00438a; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs li a.tabs-inner { + color: #777; + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #F2F2F2; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D4D4D4; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e6e6e6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0081c2; + color: #fff; + filter: none; + border-color: #D4D4D4; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D4D4D4; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.datagrid-cell-rownumber { + color: #333; +} +.datagrid-resize-proxy { + background: #bbb; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D4D4D4; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F5F5F5; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #e6e6e6; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #333; + border-collapse: separate; +} +.datagrid-row-alt { + background: #F5F5F5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e6e6e6; + color: #00438a; + cursor: default; +} +.datagrid-row-selected { + background: #0081c2; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #e6e6e6; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #F2F2F2; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #e6e6e6; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #F2F2F2; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #F2F2F2; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #333; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #e6e6e6; + color: #00438a; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D4D4D4; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #808080; +} +.calendar-day { + color: #333; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D4D4D4; +} +.calendar { + border-color: #D4D4D4; +} +.calendar-header { + background: #F2F2F2; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F5F5F5; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e6e6e6; + color: #00438a; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #0081c2; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F5F5F5; +} +.datebox-button a { + color: #444; +} +.numberbox { + border: 1px solid #D4D4D4; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #F2F2F2; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e6e6e6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e6e6e6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #F2F2F2; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #D4D4D4; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D4D4D4; +} +.progressbar-text { + color: #333; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0081c2; + color: #fff; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #D4D4D4; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #F2F2F2; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D4D4D4; + background: #F2F2F2; +} +.slider-rule span { + border-color: #D4D4D4; +} +.slider-rulelabel span { + color: #333; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fff; + border-color: #e6e6e6; + color: #333; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fff; +} +.menu-active { + border-color: #ddd; + color: #00438a; + background: #e6e6e6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #e6e6e6; + color: #00438a; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #D4D4D4; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #333; + border-color: #D4D4D4; +} +.tree-node-hover { + background: #e6e6e6; + color: #00438a; +} +.tree-node-selected { + background: #0081c2; + color: #fff; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D4D4D4; + color: #333; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D4D4D4; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D4D4D4; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D4D4D4; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D4D4D4; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} +.tabs-panels { + border-color: transparent; +} +.tabs li a.tabs-inner { + border-color: transparent; + background: transparent; + filter: none; + color: #0088CC; +} +.menu-active { + background-color: #0081C2; + border-color: #0081C2; + color: #fff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/accordion_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/accordion_arrows.png new file mode 100644 index 0000000..720835f Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/accordion_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/blank.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/blank.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/calendar_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/calendar_arrows.png new file mode 100644 index 0000000..430c4ad Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/calendar_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/combo_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/combo_arrow.png new file mode 100644 index 0000000..2e59fb9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/combo_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/datagrid_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/datagrid_icons.png new file mode 100644 index 0000000..747ac4d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/datagrid_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/datebox_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/datebox_arrow.png new file mode 100644 index 0000000..783c833 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/datebox_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/layout_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/layout_arrows.png new file mode 100644 index 0000000..6f41654 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/layout_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/linkbutton_bg.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/linkbutton_bg.png new file mode 100644 index 0000000..fc66bd2 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/linkbutton_bg.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/loading.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/loading.gif new file mode 100644 index 0000000..68f01d0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/loading.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/menu_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/menu_arrows.png new file mode 100644 index 0000000..b986842 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/menu_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/messager_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/messager_icons.png new file mode 100644 index 0000000..62c18c1 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/messager_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/pagination_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/pagination_icons.png new file mode 100644 index 0000000..616f0bd Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/pagination_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/panel_tools.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/panel_tools.png new file mode 100644 index 0000000..fe682ef Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/panel_tools.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/searchbox_button.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/searchbox_button.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/searchbox_button.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/slider_handle.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/slider_handle.png new file mode 100644 index 0000000..b9802ba Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/slider_handle.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/spinner_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/spinner_arrows.png new file mode 100644 index 0000000..b68592d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/spinner_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/tabs_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/tabs_icons.png new file mode 100644 index 0000000..4d29966 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/tabs_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/tree_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/tree_icons.png new file mode 100644 index 0000000..e9be4f3 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/tree_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/validatebox_warning.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/validatebox_warning.png new file mode 100644 index 0000000..2b3d4f0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/bootstrap/images/validatebox_warning.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/color.css b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/color.css new file mode 100644 index 0000000..9f81159 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/color.css @@ -0,0 +1,112 @@ +.c1,.c1:hover{ + color: #fff; + border-color: #3c8b3c; + background: #4cae4c; + background: -webkit-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -moz-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -o-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: linear-gradient(to bottom,#4cae4c 0,#449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cae4c,endColorstr=#449d44,GradientType=0); +} +a.c1:hover{ + background: #449d44; + filter: none; +} +.c2,.c2:hover{ + color: #fff; + border-color: #5f5f5f; + background: #747474; + background: -webkit-linear-gradient(top,#747474 0,#676767 100%); + background: -moz-linear-gradient(top,#747474 0,#676767 100%); + background: -o-linear-gradient(top,#747474 0,#676767 100%); + background: linear-gradient(to bottom,#747474 0,#676767 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#747474,endColorstr=#676767,GradientType=0); +} +a.c2:hover{ + background: #676767; + filter: none; +} +.c3,.c3:hover{ + color: #333; + border-color: #ff8080; + background: #ffb3b3; + background: -webkit-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -moz-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -o-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: linear-gradient(to bottom,#ffb3b3 0,#ff9999 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffb3b3,endColorstr=#ff9999,GradientType=0); +} +a.c3:hover{ + background: #ff9999; + filter: none; +} +.c4,.c4:hover{ + color: #333; + border-color: #52d689; + background: #b8eecf; + background: -webkit-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -moz-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -o-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: linear-gradient(to bottom,#b8eecf 0,#a4e9c1 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#b8eecf,endColorstr=#a4e9c1,GradientType=0); +} +a.c4:hover{ + background: #a4e9c1; + filter: none; +} +.c5,.c5:hover{ + color: #fff; + border-color: #b52b27; + background: #d84f4b; + background: -webkit-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -moz-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -o-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: linear-gradient(to bottom,#d84f4b 0,#c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d84f4b,endColorstr=#c9302c,GradientType=0); +} +a.c5:hover{ + background: #c9302c; + filter: none; +} +.c6,.c6:hover{ + color: #fff; + border-color: #1f637b; + background: #2984a4; + background: -webkit-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -moz-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -o-linear-gradient(top,#2984a4 0,#24748f 100%); + background: linear-gradient(to bottom,#2984a4 0,#24748f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2984a4,endColorstr=#24748f,GradientType=0); +} +a.c6:hover{ + background: #24748f; + filter: none; +} +.c7,.c7:hover{ + color: #333; + border-color: #e68900; + background: #ffab2e; + background: -webkit-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -moz-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -o-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: linear-gradient(to bottom,#ffab2e 0,#ff9900 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffab2e,endColorstr=#ff9900,GradientType=0); +} +a.c7:hover{ + background: #ff9900; + filter: none; +} +.c8,.c8:hover{ + color: #fff; + border-color: #4b72a4; + background: #698cba; + background: -webkit-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -moz-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -o-linear-gradient(top,#698cba 0,#577eb2 100%); + background: linear-gradient(to bottom,#698cba 0,#577eb2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#698cba,endColorstr=#577eb2,GradientType=0); +} +a.c8:hover{ + background: #577eb2; + filter: none; +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/easyui.css b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/easyui.css new file mode 100644 index 0000000..52ee5b9 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/easyui.css @@ -0,0 +1,2734 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eaf2ff; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #95B8E7; +} +.panel-header { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #0E2D5F; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #95B8E7; + overflow: hidden; + background: #F4F4F4; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #95B8E7; +} +.accordion .accordion-header { + background: #E0ECFF; + filter: none; +} +.accordion .accordion-header-selected { + background: #ffe48d; +} +.accordion .accordion-header-selected .panel-title { + color: #000000; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #95B8E7; +} +.window { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.window-proxy { + border: 1px dashed #95B8E7; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #95B8E7; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F4F4F4; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #95B8E7 #95B8E7 #dddddd #95B8E7; +} +.dialog-button { + border-color: #dddddd #95B8E7 #95B8E7 #95B8E7; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #b7d2ff; + padding: 0; +} +.l-btn-plain:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #95B8E7; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #95B8E7; + -webkit-box-shadow: 0 0 3px 0 #95B8E7; + box-shadow: 0 0 3px 0 #95B8E7; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #95B8E7; + background-color: #fff; +} +.combo-arrow { + background-color: #E0ECFF; +} +.combo-arrow-hover { + background-color: #eaf2ff; +} +.combo-arrow:hover { + background-color: #eaf2ff; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #eaf2ff; + color: #000000; +} +.combobox-item-selected { + background-color: #ffe48d; + color: #000000; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #aac5e7; +} +.layout-split-north { + border-bottom: 5px solid #E6EEF8; +} +.layout-split-south { + border-top: 5px solid #E6EEF8; +} +.layout-split-east { + border-left: 5px solid #E6EEF8; +} +.layout-split-west { + border-right: 5px solid #E6EEF8; +} +.layout-expand { + background-color: #E0ECFF; +} +.layout-expand-over { + background-color: #E0ECFF; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eaf2ff; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #0E2D5F; + background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); +} +.tabs li a.tabs-inner { + color: #0E2D5F; + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #E0ECFF; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #95B8E7; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eaf2ff; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #ffe48d; + color: #000000; + filter: none; + border-color: #95B8E7; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #95B8E7; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #efefef; + background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #aac5e7; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #95B8E7; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F4F4F4; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #dddddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eaf2ff; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #ffe48d; + color: #000000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #dddddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #E0ECFF; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #dddddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #E0ECFF; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #efefef; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #eaf2ff; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #95B8E7; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #95B8E7; +} +.calendar { + border-color: #95B8E7; +} +.calendar-header { + background: #E0ECFF; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F4F4F4; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eaf2ff; + color: #000000; +} +.calendar-hover { + border: 1px solid #b7d2ff; + padding: 0; +} +.calendar-selected { + background-color: #ffe48d; + color: #000000; + border: 1px solid #ffab3f; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F4F4F4; +} +.datebox-button a { + color: #444; +} +.numberbox { + border: 1px solid #95B8E7; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #E0ECFF; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eaf2ff; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eaf2ff; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #E0ECFF; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #95B8E7; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #95B8E7; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #ffe48d; + color: #000000; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #95B8E7; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #E0ECFF; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #95B8E7; + background: #E0ECFF; +} +.slider-rule span { + border-color: #95B8E7; +} +.slider-rulelabel span { + color: #000000; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fafafa; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fafafa; +} +.menu-active { + border-color: #b7d2ff; + color: #000000; + background: #eaf2ff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #b7d2ff; + background-color: #eaf2ff; + color: #000000; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #95B8E7; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #95B8E7; +} +.tree-node-hover { + background: #eaf2ff; + color: #000000; +} +.tree-node-selected { + background: #ffe48d; + color: #000000; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #95B8E7; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #95B8E7; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #95B8E7; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #95B8E7; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #95B8E7; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/accordion_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/accordion_arrows.png new file mode 100644 index 0000000..720835f Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/accordion_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/blank.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/blank.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/calendar_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/calendar_arrows.png new file mode 100644 index 0000000..430c4ad Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/calendar_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/combo_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/combo_arrow.png new file mode 100644 index 0000000..2e59fb9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/combo_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/datagrid_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/datagrid_icons.png new file mode 100644 index 0000000..747ac4d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/datagrid_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/datebox_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/datebox_arrow.png new file mode 100644 index 0000000..783c833 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/datebox_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/layout_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/layout_arrows.png new file mode 100644 index 0000000..6f41654 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/layout_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/linkbutton_bg.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/linkbutton_bg.png new file mode 100644 index 0000000..fc66bd2 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/linkbutton_bg.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/loading.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/loading.gif new file mode 100644 index 0000000..68f01d0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/loading.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/menu_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/menu_arrows.png new file mode 100644 index 0000000..b986842 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/menu_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/messager_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/messager_icons.png new file mode 100644 index 0000000..62c18c1 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/messager_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/pagination_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/pagination_icons.png new file mode 100644 index 0000000..616f0bd Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/pagination_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/panel_tools.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/panel_tools.png new file mode 100644 index 0000000..19ecc94 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/panel_tools.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/searchbox_button.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/searchbox_button.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/searchbox_button.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/slider_handle.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/slider_handle.png new file mode 100644 index 0000000..b9802ba Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/slider_handle.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/spinner_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/spinner_arrows.png new file mode 100644 index 0000000..b68592d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/spinner_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/tabs_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/tabs_icons.png new file mode 100644 index 0000000..4d29966 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/tabs_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/tree_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/tree_icons.png new file mode 100644 index 0000000..e9be4f3 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/tree_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/validatebox_warning.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/validatebox_warning.png new file mode 100644 index 0000000..2b3d4f0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/default/images/validatebox_warning.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/easyui.css b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/easyui.css new file mode 100644 index 0000000..0aa55db --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/easyui.css @@ -0,0 +1,2734 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e2e2e2; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D3D3D3; +} +.panel-header { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #575765; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D3D3D3; + overflow: hidden; + background: #fafafa; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D3D3D3; +} +.accordion .accordion-header { + background: #f3f3f3; + filter: none; +} +.accordion .accordion-header-selected { + background: #0092DC; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D3D3D3; +} +.window { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.window-proxy { + border: 1px dashed #D3D3D3; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D3D3D3; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fafafa; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D3D3D3 #D3D3D3 #ddd #D3D3D3; +} +.dialog-button { + border-color: #ddd #D3D3D3 #D3D3D3 #D3D3D3; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ccc; + padding: 0; +} +.l-btn-plain:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #D3D3D3; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #D3D3D3; + -webkit-box-shadow: 0 0 3px 0 #D3D3D3; + box-shadow: 0 0 3px 0 #D3D3D3; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #D3D3D3; + background-color: #fff; +} +.combo-arrow { + background-color: #f3f3f3; +} +.combo-arrow-hover { + background-color: #e2e2e2; +} +.combo-arrow:hover { + background-color: #e2e2e2; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #e2e2e2; + color: #000000; +} +.combobox-item-selected { + background-color: #0092DC; + color: #fff; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bfbfbf; +} +.layout-split-north { + border-bottom: 5px solid #efefef; +} +.layout-split-south { + border-top: 5px solid #efefef; +} +.layout-split-east { + border-left: 5px solid #efefef; +} +.layout-split-west { + border-right: 5px solid #efefef; +} +.layout-expand { + background-color: #f3f3f3; +} +.layout-expand-over { + background-color: #f3f3f3; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e2e2e2; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #575765; + background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); +} +.tabs li a.tabs-inner { + color: #575765; + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #f3f3f3; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D3D3D3; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e2e2e2; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0092DC; + color: #fff; + filter: none; + border-color: #D3D3D3; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D3D3D3; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #fafafa; + background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #bfbfbf; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D3D3D3; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fafafa; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e2e2e2; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #0092DC; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #f3f3f3; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #f3f3f3; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #fafafa; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #e2e2e2; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D3D3D3; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D3D3D3; +} +.calendar { + border-color: #D3D3D3; +} +.calendar-header { + background: #f3f3f3; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #fafafa; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e2e2e2; + color: #000000; +} +.calendar-hover { + border: 1px solid #ccc; + padding: 0; +} +.calendar-selected { + background-color: #0092DC; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fafafa; +} +.datebox-button a { + color: #444; +} +.numberbox { + border: 1px solid #D3D3D3; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #f3f3f3; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e2e2e2; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e2e2e2; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #f3f3f3; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #D3D3D3; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D3D3D3; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0092DC; + color: #fff; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #D3D3D3; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #f3f3f3; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D3D3D3; + background: #f3f3f3; +} +.slider-rule span { + border-color: #D3D3D3; +} +.slider-rulelabel span { + color: #000000; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #f3f3f3; + border-color: #D3D3D3; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #f3f3f3; +} +.menu-active { + border-color: #ccc; + color: #000000; + background: #e2e2e2; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ccc; + background-color: #e2e2e2; + color: #000000; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #D3D3D3; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #D3D3D3; +} +.tree-node-hover { + background: #e2e2e2; + color: #000000; +} +.tree-node-selected { + background: #0092DC; + color: #fff; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D3D3D3; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D3D3D3; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D3D3D3; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D3D3D3; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D3D3D3; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/accordion_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/accordion_arrows.png new file mode 100644 index 0000000..a0b8769 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/accordion_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/blank.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/blank.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/calendar_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/calendar_arrows.png new file mode 100644 index 0000000..430c4ad Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/calendar_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/combo_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/combo_arrow.png new file mode 100644 index 0000000..04f4ba0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/combo_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/datagrid_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/datagrid_icons.png new file mode 100644 index 0000000..73c4e88 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/datagrid_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/datebox_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/datebox_arrow.png new file mode 100644 index 0000000..783c833 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/datebox_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/layout_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/layout_arrows.png new file mode 100644 index 0000000..bf7929f Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/layout_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/linkbutton_bg.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/linkbutton_bg.png new file mode 100644 index 0000000..fc66bd2 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/linkbutton_bg.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/loading.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/loading.gif new file mode 100644 index 0000000..68f01d0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/loading.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/menu_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/menu_arrows.png new file mode 100644 index 0000000..b986842 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/menu_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/messager_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/messager_icons.png new file mode 100644 index 0000000..62c18c1 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/messager_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/pagination_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/pagination_icons.png new file mode 100644 index 0000000..e0f1b07 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/pagination_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/panel_tools.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/panel_tools.png new file mode 100644 index 0000000..f33f8c9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/panel_tools.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/searchbox_button.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/searchbox_button.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/searchbox_button.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/slider_handle.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/slider_handle.png new file mode 100644 index 0000000..b9802ba Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/slider_handle.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/spinner_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/spinner_arrows.png new file mode 100644 index 0000000..dba62bb Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/spinner_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/tabs_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/tabs_icons.png new file mode 100644 index 0000000..dfa10f7 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/tabs_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/tree_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/tree_icons.png new file mode 100644 index 0000000..e9be4f3 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/tree_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/validatebox_warning.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/validatebox_warning.png new file mode 100644 index 0000000..2b3d4f0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/gray/images/validatebox_warning.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icon.css b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icon.css new file mode 100644 index 0000000..11280b5 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icon.css @@ -0,0 +1,110 @@ +.icon-blank{ + background:url('icons/blank.gif') no-repeat center center; +} +.icon-add{ + background:url('icons/edit_add.png') no-repeat center center; +} +.icon-edit{ + background:url('icons/pencil.png') no-repeat center center; +} +.icon-clear{ + background:url('icons/clear.png') no-repeat center center; +} +.icon-remove{ + background:url('icons/edit_remove.png') no-repeat center center; +} +.icon-save{ + background:url('icons/filesave.png') no-repeat center center; +} +.icon-cut{ + background:url('icons/cut.png') no-repeat center center; +} +.icon-ok{ + background:url('icons/ok.png') no-repeat center center; +} +.icon-no{ + background:url('icons/no.png') no-repeat center center; +} +.icon-cancel{ + background:url('icons/cancel.png') no-repeat center center; +} +.icon-reload{ + background:url('icons/reload.png') no-repeat center center; +} +.icon-search{ + background:url('icons/search.png') no-repeat center center; +} +.icon-print{ + background:url('icons/print.png') no-repeat center center; +} +.icon-help{ + background:url('icons/help.png') no-repeat center center; +} +.icon-undo{ + background:url('icons/undo.png') no-repeat center center; +} +.icon-redo{ + background:url('icons/redo.png') no-repeat center center; +} +.icon-back{ + background:url('icons/back.png') no-repeat center center; +} +.icon-sum{ + background:url('icons/sum.png') no-repeat center center; +} +.icon-tip{ + background:url('icons/tip.png') no-repeat center center; +} +.icon-filter{ + background:url('icons/filter.png') no-repeat center center; +} +.icon-man{ + background:url('icons/man.png') no-repeat center center; +} +.icon-lock{ + background:url('icons/lock.png') no-repeat center center; +} +.icon-more{ + background:url('icons/more.png') no-repeat center center; +} + + +.icon-mini-add{ + background:url('icons/mini_add.png') no-repeat center center; +} +.icon-mini-edit{ + background:url('icons/mini_edit.png') no-repeat center center; +} +.icon-mini-refresh{ + background:url('icons/mini_refresh.png') no-repeat center center; +} + +.icon-large-picture{ + background:url('icons/large_picture.png') no-repeat center center; +} +.icon-large-clipart{ + background:url('icons/large_clipart.png') no-repeat center center; +} +.icon-large-shapes{ + background:url('icons/large_shapes.png') no-repeat center center; +} +.icon-large-smartart{ + background:url('icons/large_smartart.png') no-repeat center center; +} +.icon-large-chart{ + background:url('icons/large_chart.png') no-repeat center center; +} + +.icon-down{ + background:url('icons/down.png') no-repeat center center; +} +.icon-enter{ + background:url('icons/enter.png') no-repeat center center; +} +.icon-upload{ + background:url('icons/upload.png') no-repeat center center; +} +.icon-submit{ + background:url('icons/submit.png') no-repeat center center; +} + diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/back.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/back.png new file mode 100644 index 0000000..3fe8b17 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/back.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/blank.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/blank.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/cancel.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/cancel.png new file mode 100644 index 0000000..a432b49 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/cancel.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/clear.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/clear.png new file mode 100644 index 0000000..74b9af9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/clear.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/cut.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/cut.png new file mode 100644 index 0000000..21fdb4d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/cut.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/down.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/down.png new file mode 100644 index 0000000..c7d1d8d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/down.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/edit_add.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/edit_add.png new file mode 100644 index 0000000..e948508 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/edit_add.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/edit_remove.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/edit_remove.png new file mode 100644 index 0000000..d555d92 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/edit_remove.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/enter.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/enter.png new file mode 100644 index 0000000..783f82d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/enter.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/filesave.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/filesave.png new file mode 100644 index 0000000..fd0048d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/filesave.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/filter.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/filter.png new file mode 100644 index 0000000..1fedf7a Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/filter.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/help.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/help.png new file mode 100644 index 0000000..28a0f9e Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/help.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_chart.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_chart.png new file mode 100644 index 0000000..527608e Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_chart.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_clipart.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_clipart.png new file mode 100644 index 0000000..9c9c440 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_clipart.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_picture.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_picture.png new file mode 100644 index 0000000..a005b0c Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_picture.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_shapes.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_shapes.png new file mode 100644 index 0000000..90a0dca Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_shapes.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_smartart.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_smartart.png new file mode 100644 index 0000000..b47da08 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/large_smartart.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/lock.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/lock.png new file mode 100644 index 0000000..15bd643 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/lock.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/man.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/man.png new file mode 100644 index 0000000..a8cafcb Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/man.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_add.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_add.png new file mode 100644 index 0000000..fd82b92 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_add.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_edit.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_edit.png new file mode 100644 index 0000000..db9221a Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_edit.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_refresh.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_refresh.png new file mode 100644 index 0000000..6cdd016 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/mini_refresh.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/more.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/more.png new file mode 100644 index 0000000..94922a2 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/more.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/no.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/no.png new file mode 100644 index 0000000..37a7c74 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/no.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/ok.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/ok.png new file mode 100644 index 0000000..5b0f6a6 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/ok.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/pencil.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/pencil.png new file mode 100644 index 0000000..5b8cc89 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/pencil.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/print.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/print.png new file mode 100644 index 0000000..fdf67a1 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/print.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/redo.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/redo.png new file mode 100644 index 0000000..f1e45cf Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/redo.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/reload.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/reload.png new file mode 100644 index 0000000..f51cab8 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/reload.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/search.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/search.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/search.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/submit.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/submit.png new file mode 100644 index 0000000..782df06 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/submit.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/sum.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/sum.png new file mode 100644 index 0000000..fd7b32e Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/sum.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/tip.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/tip.png new file mode 100644 index 0000000..845e110 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/tip.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/undo.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/undo.png new file mode 100644 index 0000000..6129fa0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/undo.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/upload.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/upload.png new file mode 100644 index 0000000..d48de08 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/icons/upload.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/easyui.css b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/easyui.css new file mode 100644 index 0000000..4de5bc3 --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/easyui.css @@ -0,0 +1,2680 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #E6E6E6; + -moz-border-radius: -2px -2px -2px -2px; + -webkit-border-radius: -2px -2px -2px -2px; + border-radius: -2px -2px -2px -2px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #ddd; +} +.panel-header { + background-color: #ffffff; +} +.panel-body { + background-color: #fff; + color: #444; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #ddd; + overflow: hidden; + background: #fff; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #fff; + border-color: #ddd; +} +.accordion .accordion-header { + background: #ffffff; + filter: none; +} +.accordion .accordion-header-selected { + background: #CCE6FF; +} +.accordion .accordion-header-selected .panel-title { + color: #000; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.window-shadow { + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #ddd; +} +.window { + background-color: #ffffff; +} +.window-proxy { + border: 1px dashed #ddd; +} +.window-proxy-mask, +.window-mask { + background: #eee; +} +.window .panel-footer { + border: 1px solid #ddd; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fff; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #ddd #ddd #ddd #ddd; +} +.dialog-button { + border-color: #ddd #ddd #ddd #ddd; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #777; + background: #ffffff; + background-repeat: repeat-x; + border: 1px solid #dddddd; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ddd; + padding: 0; +} +.l-btn-plain:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #ddd; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #ddd; + -webkit-box-shadow: 0 0 3px 0 #ddd; + box-shadow: 0 0 3px 0 #ddd; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #fff; +} +.combo { + border-color: #ddd; + background-color: #fff; +} +.combo-arrow { + background-color: #ffffff; +} +.combo-arrow-hover { + background-color: #E6E6E6; +} +.combo-arrow:hover { + background-color: #E6E6E6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #E6E6E6; + color: #444; +} +.combobox-item-selected { + background-color: #CCE6FF; + color: #000; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #b3b3b3; +} +.layout-split-north { + border-bottom: 5px solid #fff; +} +.layout-split-south { + border-top: 5px solid #fff; +} +.layout-split-east { + border-left: 5px solid #fff; +} +.layout-split-west { + border-right: 5px solid #fff; +} +.layout-expand { + background-color: #ffffff; +} +.layout-expand-over { + background-color: #ffffff; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0 0; + -webkit-border-radius: 0px 0px 0 0; + border-radius: 0px 0px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 0px 0px; + -webkit-border-radius: 0 0 0px 0px; + border-radius: 0 0 0px 0px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 0px 0px 0; + -webkit-border-radius: 0 0px 0px 0; + border-radius: 0 0px 0px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #E6E6E6; + color: #444; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #fff; + color: #777; +} +.tabs li a.tabs-inner { + color: #777; + background-color: #ffffff; +} +.tabs-header, +.tabs-tool { + background-color: #ffffff; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #ddd; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #E6E6E6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #fff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #fff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #fff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #fff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #CCE6FF; + color: #000; + filter: none; + border-color: #ddd; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #ddd; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #fff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #ffffff; +} +.datagrid-cell-rownumber { + color: #444; +} +.datagrid-resize-proxy { + background: #b3b3b3; +} +.datagrid-mask { + background: #eee; +} +.datagrid-mask-msg { + border-color: #ddd; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fff; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ddd; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #444; + border-collapse: separate; +} +.datagrid-row-alt { + background: #f5f5f5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #E6E6E6; + color: #444; + cursor: default; +} +.datagrid-row-selected { + background: #CCE6FF; + color: #000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #ffffff; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #ffffff; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #ffffff; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ddd; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #444; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ddd; +} +.m-list li>a:hover { + background: #E6E6E6; + color: #444; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #ddd; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-body th, +.calendar-menu-month { + color: #919191; +} +.calendar-day { + color: #444; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #ddd; +} +.calendar { + border-color: #ddd; +} +.calendar-header { + background: #ffffff; +} +.calendar-body, +.calendar-menu { + background: #fff; +} +.calendar-body th { + background: #fff; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #E6E6E6; + color: #444; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #CCE6FF; + color: #000; + border: 1px solid #99cdff; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fff; +} +.datebox-button a { + color: #777; +} +.numberbox { + border: 1px solid #ddd; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #ffffff; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #777; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #E6E6E6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #E6E6E6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #ffffff; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #ddd; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.progressbar { + border-color: #ddd; +} +.progressbar-text { + color: #444; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #CCE6FF; + color: #000; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #ddd; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #ffffff; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 0px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #ddd; + background: #ffffff; +} +.slider-rule span { + border-color: #ddd; +} +.slider-rulelabel span { + color: #444; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ddd; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ddd; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #ffffff; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #fff; +} +.menu-item { + border-color: transparent; + _border-color: #ffffff; +} +.menu-active { + border-color: #ddd; + color: #444; + background: #E6E6E6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #E6E6E6; + color: #444; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #ddd; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #fff; + color: #444; + border-color: #ddd; +} +.tree-node-hover { + background: #E6E6E6; + color: #444; +} +.tree-node-selected { + background: #CCE6FF; + color: #000; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #fff; + border-color: #ddd; + color: #444; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #ddd; +} +.tooltip-right .tooltip-arrow { + border-right-color: #fff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #ddd; +} +.tooltip-left .tooltip-arrow { + border-left-color: #fff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #ddd; +} +.tooltip-top .tooltip-arrow { + border-top-color: #fff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #ddd; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #fff; +} diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/accordion_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/accordion_arrows.png new file mode 100644 index 0000000..720835f Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/accordion_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/blank.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/blank.gif new file mode 100644 index 0000000..1d11fa9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/blank.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/calendar_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/calendar_arrows.png new file mode 100644 index 0000000..430c4ad Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/calendar_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/combo_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/combo_arrow.png new file mode 100644 index 0000000..2e59fb9 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/combo_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/datagrid_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/datagrid_icons.png new file mode 100644 index 0000000..747ac4d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/datagrid_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/datebox_arrow.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/datebox_arrow.png new file mode 100644 index 0000000..783c833 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/datebox_arrow.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/layout_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/layout_arrows.png new file mode 100644 index 0000000..6f41654 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/layout_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/linkbutton_bg.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/linkbutton_bg.png new file mode 100644 index 0000000..fc66bd2 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/linkbutton_bg.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/loading.gif b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/loading.gif new file mode 100644 index 0000000..68f01d0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/loading.gif differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/menu_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/menu_arrows.png new file mode 100644 index 0000000..b986842 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/menu_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/messager_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/messager_icons.png new file mode 100644 index 0000000..62c18c1 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/messager_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/pagination_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/pagination_icons.png new file mode 100644 index 0000000..616f0bd Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/pagination_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/panel_tools.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/panel_tools.png new file mode 100644 index 0000000..fe682ef Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/panel_tools.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/searchbox_button.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/searchbox_button.png new file mode 100644 index 0000000..6dd1931 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/searchbox_button.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/slider_handle.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/slider_handle.png new file mode 100644 index 0000000..b9802ba Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/slider_handle.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/spinner_arrows.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/spinner_arrows.png new file mode 100644 index 0000000..b68592d Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/spinner_arrows.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/tabs_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/tabs_icons.png new file mode 100644 index 0000000..4d29966 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/tabs_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/tree_icons.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/tree_icons.png new file mode 100644 index 0000000..e9be4f3 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/tree_icons.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/validatebox_warning.png b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/validatebox_warning.png new file mode 100644 index 0000000..2b3d4f0 Binary files /dev/null and b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery-easyui/themes/metro/images/validatebox_warning.png differ diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery.extend.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery.extend.js new file mode 100644 index 0000000..9716ede --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery.extend.js @@ -0,0 +1,90 @@ +$.json2Table = (function ($) { + var json2Table = function (ops) { + var defaults = { + columns: [], + rows: [] + }; + var options = $.extend(defaults, ops); + if (options.columns.length == 0 && options.rows.length == 0) return ""; + var thead = ""; + var cols = new Array(); + if (options.columns.length == 0) { + for (var key in options.rows[0]) { + thead += "" + key + "" + cols[cols.length] = key; + } + } + else { + for (var rIndex = 0; rIndex < options.columns.length; rIndex++) { + var column = options.columns[rIndex] + for (var key in column) { + console.log(key); + thead += "" + column[key] + "" + cols[cols.length] = key; + } + } + } + thead += ""; + var tbody = "" + for (var rIndex = 0; rIndex < options.rows.length; rIndex++) { + tbody += ""; + for (var cIndex = 0; cIndex < cols.length; cIndex++) { + tbody += "" + options.rows[rIndex][cols[cIndex]] + ""; + } + tbody += ""; + } + tbody += "" + return "" + thead + tbody + "
          "; + } + return json2Table; +})(jQuery); + +$.extend($.fn.validatebox.defaults.rules, { + multiEmail: { + validator: function (value) { + var _self = (this); + if (value == "") return true; + var emails = value.split(';'); + for (var i = 0; i < emails.length; i++) { + if (!$.fn.validatebox.defaults.rules.email.validator(emails[i])) + return false; + } + return true; + }, + message: "\";\"ָ" + } +}); + +//formչȡjson +$.extend($.fn.form.methods, { + //ȡjsonʽ + getData: function (jq) { + var temp = $(jq).serializeArray(); + var json = {}; + for (var i in temp) { + var row = temp[i]; + json[row.name] = row.value; + } + return json; + } +}); + +Date.prototype.format = function (formatStr) { + var str = formatStr; + var Week = ['', 'һ', '', '', '', '', '']; + var month=this.getMonth()+1; + str = str.replace(/yyyy|YYYY/, this.getFullYear()); + str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100)); + str = str.replace(/MM/, month > 9 ? month.toString() : '0' + month); + str = str.replace(/M/g, month); + str = str.replace(/w|W/g, Week[this.getDay()]); + str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate()); + str = str.replace(/d|D/g, this.getDate()); + str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours()); + str = str.replace(/h|H/g, this.getHours()); + str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes()); + str = str.replace(/m/g, this.getMinutes()); + str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds()); + str = str.replace(/s|S/g, this.getSeconds()); + return str; +} \ No newline at end of file diff --git a/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery.form.js b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery.form.js new file mode 100644 index 0000000..ba5cf8f --- /dev/null +++ b/src/BPA.SaaS.TaskSchedule.Api.WebApi/wwwroot/jquery.form.js @@ -0,0 +1,803 @@ +/*! + * jQuery Form Plugin + * version: 2.64 (25-FEB-2011) + * @requires jQuery v1.3.2 or later + * + * Examples and documentation at: http://malsup.com/jquery/form/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +;(function($) { + +/* + Usage Note: + ----------- + Do not use both ajaxSubmit and ajaxForm on the same form. These + functions are intended to be exclusive. Use ajaxSubmit if you want + to bind your own submit handler to the form. For example, + + $(document).ready(function() { + $('#myForm').bind('submit', function(e) { + e.preventDefault(); // <-- important + $(this).ajaxSubmit({ + target: '#output' + }); + }); + }); + + Use ajaxForm when you want the plugin to manage all the event binding + for you. For example, + + $(document).ready(function() { + $('#myForm').ajaxForm({ + target: '#output' + }); + }); + + When using ajaxForm, the ajaxSubmit function will be invoked for you + at the appropriate time. +*/ + +/** + * ajaxSubmit() provides a mechanism for immediately submitting + * an HTML form using AJAX. + */ +$.fn.ajaxSubmit = function(options) { + // fast fail if nothing selected (http://dev.jquery.com/ticket/2752) + if (!this.length) { + log('ajaxSubmit: skipping submit process - no element selected'); + return this; + } + + if (typeof options == 'function') { + options = { success: options }; + } + + var action = this.attr('action'); + var url = (typeof action === 'string') ? $.trim(action) : ''; + if (url) { + // clean url (don't include hash vaue) + url = (url.match(/^([^#]+)/)||[])[1]; + } + url = url || window.location.href || ''; + + options = $.extend(true, { + url: url, + type: this[0].getAttribute('method') || 'GET', // IE7 massage (see issue 57) + iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' + }, options); + + // hook for manipulating the form data before it is extracted; + // convenient for use with rich editors like tinyMCE or FCKEditor + var veto = {}; + this.trigger('form-pre-serialize', [this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); + return this; + } + + // provide opportunity to alter form data before it is serialized + if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSerialize callback'); + return this; + } + + var n,v,a = this.formToArray(options.semantic); + if (options.data) { + options.extraData = options.data; + for (n in options.data) { + if(options.data[n] instanceof Array) { + for (var k in options.data[n]) { + a.push( { name: n, value: options.data[n][k] } ); + } + } + else { + v = options.data[n]; + v = $.isFunction(v) ? v() : v; // if value is fn, invoke it + a.push( { name: n, value: v } ); + } + } + } + + // give pre-submit callback an opportunity to abort the submit + if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { + log('ajaxSubmit: submit aborted via beforeSubmit callback'); + return this; + } + + // fire vetoable 'validate' event + this.trigger('form-submit-validate', [a, this, options, veto]); + if (veto.veto) { + log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); + return this; + } + + var q = $.param(a); + + if (options.type.toUpperCase() == 'GET') { + options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; + options.data = null; // data is null for 'get' + } + else { + options.data = q; // data is the query string for 'post' + } + + var $form = this, callbacks = []; + if (options.resetForm) { + callbacks.push(function() { $form.resetForm(); }); + } + if (options.clearForm) { + callbacks.push(function() { $form.clearForm(); }); + } + + // perform a load on the target only if dataType is not provided + if (!options.dataType && options.target) { + var oldSuccess = options.success || function(){}; + callbacks.push(function(data) { + var fn = options.replaceTarget ? 'replaceWith' : 'html'; + $(options.target)[fn](data).each(oldSuccess, arguments); + }); + } + else if (options.success) { + callbacks.push(options.success); + } + + options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg + var context = options.context || options; // jQuery 1.4+ supports scope context + for (var i=0, max=callbacks.length; i < max; i++) { + callbacks[i].apply(context, [data, status, xhr || $form, $form]); + } + }; + + // are there files to upload? + var fileInputs = $('input:file', this).length > 0; + var mp = 'multipart/form-data'; + var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp); + + // options.iframe allows user to force iframe mode + // 06-NOV-09: now defaulting to iframe mode if file input is detected + if (options.iframe !== false && (fileInputs || options.iframe || multipart)) { + // hack to fix Safari hang (thanks to Tim Molendijk for this) + // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d + if (options.closeKeepAlive) { + $.get(options.closeKeepAlive, fileUpload); + } + else { + fileUpload(); + } + } + else { + $.ajax(options); + } + + // fire 'notify' event + this.trigger('form-submit-notify', [this, options]); + return this; + + + // private function for handling file uploads (hat tip to YAHOO!) + function fileUpload() { + var form = $form[0]; + + if ($(':input[name=submit],:input[id=submit]', form).length) { + // if there is an input with a name or id of 'submit' then we won't be + // able to invoke the submit fn on the form (at least not x-browser) + alert('Error: Form elements must not have name or id of "submit".'); + return; + } + + var s = $.extend(true, {}, $.ajaxSettings, options); + s.context = s.context || s; + var id = 'jqFormIO' + (new Date().getTime()), fn = '_'+id; + var $io = $('