瀏覽代碼

Merge pull request #9518 from miguelvazq/HPCC-16877

HPCC-16877 Xref not showing found file

Reviewed-By: Gordon Smith <gordon.smith@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 年之前
父節點
當前提交
31066f6c39

+ 131 - 4
esp/src/eclwatch/WsDFUXref.js

@@ -14,8 +14,13 @@
 #    limitations under the License.
 ############################################################################## */
 define([
+    "dojo/_base/array",
+    "dojo/_base/lang",
+    "dojo/topic",
+
     "hpcc/ESPRequest"
-], function (ESPRequest) {
+], function (arrayUtil, lang, topic,
+    ESPRequest) {
 
     return {
         WUGetXref: function (params) {
@@ -28,10 +33,70 @@ define([
             return ESPRequest.send("WsDFUXRef", "DFUXRefUnusedFiles", params);
         },
         DFUXRefFoundFiles: function (params) {
-            return ESPRequest.send("WsDFUXRef", "DFUXRefFoundFiles", params);
+            var request = {
+                Cluster: params
+            }
+            return ESPRequest.send("WsDFUXRef", "DFUXRefFoundFiles", {
+                request: request
+            }).then(function (response){
+                var results = [];
+                var newRows = [];
+                if (lang.exists("DFUXRefFoundFilesQueryResponse.DFUXRefFoundFilesQueryResult.File", response)) {
+                    results = response.DFUXRefFoundFilesQueryResponse.DFUXRefFoundFilesQueryResult.File;
+                    if (results.length) {
+                        arrayUtil.forEach(results, function (row, idx) {
+                            newRows.push({
+                                Name: row.Partmask,
+                                Modified: row.Modified,
+                                Parts: row.Numparts,
+                                Size: row.Size
+                            });
+                        });
+                    } else if (results.Partmask) {
+                        newRows.push({
+                            Name: results.Partmask,
+                            Modified: results.Modified,
+                            Parts: results.Numparts,
+                            Size: results.Size
+                        });
+                    }
+                }
+                return newRows;
+            });
         },
         DFUXRefOrphanFiles: function (params) {
-            return ESPRequest.send("WsDFUXRef", "DFUXRefOrphanFiles", params);
+            var request = {
+                Cluster:params
+            }
+            return ESPRequest.send("WsDFUXRef", "DFUXRefOrphanFiles", {
+                request: request
+            }).then(function (response){
+                var results = [];
+                var newRows = [];
+                if (lang.exists("DFUXRefOrphanFilesQueryResponse.DFUXRefOrphanFilesQueryResult.File", response)) {
+                    results = response.DFUXRefOrphanFilesQueryResponse.DFUXRefOrphanFilesQueryResult.File
+                    if (results.length) {
+                        arrayUtil.forEach(results, function (row, idx) {
+                           newRows.push({
+                                Name: row.Partmask,
+                                Modified: row.Modified,
+                                PartsFound: row.Partsfound,
+                                TotalParts: row.Numparts,
+                                Size: row.Size
+                            });
+                        });
+                    } else if (results.Partmask) {
+                        newRows.push({
+                            Name: results.Partmask,
+                            Modified: results.Modified,
+                            PartsFound: results.Partsfound,
+                            TotalParts: results.Numparts,
+                            Size: results.Size
+                        });
+                    }
+                }
+                return newRows;
+            });
         },
         DFUXRefMessages: function (params) {
             return ESPRequest.send("WsDFUXRef", "DFUXRefMessages", params);
@@ -40,13 +105,75 @@ define([
             return ESPRequest.send("WsDFUXRef", "DFUXRefCleanDirectories", params);
         },
         DFUXRefLostFiles: function (params) {
-            return ESPRequest.send("WsDFUXRef", "DFUXRefLostFiles", params);
+            var request = {
+                Cluster: params
+            }
+            return ESPRequest.send("WsDFUXRef", "DFUXRefLostFiles", {
+                request: request
+            }).then(function (response){
+                var results = [];
+                var newRows = [];
+                if (lang.exists("DFUXRefLostFilesQueryResponse.DFUXRefLostFilesQueryResult.File", response)) {
+                    results = response.DFUXRefLostFilesQueryResponse.DFUXRefLostFilesQueryResult.File
+                    if (results.length) {
+                        arrayUtil.forEach(results, function (row, idx) {
+                           newRows.push({
+                                Name: row.Name,
+                                Modified: row.Modified,
+                                Numparts: row.Numparts,
+                                Size: row.Size,
+                                Partslost: row.Partslost,
+                                Primarylost: row.Primarylost,
+                                Replicatedlost: row.Replicatedlost
+                            });
+                        });
+                    } else if (results.Name) {
+                        newRows.push({
+                            Name: results.Name,
+                            Modified: results.Modified,
+                            Numparts: results.Numparts,
+                            Size: results.Size,
+                            Partslost: results.Partslost,
+                            Primarylost: results.Primarylost,
+                            Replicatedlost: results.Replicatedlost
+                        });
+                    }
+                }
+                return newRows
+            });
+
         },
         DFUXRefDirectories: function (params) {
             return ESPRequest.send("WsDFUXRef", "DFUXRefDirectories", params);
         },
         DFUXRefBuildCancel: function (params) {
             return ESPRequest.send("WsDFUXRef", "DFUXRefBuildCancel", params);
+        },
+        DFUXRefArrayAction: function (xrefFiles, actionType, cluster, type) {
+            arrayUtil.forEach(xrefFiles, function (item, idx) {
+                item.qualifiedName = item.Name;
+            });
+            var request = {
+                XRefFiles: xrefFiles,
+                Action: actionType,
+                Cluster:cluster,
+                Type: type
+            };
+            ESPRequest.flattenArray(request, "XRefFiles", "qualifiedName");
+            return ESPRequest.send("WsDFUXRef", "DFUXRefArrayAction", {
+                request: request
+            }).then(function (response) {
+                if (lang.exists("DFUXRefArrayActionResponse.DFUXRefArrayActionResult", response)) {
+                    if (response.DFUXRefArrayActionResponse.DFUXRefArrayActionResult.Value) {
+                        dojo.publish("hpcc/brToaster", {
+                            Severity: "Message",
+                            Source: "WsDfu.DFUXRefArrayAction",
+                            Exceptions: [{Message: response.DFUXRefArrayActionResponse.DFUXRefArrayActionResult.Value}]
+                        });
+                    }
+                }
+                return response;
+            });
         }
     };
 });

+ 1 - 1
esp/src/eclwatch/XrefDirectoriesWidget.js

@@ -81,7 +81,7 @@ define([
                 },
                 label: this.i18n.DeleteEmptyDirectories
             }).placeAt(this.openButton.domNode, "after");
-            new ToolbarSeparator().placeAt(this.openButton.domNode, "after");
+            dojo.destroy(this.id + "Open");
 
             var retVal = new declare([ESPUtil.Grid(true, true)])({
                 store: this.store,

+ 28 - 12
esp/src/eclwatch/XrefErrorsWarningsWidget.js

@@ -98,21 +98,37 @@ define([
                 if (lang.exists("DFUXRefMessagesQueryResponse.DFUXRefMessagesQueryResult", response)) {
                     results = response.DFUXRefMessagesQueryResponse.DFUXRefMessagesQueryResult;
                 }
-                arrayUtil.forEach(results.Warning, function (row, idx) {
-                   newRows.push({
-                        File: row.File,
-                        Text: row.Text,
-                        Status: context.i18n.Warning
-                    });
-                });
 
-                arrayUtil.forEach(results.Error, function (row, idx) {
-                   newRows.push({
-                        File: row.File,
-                        Text: row.Text,
+                if (lang.exists("Warning.length", results)) {
+                    arrayUtil.forEach(results.Warning, function (row, idx) {
+                        newRows.push({
+                            File: row.File,
+                            Text: row.Text,
+                            Status: context.i18n.Warning
+                        });
+                    });
+                }  else if (results.Warning) {
+                        newRows.push({
+                            File: results.Warning.File,
+                            Text: results.Warning.Text,
+                            Status: context.i18n.Warning
+                        });
+                    }
+                if (lang.exists("Error.length", results)) {
+                        arrayUtil.forEach(results.Error, function (row, idx) {
+                           newRows.push({
+                                File: row.File,
+                                Text: row.Text,
+                                Status: context.i18n.Error
+                            });
+                        });
+                } else if (results.Error) {
+                    newRows.push({
+                        File: results.Error.File,
+                        Text: results.Error.Text,
                         Status: context.i18n.Error
                     });
-                });
+                }
                 context.store.setData(newRows);
                 context.grid.set("query", {});
             });

+ 58 - 19
esp/src/eclwatch/XrefFoundFilesWidget.js

@@ -29,6 +29,8 @@ define([
     "dijit/ToolbarSeparator",
     "dijit/form/Button",
 
+    "dgrid/selector",
+
     "hpcc/GridDetailsWidget",
     "hpcc/WsDFUXref",
     "hpcc/DelayLoadWidget",
@@ -36,6 +38,7 @@ define([
 
 ], function (declare, lang, i18n, nlsHPCC, arrayUtil, on, dom, domConstruct, domClass,
                 registry, ToggleButton, ToolbarSeparator, Button,
+                selector,
                 GridDetailsWidget, WsDFUXref, DelayLoadWidget, ESPUtil) {
     return declare("XrefFoundFilesWidget", [GridDetailsWidget], {
         i18n: nlsHPCC,
@@ -56,10 +59,34 @@ define([
         },
 
         createGrid: function (domID) {
+            var context = this;
+            this.openButton = registry.byId(this.id + "Open");
+            this._delete = new Button({
+                id: this.id + "Delete",
+                disabled: false,
+                onClick: function (val) {
+                    context._onDeleteFiles();
+                },
+                label: this.i18n.Delete
+            }).placeAt(this.openButton.domNode, "after");
+            this._attach = new Button({
+                id: this.id + "Attach",
+                disabled: false,
+                onClick: function (val) {
+                    context._onAttachFiles();
+                },
+                label: this.i18n.Attach
+            }).placeAt(this.openButton.domNode, "after");
+            dojo.destroy(this.id + "Open");
 
             var retVal = new declare([ESPUtil.Grid(true, true)])({
                 store: this.store,
                 columns: {
+                    col1: selector({
+                        width: 27,
+                        selectorType: 'checkbox',
+                        label: ""
+                    }),
                     Name: {label: this.i18n.Name, width:100, sortable: false},
                     Modified: {label: this.i18n.Modified, width: 30, sortable: true},
                     Parts: {label: this.i18n.Parts, width: 30, sortable: true},
@@ -70,28 +97,40 @@ define([
             return retVal;
         },
 
-        refreshGrid: function () {
+        refreshActionState: function (event) {
+            var selection = this.grid.getSelected();
+            var hasSelection = selection.length;
+
+            registry.byId(this.id + "Delete").set("disabled", !hasSelection);
+            registry.byId(this.id + "Attach").set("disabled", !hasSelection);
+        },
+
+        _onDeleteFiles: function (event) {
             var context = this;
+            var selections = this.grid.getSelected();
+            var list = this.arrayToList(selections, "Name");
+            if (confirm(this.i18n.DeleteSelectedFiles + "\n" + list)) {
+                WsDFUXref.DFUXRefArrayAction(selections, this.i18n.Delete, context.params.Name, "Found").then(function (response) {
+                    context.refreshGrid();
+                });
+            }
+        },
 
-            WsDFUXref.DFUXRefFoundFiles({
-                request: {
-                    Cluster: this.params.Name
-                }
-            }).then(function (response) {
-                var results = [];
-                var newRows = [];
-                if (lang.exists("DFUXRefFoundFilesQueryResponse.DFUXRefFoundFilesQueryResult.File", response)) {
-                    results = response.DFUXRefFoundFilesQueryResponse.DFUXRefFoundFilesQueryResult.File;
-                }
-                arrayUtil.forEach(results, function (row, idx) {
-                   newRows.push({
-                        Name: row.Partmask,
-                        Modified: row.Modified,
-                        Parts: row.Numparts,
-                        Size: row.Size
-                    });
+        _onAttachFiles: function (event) {
+            var context = this;
+            var selections = this.grid.getSelected();
+            var list = this.arrayToList(selections, "Name");
+            if (confirm(this.i18n.AddTheseFilesToDali + "\n" + list)) {
+                WsDFUXref.DFUXRefArrayAction(selections, this.i18n.Attach, context.params.Name, "Attach").then(function (response) {
+                    context.refreshGrid();
                 });
-                context.store.setData(newRows);
+            }
+        },
+
+        refreshGrid: function () {
+            var context = this;
+            WsDFUXref.DFUXRefFoundFiles(this.params.Name).then(function(response){
+                context.store.setData(response);
                 context.grid.set("query", {});
             });
         }

+ 36 - 23
esp/src/eclwatch/XrefLostFilesWidget.js

@@ -61,10 +61,26 @@ define([
         },
 
         createGrid: function (domID) {
+            var context = this;
+            this.openButton = registry.byId(this.id + "Open");
+            this._delete = new Button({
+                id: this.id + "Delete",
+                disabled: false,
+                onClick: function (val) {
+                    context._onDeleteFiles();
+                },
+                label: this.i18n.Delete
+            }).placeAt(this.openButton.domNode, "after");
+            dojo.destroy(this.id + "Open");
 
             var retVal = new declare([ESPUtil.Grid(true, true)])({
                 store: this.store,
                 columns: {
+                    col1: selector({
+                        width: 27,
+                        selectorType: 'checkbox',
+                        label: ""
+                    }),
                     Name: {label: this.i18n.Name, width:100, sortable: false},
                     Modified: {label: this.i18n.Modified, width: 30, sortable: true},
                     Numparts: {label: this.i18n.TotalParts, width: 30, sortable: false},
@@ -78,31 +94,28 @@ define([
             return retVal;
         },
 
-        refreshGrid: function () {
+        _onDeleteFiles: function (event) {
             var context = this;
-
-            WsDFUXref.DFUXRefLostFiles({
-                request: {
-                    Cluster: this.params.Name
-                }
-            }).then(function (response) {
-                var results = [];
-                var newRows = [];
-                if (lang.exists("DFUXRefLostFilesQueryResponse.DFUXRefLostFilesQueryResult.File", response)) {
-                    results = response.DFUXRefLostFilesQueryResponse.DFUXRefLostFilesQueryResultFile
-                }
-                arrayUtil.forEach(results, function (row, idx) {
-                   newRows.push({
-                        Name: row.Name,
-                        Modified: row.Modified,
-                        Numparts: row.Numparts,
-                        Partslost: row.Partslost,
-                        Primarylost: row.Primarylost,
-                        Replicatedlost: row.Replicatedlost,
-                        Size: row.Size
-                    });
+            var selections = this.grid.getSelected();
+            var list = this.arrayToList(selections, "Name");
+            if (confirm(this.i18n.DeleteSelectedFiles + "\n" + list)) {
+                WsDFUXref.DFUXRefArrayAction(selections, "DeleteLogical", context.params.Name, "Lost").then(function (response) {
+                    context.refreshGrid();
                 });
-                context.store.setData(newRows);
+            }
+        },
+
+        refreshActionState: function (event) {
+            var selection = this.grid.getSelected();
+            var hasSelection = selection.length;
+
+            registry.byId(this.id + "Delete").set("disabled", !hasSelection);
+        },
+
+        refreshGrid: function () {
+            var context = this;
+            WsDFUXref.DFUXRefLostFiles(this.params.Name).then(function (response) {
+                context.store.setData(response);
                 context.grid.set("query", {});
             });
         }

+ 27 - 33
esp/src/eclwatch/XrefOrphanFilesWidget.js

@@ -67,28 +67,22 @@ define([
                 id: this.id + "Delete",
                 disabled: false,
                 onClick: function (val) {
-                    if (confirm(context.i18n.RunningServerStrain)) {
-                        var selections = context.grid.getSelected();
-                        WsDFUXref.DFUXRefBuild({
-                            request: {
-                                Cluster: selections[0].Name
-                            }
-                        }).then(function (response) {
-                            if (response) {
-                                context.refreshGrid();
-                            }
-                        });
-                    }
-
+                    context._onDeleteFiles();
                 },
                 label: this.i18n.Delete
             }).placeAt(this.openButton.domNode, "after");
+            dojo.destroy(this.id + "Open");
 
             var retVal = new declare([ESPUtil.Grid(true, true)])({
                 store: this.store,
                 selectionMode: "single",
                 allowSelectAll: false,
                 columns: {
+                    col1: selector({
+                        width: 27,
+                        selectorType: 'checkbox',
+                        label: ""
+                    }),
                     Name: {label: this.i18n.Name, width:100, sortable: false},
                     Modified: {label: this.i18n.Modified, width: 30, sortable: false},
                     PartsFound: {label: this.i18n.PartsFound, width: 30, sortable: false},
@@ -100,29 +94,29 @@ define([
             return retVal;
         },
 
+        _onDeleteFiles: function (event) {
+            var context = this;
+            var selections = this.grid.getSelected();
+            var list = this.arrayToList(selections, "Name");
+            if (confirm(this.i18n.DeleteSelectedFiles + "\n" + list)) {
+                WsDFUXref.DFUXRefArrayAction(selections, this.i18n.Delete, context.params.Name, "Orphan").then(function (response) {
+                    context.refreshGrid();
+                });
+            }
+        },
+
+        refreshActionState: function (event) {
+            var selection = this.grid.getSelected();
+            var hasSelection = selection.length;
+
+            registry.byId(this.id + "Delete").set("disabled", !hasSelection);
+        },
+
         refreshGrid: function () {
             var context = this;
 
-            WsDFUXref.DFUXRefOrphanFiles({
-                request: {
-                    Cluster: this.params.Name
-                }
-            }).then(function (response) {
-                var results = [];
-                var newRows = [];
-                if (lang.exists("DFUXRefOrphanFilesQueryResponse.DFUXRefOrphanFilesQueryResult.File", response)) {
-                    results = response.DFUXRefOrphanFilesQueryResponse.DFUXRefOrphanFilesQueryResult.File
-                }
-                arrayUtil.forEach(results, function (row, idx) {
-                   newRows.push({
-                        Name: row.Partmask,
-                        Modified: row.Modified,
-                        PartsFound: row.Partsfound,
-                        TotalParts: row.Numparts,
-                        Size: row.Size
-                    });
-                });
-                context.store.setData(newRows);
+            WsDFUXref.DFUXRefOrphanFiles(this.params.Name).then(function(response){
+                context.store.setData(response);
                 context.grid.set("query", {});
             });
         }

+ 16 - 6
esp/src/eclwatch/XrefQueryWidget.js

@@ -183,13 +183,23 @@ define([
                 if (lang.exists("DFUXRefListResponse.DFUXRefListResult.XRefNode", response)) {
                     results = response.DFUXRefListResponse.DFUXRefListResult.XRefNode;
                 }
-                arrayUtil.forEach(results, function (row, idx) {
-                   newRows.push({
-                        Name: row.Name,
-                        Modified: row.Modified,
-                        Status: row.Status
+
+                if (results.length) {
+                    arrayUtil.forEach(results, function (row, idx) {
+                       newRows.push({
+                            Name: row.Name,
+                            Modified: row.Modified,
+                            Status: row.Status
+                        });
+                    });                    
+                } else {
+                    newRows.push({
+                        Name: results.Name,
+                        Modified: results.Modified,
+                        Status: results.Status
                     });
-                });
+                }
+                
                 context.store.setData(newRows);
                 context.grid.set("query", {});
             });

+ 9 - 3
esp/src/eclwatch/_Widget.js

@@ -347,10 +347,16 @@ define([
                     retVal += "\n";
                 }
                 if (idx >= 10) {
-                    retVal += "..." + (arr.length - 10) + " " + this.i18n.More + "...";
-                    return true;                    
+                    retVal += "\n..." + (arr.length - 10) + " " + this.i18n.More + "...";
+                    return true;
+                }
+                var lineStr = field ? item[field] : item;
+                if (lineStr.length > 50) {
+                    retVal += "..." + item[field].slice(25,item[field].length);
+                }
+                else {
+                   retVal += lineStr;
                 }
-                retVal += field ? item[field] : item;
             }, this);
             return retVal;
         },

+ 2 - 0
esp/src/eclwatch/nls/hpcc.js

@@ -26,6 +26,7 @@ define({root:
     AddtionalProcessesToFilter: "Addtional Processes To Filter",
     AdditionalResources: "Additional Resources",
     AddProcessMap: "Add Package Map",
+    AddTheseFilesToDali: "Add these files to Dali?",
     AddToSuperfile: "Add To Superfile",
     AddToExistingSuperfile: "Add to an existing superfile",
     AddUser: "Add User",
@@ -43,6 +44,7 @@ define({root:
     Apply: "Apply",
     ArchivedOnly: "Archived Only",
     ArchivedWarning: "Warning: please specify a small date range. If not, it may take some time to retrieve the workunits and the browser may be timed out.",
+    Attach: "Attach",
     BinaryInstalls: "Binary Installs",
     Attribute: "Attribute",
     AttributesAreRequired: "Attributes are required",