Column: Modified and Created age

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