/////////////////////////////////////////////////////////////////////////////// function OnInit(data){ data.name = "Command.Generic: SelectRandom"; data.desc = "Randomly select a (random) number of items."; data.copyright = "tbone in o9/2o14"; data.version = "0.1"; data.default_enable = true; data.min_version = "11"; var cmd = data.AddCommand(); cmd.name = "SelectRandom" cmd.method = "Command_SelectRandom"; cmd.desc = data.desc; cmd.template = "FOLDERS/S,FILES/S,NODESELECT/S,RANDOM/S,SINGLEFOLDER/S,SINGLEFOLDERMINCOUNT/K,ITEMCOUNT/K,ITEMCOUNTPERC/K,ACTION/K,COMMANDS/R"; /////////////////////////////////////////////////////////////////////////// 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("DebugOutput", false). des("Enable debug output in the script console."); } /////////////////////////////////////////////////////////////////////////////// var COMMAND_ABORTED = true; var COMMAND_SUCCEEDED = false; /////////////////////////////////////////////////////////////////////////////// function Command_SelectRandom(data){ Debug("SelectRandom():"); var cmd = data.func.command; cmd.ClearFiles(); var params = { folders : GetParameter(data, "FOLDERS", null, false), files : GetParameter(data, "FILES", null, false), noDeselect : GetParameter(data, "NODESELECT", null, false), random : GetParameter(data, "RANDOM", null, false), singleFol : GetParameter(data, "SINGLEFOLDER", null, false), singleFolMin : GetParameter(data, "SINGLEFOLDERMINCOUNT", null, 1), action : GetParameter(data, "ACTION", null, ""), itemCount : GetParameter(data, "ITEMCOUNT", null, 1), itemCountPerc : GetParameter(data, "ITEMCOUNTPERC", null, -1), commands : GetParameter(data, "COMMANDS", null, "") } if (params.singleFol && (params.singleFolMin <= data.func.sourcetab.dirs.count)){ params.random = false; params.itemCount = 1; params.itemCountPerc = -1; var items = data.func.sourcetab.dirs; } else if (params.folders){ var items = data.func.sourcetab.dirs; } else if (params.files) var items = data.func.sourcetab.files; else var items = data.func.sourcetab.all; if (items.count==0){ Debug(" No items, aborting"); return COMMAND_ABORTED; } if (params.itemCountPerc>0) params.itemCount = items.count*(params.itemCountPerc/100); if (params.itemCount > items.count) params.itemCount = items.count; var maxSelItems = params.itemCount; if (params.random) if (params.itemCount>1) var maxSelItems = Math.floor((Math.random()*params.itemCount)+1); else var maxSelItems = Math.floor((Math.random()*items.count)+1); PrintParams(params); Debug(" Selecting items.."); var randomsUsed = { "dummy":true }; for (var i=0;i maxLen) maxLen = param.length; for(param in params){ var pad = ""; while (pad.length+param.length