View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0017199 | MMW 5 | DB / Backup | public | 2020-12-09 00:43 | 2021-01-14 21:28 |
Reporter | lowlander | Assigned To | |||
Priority | urgent | Severity | major | Reproducibility | always |
Status | closed | Resolution | reopened | ||
Product Version | 5.0 | ||||
Target Version | 5.0 | Fixed in Version | 5.0 | ||
Summary | 0017199: Locate Moved/Missing Files not including all files/finding wrong results | ||||
Description | Tried Located Moved/Missing Files and found that: 1) Unmoved files in selected files is not shown 2) Deleted file in selected files is not shown 3) 1 match was incorrect | ||||
Tags | No tags attached. | ||||
Fixed in build | 2294 | ||||
|
This file selection works as expected in MediaMonkey 4.1.30. |
|
Are you sure that it wasn't only a test error? For me the functionality works as expected in MM5 (also tested directly with your files) Please replace your current MediaMonkeyEngine.exe from build 2281 by this one : https://www.dropbox.com/s/dbo4ym7r5mk7dof/MediaMonkeyEngine.exe?dl=0 and generate new debug log. I added more debug info to see every checked file. |
|
Debugging offline and further logs from LowLander shown that the functionality works same as MM4, but he had multiple copies of the same file in the scanned directory and it preferred the other one (with different filename). The expected would be to prefer the one with the most similar filename (when multiple copies exist). Fixed in 2282 |
|
Verified 2283 I am unable to replicate behavior. @Lowlander is informed to confirm and close bug. |
|
On 2291 1) Trooper is correctly matched 2) Unlocated, fails to show Ariana Grande file that has been deleted 3) Unmoved fails to show Sarah Brightman file that hasn't moved Log & Screencast in same file share |
|
Strange, based on the log "2291 Unmoved & Unlocatable Fail.zip" I see: 1 unlocated: D:\Media\Test\12. Ariana Grande - God Is A Woman.flac 1 unmoved: D:\Media\Test\02 - Sarah Brightman - What A Wonderful World .mp3 1 located: D:\Media\Test\Trooper2\HIts From 10 Albums\01. Trooper - Baby Wontcha Please Come Home.flac ( for old: D:\Media\Test\Trooper\HIts From 10 Albums\01. Trooper - Baby Wontcha Please Come Home.flac ) So based on the log the tracks should be showing just fine in the dialog :-/ The lists seem correctly transferred to the UI (dlgMovedFile.js) so I don't understand why it wasn't showing for you, looks like UI refresh issue or something like this? If you resize the window, do the tracks re-appear? Or if you click the first row in the "empty lists" -- is it selectable like a track without metadata ? |
|
Please replace your current D:\Software\MediaMonkey 5\Controls\dlgMovedFiles.js by the attached dlgMovedFiles.js and generate new log for me (if the issue still occurs with the new dlgMovedFiles.js). And also if the lists are still empty then try to resize the dialog window slightly to see whether the files does appear then ? dlgMovedFiles.js (7,198 bytes)
requirejs("controls/gridview"); requirejs("controls/checkbox"); requirejs("controls/columntracklist"); var automaticallyUpdateMovedFiles = false, foundList = null, sameList = null, notList = null, locatedList = null, unlocatedList = null; function init(params) { resizeable = true; title = _('Locate moved/missing files'); automaticallyUpdateMovedFiles = params.scanRes.automaticallyUpdateMovedFiles; foundList = params.scanRes.foundList; sameList = params.scanRes.sameList; notList = params.scanRes.notList; checkedList = params.scanRes.checkedList; ODS(sprintf('LMMF results in dlg: found: %d, same %d, unlocated: %d, checked: %d', foundList.count, sameList.count, notList.count, checkedList.count)); // preset list views var assignDataList = function (listView, data) { var lv = qid(listView); lv.controlClass.data = data; lv.controlClass.dataSource = lv.controlClass.data; lv.controlClass.invalidateAll(); } foundList.setAllChecked(true); // #15604 assignDataList('lvLocatedList', foundList); assignDataList('lvUnmovedList', sameList); assignDataList('lvUnlocatedList', notList); // initialize tabs var tabs = qid('tabs'); function selecttab(tab, oldtab) { if (oldtab) setVisibility(qid(oldtab), false, { animate: true }); setVisibility(qid(tab), true, { animate: true }); } window.localListen(tabs, 'selected', function (e) { var oldTab; if (e.detail.oldTabIndex >= 0) oldTab = tabs.controlClass.items[e.detail.oldTabIndex].getAttribute('tabname'); selecttab(tabs.controlClass.items[e.detail.tabIndex].getAttribute('tabname'), oldTab); }); tabs.controlClass.selectedIndex = 0; window.localListen(qid('btnUpdate'), 'click', function () { qid('btnUpdate').controlClass.disabled = true; var ar = []; if (qid('ChBUpdateTracks').controlClass.checked) { locatedList = foundList.getCheckedList(); ar.push(locatedList.whenLoaded()); } if (qid('ChBRemoveTracks').controlClass.checked) { unlocatedList = notList.getCheckedList(); ar.push(unlocatedList.whenLoaded()); } window.localPromise(whenAll(ar)).then(function () { modalResult = 1; }); }); } function getData() { var ret = {}; if (qid('ChBUpdateTracks').controlClass.checked) { ret.locatedList = locatedList; } if (qid('ChBRemoveTracks').controlClass.checked) { ret.unlocatedList = unlocatedList; } return ret; } // myLocatedListView -------------------------------------------- function myLocatedListView(element) { ColumnTrackList.call(this, element); var tracksList = this; this.showHeader = true; this.defaultColumns = new Array(); this.defaultColumns.push({ visible: true, title: '', width: 20, order: 1, headerRenderer: ColumnTrackList.prototype.headerRenderers.renderCheck, setupCell: ColumnTrackList.prototype.cellSetups.setupCheckbox, bindData: ColumnTrackList.prototype.defaultBinds.bindCheckboxCell }); this.defaultColumns.push({ visible: true, title: _('Artist'), width: 180, order: 2, bindData: function (div, item) { div.innerText = item.SD.artist; }, columnType: 'artist', }); this.defaultColumns.push({ visible: true, title: _('File'), width: 180, order: 3, bindData: function (div, item) { div.innerText = item.SD.title; }, columnType: 'title', }); this.defaultColumns.push({ visible: true, title: _('New Path'), width: 280, order: 4, bindData: function (div, item) { div.innerText = item.newPath; }, }); this.defaultColumns.push({ visible: true, title: _('Old Path'), width: 280, order: 5, bindData: function (div, item) { div.innerText = item.SD.path; }, columnType: 'path', }); this.setColumns(this.defaultColumns); } myLocatedListView.prototype = Object.create(ColumnTrackList.prototype); // myUnmovedListView -------------------------------------------- function myUnmovedListView(element) { ColumnTrackList.call(this, element); var tracksList = this; this.showHeader = true; this.defaultColumns = new Array(); this.defaultColumns.push({ visible: true, title: _('Artist'), width: 180, order: 1, bindData: function (div, item) { div.innerText = item.SD.artist; }, columnType: 'artist', }); this.defaultColumns.push({ visible: true, title: _('File'), width: 180, order: 2, bindData: function (div, item) { div.innerText = item.SD.title; }, columnType: 'title', }); this.defaultColumns.push({ visible: true, title: _('Path'), width: 280, order: 3, bindData: function (div, item) { div.innerText = item.SD.path; }, columnType: 'path', }); this.setColumns(this.defaultColumns); } myUnmovedListView.prototype = Object.create(ColumnTrackList.prototype); // myUnlocatedListView -------------------------------------------- function myUnlocatedListView(element) { ColumnTrackList.call(this, element); var tracksList = this; this.showHeader = true; this.defaultColumns = new Array(); this.defaultColumns.push({ visible: true, title: '', width: 20, order: 1, headerRenderer: ColumnTrackList.prototype.headerRenderers.renderCheck, setupCell: ColumnTrackList.prototype.cellSetups.setupCheckbox, bindData: ColumnTrackList.prototype.defaultBinds.bindCheckboxCell }); this.defaultColumns.push({ visible: true, title: _('Artist'), width: 180, order: 2, bindData: function (div, item) { div.innerText = item.SD.artist; }, columnType: 'artist', }); this.defaultColumns.push({ visible: true, title: _('File'), width: 180, order: 3, bindData: function (div, item) { div.innerText = item.SD.title; }, columnType: 'title', }); this.defaultColumns.push({ visible: true, title: _('Path'), width: 280, order: 4, bindData: function (div, item) { div.innerText = item.SD.path; }, columnType: 'path', }); this.setColumns(this.defaultColumns); } myUnlocatedListView.prototype = Object.create(ColumnTrackList.prototype); |
|
dlgMovedFiles.js doesn't exist in controls, but does under dialogs, placed it there and the files show as expected. Before doing so, clicking in the list didn't do anything, it is actually empty. Using column headers for sorting did reveal the files or selecting the all files checkbox worked as well. Another problem: Unmoved Files doesn't have the checkboxes column. |
|
OK, so my understanding is that the new dlgMovedFiles.js fixed the issue for you? So marked as fixed in 2292 to verify. Why the "Unmoved Files" tab should have the checkboxes column? Is there any reason for it? |
|
Was the fix included? It's not working on 2293 (both unmoved and unlocatable). Clicking on a column header did show the files. Yes, checkboxes make no sense on Unmoved, no action is needed on this tab. |
|
Yes, the fix was included. So there must be still a timing UI refresh issue for you. I cannot replicate, but double-checked the code and probably found a possible reason for the refresh glitch. Fixed in 2294, so please re-test in 2294 to confirm that it is OK finally. |
|
Confirmed on 2294 |