//v1.0 - 27 Nov 2016 //- initial release based on tbone's ModifiedWithin column script //================================================== function OnInit(data) { //uid added via script wizard (do not change after publishing this script) var uid = "4CBC870D-C8E5-435F-8F68-FA1AA7E16DBB"; //resource center url added via script wizard (required for updating) var url = "" data.name = "Column.Generic: Age" data.desc = "Adds sortable columns that indicate folder/file age since creation or modification" data.copyright = "Chuck" data.url = "http://resource.dopus.com/viewtopic.php?f=3&t=23713" data.version = "1.1" data.min_version = "11.7.1" data.default_enable = true; //================================================== function ConfigHelper(data){ this.data=data; this.descriptions=null; this.last=null; this.add = function(name, val, description){ this.data.config[name]=val; this.last=[this.data.config[name],name]; if (description!=undefined) this.des(description); return this;} this.des = function(description){ if (!(description && DOpus.version.AtLeast("11.6.1"))) return this; if (!this.descriptions){ this.descriptions=DOpus.NewMap(); data.config._descriptions=this.descriptions; } this.descriptions(this.last[1])=description; return this;} this.val = function(val){ if (typeof this.last[0]=="object") this.last[0].push_back(val); else this.last[0]=val; return this;} } //================================================== var cfg = new ConfigHelper(data); cfg.add("Created", DOpus.Create.Vector()). des("Auto lists time created as ## [years|days|hrs|mins].\nUnits lists time created as yy:dd:hh:mm:ss"). val(0).val("Auto").val("Units"); cfg.add("Modified", DOpus.Create.Vector()). des("Auto lists time modified as ## [years|days|hrs|mins].\nUnits lists time modified as yy:dd:hh:mm:ss"). val(0).val("Auto").val("Units"); } //================================================== function Auto(data) { if (data.col == 'DaysSinceModified') var dateRef = new Date(data.item.modify).valueOf(); if (data.col == 'DaysSinceCreated') var dateRef = new Date(data.item.create).valueOf(); var dateNow = new Date().valueOf(); var diff = (dateNow - dateRef) / 60000; //Determine age in minutes since file/folder created and add appropriate suffix to calculation if (diff < 60) { data.columns(data.col).value = (diff).toFixed(0) + " min"; } else if (diff < 1440) { data.columns(data.col).value = ((diff) / 60).toFixed(1) + " hrs"; } else if (diff < 525960) { data.columns(data.col).value = ((diff) / 1440).toFixed(1) + " days"; } else { data.columns(data.col).value = ((diff) / 525960).toFixed(1) + " yrs"; } data.columns(data.col).sort = diff; } //================================================== function Units(data) { if (data.col == 'DaysSinceModified') var dateRef = new Date(data.item.modify).valueOf(); if (data.col == 'DaysSinceCreated') var dateRef = new Date(data.item.create).valueOf(); var dateNow = new Date().valueOf(); diff = (dateNow - dateRef) / 60000; var y = d = h = m = ss = 0; //Determine age since file/folder created/modified and add appropriate suffix to calculation ss = (dateNow - dateRef) / 1000; switch (true) { case (ss > 31557600): y = Math.floor(ss / 31557600); ss %= 31557600; case (ss > 86400): d = Math.floor(ss / 86400); ss %= 86400; case (ss > 3600): h = Math.floor(ss / 3600); ss %= 3600; case (ss > 60): m = Math.floor(ss / 60); ss %= 60; ss = ss.toFixed(0); } //Correct numbers < 10 to add leading 0 var yy = y.toString(); var dd = d.toString(); var hh = h.toString(); var mm = m.toString(); var ss = ss.toString(); yy = yy.replace(yy, (y < 10) ? "0" + y : y); dd = dd.replace(dd, (d < 10) ? "0" + d : d); hh = hh.replace(hh, (h < 10) ? "0" + h : h); mm = mm.replace(mm, (m < 10) ? "0" + m : m); ss = ss.replace(ss, (ss < 10) ? "0" + ss : ss); //Format columns to display data.columns(data.col).value = yy + ':' + dd + ':' + hh + ':' + mm + ':' + ss; data.columns(data.col).sort = diff; } //================================================== function OnAddColumns(data) { var methods = ["Auto", "Units"]; var cmd = data.AddColumn(); cmd.multicol = true; cmd.name = "DaysSinceModified"; cmd.label = "Days Since Modification"; cmd.header = "Age (M)"; cmd.method = methods[Script.config["Modified"] * 1]; cmd.autorefresh = true; cmd.namerefresh = true; cmd.defwidth = "60px"; cmd.type = "text"; cmd.justify = "right"; var cmd = data.AddColumn(); cmd.multicol = true; cmd.name = "DaysSinceCreated"; cmd.label = "Days Since Creation"; cmd.header = "Age (C)"; cmd.method = methods[Script.config["Created"] * 1]; cmd.autorefresh = true; cmd.namerefresh = true; cmd.defwidth = "60px"; cmd.type = "text"; cmd.justify = "right"; } //================================================== function OnScriptConfigChange(data) { Script.InitColumns(); Script.RefreshColumn("DaysSinceCreated"); Script.RefreshColumn("DaysSinceModified"); } /////////////////////////////////////////////////////////////////////////////// function OnAboutScript(data){ //v0.1 var cmd = DOpus.Create.Command(); if (!cmd.Commandlist('s').exists("ScriptWizard")){ if (DOpus.Dlg.Request("The 'ScriptWizard' add-in has not been found.\n\n"+ "Install 'ScriptWizard' from [resource.dopus.com].\nThe add-in enables this dialog and also offers "+ "easy updating of scripts and many more.","Yes, take me there!|Cancel", "No About.. ", data.window)) cmd.RunCommand('http://resource.dopus.com/viewtopic.php?f=35&t=23179');} else cmd.RunCommand('ScriptWizard ABOUT WIN='+data.window+' FILE="'+Script.File+'"'); } //MD5 = "4621fa8868aa509c112d8b20b284b7f5"; DATE = "2016.12.05 - 00:52:36"