mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
tooltips, examples, fwd ng in lpad
This commit is contained in:
parent
33feefd9cd
commit
514456940a
|
@ -1521,6 +1521,9 @@ function fmt_ren(re, md, fmt) {
|
|||
if (!len || !chr)
|
||||
throw 'invalid arguments to ' + fun;
|
||||
|
||||
if (!str.length)
|
||||
ng += 1;
|
||||
|
||||
while (str.length < len)
|
||||
str = chr + str;
|
||||
|
||||
|
@ -1533,6 +1536,9 @@ function fmt_ren(re, md, fmt) {
|
|||
if (!len || !chr)
|
||||
throw 'invalid arguments to ' + fun;
|
||||
|
||||
if (!str.length)
|
||||
ng += 1;
|
||||
|
||||
while (str.length < len)
|
||||
str += chr;
|
||||
|
||||
|
@ -1606,9 +1612,16 @@ var fileman = (function () {
|
|||
mkeys = vars[1].concat(vars[2]);
|
||||
|
||||
var md = vars[0];
|
||||
for (var k in md)
|
||||
if (md.hasOwnProperty(k) && k.startsWith('.'))
|
||||
for (var k in md) {
|
||||
if (!md.hasOwnProperty(k))
|
||||
continue;
|
||||
|
||||
md[k.toLowerCase()] = md[k];
|
||||
k = k.toLowerCase();
|
||||
|
||||
if (k.startsWith('.'))
|
||||
md[k.slice(1)] = md[k];
|
||||
}
|
||||
md.t = md.ext;
|
||||
md.date = md.ts;
|
||||
md.size = md.sz;
|
||||
|
@ -1630,20 +1643,20 @@ var fileman = (function () {
|
|||
|
||||
var html = sel.length > 1 ? ['<div>'] : [
|
||||
'<div>',
|
||||
'<button class="rn_dec" n="0">url-decode</button>',
|
||||
'<button class="rn_dec" n="0" tt="may fix some cases of broken filenames">url-decode</button>',
|
||||
'//',
|
||||
'<button class="rn_reset" n="0">↺ reset</button>'
|
||||
'<button class="rn_reset" n="0" tt="reset modified filenames back to the original ones">↺ reset</button>'
|
||||
];
|
||||
|
||||
html = html.concat([
|
||||
'<button id="rn_cancel">❌ cancel</button>',
|
||||
'<button id="rn_cancel" tt="abort and close this window">❌ cancel</button>',
|
||||
'<button id="rn_apply">✅ apply rename</button>',
|
||||
'<a id="rn_adv" class="tgl btn" href="#" tt="batch / metadata / pattern renaming">advanced</a>',
|
||||
'<a id="rn_case" class="tgl btn" href="#" tt="case-sensitive regex">case</a>',
|
||||
'</div>',
|
||||
'<div id="rn_vadv"><table>',
|
||||
'<tr><td>regex</td><td><input type="text" id="rn_re" /></td></tr>',
|
||||
'<tr><td>format</td><td><input type="text" id="rn_fmt" /></td></tr>',
|
||||
'<tr><td>regex</td><td><input type="text" id="rn_re" tt="regex search pattern to apply to original filenames; capturing groups can be referenced in the format field below like <code>(1)</code> and <code>(2)</code> and so on" /></td></tr>',
|
||||
'<tr><td>format</td><td><input type="text" id="rn_fmt" tt="inspired by foobar2000:$N<code>(title)</code> is replaced by song title,$N<code>[(artist) - ](title)</code> skips the first part if artist is blank$N<code>$lpad((tn),2,0)</code> pads tracknumber to 2 digits" /></td></tr>',
|
||||
'<tr><td>preset</td><td><select id="rn_pre"></select>',
|
||||
'<button id="rn_pdel">❌ delete</button>',
|
||||
'<button id="rn_pnew">💾 save as</button>',
|
||||
|
@ -1671,7 +1684,7 @@ var fileman = (function () {
|
|||
html.push('</table></div>');
|
||||
|
||||
if (sel.length == 1) {
|
||||
html.push('<div>tags for the selected file (read-only):<table>');
|
||||
html.push('<div><p style="margin:.6em 0">tags for the selected file (read-only, just for reference):</p><table>');
|
||||
for (var a = 0; a < mkeys.length; a++)
|
||||
html.push('<tr><td>' + esc(mkeys[a]) + '</td><td><input type="text" readonly value="' + esc(f[0].md[mkeys[a]]) + '" /></td></tr>');
|
||||
|
||||
|
@ -1745,7 +1758,11 @@ var fileman = (function () {
|
|||
ipre = ebi('rn_pre'),
|
||||
idel = ebi('rn_pdel'),
|
||||
inew = ebi('rn_pnew'),
|
||||
presets = jread("rn_pre", {});
|
||||
defp = '$lpad((tn),2,0). [(artist) - ](title).(ext)';
|
||||
|
||||
var presets = {};
|
||||
presets[defp] = ['', defp];
|
||||
presets = jread("rn_pre", presets);
|
||||
|
||||
function spresets() {
|
||||
var keys = Object.keys(presets), o;
|
||||
|
@ -1783,6 +1800,14 @@ var fileman = (function () {
|
|||
};
|
||||
spresets();
|
||||
|
||||
ire.onkeydown = ifmt.onkeydown = function (e) {
|
||||
if (e.key == 'Escape')
|
||||
return rn_cancel();
|
||||
|
||||
if (e.key == 'Enter')
|
||||
return rn_apply();
|
||||
};
|
||||
|
||||
ire.oninput = ifmt.oninput = function (e) {
|
||||
var ptn = ire.value,
|
||||
fmt = ifmt.value,
|
||||
|
|
Loading…
Reference in a new issue