mirror of
https://github.com/9001/copyparty.git
synced 2025-08-18 01:22:13 -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)
|
if (!len || !chr)
|
||||||
throw 'invalid arguments to ' + fun;
|
throw 'invalid arguments to ' + fun;
|
||||||
|
|
||||||
|
if (!str.length)
|
||||||
|
ng += 1;
|
||||||
|
|
||||||
while (str.length < len)
|
while (str.length < len)
|
||||||
str = chr + str;
|
str = chr + str;
|
||||||
|
|
||||||
|
@ -1533,6 +1536,9 @@ function fmt_ren(re, md, fmt) {
|
||||||
if (!len || !chr)
|
if (!len || !chr)
|
||||||
throw 'invalid arguments to ' + fun;
|
throw 'invalid arguments to ' + fun;
|
||||||
|
|
||||||
|
if (!str.length)
|
||||||
|
ng += 1;
|
||||||
|
|
||||||
while (str.length < len)
|
while (str.length < len)
|
||||||
str += chr;
|
str += chr;
|
||||||
|
|
||||||
|
@ -1606,9 +1612,16 @@ var fileman = (function () {
|
||||||
mkeys = vars[1].concat(vars[2]);
|
mkeys = vars[1].concat(vars[2]);
|
||||||
|
|
||||||
var md = vars[0];
|
var md = vars[0];
|
||||||
for (var k in md)
|
for (var k in md) {
|
||||||
if (md.hasOwnProperty(k) && k.startsWith('.'))
|
if (!md.hasOwnProperty(k))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
md[k.toLowerCase()] = md[k];
|
||||||
|
k = k.toLowerCase();
|
||||||
|
|
||||||
|
if (k.startsWith('.'))
|
||||||
md[k.slice(1)] = md[k];
|
md[k.slice(1)] = md[k];
|
||||||
|
}
|
||||||
md.t = md.ext;
|
md.t = md.ext;
|
||||||
md.date = md.ts;
|
md.date = md.ts;
|
||||||
md.size = md.sz;
|
md.size = md.sz;
|
||||||
|
@ -1630,20 +1643,20 @@ var fileman = (function () {
|
||||||
|
|
||||||
var html = sel.length > 1 ? ['<div>'] : [
|
var html = sel.length > 1 ? ['<div>'] : [
|
||||||
'<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([
|
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>',
|
'<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_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>',
|
'<a id="rn_case" class="tgl btn" href="#" tt="case-sensitive regex">case</a>',
|
||||||
'</div>',
|
'</div>',
|
||||||
'<div id="rn_vadv"><table>',
|
'<div id="rn_vadv"><table>',
|
||||||
'<tr><td>regex</td><td><input type="text" id="rn_re" /></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" /></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>',
|
'<tr><td>preset</td><td><select id="rn_pre"></select>',
|
||||||
'<button id="rn_pdel">❌ delete</button>',
|
'<button id="rn_pdel">❌ delete</button>',
|
||||||
'<button id="rn_pnew">💾 save as</button>',
|
'<button id="rn_pnew">💾 save as</button>',
|
||||||
|
@ -1671,7 +1684,7 @@ var fileman = (function () {
|
||||||
html.push('</table></div>');
|
html.push('</table></div>');
|
||||||
|
|
||||||
if (sel.length == 1) {
|
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++)
|
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>');
|
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'),
|
ipre = ebi('rn_pre'),
|
||||||
idel = ebi('rn_pdel'),
|
idel = ebi('rn_pdel'),
|
||||||
inew = ebi('rn_pnew'),
|
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() {
|
function spresets() {
|
||||||
var keys = Object.keys(presets), o;
|
var keys = Object.keys(presets), o;
|
||||||
|
@ -1783,6 +1800,14 @@ var fileman = (function () {
|
||||||
};
|
};
|
||||||
spresets();
|
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) {
|
ire.oninput = ifmt.oninput = function (e) {
|
||||||
var ptn = ire.value,
|
var ptn = ire.value,
|
||||||
fmt = ifmt.value,
|
fmt = ifmt.value,
|
||||||
|
|
Loading…
Reference in a new issue