For those who just want to see the code:
[code]//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 = "Column listing age of file in days - need script help
data.version = "1.0"
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 OnAddColumns(data){
var cmd = data.AddColumn();
cmd.multicol = true;
cmd.name = "DaysSinceCreation";
cmd.label = "Days Since Creation";
cmd.header = "Age (C)";
var method = ["Auto","Units"];
cmd.method = method[Script.config["Created"]];
cmd.autorefresh = true;
cmd.namerefresh = true;
cmd.defwidth = "60px";
cmd.type = "text";
cmd.justify = "right";
var cmd = data.AddColumn();
cmd.multicol = true;
cmd.name = "DaysSinceModified";
cmd.label = "Days Since Modification";
cmd.header = "Age (M)";
var method = ["Auto","Units"];
cmd.method = method[Script.config["Modified"]];
cmd.autorefresh = true;
cmd.namerefresh = true;
cmd.defwidth = "60px";
cmd.type = "text";
cmd.justify = "right";
}
//==================================================
function Auto(data) {
var dateMod = new Date(data.item.modify).valueOf();
var dateCre = new Date(data.item.create).valueOf();
var dateNow = new Date().valueOf();
var diffCre = (dateNow-dateCre)/60000;
var diffMod = (dateNow-dateMod)/60000;
//setting defaults (no value to clutter columns)
data.columns("DaysSinceCreation".value) = "";
data.columns("DaysSinceModified".value) = "";
//Determine age in minutes since file/folder created and add appropriate suffix to calculation
if (diffCre < 60){
data.columns("DaysSinceCreation").value = (diffCre).toFixed(0) + " min";
} else if (diffCre < 1440){
data.columns("DaysSinceCreation").value = ((diffCre)/60).toFixed(1) + " hrs";
} else if (diffCre < 525960){
data.columns("DaysSinceCreation").value = ((diffCre)/1440).toFixed(1) + " days";
}
else {
data.columns("DaysSinceCreation").value = ((diffCre)/525960).toFixed(1) + " yrs";
}
data.columns("DaysSinceCreation").sort = diffCre;
//Determine age in minutes since file/folder modified and add appropriate suffix to calculation
if (diffMod < 60){
data.columns("DaysSinceModified").value = (diffMod).toFixed(0) + " min";
} else if (diffMod < 1440){
data.columns("DaysSinceModified").value = ((diffMod)/60).toFixed(1) + " hrs";
} else if (diffMod < 525960){
data.columns("DaysSinceModified").value = ((diffMod)/1440).toFixed(1) + " days";
}
else {
data.columns("DaysSinceModified").value = ((diffMod)/525960).toFixed(1) + " yrs";
}
data.columns("DaysSinceModified").sort = diffMod;
}
//==================================================
function Units(data) {
var dateMod = new Date(data.item.modify).valueOf();
var dateCre = new Date(data.item.create).valueOf();
var dateNow = new Date().valueOf();
var diffCre = (dateNow-dateCre)/60000;
var diffMod = (dateNow-dateMod)/60000;
var y = d = h = m = sc = sm = 0;
//setting defaults (no value to clutter columns)
data.columns("DaysSinceCreation".value) = "";
data.columns("DaysSinceModified".value) = "";
//Determine age since file/folder created and add appropriate suffix to calculation
sc = (dateNow-dateCre)/1000;
switch (true) {
case (sc > 31557600):
y = Math.floor(sc / 31557600);
sc %= 31557600;
case (sc > 86400):
d = Math.floor(sc / 86400);
sc %= 86400;
case (sc > 3600):
h = Math.floor(sc / 3600);
sc %= 3600;
case (s > 60):
m = Math.floor(sc / 60);
sc %= 60;
sc = sc.toFixed(0);
}
//Determine age since file/folder modified and add appropriate suffix to calculation
sm = (dateNow-dateMod)/1000;
switch (true) {
case (sm > 31557600):
y = Math.floor(sm / 31557600);
sm %= 31557600;
case (sm > 86400):
d = Math.floor(sm / 86400);
sm %= 86400;
case (sm > 3600):
h = Math.floor(sm / 3600);
sm %= 3600;
case (sm > 60):
m = Math.floor(sm / 60);
sm %= 60;
sm = sm.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 ssc = sc.toString();
var ssm = sm.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);
ssc = ssc.replace(ssc, (sc < 10) ? "0" + sc : sc);
ssm = ssm.replace(ssm, (sm < 10) ? "0" + sm : sm);
//Format columns to display
var fc = yy + ':' + dd + ':' + hh + ':' + mm + ':' + ssc;
data.columns("DaysSinceCreation").value = fc;
data.columns("DaysSinceCreation").sort = diffCre;
var fm = yy + ':' + dd + ':' + hh + ':' + mm + ':' + ssm;
data.columns("DaysSinceModified").value = fm;
data.columns("DaysSinceModified").sort = diffMod;
}
//==================================================
function OnScriptConfigChange(data) {
Script.InitColumns();
Script.RefreshColumn("DaysSinceCreation");
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('Command: ScriptWizard (multipurpose scripting resources aid));}
else
cmd.RunCommand('ScriptWizard ABOUT WIN='+data.window+' FILE="'+Script.File+'"');
}
//MD5 = "072d9ba86ac35f55d8593a417ec4906b"; DATE = "2016.11.27 - 08:37:35"
[/code]