For display creation and modification times the distance now how long list of items .
update version 0.7
option explicit
' Modified and Created age column
' qiuqiu
'
' This is a script for Directory Opus.
' See http://www.gpsoft.com.au/DScripts/redirect.asp?page=scripts for development information.
' https://resource.dopus.com/t/column-modified-and-created-age/20328/1
'
'
' Called by Directory Opus to initialize the script
Function OnInit(initData)
initData.name = "Age Columns"
initData.desc = "Modified and Created age column"
initData.copyright = "qiuqiu"
initData.version = "0.7"
initData.default_enable = False
if DOpus.version.AtLeast("12.0.8") then
initData.url = "https://resource.dopus.com/t/column-modified-and-created-age/20328/1
End If
initData.config.Item_MinuteText = " 分钟前"
initData.config.Item_HourText = " 小时前"
initData.config.Item_DayText = " 天以前"
initData.config.Item_MonthText = " 个月前"
initData.config.Item_YearText = " 年以前"
initData.config.Group_MinuteText = " 一小时内"
initData.config.Group_HourText = " 一天以内"
initData.config.Group_DayText = " 一个月内"
initData.config.Group_MonthText = " 一年以内"
initData.config.Group_YearText = " 一年以上"
initData.config.Column_CreateHeader = "创建于"
initData.config.Column_ModifyHeader = "修改于"
initData.config_desc = DOpus.NewMap( _
"Item_MinuteText" , "此项用于控制行的分钟文本。", _
"Item_HourText" , "此项用于控制行的小时文本。", _
"Item_DayText" , "此项用于控制行的天文本。", _
"Item_MonthText" , "此项用于控制行的月文本。", _
"Item_YearText" , "此项用于控制行的年文本。", _
"Group_MinuteText" , "分组信息(一小时内)", _
"Group_HourText" , "分组信息(一天以内)", _
"Group_DayText" , "分组信息(一个月内)", _
"Group_MonthText" , "分组信息(一年以内)", _
"Group_YearText" , "分组信息(一年以上)", _
"Column_CreateHeader", "此项用于控制列的标题文本,需要重新启动 DOpus。", _
"Column_ModifyHeader", "此项用于控制列的标题文本,需要重新启动 DOpus。")
Dim col
Set col = initData.AddColumn
col.name = "Created"
col.method = "OnCreated"
col.label = initData.config.Column_CreateHeader
col.justify = "Right"
col.autogroup = False
col.autorefresh = True
Set col = initData.AddColumn
col.name = "Modified"
col.method = "OnModified"
col.label = initData.config.Column_ModifyHeader
col.justify = "Right"
col.autogroup = False
col.autorefresh = True
End Function
' Implement the Created age column
Function OnCreated(scriptColData)
Dim rValue
set rValue = GetAgeTag(scriptColData.item.create)
scriptColData.value = rValue("ItemValue")
scriptColData.sort = rValue("ItemSort")
scriptColData.Group = rValue("ItemGroup")
Set rValue = nothing
End Function
' Implement the Modified age column
Function OnModified(scriptColData)
'DOpus.Output(scriptColData.item.name)
Dim rValue
set rValue = GetAgeTag(scriptColData.item.modify)
scriptColData.value = rValue("ItemValue")
scriptColData.sort = rValue("ItemSort")
scriptColData.Group = rValue("ItemGroup")
Set rValue = nothing
End Function
Function GetAgeTag(ItemDate)
Dim ReturnMap, TempDateTime, DiffDays, DiffMinutes
Set ReturnMap = DOpus.Create.Map
TempDateTime = Now()
DiffMinutes = DateDiff("n",ItemDate, TempDateTime)
DiffDays = DateDiff("y",ItemDate, TempDateTime)
If (DiffDays = 0) Then
If (DiffMinutes < 60) Then
' 返回分钟
ReturnMap("ItemValue") = DiffMinutes & Script.config.Item_MinuteText
ReturnMap("ItemSort") = DiffMinutes / 10000 + 1
ReturnMap("ItemGroup") = Script.config.Column_ModifyHeader & Script.config.Group_MinuteText
ElseIF DiffMinutes > 60 And DiffMinutes < 1440 Then
'返回小时
ReturnMap("ItemValue") = DateDiff("h",ItemDate, TempDateTime) & Script.config.Item_HourText
ReturnMap("ItemSort") = DiffMinutes / 10000 + 2
ReturnMap("ItemGroup") = Script.config.Column_ModifyHeader & Script.config.Group_HourText
End If
ElseIf (DiffDays > 0 And DiffDays < 30) Then
'返回天数
ReturnMap("ItemValue") = DiffDays & Script.config.Item_DayText
ReturnMap("ItemSort") = DiffDays / 10000 + 3
ReturnMap("ItemGroup") = Script.config.Column_ModifyHeader & Script.config.Group_DayText
ElseIf (DiffDays >= 30) And (DiffDays < 365) Then
'返回月数
ReturnMap("ItemValue") = DateDiff("m",ItemDate, TempDateTime) & Script.config.Item_MonthText
ReturnMap("ItemSort") = DiffDays / 10000 + 4
ReturnMap("ItemGroup") = Script.config.Column_ModifyHeader & Script.config.Group_MonthText
ElseIF (DiffDays >= 365) Then
'返回年数
ReturnMap("ItemValue") = DateDiff("yyyy",ItemDate, TempDateTime) & Script.config.Item_YearText
ReturnMap("ItemSort") = DiffDays / 10000 + 5
ReturnMap("ItemGroup") = Script.config.Column_ModifyHeader & Script.config.Group_YearText
Else
Randomize
ReturnMap("ItemValue") = "Error"
ReturnMap("ItemSort") = Rnd() + 6
ReturnMap("ItemGroup") = "Calculation error"
End If
Set GetAgeTag = ReturnMap
Set ReturnMap = nothing
End Function